log errors
authorDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 2 Feb 2010 19:30:48 +0000 (19:30 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Tue, 2 Feb 2010 19:30:48 +0000 (19:30 +0000)
git-svn-id: svn+ssh://mjesec/home/dpavlin/svn/webpac2/trunk@1326 07558da8-63fa-0310-ba24-9fe276d99e06

lib/WebPAC/Input/Koha.pm

index efdc82b..84a4e04 100644 (file)
@@ -47,13 +47,16 @@ sub new {
                $arg->{dsn}    ||= 'dbi:mysql:database=koha';
                $arg->{user}   ||= $ENV{KOHA_USER};
                $arg->{passwd} ||= $ENV{KOHA_PASSWD},
-               $arg->{sql}    ||= 'select biblionumber as mfn, marc from biblioitems';
+               $arg->{sql}    ||= 'select biblionumber, marc from biblioitems order by biblionumber asc';
                $arg->{sql}    .= ' limit ' . $arg->{limit} if $arg->{limit};
                $arg->{sql}    .= ' offset ' . $arg->{offset} if $arg->{offset};
 
                $log->info("opening Koha database '$arg->{dsn}'");
 
-               $self->{_dbh} = DBI->connect( $arg->{dsn}, $arg->{user}, $arg->{passwd}, { RaiseError => 1 } );
+               $self->{_dbh} = DBI->connect( $arg->{dsn}, $arg->{user}, $arg->{passwd}, {
+                       RaiseError => 1,
+                       #mysql_enable_utf8 => 1, # not really needed
+               } );
                $self->{_sth} = $self->{_dbh}->prepare( $arg->{sql} );
                $self->{_sth}->execute;
                $self->{_koha_size} = $self->{_sth}->rows;
@@ -82,11 +85,22 @@ sub fetch_rec {
 
        my $row = $self->{_sth}->fetchrow_hashref;
 
+       sub _error {
+               my ( $mfn, $error, $row ) = @_;
+               $self->_get_logger()->error( "MFN $mfn $error ", dump($row) );
+       }
+
        if ( my $fh = $self->{_koha_fh} ) {
                if ( my $marc = $row->{marc} ) {
-                       print $fh $marc;
+                       if ( length($marc) != substr( $marc, 0, 5 ) ) {
+                               _error $mfn => "wrong length " . length($marc), $row;
+                       } elsif ( $marc !~ /\x1E\x1D$/ ) {
+                               _error $mfn => "wrong end", $row;
+                       } else {
+                               print $fh $marc;
+                       }
                } else {
-                       warn "MFN $mfn no marc in ",dump($row);
+                       _error $mfn => "no marc",$row;
                }
        }