/[webpac2]/trunk/lib/WebPAC/Input/MARC.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/lib/WebPAC/Input/MARC.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 337 by dpavlin, Sat Dec 31 16:41:35 2005 UTC revision 726 by dpavlin, Fri Sep 29 19:52:17 2006 UTC
# Line 3  package WebPAC::Input::MARC; Line 3  package WebPAC::Input::MARC;
3  use warnings;  use warnings;
4  use strict;  use strict;
5    
6  use MARC::Fast;  use MARC::Fast 0.03;
7    use base qw/WebPAC::Common/;
8    
9  =head1 NAME  =head1 NAME
10    
# Line 11  WebPAC::Input::MARC - support for MARC d Line 12  WebPAC::Input::MARC - support for MARC d
12    
13  =head1 VERSION  =head1 VERSION
14    
15  Version 0.04  Version 0.06
16    
17  =cut  =cut
18    
19  our $VERSION = '0.04';  our $VERSION = '0.06';
20    
21    
22  =head1 SYNOPSIS  =head1 SYNOPSIS
# Line 23  our $VERSION = '0.04'; Line 24  our $VERSION = '0.04';
24  Open USMARC, Unimarc or any other file format that has same internal  Open USMARC, Unimarc or any other file format that has same internal
25  structure using C<MARC::Fast>.  structure using C<MARC::Fast>.
26    
27   my $marc = new WebPAC::Input::MARC();   my $marc = new WebPAC::Input::MARC(
28   $marc->open( path => '/path/to/marc.iso' );          path => '/path/to/marc.iso'
29     );
30    
31  =head1 FUNCTIONS  =head1 FUNCTIONS
32    
33  =head2 open_db  =head2 new
34    
35  Returns handle to database  Returns new low-level input API object
36    
37    my $db = $open_db(    my $marc = new WebPAC::Input::MARC(
38          path => '/path/to/marc.iso'          path => '/path/to/marc.iso',
39            filter => \&code_ref,
40    }    }
41    
42  =cut  =cut
43    
44  sub open_db {  sub new {
45          my $self = shift;          my $class = shift;
46            my $self = {@_};
47            bless($self, $class);
48    
49          my $arg = {@_};          my $arg = {@_};
50    
# Line 47  sub open_db { Line 52  sub open_db {
52    
53          $log->info("opening MARC database '$arg->{path}'");          $log->info("opening MARC database '$arg->{path}'");
54    
55          my $db = new MARC::Fast( marcdb => $arg->{path});          my $db = new MARC::Fast(
56                    marcdb => $arg->{path},
57                    hash_filter => $arg->{filter},
58            );
59          my $db_size = $db->count - 1;   # FIXME          my $db_size = $db->count - 1;   # FIXME
60    
61          $self->{_marc_size} = $db_size;          $self->{_marc_size} = $db_size;
62            $self->{_marc_db} = $db;
63    
64          return ($db, $db_size);          $self ? return $self : return undef;
65  }  }
66    
67  =head2 fetch_rec  =head2 fetch_rec
68    
69  Return record with ID C<$mfn> from database  Return record with ID C<$mfn> from database
70    
71    my $rec = $self->fetch_rec( $db, $mfn );    my $rec = $self->fetch_rec( $mfn );
72    
73  }  }
74    
# Line 68  Return record with ID C<$mfn> from datab Line 77  Return record with ID C<$mfn> from datab
77  sub fetch_rec {  sub fetch_rec {
78          my $self = shift;          my $self = shift;
79    
80          my ($db, $mfn) = @_;          my $mfn = shift;
81    
82          if ($mfn > $self->{_marc_size}) {          if ($mfn > $self->{_marc_size}) {
83                  $self->_get_logger()->warn("seek beyond database size $self->{_marc_size} to $mfn");                  $self->_get_logger()->warn("seek beyond database size $self->{_marc_size} to $mfn");
84          } else {          } else {
85                  my $row = $db->to_hash($mfn);                  my $row = $self->{_marc_db}->to_hash($mfn);
86                  push @{$row->{'000'}}, $mfn;                  push @{$row->{'000'}}, $mfn;
87                  return $row;                  return $row;
88          }          }
89  }  }
90    
91  =head1 PROPERTIES  =head2 size
92    
93  =head2 _marc_size  Return number of records in database
94    
95  Store size of MARC database    my $size = $isis->size;
96    
97    print $self->{_marc_size};  =cut
98    
99    sub size {
100            my $self = shift;
101            return $self->{_marc_size};
102    }
103    
104    
105  =head1 AUTHOR  =head1 AUTHOR

Legend:
Removed from v.337  
changed lines
  Added in v.726

  ViewVC Help
Powered by ViewVC 1.1.26