/[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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 416 - (show annotations)
Sun Feb 26 23:21:50 2006 UTC (18 years, 2 months ago) by dpavlin
File size: 1677 byte(s)
 r494@llin:  dpavlin | 2006-02-27 00:22:59 +0100
 implemented recode option to input (for now, just for MARC)

1 package WebPAC::Input::MARC;
2
3 use warnings;
4 use strict;
5
6 use MARC::Fast 0.03;
7
8 =head1 NAME
9
10 WebPAC::Input::MARC - support for MARC database files
11
12 =head1 VERSION
13
14 Version 0.05
15
16 =cut
17
18 our $VERSION = '0.05';
19
20
21 =head1 SYNOPSIS
22
23 Open USMARC, Unimarc or any other file format that has same internal
24 structure using C<MARC::Fast>.
25
26 my $marc = new WebPAC::Input::MARC();
27 $marc->open( path => '/path/to/marc.iso' );
28
29 =head1 FUNCTIONS
30
31 =head2 open_db
32
33 Returns handle to database
34
35 my $db = $open_db(
36 path => '/path/to/marc.iso',
37 filter => \&code_ref,
38 }
39
40 =cut
41
42 sub open_db {
43 my $self = shift;
44
45 my $arg = {@_};
46
47 my $log = $self->_get_logger();
48
49 $log->info("opening MARC database '$arg->{path}'");
50
51 my $db = new MARC::Fast(
52 marcdb => $arg->{path},
53 hash_filter => $arg->{filter},
54 );
55 my $db_size = $db->count - 1; # FIXME
56
57 $self->{_marc_size} = $db_size;
58
59 return ($db, $db_size);
60 }
61
62 =head2 fetch_rec
63
64 Return record with ID C<$mfn> from database
65
66 my $rec = $self->fetch_rec( $db, $mfn );
67
68 }
69
70 =cut
71
72 sub fetch_rec {
73 my $self = shift;
74
75 my ($db, $mfn) = @_;
76
77 if ($mfn > $self->{_marc_size}) {
78 $self->_get_logger()->warn("seek beyond database size $self->{_marc_size} to $mfn");
79 } else {
80 my $row = $db->to_hash($mfn);
81 push @{$row->{'000'}}, $mfn;
82 return $row;
83 }
84 }
85
86 =head1 PROPERTIES
87
88 =head2 _marc_size
89
90 Store size of MARC database
91
92 print $self->{_marc_size};
93
94
95
96 =head1 AUTHOR
97
98 Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>
99
100 =head1 COPYRIGHT & LICENSE
101
102 Copyright 2005 Dobrica Pavlinusic, All Rights Reserved.
103
104 This program is free software; you can redistribute it and/or modify it
105 under the same terms as Perl itself.
106
107 =cut
108
109 1; # End of WebPAC::Input::MARC

  ViewVC Help
Powered by ViewVC 1.1.26