File Coverage

blib/lib/METS/Files.pm
Criterion Covered Total %
statement 46 46 100.0
branch 8 10 80.0
condition 2 6 33.3
subroutine 9 9 100.0
pod 3 3 100.0
total 68 74 91.8


line stmt bran cond sub pod time code
1             package METS::Files;
2              
3 5     5   224117 use strict;
  5         11  
  5         268  
4 5     5   57 use warnings;
  5         10  
  5         354  
5              
6 5     5   1309 use Class::Utils qw(set_params);
  5         47483  
  5         234  
7 5     5   211 use Error::Pure qw(err);
  5         16  
  5         244  
8 5     5   3027 use METS::Parse::Simple;
  5         73351  
  5         301  
9 5     5   57 use Readonly;
  5         10  
  5         3389  
10              
11             Readonly::Scalar our $EMPTY_STR => q{};
12              
13             our $VERSION = 0.03;
14              
15             # Constructor.
16             sub new {
17 7     7 1 1067185 my ($class, @params) = @_;
18              
19             # Create object.
20 7         30 my $self = bless {}, $class;
21              
22             # METS Data.
23 7         47 $self->{'mets_data'} = undef;
24              
25             # Process parameters.
26 7         45 set_params($self, @params);
27              
28             # Check METS data.
29 7 100       131 if (! defined $self->{'mets_data'}) {
30 1         7 err "Parameter 'mets_data' is required.";
31             }
32 6         57 $self->{'_mets'} = METS::Parse::Simple->new->parse($self->{'mets_data'});
33              
34             # Compute prefix.
35 6         437903 $self->{'_prefix'} = $EMPTY_STR;
36 6 100       47 if (exists $self->{'_mets'}->{'xmlns:mets'}) {
37 3         10 $self->{'_prefix'} = 'mets:';
38             }
39              
40 6         120 return $self;
41             }
42              
43             # Get img files.
44             sub get_use_files {
45 4     4 1 2101 my ($self, $use) = @_;
46              
47 4         9 my @files;
48 4 50 33     45 if (exists $self->{'_mets'}->{$self->{'_prefix'}.'fileSec'}
49             && exists $self->{'_mets'}->{$self->{'_prefix'}.'fileSec'}
50             ->{$self->{'_prefix'}.'fileGrp'}) {
51              
52 4         9 foreach my $mets_file_grp_hr (@{$self->{'_mets'}
53             ->{$self->{'_prefix'}.'fileSec'}
54 4         21 ->{$self->{'_prefix'}.'fileGrp'}}) {
55              
56 8 100       25 if ($mets_file_grp_hr->{'USE'} eq $use) {
57 4         7 foreach my $file_hr (@{$mets_file_grp_hr
58 4         17 ->{$self->{'_prefix'}.'file'}}) {
59              
60             push @files, $file_hr
61             ->{$self->{'_prefix'}.'FLocat'}
62 8         33 ->{'xlink:href'};
63             }
64             }
65             }
66             }
67              
68 4         22 return @files;
69             }
70              
71             sub get_use_types {
72 2     2 1 14 my $self = shift;
73              
74             # Get file types.
75 2         4 my @file_types;
76 2 50 33     22 if (exists $self->{'_mets'}->{$self->{'_prefix'}.'fileSec'}
77             && exists $self->{'_mets'}->{$self->{'_prefix'}.'fileSec'}
78             ->{$self->{'_prefix'}.'fileGrp'}) {
79              
80 2         3 foreach my $mets_file_grp_hr (@{$self->{'_mets'}
81             ->{$self->{'_prefix'}.'fileSec'}
82 2         9 ->{$self->{'_prefix'}.'fileGrp'}}) {
83              
84 4         9 push @file_types, $mets_file_grp_hr->{'USE'};
85             }
86             }
87              
88 2         9 return @file_types;
89             }
90              
91             1;
92              
93             __END__