/[webpac2]/trunk/lib/WebPAC/Input/ISIS.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

Annotation of /trunk/lib/WebPAC/Input/ISIS.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 825 - (hide annotations)
Fri May 18 21:41:19 2007 UTC (17 years ago) by dpavlin
File size: 2509 byte(s)
request Biblio::Isis 0.24 to ignore empty subfields

1 dpavlin 6 package WebPAC::Input::ISIS;
2    
3     use warnings;
4     use strict;
5    
6 dpavlin 285 use WebPAC::Input;
7 dpavlin 825 use Biblio::Isis;
8 dpavlin 726 use base qw/WebPAC::Common/;
9 dpavlin 285
10 dpavlin 6 =head1 NAME
11    
12 dpavlin 285 WebPAC::Input::ISIS - support for CDS/ISIS database files
13 dpavlin 6
14     =head1 VERSION
15    
16 dpavlin 774 Version 0.09
17 dpavlin 6
18     =cut
19    
20 dpavlin 774 our $VERSION = '0.09';
21 dpavlin 6
22    
23     =head1 SYNOPSIS
24    
25 dpavlin 623 Open CDS/ISIS, WinISIS or IsisMarc database using C<Biblio::Isis>
26     and read all records to memory.
27 dpavlin 6
28 dpavlin 726 my $isis = new WebPAC::Input::ISIS(
29     path => '/path/to/ISIS/ISIS',
30     );
31 dpavlin 6
32     =head1 FUNCTIONS
33    
34 dpavlin 726 =head2 new
35 dpavlin 6
36 dpavlin 726 Returns new low-level input API object
37 dpavlin 6
38 dpavlin 726 my $isis = new WebPAC::Input::ISIS(
39 dpavlin 285 path => '/path/to/LIBRI'
40 dpavlin 597 filter => sub {
41     my ($l,$field_nr) = @_;
42     # do something with $l which is line of input file
43     return $l;
44     },
45 dpavlin 285 }
46    
47 dpavlin 597 Options:
48    
49     =over 4
50    
51     =item path
52    
53     path to CDS/ISIS database
54    
55     =back
56    
57 dpavlin 6 =cut
58    
59 dpavlin 726 sub new {
60     my $class = shift;
61     my $self = {@_};
62     bless($self, $class);
63 dpavlin 285
64 dpavlin 6 my $arg = {@_};
65    
66     my $log = $self->_get_logger();
67    
68 dpavlin 285 $log->info("opening ISIS database '$arg->{path}'");
69 dpavlin 6
70 dpavlin 623 $log->debug("using Biblio::Isis");
71     my $isis_db = new Biblio::Isis(
72     isisdb => $arg->{path},
73     include_deleted => 1,
74     hash_filter => $arg->{filter} ? sub { return $arg->{filter}->(@_); } : undef,
75 dpavlin 825 ignore_empty_subfields => 1,
76 dpavlin 623 ) or $log->logdie("can't find database $arg->{path}");
77 dpavlin 6
78 dpavlin 652 $self->{_isis_db} = $isis_db;
79    
80 dpavlin 726 $self ? return $self : return undef;
81 dpavlin 285 }
82 dpavlin 6
83 dpavlin 285 =head2 fetch_rec
84 dpavlin 6
85 dpavlin 285 Return record with ID C<$mfn> from database
86 dpavlin 6
87 dpavlin 726 my $rec = $isis->fetch_rec( $mfn, $filter_coderef);
88 dpavlin 6
89 dpavlin 285 =cut
90 dpavlin 6
91 dpavlin 285 sub fetch_rec {
92     my $self = shift;
93 dpavlin 6
94 dpavlin 652 my ($mfn, $filter_coderef) = @_;
95 dpavlin 6
96 dpavlin 652 my $rec = $self->{_isis_db}->to_hash({
97 dpavlin 623 mfn => $mfn,
98     include_subfields => 1,
99 dpavlin 625 hash_filter => $filter_coderef,
100     # hash_filter => sub {
101     # my ($l,$f) = @_;
102     # warn "## in hash_filter ($l,$f)\n";
103     # my $o = $filter_coderef->($l,$f) if ($filter_coderef);
104     # warn "## out hash_filter = $o\n";
105     # return $o;
106     # },
107 dpavlin 623 });
108 dpavlin 6
109 dpavlin 285 return $rec;
110 dpavlin 6 }
111    
112 dpavlin 774 =head2 dump_ascii
113 dpavlin 652
114     Return dump of record ID C<$mfn> from database
115    
116 dpavlin 774 my $rec = $isis->dump_ascii( $mfn );
117 dpavlin 652
118     =cut
119    
120 dpavlin 774 sub dump_ascii {
121 dpavlin 652 my $self = shift;
122    
123     my $mfn = shift;
124    
125     return $self->{_isis_db}->to_ascii( $mfn );
126     }
127    
128 dpavlin 726 =head2 size
129    
130     Return number of records in database
131    
132     my $size = $isis->size;
133    
134     =cut
135    
136     sub size {
137     my $self = shift;
138     return $self->{_isis_db}->count;
139     }
140    
141 dpavlin 6 =head1 AUTHOR
142    
143     Dobrica Pavlinusic, C<< <dpavlin@rot13.org> >>
144    
145     =head1 COPYRIGHT & LICENSE
146    
147     Copyright 2005 Dobrica Pavlinusic, All Rights Reserved.
148    
149     This program is free software; you can redistribute it and/or modify it
150     under the same terms as Perl itself.
151    
152     =cut
153    
154     1; # End of WebPAC::Input::ISIS

  ViewVC Help
Powered by ViewVC 1.1.26