/[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 625 - (hide annotations)
Sat Aug 26 12:00:36 2006 UTC (17 years, 8 months ago) by dpavlin
File size: 2063 byte(s)
 r878@llin:  dpavlin | 2006-08-26 14:00:08 +0200
 removed some debugging output (or moved it to debug level), few tweaks [2.26]

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

  ViewVC Help
Powered by ViewVC 1.1.26