File Coverage

blib/lib/Biblio/ILL/ISO/PostalAddress.pm
Criterion Covered Total %
statement 30 92 32.6
branch 11 46 23.9
condition 2 27 7.4
subroutine 6 17 35.2
pod 12 12 100.0
total 61 194 31.4


line stmt bran cond sub pod time code
1             package Biblio::ILL::ISO::PostalAddress;
2              
3             =head1 NAME
4              
5             Biblio::ILL::ISO::PostalAddress
6              
7             =cut
8              
9 4     4   27 use Biblio::ILL::ISO::ILLASNtype;
  4         10  
  4         114  
10 4     4   22 use Biblio::ILL::ISO::ILLString;
  4         9  
  4         93  
11 4     4   24 use Biblio::ILL::ISO::NameOfPersonOrInstitution;
  4         11  
  4         115  
12              
13 4     4   21 use Carp;
  4         9  
  4         469  
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.07.15 - original version
25             #---------------------------------------------------------------------------
26              
27             =head1 DESCRIPTION
28              
29             Biblio::ILL::ISO::PostalAddress is a derivation of Biblio::ILL::ISO::ILLASNtype.
30              
31             =head1 USES
32              
33             Biblio::ILL::ISO::ILLString
34             Biblio::ILL::ISO::NameOfPersonOrInstitution
35              
36             =head1 USED IN
37              
38             Biblio::ILL::ISO::DeliveryAddress
39             Biblio::ILL::ISO::WillSupplyResults
40              
41             =cut
42              
43 4     4   6380 BEGIN{@ISA = qw ( Biblio::ILL::ISO::ILLASNtype );} # inherit from ILLASNtype
44              
45             =head1 FROM THE ASN DEFINITION
46            
47             Postal-Address ::= SEQUENCE {
48             name-of-person-or-institution [0] Name-Of-Person-Or-Institution OPTIONAL,
49             extended-postal-delivery-address [1] ILL-String OPTIONAL,
50             street-and-number [2] ILL-String OPTIONAL,
51             post-office-box [3] ILL-String OPTIONAL,
52             city [4] ILL-String OPTIONAL,
53             region [5] ILL-String OPTIONAL,
54             country [6] ILL-String OPTIONAL,
55             postal-code [7] ILL-String OPTIONAL
56             }
57              
58             =cut
59              
60             =head1 METHODS
61              
62             =cut
63              
64             #---------------------------------------------------------------
65             #
66             #---------------------------------------------------------------
67             =head1
68              
69             =head2 new( [$iname] [,[$pname] [,[$extended] [,[$street] [,[$box] [,[$city] [,[$region] [,[$country] [,$postcode]]]]]]]] )
70              
71             Creates a new PostalAddress object.
72             Expects either no paramaters, or any of the following:
73             an institution name (text string),
74             a person name (text string),
75             an extended-postal-delivery-address (text string),
76             a street-and-number (text string),
77             a post-office-box (text string),
78             a city (text string),
79             a region (text string),
80             a country (text string), and/or
81             a postal-code (text string).
82              
83             Pass empty strings ("") as placeholders.
84              
85             =cut
86             sub new {
87 4     4 1 23 my $class = shift;
88 4         9 my $self = {};
89              
90 4 50       12 if (@_) {
91 4         15 my ($iname, $pname, $extended, $street, $box,
92             $city, $region, $country, $postcode) = @_;
93            
94 4 50 33     30 if (($pname) or ($iname)) {
95 4         18 $self->{"name-of-person-or-institution"} = new Biblio::ILL::ISO::NameOfPersonOrInstitution();
96 4 50       25 $self->{"name-of-person-or-institution"}->set_institution_name($iname) if ($iname);
97 4 50       26 $self->{"name-of-person-or-institution"}->set_person_name($pname) if ($pname);
98             }
99 4 50       33 $self->{"extended-postal-delivery-address"} = new Biblio::ILL::ISO::ILLString($extended) if ($extended);
100 4 50       22 $self->{"street-and-number"} = new Biblio::ILL::ISO::ILLString($street) if ($street);
101 4 50       11 $self->{"post-office-box"} = new Biblio::ILL::ISO::ILLString($box) if ($box);
102 4 50       22 $self->{"city"} = new Biblio::ILL::ISO::ILLString($city) if ($city);
103 4 50       20 $self->{"region"} = new Biblio::ILL::ISO::ILLString($region) if ($region);
104 4 50       22 $self->{"country"} = new Biblio::ILL::ISO::ILLString($country) if ($country);
105 4 50       24 $self->{"postal-code"} = new Biblio::ILL::ISO::ILLString($postcode) if ($postcode);
106             }
107              
108 4   33     21 bless($self, ref($class) || $class);
109 4         35 return ($self);
110             }
111              
112              
113             #---------------------------------------------------------------
114             #
115             #---------------------------------------------------------------
116             =head1
117              
118             =head2 set( [$iname] [,[$pname] [,[$extended] [,[$street] [,[$box] [,[$city] [,[$region] [,[$country] [,$postcode]]]]]]]] )
119              
120             Sets the object's institution name (text string) or person name (text string),
121             extended-postal-delivery-address (text string),
122             street-and-number (text string),
123             post-office-box (text string),
124             city (text string),
125             region (text string),
126             country (text string), and/or
127             postal-code (text string).
128              
129             Pass empty strings ("") as placeholders.
130              
131             =cut
132             sub set {
133 0     0 1   my $self = shift;
134 0           my ($iname, $pname, $extended, $street, $box,
135             $city, $region, $country, $postcode) = @_;
136              
137 0 0 0       if (($pname) or ($iname)) {
138 0           $self->{"name-of-person-or-institution"} = new Biblio::ILL::ISO::NameOfPersonOrInstitution();
139 0 0         $self->{"name-of-person-or-institution"}->set_institution_name($iname) if ($iname);
140 0 0         $self->{"name-of-person-or-institution"}->set_person_name($pname) if ($pname);
141             }
142 0 0         $self->{"extended-postal-delivery-address"} = new Biblio::ILL::ISO::ILLString($extended) if ($extended);
143 0 0         $self->{"street-and-number"} = new Biblio::ILL::ISO::ILLString($street) if ($street);
144 0 0         $self->{"post-office-box"} = new Biblio::ILL::ISO::ILLString($box) if ($box);
145 0 0         $self->{"city"} = new Biblio::ILL::ISO::ILLString($city) if ($city);
146 0 0         $self->{"region"} = new Biblio::ILL::ISO::ILLString($region) if ($region);
147 0 0         $self->{"country"} = new Biblio::ILL::ISO::ILLString($country) if ($country);
148 0 0         $self->{"postal-code"} = new Biblio::ILL::ISO::ILLString($postcode) if ($postcode);
149              
150 0           return;
151             }
152              
153             #---------------------------------------------------------------
154             #
155             #---------------------------------------------------------------
156             =head1
157              
158             =head2 set_person_name( $s )
159              
160             Sets the object's name-of-person-or-institution.
161             Expects a text string.
162              
163             =cut
164             sub set_person_name {
165 0     0 1   my $self = shift;
166 0           my ($s) = @_;
167              
168 0           $self->{"name-of-person-or-institution"} = new Biblio::ILL::ISO::NameOfPersonOrInstitution();
169 0           $self->{"name-of-person-or-institution"}->set_person_name($s);
170              
171 0           return;
172             }
173              
174             #---------------------------------------------------------------
175             #
176             #---------------------------------------------------------------
177             =head1
178              
179             =head2 set_institution_name( $s )
180              
181             Sets the object's name-of-person-or-institution.
182             Expects a text string.
183              
184             =cut
185             sub set_institution_name {
186 0     0 1   my $self = shift;
187 0           my ($s) = @_;
188              
189 0           $self->{"name-of-person-or-institution"} = new Biblio::ILL::ISO::NameOfPersonOrInstitution();
190 0           $self->{"name-of-person-or-institution"}->set_institution_name($s);
191              
192 0           return;
193             }
194              
195             #---------------------------------------------------------------
196             #
197             #---------------------------------------------------------------
198             =head1
199              
200             =head2 set_extended_address( $s )
201              
202             Sets the object's extended-postal-delivery-address.
203             Expects a text string.
204              
205             =cut
206             sub set_extended_address {
207 0     0 1   my $self = shift;
208 0           my ($s) = @_;
209              
210 0           $self->{"extended-postal-delivery-address"} = new Biblio::ILL::ISO::ILLString($s);
211              
212 0           return;
213             }
214              
215             #---------------------------------------------------------------
216             #
217             #---------------------------------------------------------------
218             =head1
219              
220             =head2 set_street( $s )
221              
222             Sets the object's street-and-number.
223             Expects a text string.
224              
225             =cut
226             sub set_street {
227 0     0 1   my $self = shift;
228 0           my ($s) = @_;
229              
230 0           $self->{"street-and-number"} = new Biblio::ILL::ISO::ILLString($s);
231              
232 0           return;
233             }
234              
235             #---------------------------------------------------------------
236             #
237             #---------------------------------------------------------------
238             =head1
239              
240             =head2 set_pobox( $s )
241              
242             Sets the object's post-office-box.
243             Expects a text string.
244              
245             =cut
246             sub set_pobox {
247 0     0 1   my $self = shift;
248 0           my ($s) = @_;
249              
250 0           $self->{"post-office-box"} = new Biblio::ILL::ISO::ILLString($s);
251              
252 0           return;
253             }
254              
255             #---------------------------------------------------------------
256             #
257             #---------------------------------------------------------------
258             =head1
259              
260             =head2 set_city( $s )
261              
262             Sets the object's city.
263             Expects a text string.
264              
265             =cut
266             sub set_city {
267 0     0 1   my $self = shift;
268 0           my ($s) = @_;
269              
270 0           $self->{"city"} = new Biblio::ILL::ISO::ILLString($s);
271              
272 0           return;
273             }
274              
275             #---------------------------------------------------------------
276             #
277             #---------------------------------------------------------------
278             =head1
279              
280             =head2 set_region( $s )
281              
282             Sets the object's region.
283             Expects a text string.
284              
285             =cut
286             sub set_region {
287 0     0 1   my $self = shift;
288 0           my ($s) = @_;
289              
290 0           $self->{"region"} = new Biblio::ILL::ISO::ILLString($s);
291              
292 0           return;
293             }
294              
295             #---------------------------------------------------------------
296             #
297             #---------------------------------------------------------------
298             =head1
299              
300             =head2 set_country( $s )
301              
302             Sets the object's country.
303             Expects a text string.
304              
305             =cut
306             sub set_country {
307 0     0 1   my $self = shift;
308 0           my ($s) = @_;
309              
310 0           $self->{"country"} = new Biblio::ILL::ISO::ILLString($s);
311              
312 0           return;
313             }
314              
315             #---------------------------------------------------------------
316             #
317             #---------------------------------------------------------------
318             =head1
319              
320             =head2 set_postal_code( $s )
321              
322             Sets the object's postal-code.
323             Expects a text string.
324              
325             =cut
326             sub set_postal_code {
327 0     0 1   my $self = shift;
328 0           my ($s) = @_;
329              
330 0           $self->{"postal-code"} = new Biblio::ILL::ISO::ILLString($s);
331              
332 0           return;
333             }
334              
335              
336             #---------------------------------------------------------------
337             #
338             #---------------------------------------------------------------
339             =head1
340              
341             =head2 from_asn($href)
342              
343             Given a properly formatted hash, builds the object.
344              
345             =cut
346             sub from_asn {
347 0     0 1   my $self = shift;
348 0           my $href = shift;
349              
350 0           foreach my $k (keys %$href) {
351             #print ref($self) . "...$k\n";
352              
353 0 0 0       if ($k =~ /^name-of-person-or-institution$/) {
    0 0        
      0        
      0        
      0        
      0        
354 0           $self->{$k} = new Biblio::ILL::ISO::NameOfPersonOrInstitution();
355 0           $self->{$k}->from_asn($href->{$k});
356              
357             } elsif (($k =~ /^extended-postal-delivery-address$/)
358             || ($k =~ /^street-and-number$/)
359             || ($k =~ /^post-office-box$/)
360             || ($k =~ /^city$/)
361             || ($k =~ /^region$/)
362             || ($k =~ /^country$/)
363             || ($k =~ /^postal-code$/)
364             ) {
365 0           $self->{$k} = new Biblio::ILL::ISO::ILLString();
366 0           $self->{$k}->from_asn($href->{$k});
367              
368             } else {
369 0           croak "invalid " . ref($self) . " element: [$k]";
370             }
371              
372             }
373 0           return $self;
374             }
375              
376             =head1 SEE ALSO
377              
378             See the README for system design notes.
379             See the parent class(es) for other available methods.
380              
381             For more information on Interlibrary Loan standards (ISO 10160/10161),
382             a good place to start is:
383              
384             http://www.nlc-bnc.ca/iso/ill/main.htm
385              
386             =cut
387              
388             =head1 AUTHOR
389              
390             David Christensen,
391              
392             =cut
393              
394              
395             =head1 COPYRIGHT AND LICENSE
396              
397             Copyright 2003 by David Christensen
398              
399             This library is free software; you can redistribute it and/or modify it
400             under the same terms as Perl itself.
401              
402             =cut
403              
404             1;