more better error reporting
[migration-tools.git] / fingerprinter
index 919744c..e89587e 100755 (executable)
@@ -40,11 +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}) {
-            dump_exception($marc);
-            next;
-        }
+        unless (marc_isvalid($marc))
+          { dump_exception($marc); next; }
         dump_fingerprints($marc);
     }
 }
@@ -73,6 +70,8 @@ sub populate_marc {
     # date1, date2
     my $my_008 = $record->field('008');
     $my_008 = $my_008->as_string() if ($my_008);
+    unless (length $my_008 == 40)
+      { print XF ">> Bad 008 field length in rec. $id\n"; return $marc }
     $marc{date1} = substr($my_008,7,4) if ($my_008);
     $marc{date2} = substr($my_008,11,4) if ($my_008); # UNUSED
 
@@ -158,6 +157,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
@@ -227,8 +241,9 @@ 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 date1. " unless (defined $marc->{date1});
+    print XF "Invalid date1: ", $marc->{date1}
+      unless ($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});