/[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 289 by dpavlin, Sun Dec 18 22:16:44 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 blib;  use MARC::Fast 0.03;
7    use base qw/WebPAC::Common/;
 use WebPAC::Common;  
 use MARC::Fast;  
8    
9  =head1 NAME  =head1 NAME
10    
# Line 14  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.01  Version 0.06
16    
17  =cut  =cut
18    
19  our $VERSION = '0.01';  our $VERSION = '0.06';
20    
21    
22  =head1 SYNOPSIS  =head1 SYNOPSIS
# Line 26  our $VERSION = '0.01'; Line 24  our $VERSION = '0.01';
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 50  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          my $db_size = $db->count;                  marcdb => $arg->{path},
57                    hash_filter => $arg->{filter},
58            );
59            my $db_size = $db->count - 1;   # FIXME
60    
61            $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 69  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}) {
83                    $self->_get_logger()->warn("seek beyond database size $self->{_marc_size} to $mfn");
84            } else {
85                    my $row = $self->{_marc_db}->to_hash($mfn);
86                    push @{$row->{'000'}}, $mfn;
87                    return $row;
88            }
89    }
90    
91    =head2 size
92    
93          return $db->fetch($mfn);  Return number of records in database
94    
95      my $size = $isis->size;
96    
97    =cut
98    
99    sub size {
100            my $self = shift;
101            return $self->{_marc_size};
102  }  }
103    
104    
105  =head1 AUTHOR  =head1 AUTHOR
106    
107  Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>  Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>

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

  ViewVC Help
Powered by ViewVC 1.1.26