File Coverage

blib/lib/Net/OAI/Record/Header.pm
Criterion Covered Total %
statement 56 56 100.0
branch 20 20 100.0
condition 1 3 33.3
subroutine 10 10 100.0
pod 8 8 100.0
total 95 97 97.9


line stmt bran cond sub pod time code
1             package Net::OAI::Record::Header;
2              
3 14     14   922 use strict;
  14         30  
  14         522  
4 14     14   75 use base qw( XML::SAX::Base );
  14         24  
  14         12673  
5             our $VERSION = 'v1.00.0';
6              
7             =head1 NAME
8              
9             Net::OAI::Record::Header - class for record header representation
10              
11             =head1 SYNOPSIS
12              
13             =head1 DESCRIPTION
14              
15             =head1 METHODS
16              
17             =head2 new()
18              
19             =cut
20              
21             sub new {
22 6593     6593 1 28270 my ( $class, %opts ) = @_;
23 6593   33     59412 my $self = bless \%opts, ref( $class ) || $class;
24 6593         17665 $self->{ status } = '';
25 6593         13027 $self->{ identifier } = '';
26 6593         11397 $self->{ datestamp } = '';
27 6593         13241 $self->{ sets } = [];
28 6593         11681 $self->{ insideHeader } = 0;
29 6593         12563 $self->{ insideSet } = 0;
30 6593         24488 return( $self );
31             }
32              
33             =head2 status()
34              
35             =cut
36              
37             sub status {
38 3     3 1 393 my ( $self, $status ) = @_;
39 3 100       9 if ( $status ) { $self->{ headerStatus } = $status; }
  1         1  
40 3         17 return( $self->{ headerStatus } );
41             }
42              
43             =head2 identifier()
44              
45             =cut
46              
47             sub identifier {
48 5394     5394 1 1753253 my ( $self, $id ) = @_;
49 5394 100       13940 if ( $id ) { $self->{ identifier } = $id; }
  1         3  
50 5394         17223 return( $self->{ identifier } );
51             }
52              
53             =head2 datestamp()
54              
55             =cut
56              
57             sub datestamp {
58 2     2 1 2 my ( $self, $datestamp ) = @_;
59 2 100       6 if ( $datestamp ) { $self->{ datestamp } = $datestamp; }
  1         3  
60 2         6 return( $self->{ datestamp } );
61             }
62              
63             =head2 sets()
64              
65             =cut
66              
67             sub sets {
68 1002     1002 1 392852 my ( $self, @sets ) = @_;
69 1002 100       2820 if ( @sets ) { $self->{ sets } = \@sets; }
  1         3  
70 1002         1260 return( @{ $self->{ sets } } );
  1002         3901  
71             }
72              
73             ## SAX Handlers
74              
75             sub start_element {
76 50059     50059 1 427449 my ( $self, $element ) = @_;
77 50059 100       153239 if ( $element->{ Name } eq 'header' ) {
    100          
78 6592         9941 $self->{ insideHeader } = 1;
79 6592 100       17097 if ( exists( $element->{ Attributes }{ '{}status' } ) ) {
80             $self->{ headerStatus } =
81 1         4 $element->{ Attributes }{ '{}status' }{ Value };
82             } else {
83 6591         15448 $self->{ headerStatus } = '';
84             }
85             }
86             elsif ( $element->{ Name } eq 'setSpec' ) {
87 10932         19962 $self->{ insideSet } = 1;
88             }
89             else {
90 32535         89855 $self->SUPER::start_element( $element );
91             }
92 50059         244430 push( @{ $self->{ tagStack } }, $element->{ Name } );
  50059         310679  
93             }
94              
95             sub end_element {
96 50059     50059 1 407695 my ( $self, $element ) = @_;
97 50059         76602 my $tagName = $element->{ Name };
98 50059 100       121300 if ( $tagName eq 'header' ) {
    100          
99 6592         11595 $self->{ insideHeader } = 0;
100             }
101             elsif ( $tagName eq 'setSpec' ) {
102 10932         13460 push( @{ $self->{ sets } }, $self->{ setSpec } );
  10932         33825  
103 10932         17893 $self->{ insideSet } = 0;
104             }
105             else {
106 32535         94095 $self->SUPER::end_element( $element );
107             }
108 50059         236103 pop( @{ $self->{ tagStack } } );
  50059         176090  
109             }
110              
111             sub characters {
112 97407     97407 1 969703 my ( $self, $characters ) = @_;
113 97407 100       195377 if ( $self->{ insideHeader } ) {
114 54975         362156 $self->{ $self->{ tagStack }[-1] } .= $characters->{ Data };
115             } else {
116 42432         109645 $self->SUPER::characters( $characters );
117             }
118             }
119              
120             1;
121