added rknjiga table
authorDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 15 Dec 2016 12:46:45 +0000 (13:46 +0100)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Thu, 15 Dec 2016 12:46:45 +0000 (13:46 +0100)
CROSBI.pm
server.pl
t/6-CROSBI.t

index 94b90b3..ab9b26d 100644 (file)
--- a/CROSBI.pm
+++ b/CROSBI.pm
@@ -346,7 +346,7 @@ sub next_marc {
                a => $row->{volumen},
                b => $row->{broj},
                i => $row->{godina},
-       );
+       ) if $row->{volumen};
 
 # /data/FF/crosbi/2016-12-12/casopis-rad_napomena.sql
 
@@ -399,11 +399,24 @@ sub next_marc {
                ) foreach @a;
        }
 
+
        $marc->add_fields(773,'0',' ',
                t => $row->{casopis},
                x => $row->{issn},
                g => "$row->{volumen} ($row->{godina}), $row->{broj} ;" . page_range(' str. ',$row->{stranica_prva}, $row->{stranica_zadnja}),
-       );
+       ) if $row->{casopis};
+
+       # rknjiga-dbi2marc.pl
+       $marc->add_fields(773,'0',' ',
+               t => $row->{knjiga},
+               d => "$row->{godina} : $row->{nakladnik}, $row->{godina}",
+               k => $row->{serija},
+               h => $row->{ukupno_stranica},
+               n => $row->{uredink},
+               z => $row->{isbn},
+               g => page_range(' str. ',$row->{stranica_prva}, $row->{stranica_zadnja}),
+       ) if $row->{knjiga};
+
 
        if ( my $file = $row->{datoteka} ) {
                $marc->add_fields(856,' ',' ',
@@ -422,19 +435,48 @@ sub next_marc {
                );
        }
 
+       my $f942c = {
+               casopis  => 'CLA',
+               preprint => 'PRE',
+               rknjiga  => 'POG',
+       };
+
        my @f942 = (
-               c => $self->{_table} eq 'casopis'  ? 'CLA' :
-                    $self->{_table} eq 'preprint' ? 'PRE' :
-                       'FIXME',
+               c => $f942c->{ $self->{_table} } || die "no table $self->{_table} in ".dump($f942c),
        );
+
        if ( $row->{status_rada} ) {
                push @f942, (
                f => 1,
                g => $row->{status_rada}
                );
        }
-       push @f942, t => '1.01' if $row->{kategorija} =~ m/Znanstveni/;
-       push @f942, t => '1.04' if $row->{kategorija} =~ m/Strucni/;
+
+       if ( $self->{_table} =~ m/(casopis|preprint)/ ) {
+
+               if ( $row->{kategorija} =~ m/Znanstveni/ ) {
+                       push @f942, t => '1.01'
+               } elsif ( $row->{kategorija} =~ m/Strucni/ ) {
+                       push @f942, t => '1.04';
+               } else {
+                       warn "ERROR kategorija $row->{kategorija}";
+               }
+
+       } elsif ( $self->{_table} =~ m/rknjiga/ ) {
+
+               if ( $row->{kategorija} =~ m/Znanstveni/ ) {
+                       push @f942, t => '1.16.1';
+               } elsif ( $row->{kategorija} =~ m/Pregledni/ ) {
+                       push @f942, t => '1.16.2';
+               } elsif ( $row->{kategorija} =~ m/Strucni/ ) {
+                       push @f942, t => '1.17';
+               } else {
+                       warn "ERROR kategorija $row->{kategorija}";
+               }
+
+       } else {
+               die "ERROR _table $self->{_table}";
+       }
 
        $marc->add_fields(942,' ',' ',
                @f942,
index 91d45a1..e6cdd31 100755 (executable)
--- a/server.pl
+++ b/server.pl
@@ -29,6 +29,7 @@ my $databases = {
        'CROSBI' => 'CROSBI',
        'CROSBI-CASOPIS' => 'CROSBI',
        'CROSBI-PREPRINT' => 'CROSBI',
+       'CROSBI-RKNJIGA' => 'CROSBI',
 };
 
 my $max_records = 10; # XXX configure this
index 916dcc2..a0f204a 100755 (executable)
@@ -11,7 +11,7 @@ use_ok 'CROSBI';
 
 ok( my $o = CROSBI->new(), 'new' );
 
-foreach my $database ( qw( CROSBI-CASOPIS CROSBI-PREPRINT ) ) {
+foreach my $database ( qw( CROSBI-CASOPIS CROSBI-PREPRINT CROSBI-RKNJIGA ) ) {
        diag $o->{database} = $database;
 
 ok( my $hits = $o->search( $search ), "search: $search" );
@@ -23,7 +23,7 @@ $hits = 3 unless $ENV{DEBUG};
 
 foreach ( 1 .. $hits ) {
 
-       ok( my $marc = $o->next_marc, "next_marc $_" );
+       ok( my $marc = $o->next_marc, "next_marc $o->{database} $_" );
        diag $marc;
 
 }