my $ds = $webpac->data_structure($rec);
-B<Note: historical oddity follows>
-
-This method will also set C<< $webpac->{'currnet_filename'} >> if there is
-C<< <filename> >> tag and C<< $webpac->{'headline'} >> if there is
-C<< <headline> >> tag.
-
=cut
sub data_structure {
my $rec = shift;
$log->logconfess("need HASH as first argument!") if ($rec !~ /HASH/o);
+ $log->debug("data_structure rec = ", sub { Dumper($rec) });
+
+ $log->logdie("need unique ID (mfn) in field 000 of record ", sub { Dumper($rec) } ) unless (defined($rec->{'000'}));
+
+ my $mfn = $rec->{'000'}->[0] || $log->logdie("field 000 isn't array!");
+
my $cache_file;
if ($self->{'db'}) {
- my $ds = $self->{'db'}->load_ds($rec);
+ my $ds = $self->{'db'}->load_ds( $mfn );
$log->debug("load_ds( rec = ", sub { Dumper($rec) }, ") = ", sub { Dumper($ds) });
return $ds if ($ds);
$log->debug("cache miss, creating");
@v = map { $self->apply_format($tag->{'format_name'},$tag->{'format_delimiter'},$_) } @v;
}
- if ($field eq 'filename') {
- $self->{'current_filename'} = join('',@v);
- $log->debug("filename: ",$self->{'current_filename'});
- } elsif ($field eq 'headline') {
- $self->{'headline'} .= join('',@v);
- $log->debug("headline: ",$self->{'headline'});
- next; # don't return headline in data_structure!
- }
-
# delimiter will join repeatable fields
if ($tag->{'delimiter'}) {
@v = ( join($tag->{'delimiter'}, @v) );
}
- $log->logdie("there is no current_filename defined! Do you have filename tag in conf/normalize/?.xml") unless ($self->{'current_filename'});
-
$self->{'db'}->save_ds(
+ id => $mfn,
ds => $ds,
- current_filename => $self->{'current_filename'},
- headline => $self->{'headline'},
) if ($self->{'db'});
$log->debug("ds: ", sub { Dumper($ds) });