From e69a41522a66cbc2f93ec89b66f52f68d0aeab0f Mon Sep 17 00:00:00 2001 From: miker Date: Mon, 14 Mar 2005 22:52:21 +0000 Subject: [PATCH] eet leevs git-svn-id: svn://svn.open-ils.org/ILS/trunk@338 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../src/extras/import/import_clean_marc.pl | 15 +- .../OpenILS/Application/Storage/CDBI.pm | 13 +- .../Application/Storage/CDBI/biblio.pm | 2 +- .../Application/Storage/CDBI/metabib.pm | 22 +- .../OpenILS/Application/Storage/Driver/Pg.pm | 30 ++- .../OpenILS/Application/Storage/FTS.pm | 10 +- .../OpenILS/Application/Storage/Publisher.pm | 2 +- .../Application/Storage/Publisher/biblio.pm | 158 +++++++------- .../Application/Storage/Publisher/metabib.pm | 203 +++--------------- .../src/perlmods/OpenILS/Application/WORM.pm | 16 +- OpenSRF/src/perlmods/OpenSRF/Application.pm | 2 +- 11 files changed, 182 insertions(+), 291 deletions(-) diff --git a/Open-ILS/src/extras/import/import_clean_marc.pl b/Open-ILS/src/extras/import/import_clean_marc.pl index c44e04ffec..31e5269e3b 100755 --- a/Open-ILS/src/extras/import/import_clean_marc.pl +++ b/Open-ILS/src/extras/import/import_clean_marc.pl @@ -40,6 +40,8 @@ try { while ( my $xml = <> ) { chomp $xml; + my $new_id; + my $ns = OpenILS::Utils::FlatXML->new( xml => $xml ); next unless ($ns->xml); @@ -81,7 +83,7 @@ while ( my $xml = <> ) { throw OpenSRF::EX::ERROR ("Failed to create record for TCN [$tcn]. Got an exception!! -- ".$resp->toString); } - my $new_id = $resp->content; + $new_id = $resp->content; warn " (new record_entry id is $new_id)\n"; $req->finish; @@ -106,13 +108,6 @@ while ( my $xml = <> ) { } - if ($wormize) { - my $worm_req = $worm_server->request( - 'open-ils.worm.record_data.digest', - $new_id, - ); - } - $req->finish; } else { throw OpenSRF::EX::ERROR ("Failed to create record for TCN [$tcn]. Got no new ID !! -- ".$resp->toString); @@ -137,6 +132,10 @@ while ( my $xml = <> ) { die $r unless (UNIVERSAL::can($r, 'content')); die "Couldn't commit transaction!" unless ($r->content); + if ($wormize) { + $worm_server->request( 'open-ils.worm.wormize', $new_id,); + } + } } diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI.pm index 1178979be2..5da85c9b71 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI.pm @@ -77,7 +77,8 @@ sub fast_fieldmapper { my $class = ref($self) || $self; my $fm_class = 'Fieldmapper::'.$class; my @fms; - for my $hash ($self->fast_flesh_sth(@_)->fetchall_hash) { + $log->debug("fast_fieldmapper() ==> Retrieving $fm_class", INTERNAL); + for my $hash ($self->fast_flesh_sth(map {"$_"} @_)->fetchall_hash) { my $fm = $fm_class->new; for my $field ( keys %$hash ) { $fm->$field( $$hash{$field} ); @@ -122,6 +123,8 @@ sub create { my $self = shift; my $arg = shift; + $log->debug("\$arg is $arg (".ref($arg).")",DEBUG); + if (ref($arg) and UNIVERSAL::isa($arg => 'Fieldmapper')) { return $self->create_from_fieldmapper($arg,@_); } @@ -134,6 +137,8 @@ sub create_from_fieldmapper { my $fm = shift; my @params = @_; + $log->debug("Creating node of type ".ref($fm), DEBUG); + my $class = ref($obj) || $obj; if (ref $fm) { @@ -292,6 +297,8 @@ sub import { #); #------------------------------------------------------------------------------- + #------------------------------------------------------------------------------- + metabib::full_rec->has_a( record => 'biblio::record_entry' ); #------------------------------------------------------------------------------- metabib::metarecord->has_a( master_record => 'biblio::record_entry' ); metabib::metarecord->has_many( source_records => [ 'metabib::metarecord_source_map' => 'source_record'] ); @@ -316,15 +323,19 @@ sub import { # should we have just one field entry per class for each record???? (xslt vs xpath) metabib::title_field_entry_source_map->has_a( field_entry => 'metabib::title_field_entry' ); metabib::title_field_entry_source_map->has_a( source_record => 'biblio::record_entry' ); + metabib::title_field_entry_source_map->has_a( metarecord => 'metabib::metarecord' ); #------------------------------------------------------------------------------- metabib::subject_field_entry_source_map->has_a( field_entry => 'metabib::subject_field_entry' ); metabib::subject_field_entry_source_map->has_a( source_record => 'biblio::record_entry' ); + metabib::subject_field_entry_source_map->has_a( metarecord => 'metabib::metarecord' ); #------------------------------------------------------------------------------- metabib::author_field_entry_source_map->has_a( field_entry => 'metabib::author_field_entry' ); metabib::author_field_entry_source_map->has_a( source_record => 'biblio::record_entry' ); + metabib::author_field_entry_source_map->has_a( metarecord => 'metabib::metarecord' ); #------------------------------------------------------------------------------- metabib::keyword_field_entry_source_map->has_a( field_entry => 'metabib::keyword_field_entry' ); metabib::keyword_field_entry_source_map->has_a( source_record => 'biblio::record_entry' ); + metabib::keyword_field_entry_source_map->has_a( metarecord => 'metabib::metarecord' ); #------------------------------------------------------------------------------- $VERSION = 1; } diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/biblio.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/biblio.pm index 7c9ccc308d..fe21111b7f 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/biblio.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/biblio.pm @@ -47,7 +47,7 @@ package biblio::record_marc; use base qw/biblio/; biblio::record_marc->table( 'biblio_record_marc' ); -biblio::record_marc->columns( All => qw/id marc/ ); +biblio::record_marc->columns( All => qw/id marc last_xact_id/ ); #biblio::record_marc->columns( Stringify => qw/marc/ ); #biblio::record_marc->is_a( id => qw/biblio::record_entry/ ); diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/metabib.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/metabib.pm index 3fae55aec1..e6e186983d 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/metabib.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/CDBI/metabib.pm @@ -52,42 +52,40 @@ package metabib::title_field_entry_source_map; use base qw/metabib/; metabib::title_field_entry_source_map->table( 'metabib_title_field_entry_source_map' ); -metabib::title_field_entry_source_map->columns( Primary => qw/field_entry source_record/ ); +metabib::title_field_entry_source_map->columns( Primary => qw/id/ ); +metabib::title_field_entry_source_map->columns( Others => qw/field_entry metarecord source_record/ ); #------------------------------------------------------------------------------- package metabib::author_field_entry_source_map; use base qw/metabib/; metabib::author_field_entry_source_map->table( 'metabib_author_field_entry_source_map' ); -metabib::author_field_entry_source_map->columns( Primary => qw/field_entry source_record/ ); +metabib::author_field_entry_source_map->columns( Primary => qw/id/ ); +metabib::author_field_entry_source_map->columns( Others => qw/field_entry metarecord source_record/ ); #------------------------------------------------------------------------------- package metabib::subject_field_entry_source_map; use base qw/metabib/; metabib::subject_field_entry_source_map->table( 'metabib_subject_field_entry_source_map' ); -metabib::subject_field_entry_source_map->columns( Primary => qw/field_entry source_record/ ); +metabib::subject_field_entry_source_map->columns( Primary => qw/id/ ); +metabib::subject_field_entry_source_map->columns( Others => qw/field_entry metarecord source_record/ ); #------------------------------------------------------------------------------- package metabib::keyword_field_entry_source_map; use base qw/metabib/; metabib::keyword_field_entry_source_map->table( 'metabib_keyword_field_entry_source_map' ); -metabib::keyword_field_entry_source_map->columns( Primary => qw/field_entry source_record/ ); +metabib::keyword_field_entry_source_map->columns( Primary => qw/id/ ); +metabib::keyword_field_entry_source_map->columns( Others => qw/field_entry metarecord source_record/ ); #------------------------------------------------------------------------------- package metabib::metarecord_source_map; use base qw/metabib/; metabib::metarecord_source_map->table( 'metabib_metarecord_source_map' ); -metabib::metarecord_source_map->columns( Primary => qw/metarecord source_record/ ); - -#------------------------------------------------------------------------------- -package metabib::isource_metarecord_map; -use base qw/metabib/; - -metabib::metarecord_source_map->table( 'metabib_metarecord_source_map' ); -metabib::metarecord_source_map->columns( Primary => qw/metarecord source_record/ ); +metabib::metarecord_source_map->columns( Primary => qw/id/ ); +metabib::metarecord_source_map->columns( Others => qw/metarecord source_record/ ); #------------------------------------------------------------------------------- package metabib::full_rec; diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg.pm index e5bdf1f5a8..95b88f6b6f 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Driver/Pg.pm @@ -34,11 +34,13 @@ my $newterm = join('&', $self->words); - if ($self->nots) { + if (@{$self->nots}) { $newterm = '('.$newterm.')&('. join('|', $self->nots) . ')'; } - $newterm = OpenILS::Application::Storage->driver->quote($newterm); + $log->debug("Compiled term is [$newterm]", DEBUG); + $newterm = OpenILS::Application::Storage::Driver::Pg->quote($newterm); + $log->debug("Quoted term is [$newterm]", DEBUG); $self->{fts_query} = ["to_tsquery('default',$newterm)"]; $self->{fts_query_nots} = []; @@ -46,6 +48,22 @@ return $self; } + + sub sql_where_clause { + my $self = shift; + my $column = shift; + my @output; + + my @ranks; + for my $fts ( $self->fts_query ) { + push @output, join(' ', $column, $self->{fts_op}, $fts); + push @ranks, "rank($column, $fts)"; + } + $self->{fts_rank} = \@ranks; + + return join(' AND ', @output); + } + } @@ -117,7 +135,8 @@ } sub quote { - return __PACKAGE__->db_Main->quote(@_) + my $self = shift; + return $self->db_Main->quote(@_) } # sub tsearch2_trigger { @@ -409,6 +428,7 @@ metabib::title_field_entry->table( 'metabib.title_field_entry' ); metabib::title_field_entry->sequence( 'metabib.title_field_entry_id_seq' ); + metabib::title_field_entry->columns( 'FTS' => 'index_vector' ); # metabib::title_field_entry->add_trigger( # before_create => \&OpenILS::Application::Storage::Driver::Pg::tsearch2_trigger @@ -424,6 +444,7 @@ metabib::author_field_entry->table( 'metabib.author_field_entry' ); metabib::author_field_entry->sequence( 'metabib.author_field_entry_id_seq' ); + metabib::author_field_entry->columns( 'FTS' => 'index_vector' ); #------------------------------------------------------------------------------- @@ -432,6 +453,7 @@ metabib::subject_field_entry->table( 'metabib.subject_field_entry' ); metabib::subject_field_entry->sequence( 'metabib.subject_field_entry_id_seq' ); + metabib::subject_field_entry->columns( 'FTS' => 'index_vector' ); #------------------------------------------------------------------------------- @@ -440,6 +462,7 @@ metabib::keyword_field_entry->table( 'metabib.keyword_field_entry' ); metabib::keyword_field_entry->sequence( 'metabib.keyword_field_entry_id_seq' ); + metabib::keyword_field_entry->columns( 'FTS' => 'index_vector' ); #------------------------------------------------------------------------------- @@ -483,6 +506,7 @@ metabib::full_rec->table( 'metabib.full_rec' ); metabib::full_rec->sequence( 'metabib.full_rec_id_seq' ); + metabib::full_rec->columns( 'FTS' => 'index_vector' ); #------------------------------------------------------------------------------- } diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/FTS.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/FTS.pm index d9aff0c535..d118a3356f 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/FTS.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/FTS.pm @@ -21,11 +21,14 @@ sub decompose { $term =~ s/^\s*\b(.+)\b\s*$/$1/o; $term =~ s/^(?:an?|the)\b(.*)/$1/o; - OpenILS::Utils::Logger->debug("Stripped search term string is [$term]",DEBUG); + $log->debug("Stripped search term string is [$term]",DEBUG); my @words = $term =~ /\b((?debug("Stripped words are[".join(', ',@words)."]",DEBUG); + $log->debug("Stripped nots are[".join(', ',@nots)."]",DEBUG); + my @parts; while ($term =~ s/ ("+) (.*?) ((?{fts_query_not} } : $self->{fts_query_not}; } +sub fts_rank { + my $self = shift; + return wantarray ? @{ $self->{fts_rank} } : $self->{fts_rank}; +} + sub fts_query { my $self = shift; return wantarray ? @{ $self->{fts_query} } : $self->{fts_query}; diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher.pm index 8b9b9bc970..16f2d53607 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher.pm @@ -50,7 +50,7 @@ sub create_node { my $success; try { my $rec = $cdbi->create($node); - $success = 1 if ($rec); + $success = $rec->id if ($rec); } catch Error with { $success = 0; }; diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/biblio.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/biblio.pm index 2d4746a5c5..b723fc9e95 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/biblio.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/biblio.pm @@ -21,30 +21,30 @@ sub create_record_entry { return undef; } -__PACKAGE__->register_method( - method => 'create_record_entry', - api_name => 'open-ils.storage.biblio.record_entry.create', - api_level => 1, - argc => 2, - note => <register_method( + #method => 'create_record_entry', + #api_name => 'open-ils.storage.biblio.record_entry.create', + #api_level => 1, + #argc => 2, + #note => <register_method( - method => 'update_record_entry', - api_name => 'open-ils.storage.biblio.record_entry.update', - api_level => 1, - argc => 1, -); - +#__PACKAGE__->register_method( + #method => 'update_record_entry', + #api_name => 'open-ils.storage.biblio.record_entry.update', + #api_level => 1, + #argc => 1, +#); +# sub delete_record_entry { my $self = shift; my $client = shift; @@ -76,13 +76,13 @@ sub delete_record_entry { return 0 unless ($rec); return 1; } -__PACKAGE__->register_method( - method => 'delete_record_entry', - api_name => 'open-ils.storage.biblio.record_entry.delete', - api_level => 1, - argc => 1, -); - +#__PACKAGE__->register_method( + #method => 'delete_record_entry', + #api_name => 'open-ils.storage.biblio.record_entry.delete', + #api_level => 1, + #argc => 1, +#); +# sub search_record_entry_one_field { my $self = shift; my $client = shift; @@ -101,20 +101,20 @@ sub search_record_entry_one_field { } return undef; } -__PACKAGE__->register_method( - method => 'search_record_entry_one_field', - api_name => 'open-ils.storage.biblio.record_entry.search.tcn_value', - api_level => 1, - argc => 1, - stream => 1, -); -__PACKAGE__->register_method( - method => 'search_record_entry_one_field', - api_name => 'open-ils.storage.biblio.record_entry.search.tcn_value.list', - api_level => 1, - argc => 1, - stream => 1, -); +#__PACKAGE__->register_method( + #method => 'search_record_entry_one_field', + #api_name => 'open-ils.storage.biblio.record_entry.search.tcn_value', + #api_level => 1, + #argc => 1, + #stream => 1, +#); +#__PACKAGE__->register_method( + #method => 'search_record_entry_one_field', + #api_name => 'open-ils.storage.biblio.record_entry.search.tcn_value.list', + #api_level => 1, + #argc => 1, + #stream => 1, +#); sub get_record_entry { my $self = shift; @@ -218,19 +218,19 @@ sub get_record_node { } return undef; } -__PACKAGE__->register_method( - method => 'get_record_node', - api_name => 'open-ils.storage.biblio.record_node.retrieve', - api_level => 1, - argc => 1, -); -__PACKAGE__->register_method( - method => 'get_record_node', - api_name => 'open-ils.storage.biblio.record_node.retrieve.list', - api_level => 1, - argc => 1, - stream => 1, -); +#__PACKAGE__->register_method( + #method => 'get_record_node', + #api_name => 'open-ils.storage.biblio.record_node.retrieve', + #api_level => 1, + #argc => 1, +#); +#__PACKAGE__->register_method( + #method => 'get_record_node', + #api_name => 'open-ils.storage.biblio.record_node.retrieve.list', + #api_level => 1, + ##argc => 1, + #stream => 1, +#); sub create_record_nodeset { my $self = shift; @@ -320,19 +320,19 @@ sub get_record_nodeset { } return undef; } -__PACKAGE__->register_method( - method => 'get_record_nodeset', - api_name => 'open-ils.storage.biblio.record_entry.nodeset.retrieve', - api_level => 1, - argc => 1, -); -__PACKAGE__->register_method( - method => 'get_record_nodeset', - api_name => 'open-ils.storage.biblio.record_entry.nodeset.retrieve.list', - api_level => 1, - argc => 1, - stream => 1, -); - +#__PACKAGE__->register_method( + #method => 'get_record_nodeset', + #api_name => 'open-ils.storage.biblio.record_entry.nodeset.retrieve', + #api_level => 1, + #argc => 1, +#); +#__PACKAGE__->register_method( + #method => 'get_record_nodeset', + #api_name => 'open-ils.storage.biblio.record_entry.nodeset.retrieve.list', + #api_level => 1, + #argc => 1, + #stream => 1, +#); +# 1; diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm index a7205b4b2e..7bd4117043 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Storage/Publisher/metabib.pm @@ -3,202 +3,53 @@ use base qw/OpenILS::Application::Storage/; use vars qw/$VERSION/; use OpenSRF::EX qw/:try/; use OpenILS::Application::Storage::CDBI::metabib; +use OpenILS::Application::Storage::FTS; use OpenILS::Utils::Fieldmapper; +use OpenSRF::Utils::Logger; -$VERSION = 1; - -sub create_full_rec { - my $self = shift; - my $client = shift; - my $metadata = shift; - - try { - my $rec = metabib::full_rec->create($metadata); - $client->respond( $rec->id ); - } catch Error with { - $client->respond( 0 ); - }; - - return undef; -} -__PACKAGE__->register_method( - method => 'create_full_rec', - api_name => 'open-ils.storage.metabib.full_rec.create', - api_level => 1, - argc => 2, - note =><id = open-ils.storage.metabib.full_rec.create ( Fieldmapper::metabib::full_rec ); -TEXT - -); - -sub update_full_rec { - my $self = shift; - my $client = shift; - my $entry = shift; - - try { - metabib::full_rec->update($entry); - } catch Error with { - return 0; - }; - return 1; -} -__PACKAGE__->register_method( - method => 'update_full_rec', - api_name => 'open-ils.storage.metabib.full_rec.update', - api_level => 1, - argc => 1, -); +my $log = 'OpenSRF::Utils::Logger'; -sub delete_full_rec { - my $self = shift; - my $client = shift; - my $entry = shift; - - try { - metabib::full_rec->delete($entry); - } catch Error with { - return 0; - }; - return 1; -} -__PACKAGE__->register_method( - method => 'delete_full_rec', - api_name => 'open-ils.storage.metabib.full_rec.delete', - api_level => 1, - argc => 1, -); - -sub get_full_rec { - my $self = shift; - my $client = shift; - my @ids = @_; - - for my $id ( @ids ) { - next unless ($id); - - my ($rec) = metabib::full_rec->fast_fieldmapper($id); - $client->respond( $rec ) if ($rec); - - last if ($self->api_name !~ /list/o); - } - return undef; -} -__PACKAGE__->register_method( - method => 'get_full_rec', - api_name => 'open-ils.storage.metabib.full_rec.retrieve', - api_level => 1, - argc => 1, -); -__PACKAGE__->register_method( - method => 'get_full_rec', - api_name => 'open-ils.storage.metabib.full_rec.retrieve.list', - api_level => 1, - argc => 1, - stream => 1, -); +$VERSION = 1; -sub create_record_nodeset { +sub search_full_rec { my $self = shift; my $client = shift; - my @nodes = @_; + my $limiters = shift; + my $term = shift; - my $method = $self->method_lookup('open-ils.storage.metabib.record_node.create'); + my ($fts_col) = metabib::full_rec->columns('FTS'); + my $table = metabib::full_rec->table; - my @success; - while ( my $node = shift(@nodes) ) { - my ($res) = $method->run( $node ); - push @success, $res if ($res); - } - - my $insert_total = 0; - $insert_total += $_ for (@success); + my $fts = OpenILS::Application::Storage::FTS->compile($term); - return $insert_total; -} -__PACKAGE__->register_method( - method => 'create_record_nodeset', - api_name => 'open-ils.storage.metabib.record_node.batch.create', - api_level => 1, - argc => 1, -); - -sub update_record_nodeset { - my $self = shift; - my $client = shift; + my $fts_where = $fts->sql_where_clause($fts_col); + my @fts_ranks = $fts->fts_rank; - my $method = $self->method_lookup('open-ils.storage.metabib.record_node.update'); + my $rank = join(' + ', @fts_ranks); - my @success; - while ( my $node = shift(@_) ) { - my ($res) = $method->run( $node ); - push @success, $res if ($res); + my @binds; + my @wheres; + for my $limit (@$limiters) { + push @wheres, "( tag = ? AND subfield LIKE ? AND $fts_where )"; + push @binds, $$limit{tag}, $$limit{subfield}; + $log->debug("Limiting query using { tag => $$limit{tag}, subfield => $$limit{subfield} }", DEBUG); } + my $where = join(' OR ', @wheres); - my $update_total = 0; - $update_total += $_ for (@success); - - return $update_total; -} -__PACKAGE__->register_method( - method => 'create_record_nodeset', - api_name => 'open-ils.storage.metabib.record_node.batch.update', - api_level => 1, - argc => 1, -); + my $select = "SELECT record, sum($rank) FROM $table WHERE $where GROUP BY 1 ORDER BY 2 DESC;"; -sub delete_record_nodeset { - my $self = shift; - my $client = shift; - - my $method = $self->method_lookup('open-ils.storage.metabib.record_node.delete'); - - my @success; - while ( my $node = shift(@_) ) { - my ($res) = $method->run( $node ); - push @success, $res if ($res); - } - - my $delete_total = 0; - $delete_total += $_ for (@success); - - return $delete_total; -} -__PACKAGE__->register_method( - method => 'create_record_nodeset', - api_name => 'open-ils.storage.metabib.record_node.batch.delete', - api_level => 1, - argc => 1, -); + $log->debug("Search SQL :: [$select]",DEBUG); -sub get_record_nodeset { - my $self = shift; - my $client = shift; - my @ids = @_; + my $recs = metabib::full_rec->db_Main->selectall_arrayref($select, {}, @binds); + $log->debug("Search yielded ".scalar(@$recs)." results.",DEBUG); + return $recs; - for my $id ( @ids ) { - next unless ($id); - - $client->respond( [metabib::record_node->fast_fieldmapper( owner_doc => "$id", {order_by => 'intra_doc_id'} )] ); - - last if ($self->api_name !~ /list/o); - } - return undef; } __PACKAGE__->register_method( - method => 'get_record_nodeset', - api_name => 'open-ils.storage.metabib.full_rec.nodeset.retrieve', - api_level => 1, - argc => 1, -); -__PACKAGE__->register_method( - method => 'get_record_nodeset', - api_name => 'open-ils.storage.metabib.full_rec.nodeset.retrieve.list', + api_name => 'open-ils.storage.metabib.full_rec.search.fts', + method => 'search_full_rec', api_level => 1, - argc => 1, stream => 1, ); diff --git a/Open-ILS/src/perlmods/OpenILS/Application/WORM.pm b/Open-ILS/src/perlmods/OpenILS/Application/WORM.pm index 7e6a17c941..af1e1002ec 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/WORM.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/WORM.pm @@ -14,13 +14,13 @@ my $xml_util = OpenILS::Utils::FlatXML->new(); my $parser = XML::LibXML->new(); my $xslt = XML::LibXSLT->new(); -my $xslt_doc = $parser->parse_file( "/pines/cvs/ILS/Open-ILS/xsl/MARC21slim2MODS.xsl" ); +my $xslt_doc = $parser->parse_file( "/home/miker/cvs/OpenILS/app_server/stylesheets/MARC21slim2MODS.xsl" ); my $mods_sheet = $xslt->parse_stylesheet( $xslt_doc ); use open qw/:utf8/; sub child_init { - __PACKAGE__->method_lookup('i.do.not.exist'); + #__PACKAGE__->method_lookup('i.do.not.exist'); } @@ -108,6 +108,7 @@ sub wormize { unless (UNIVERSAL::can($resp, 'content')); throw OpenSRF::EX::PANIC ("Transaction creation failed! -- ".$resp->content) unless ($resp->content); + $xact_req->finish(); @@ -139,7 +140,7 @@ sub wormize { # step 1: build the KOHA rows my @ns_list = _marcxml_to_full_rows( $marcdoc ); - $_->record = $docid for (@ns_list); + $_->record( $docid ) for (@ns_list); my $fr_req = $st_ses->request( 'open-ils.storage.metabib.full_rec.batch.create', @ns_list ); $fr_req->wait_complete; @@ -160,27 +161,26 @@ sub wormize { $fr_req->finish(); # That's all for now! - my $commit_req = $st_ses->request( 'open-ils.storage.trasaction.commit' ); + my $commit_req = $st_ses->request( 'open-ils.storage.transaction.commit' ); $commit_req->wait_complete; $resp = $commit_req->recv; unless (UNIVERSAL::can($resp, 'content')) { - my $rb = $st_ses->request('open-ils.storage.biblio.transaction.rollback'); + my $rb = $st_ses->request('open-ils.storage.transaction.rollback'); $rb->wait_complete; throw OpenSRF::EX::PANIC ("Error commiting transaction! -- $resp") } unless ($resp->content) { - my $rb = $st_ses->request('open-ils.storage.biblio.transaction.rollback'); + my $rb = $st_ses->request('open-ils.storage.transaction.rollback'); $rb->wait_complete; throw OpenSRF::EX::PANIC ("Transaction commit failed! -- ".$resp->content) } $commit_req->finish(); - $st_ses->finish(); $st_ses->disconnect(); - $st_ses->kill_me(); + $st_ses->finish(); return 1; diff --git a/OpenSRF/src/perlmods/OpenSRF/Application.pm b/OpenSRF/src/perlmods/OpenSRF/Application.pm index f1b2e7d893..2e15519be3 100644 --- a/OpenSRF/src/perlmods/OpenSRF/Application.pm +++ b/OpenSRF/src/perlmods/OpenSRF/Application.pm @@ -334,7 +334,7 @@ sub method_lookup { my $class = ref($self) || $self; $log->debug("Lookup of [$method] by [$class] in api_level [$proto]", DEBUG); - $log->debug("Available methods\n".Dumper(\@_METHODS), INTERNAL); + #$log->debug("Available methods\n".Dumper(\@_METHODS), INTERNAL); my $meth; if (__PACKAGE__->thunk) { -- 2.43.2