diff --git a/lib/Univie/EoD/CrossReference.pm b/lib/Univie/EoD/CrossReference.pm index 4f2c11db9afe4fc5acd2c86b37f6eec33bd6e0d3..764b450f3f23fa7de39958fdc579f8380762dba6 100644 --- a/lib/Univie/EoD/CrossReference.pm +++ b/lib/Univie/EoD/CrossReference.pm @@ -4,6 +4,7 @@ use strict; use Data::Dumper; +use JSON; use IRMA::db; use Util::ts; @@ -100,15 +101,24 @@ sub find_books { my $self= shift; my $search= shift; - print __LINE__, " search: ", join(', ', %$search), "\n"; + # print __LINE__, " search: ", join(', ', %$search), "\n"; ... can contain {$in:[...]} clauses! + # print __LINE__, " search: ", Dumper ($search); + print __LINE__, " search: ", JSON::encode_json ($search), "\n"; my $foxml_col= $self->get_db_col('inventory_database', 'foxml.data'); my $cur= $foxml_col->find( $search ); # print __LINE__, ' cur: ', Dumper($cur); - while (my $foxml_rec= $cur->next()) + FOXML_REC: while (my $foxml_rec= $cur->next()) { - # print __LINE__, " foxml_rec=[$foxml_rec]\n"; + # print __LINE__, " foxml_rec: foxml_rec=[$foxml_rec] found:", Dumper($foxml_rec); + if (exists ($self->{agent_cnf}->{prefiltered_pids}->{$foxml_rec->{pid}})) + { + print __LINE__, " NOTE: prefiltered pid; foxml_rec: ", Dumper($foxml_rec); + next FOXML_REC; + } + + # print __LINE__, " foxml_rec=[$foxml_rec] added: ", Dumper($foxml_rec); $self->add_book($foxml_rec); } } @@ -176,10 +186,10 @@ sub check_book return 'filtered_pids' if (exists ($self->{agent_cnf}->{filtered_pids}->{$pid})); # check tickets - my $ticket_col= $self->get_db_col('irma_database', 'eod.tickets'); + my $ticket_col= $self->get_db_col('stage_database', 'eod.tickets'); my @tickets= $ticket_col->find({ ac_number => $ac_number })->all(); print __LINE__, " ac_number=[$ac_number] tickets: ", scalar @tickets, "\n"; - # print __LINE__, Dumper(\@tickets); + # print __LINE__, ' ', Dumper(\@tickets); if (@tickets > 1) { $book->{ticket}= join(',', map { $_->{ticket} } @tickets); @@ -190,11 +200,13 @@ sub check_book my $t0= @tickets[0]; $book->{ticket}= $t0->{ticket}; $book->{ticket_status}= $t0->{status}; - $book->{vt}= $t0->{custom_fields}->{vt}->[1]; + $book->{ticket_pid}= $t0->{custom_fields}->{ph_pid}->[1]; + $book->{ticket_url}= $t0->{custom_fields}->{ph_url}->[1]; + $book->{vt}= $t0->{custom_fields}->{vt}->[1]; } # check IRMA for registered identifiers - my $irma_col= $self->get_db_col('irma_database', 'irma.map'); + my $irma_col= $self->get_db_col('stage_database', 'irma.map'); my @irma_records= $irma_col->find({ ac_number => $ac_number })->all(); # my @irma_records= $irma_col->find({ pid => $pid })->all(); # NOTE: there is no field named "pid" in the irma record! print __LINE__, " ac_number=[$ac_number] irma_records: ", scalar @irma_records, "\n"; @@ -214,7 +226,7 @@ sub check_book $self->{counters}->{missing_irma_record}++; } - my $marc_col= $self->get_db_col('marc_database', 'alma.marc'); + my $marc_col= $self->get_db_col('stage_database', 'alma.marc'); my $marc= $marc_col->find_one({ ac_number => $ac_number }); # print __LINE__, " marc: ", Dumper($marc); return 'missing_marc_record' unless (defined ($marc)); @@ -229,7 +241,7 @@ sub check_book if (exists($book->{mex})) { my $mex= $book->{mex}; - print __LINE__, " ac_number=[$ac_number] mex: ", Dumper($mex); + # print __LINE__, " ac_number=[$ac_number] mex: ", Dumper($mex); foreach my $mf (keys %$mex) { my $mfa= $mex->{$mf}; @@ -264,7 +276,7 @@ sub check_book if ($val =~ m#^11353/10\.(\d+)$#) { $copy= 1; # only transcribe those URLs that really look like some - if ($val ne $book->{hdl}) + if ($book->{hdl} && $val ne $book->{hdl}) { # TODO: $book->{update_hdl}= $book->{hdl}; $self->{counters}->{update_hdl}++; @@ -337,6 +349,13 @@ sub check_book push(@alma_notes, 'set_urn'); } + if (!exists($book->{val_hdl}) && exists ($book->{hdl})) + { + $book->{update_hdl}= $book->{hdl}; + $self->{counters}->{set_hdl}++; + push(@alma_notes, 'set_hdl'); + } + unless (exists($book->{df_phaidra})) { # TODO: if there is no phaidra_url at all, set it... $self->{counters}->{set_phaidra_url}++;