pre-exception MARC validation abstracted
[migration-tools.git] / fingerprinter
index 25114d5..7bad37e 100755 (executable)
@@ -40,20 +40,8 @@ for my $file (@ARGV) {
 
         my $marc = populate_marc($record, $id);
         $marc    = normalize_marc($marc);
-
-        unless ($marc->{item_form} and ($marc->{date1} =~ /\d{4}/) and
-                $marc->{record_type} and $marc->{bib_lvl} and $marc->{title}) {
-            print XF "Record ", $marc->{id}, " did not make the cut: ";
-            print XF "Missing item_form. " unless ($marc->{item_form});
-            print XF "Missing valid date1. "
-              unless (defined $marc->{date1} and $marc->{date1} =~ /\d{4}/);
-            print XF "Missing record_type. " unless ($marc->{record_type});
-            print XF "Missing bib_lvl. " unless ($marc->{bib_lvl});
-            print XF "Missing title. " unless ($marc->{title});
-            print XF "\n";
-            next;
-        }
-
+        unless (marc_isvalid($marc))
+          { dump_exception($marc); next; }
         dump_fingerprints($marc);
     }
 }
@@ -167,6 +155,21 @@ sub normalize_marc {
 
 
 
+=head2 marc_isvalid
+
+Checks MARC record to see if neccessary fingerprinting data is
+available
+
+=cut
+
+sub marc_isvalid {
+    my ($marc) = @_;
+    return 1 if ($marc->{item_form} and ($marc->{date1} =~ /\d{4}/) and
+                 $marc->{record_type} and $marc->{bib_lvl} and $marc->{title});
+    return 0;
+}
+
+
 =head2 dump_fingerprints
 
 =cut
@@ -225,6 +228,26 @@ sub dump_fingerprints {
 }
 
 
+
+=head2 dump_exception
+
+Write line of exception report
+
+=cut
+
+sub dump_exception {
+    my ($marc) = @_;
+    print XF "Record ", $marc->{id}, " did not make the cut: ";
+    print XF "Missing item_form. " unless ($marc->{item_form});
+    print XF "Missing valid date1. "
+      unless (defined $marc->{date1} and $marc->{date1} =~ /\d{4}/);
+    print XF "Missing record_type. " unless ($marc->{record_type});
+    print XF "Missing bib_lvl. " unless ($marc->{bib_lvl});
+    print XF "Missing title. " unless ($marc->{title});
+    print XF "\n";
+}
+
+
 =head2 initialyze
 
 Performs boring script initialization. Handles argument parsing,