--- trunk/lib/WebPAC/Input.pm 2006/09/25 15:26:12 707 +++ trunk/lib/WebPAC/Input.pm 2006/09/29 19:52:17 726 @@ -98,28 +98,16 @@ $log->logconfess("lookup argument is not suppored any more. rewrite call to lookup_ref") if ($self->{lookup}); $log->logconfess("specify low-level file format module") unless ($self->{module}); - my $module = $self->{module}; - $module =~ s#::#/#g; - $module .= '.pm'; - $log->debug("require low-level module $self->{module} from $module"); + my $module_path = $self->{module}; + $module_path =~ s#::#/#g; + $module_path .= '.pm'; + $log->debug("require low-level module $self->{module} from $module_path"); - require $module; - #eval $self->{module} .'->import'; + require $module_path; # check if required subclasses are implemented foreach my $subclass (qw/open_db fetch_rec init dump_rec/) { - my $n = $self->{module} . '::' . $subclass; - if (! defined &{ $n }) { - my $missing = "missing $subclass in $self->{module}"; - $self->{$subclass} = sub { $log->logwarn($missing) }; - } else { - $self->{$subclass} = \&{ $n }; - } - } - - if ($self->{init}) { - $log->debug("calling init"); - $self->{init}->($self, @_); + # FIXME } $self->{'encoding'} ||= 'ISO-8859-2'; @@ -250,7 +238,9 @@ } $log->debug("rec_regex: ", Dumper($rec_regex)) if ($rec_regex); - my ($db, $size) = $self->{open_db}->( $self, + my $class = $self->{module} || $log->logconfess("can't get low-level module name!"); + + my $ll_db = $class->new( path => $arg->{path}, # filter => sub { # my ($l,$f_nr) = @_; @@ -262,11 +252,13 @@ %{ $arg }, ); - unless (defined($db)) { + unless (defined($ll_db)) { $log->logwarn("can't open database $arg->{path}, skipping..."); return; } + my $size = $ll_db->size; + unless ($size) { $log->logwarn("no records in database $arg->{path}, skipping..."); return; @@ -298,7 +290,7 @@ $log->debug("position: $pos\n"); - my $rec = $self->{fetch_rec}->($self, $pos, sub { + my $rec = $ll_db->fetch_rec($pos, sub { my ($l,$f_nr) = @_; # return unless defined($l); # return $l unless ($rec_regex && $f_nr); @@ -348,7 +340,7 @@ if ($self->{stats}) { # fetch clean record with regexpes applied for statistics - my $rec = $self->{fetch_rec}->($self, $pos); + my $rec = $ll_db->fetch_rec($pos); foreach my $fld (keys %{ $rec }) { $self->{_stats}->{fld}->{ $fld }++;