r1650@llin: dpavlin | 2007-11-20 11:07:57 +0100
[webpac2] / lib / WebPAC / Validate.pm
index 90a6daf..d7ed6fb 100644 (file)
@@ -106,7 +106,7 @@ sub read_validate_file {
                $log->logdie("can't open validate path $path: $!");
 
        my $v;
-       delete( $self->{must_exists} );
+       delete( $self->{must_exist} );
        delete( $self->{must_exist_sf} );
        delete( $self->{dont_validate} );
        my $curr_line = 1;
@@ -135,7 +135,7 @@ sub read_validate_file {
                if (@d) {
                        $v->{$fld} = [ map {
                                my $sf = $_;
-                               if ( $sf =~ s/!(\*)?$/$1/ ) {
+                               if ( $sf =~ s/!// ) {
                                        $self->{must_exist_sf}->{ $fld }->{ $sf }++;
                                };
                                $sf;
@@ -188,6 +188,7 @@ sub read_validate_delimiters_file {
        } else {
                $log->warn("delimiters path $path doesn't exist, it will be created after this run");
        }
+       $self->{delimiters_path} = $path;
 }
 
 =head2 validate_rec
@@ -272,6 +273,7 @@ sub validate_rec {
 #                                      $errors->{dump} = $rec_dump if ($rec_dump);
                                } elsif (ref($v) ne 'HASH') {
                                        $errors->{$f}->{missing_subfield} = join(",", @{ $r->{$f} }) . " required";
+                                       $errors->{$f}->{dump} = $v;
                                        next;
                                } else {
 
@@ -292,7 +294,7 @@ sub validate_rec {
                                                        if ( ref($v->{$sf}) eq 'ARRAY' ) {
                                                                $sf_repeatable->{$sf}++;
                                                        };
-                                                       if (! first { $_ eq $sf } @{ $r->{$f} }) {
+                                                       if (! defined first { $_ eq $sf } @{ $r->{$f} }) {
                                                                $errors->{ $f }->{subfield}->{extra}->{$sf}++;
                                                        }
                                                }
@@ -372,7 +374,7 @@ sub reset {
                                $self->{_delimiters_templates}->{$f}->{$t};
                }
        }
-       $log->debug("_accumulated_delimiters_templates = ", sub { dump( $self->{_accumulated_delimiter_templates} ) } );
+       $log->debug("_accumulated_delimiters_templates = ", sub { dump( $self->{_accumulated_delimiters_templates} ) } );
        delete ($self->{_delimiters_templates});
 }
 
@@ -566,18 +568,20 @@ Save accumulated delimiter templates
 sub save_delimiters_templates {
        my $self = shift;
 
-       my $path = $self->{delimiters_path};
-
-       return unless ( $path );
+       my $path = shift;
+       $path ||= $self->{delimiters_path};
 
        my $log = $self->_get_logger;
 
+       $log->logdie("need path") unless ( $path );
+
+
        if ( ! $self->{_accumulated_delimiters_templates} ) {
                $log->error('no _accumulated_delimiters_templates found, reset');
                $self->reset;
        }
 
-       if ( $self->{_delimiters_templates} ) {
+       if ( $self->{_delimiters_templates} ) {
                $log->error('found _delimiters_templates, calling reset');
                $self->reset;
        }
@@ -589,6 +593,8 @@ sub save_delimiters_templates {
        close($d);
 
        $log->info("new delimiters templates saved to $path");
+
+       return 1;
 }
 
 =head1 AUTHOR