File Coverage

blib/lib/Biblio/ILL/ISO/ShippedVia.pm
Criterion Covered Total %
statement 21 40 52.5
branch 2 14 14.2
condition 1 3 33.3
subroutine 6 8 75.0
pod 2 3 66.6
total 32 68 47.0


line stmt bran cond sub pod time code
1             package Biblio::ILL::ISO::ShippedVia;
2              
3             =head1 NAME
4              
5             Biblio::ILL::ISO::ShippedVia
6              
7             =cut
8              
9 4     4   593 use Biblio::ILL::ISO::ILLASNtype;
  4         8  
  4         115  
10 4     4   28 use Biblio::ILL::ISO::TransportationMode;
  4         8  
  4         92  
11 4     4   27 use Biblio::ILL::ISO::ElectronicDeliveryService;
  4         7  
  4         110  
12              
13 4     4   20 use Carp;
  4         8  
  4         418  
14              
15             =head1 VERSION
16              
17             Version 0.01
18              
19             =cut
20              
21             our $VERSION = '0.01';
22             #---------------------------------------------------------------------------
23             # Mods
24             # 0.01 - 2003.08.11 - original version
25             #---------------------------------------------------------------------------
26              
27             =head1 DESCRIPTION
28              
29             Biblio::ILL::ISO::ShippedVia is a derivation of Biblio::ILL::ISO::ILLASNtype.
30              
31             =head1 USES
32              
33             Biblio::ILL::ISO::TransportationMode
34             Biblio::ILL::ISO::ElectronicDeliveryService
35              
36             =head1 USED IN
37              
38             Biblio::ILL::ISO::SupplyDetails
39              
40             =cut
41              
42 4     4   11336 BEGIN{@ISA = qw ( Biblio::ILL::ISO::ILLASNtype );} # inherit from ILLASNtype
43              
44             =head1 FROM THE ASN DEFINITION
45            
46             Shipped-Via ::= CHOICE {
47             physical-delivery [5] Transportation-Mode,
48             electronic-delivery [50] IMPLICIT Electronic-Delivery-Service
49             }
50              
51             =cut
52              
53             =head1 METHODS
54              
55             =cut
56              
57             #---------------------------------------------------------------
58             #
59             #---------------------------------------------------------------
60             =head1
61              
62             =head2 new( $transportation_mode | $electronic_delivery_service )
63              
64             Creates a new ShippedVia object.
65             Expects either a transportation mode (Biblio::ILL::ISO::TransportationMode), or
66             an electronic delivery service (Biblio::ILL::ISO::ElectronicDeliveryService).
67              
68             =cut
69             sub new {
70 2     2 1 4 my $class = shift;
71 2         4 my $self = {};
72              
73 2 50       5 if (@_) {
74 2         2 my ($objref) = @_;
75            
76 2 50       13 if (ref($objref) eq "Biblio::ILL::ISO::TransportationMode") {
    0          
77 2         5 $self->{"physical-delivery"} = $objref;
78             } elsif (ref($objref) eq "Biblio::ILL::ISO::ElectronicDeliveryService") {
79 0         0 $self->{"electronic-delivery"} = $objref;
80             } else {
81 0         0 croak "Invalid ElectronicDeliveryService";
82             }
83             }
84              
85 2   33     11 bless($self, ref($class) || $class);
86 2         10 return ($self);
87             }
88              
89              
90             #---------------------------------------------------------------
91             #
92             #---------------------------------------------------------------
93             =head1
94              
95             =head2 new( $transportation_mode | $electronic_delivery_service )
96              
97             Sets the object's physical-delivery (transportation mode) (Biblio::ILL::ISO::TransportationMode), or
98             electronic-delivery (Biblio::ILL::ISO::ElectronicDeliveryService).
99              
100             =cut
101             sub set {
102 0     0 0   my $self = shift;
103 0           my ($objref) = @_;
104            
105 0 0         if (ref($objref) eq "Biblio::ILL::ISO::TransportationMode") {
    0          
106 0           $self->{"physical-delivery"} = $objref;
107             } elsif (ref($objref) eq "Biblio::ILL::ISO::ElectronicDeliveryService") {
108 0           $self->{"electronic-delivery"} = $objref;
109             } else {
110 0           croak "Invalid ElectronicDeliveryService";
111             }
112            
113 0           return;
114             }
115              
116             #---------------------------------------------------------------
117             #
118             #---------------------------------------------------------------
119             =head1
120              
121             =head2 from_asn($href)
122              
123             Given a properly formatted hash, builds the object.
124              
125             =cut
126             sub from_asn {
127 0     0 1   my $self = shift;
128 0           my $href = shift;
129              
130 0           foreach my $k (keys %$href) {
131             #print ref($self) . "...$k\n";
132              
133 0 0         if ($k =~ /^physical-delivery$/) {
    0          
134 0           $self->{$k} = new Biblio::ILL::ISO::TransportationMode();
135 0           $self->{$k}->from_asn($href->{$k});
136              
137             } elsif ($k =~ /^electronic-delivery$/) {
138 0           $self->{$k} = new Biblio::ILL::ISO::ElectronicDeliveryService();
139 0           $self->{$k}->from_asn($href->{$k});
140              
141             } else {
142 0           croak "invalid " . ref($self) . " element: [$k]";
143             }
144              
145             }
146 0           return $self;
147             }
148              
149             =head1 SEE ALSO
150              
151             See the README for system design notes.
152             See the parent class(es) for other available methods.
153              
154             For more information on Interlibrary Loan standards (ISO 10160/10161),
155             a good place to start is:
156              
157             http://www.nlc-bnc.ca/iso/ill/main.htm
158              
159             =cut
160              
161             =head1 AUTHOR
162              
163             David Christensen,
164              
165             =cut
166              
167              
168             =head1 COPYRIGHT AND LICENSE
169              
170             Copyright 2003 by David Christensen
171              
172             This library is free software; you can redistribute it and/or modify it
173             under the same terms as Perl itself.
174              
175             =cut
176              
177             1;