call parser with --only filter,
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 3 Nov 2007 12:34:26 +0000 (12:34 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sat, 3 Nov 2007 12:34:26 +0000 (12:34 +0000)
create MARC files even when normalization rules don't return any data_structure

git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@977 07558da8-63fa-0310-ba24-9fe276d99e06

run.pl

diff --git a/run.pl b/run.pl
index 576f4ca..ffb990a 100755 (executable)
--- a/run.pl
+++ b/run.pl
@@ -191,7 +191,13 @@ if ($stats) {
 
 # parse normalize files and create source files for lookup and normalization
 
-my $parser = new WebPAC::Parser( config => $config );
+my ($only_database,$only_input) = split(m#/#, $only_filter) if $only_filter;
+
+my $parser = new WebPAC::Parser(
+       config => $config,
+       only_database => $only_database,
+       only_input => $only_input,
+);
 
 my $total_rows = 0;
 my $start_t = time();
@@ -215,7 +221,6 @@ sub create_ds_config {
 foreach my $database ( sort keys %{ $config->databases } ) {
        my $db_config = $config->databases->{$database};
 
-       my ($only_database,$only_input) = split(m#/#, $only_filter) if ($only_filter);
        next if ($only_database && $database !~ m/$only_database/i);
 
        if ($parallel) {
@@ -550,7 +555,7 @@ foreach my $database ( sort keys %{ $config->databases } ) {
                                next;   # validation doesn't create any output
                        }
 
-                       if ( my $ds = WebPAC::Normalize::data_structure(
+                       my $ds = WebPAC::Normalize::data_structure(
                                row => $row,
                                rules => $rules,
                                lookup => $lookup_hash,
@@ -558,15 +563,18 @@ foreach my $database ( sort keys %{ $config->databases } ) {
                                marc_encoding => 'utf-8',
                                load_row_coderef => sub {
                                        my ($database,$input,$mfn) = @_;
+warn "### load_row($database,$input,$mfn) from data_structure\n";
                                        return $store->load_row(
                                                database => $database,
                                                input => $input,
                                                id => $mfn,
                                        );
                                },
-                       ) ) { # if
+                       );
+
+                       $log->debug("ds = ", sub { dump($ds) });
 
-                               $log->debug("ds = ", sub { dump($ds) });
+                       if ( $ds ) {
 
                                $store->save_ds(
                                        database => $database,
@@ -581,28 +589,28 @@ foreach my $database ( sort keys %{ $config->databases } ) {
                                        type => $config->get($indexer_config)->{type},
                                ) if $indexer;
 
-                               if ($marc) {
-                                       my $i = 0;
-
-                                       while (my $fields = WebPAC::Normalize::_get_marc_fields( fetch_next => 1 ) ) {
-                                               $marc->add(
-                                                       id => $mfn . ( $i ? "/$i" : '' ),
-                                                       fields => $fields,
-                                                       leader => WebPAC::Normalize::_get_marc_leader(),
-                                                       row => $row,
-                                               );
-                                               $i++;
-                                       }
-
-                                       $log->info("Created $i instances of MFN $mfn\n") if ($i > 1);
-                               }
-
                                foreach my $out ( @output_modules ) {
                                        $out->add( $mfn, $ds ) if $out->can('add');
                                }
 
                        } else {
-                               $log->warn("record $pos didn't produce any output after normalization rules!");
+                               $log->warn("record $pos didn't produce any output after normalization rules!") unless $marc;
+                       }
+
+                       if ($marc) {
+                               my $i = 0;
+
+                               while (my $fields = WebPAC::Normalize::_get_marc_fields( fetch_next => 1 ) ) {
+                                       $marc->add(
+                                               id => $mfn . ( $i ? "/$i" : '' ),
+                                               fields => $fields,
+                                               leader => WebPAC::Normalize::_get_marc_leader(),
+                                               row => $row,
+                                       );
+                                       $i++;
+                               }
+
+                               $log->info("Created $i instances of MFN $mfn\n") if ($i > 1);
                        }
 
                }