Bug 5415 Let calls of SimpleSearch utilize considtent interface
authorColin Campbell <colin.campbell@ptfs-europe.com>
Wed, 6 Apr 2011 09:42:41 +0000 (11:42 +0200)
committerChris Cormack <chrisc@catalyst.net.nz>
Fri, 8 Apr 2011 01:52:57 +0000 (13:52 +1200)
Remove some unnecessary checks when check of error is
sufficient. Make the order in some cases more logical
Should remove some possibilities of runtime warning noise.
Although some calls belong to the 'Nothing could
ever go wrong' school have added some warnings

Signed-off-by: Christophe Croullebois <christophe.croullebois@biblibre.com>
Signed-off-by: Chris Cormack <chrisc@catalyst.net.nz>
12 files changed:
C4/AuthoritiesMarc.pm
C4/Heading.pm
C4/Matcher.pm
acqui/neworderbiblio.pl
authorities/authorities-list.pl
cataloguing/addbiblio.pl
cataloguing/addbooks.pl
cataloguing/value_builder/unimarc_field_4XX.pl
labels/label-item-search.pl
misc/migration_tools/bulkmarcimport.pl
misc/migration_tools/remove_unused_authorities.pl
t/db_dependent/lib/KohaTest.pm

index 4bbde76..fa2ef00 100644 (file)
@@ -364,7 +364,12 @@ sub CountUsage {
         my $query;
         $query= "an=".$authid;
                my ($err,$res,$result) = C4::Search::SimpleSearch($query,0,10);
-        return ($result);
+        if ($err) {
+            warn "Error: $err from search $query";
+            $result = 0;
+        }
+
+        return $result;
     }
 }
 
@@ -917,7 +922,7 @@ sub FindDuplicateAuthority {
     }
     my ($error, $results, $total_hits) = C4::Search::SimpleSearch( $query, 0, 1, [ "authorityserver" ] );
     # there is at least 1 result => return the 1st one
-    if (@$results>0) {
+    if (!defined $error && @{$results} ) {
       my $marcrecord = MARC::File::USMARC::decode($results->[0]);
       return $marcrecord->field('001')->data,BuildSummary($marcrecord,$marcrecord->field('001')->data,$authtypecode);
     }
index 643d820..ba9d23f 100644 (file)
@@ -24,6 +24,7 @@ use MARC::Field;
 use C4::Context;
 use C4::Heading::MARC21;
 use C4::Search;
+use Carp;
 
 our $VERSION = 3.00;
 
@@ -109,6 +110,9 @@ sub authorities {
     my $query = qq(Match-heading,do-not-truncate,ext="$self->{'search_form'}");
     $query .= $self->_query_limiters();
     my ($error, $results, $total_hits) = SimpleSearch( $query, undef, undef, [ "authorityserver" ] );
+    if (defined $error) {
+        carp "Error:$error from search $query";
+    }
     return $results;
 }
 
@@ -126,6 +130,9 @@ sub preferred_authorities {
     my $query = "Match-heading-see-from,do-not-truncate,ext='$self->{'search_form'}'";
     $query .= $self->_query_limiters();
     my ($error, $results, $total_hits) = SimpleSearch( $query, undef, undef, [ "authorityserver" ] );
+    if (defined $error) {
+        carp "Error:$error from search $query";
+    }
     return $results;
 }
 
index 5915c12..9d1df67 100644 (file)
@@ -606,9 +606,12 @@ sub get_matches {
         # FIXME only searching biblio index at the moment
         my ($error, $searchresults, $total_hits) = SimpleSearch($query, 0, $max_matches);
 
-        warn "search failed ($query) $error" if $error;
-        foreach my $matched (@$searchresults) {
-            $matches{$matched} += $matchpoint->{'score'};
+        if (defined $error ) {
+            warn "search failed ($query) $error";
+        } else {
+            foreach my $matched (@{$searchresults}) {
+                $matches{$matched} += $matchpoint->{'score'};
+            }
         }
     }
 
index 9e63492..c348940 100755 (executable)
@@ -112,16 +112,15 @@ if (defined $error) {
 
 my @results;
 
-if ($marcresults) {
-    foreach my $result ( @{$marcresults} ) {
-        my $marcrecord = MARC::File::USMARC::decode( $result );
-        my $biblio = TransformMarcToKoha( C4::Context->dbh, $marcrecord, '' );
+foreach my $result ( @{$marcresults} ) {
+    my $marcrecord = MARC::File::USMARC::decode( $result );
+    my $biblio = TransformMarcToKoha( C4::Context->dbh, $marcrecord, '' );
 
-        $biblio->{booksellerid} = $booksellerid;
-        push @results, $biblio;
+    $biblio->{booksellerid} = $booksellerid;
+    push @results, $biblio;
 
-    }
 }
+
 $template->param(
     basketno             => $basketno,
     booksellerid     => $bookseller->{'id'},
index 9c472f1..eec3233 100755 (executable)
@@ -25,6 +25,9 @@ foreach my $authority (@$dataauthorities){
   $query= "an=".$authority->{'authid'};
   # search for biblios mapped
   my ($err,$res,$used) = C4::Search::SimpleSearch($query,0,10);
+  if (defined $err) {
+      $used = 0;
+  }
   if ($marcauthority && $marcauthority->field($authtypes{$authority->{'authtypecode'}}->{'tag'})){
     print qq("),$marcauthority->field($authtypes{$authority->{'authtypecode'}}->{"tag"})->as_string(),qq(";),qq($authority->{'authid'};"),$authtypes{$authority->{'authtypecode'}}->{'lib'},qq(";$used\n);
   }
index 0ae7a36..d2a3841 100755 (executable)
@@ -769,16 +769,16 @@ AND (authtypecode IS NOT NULL AND authtypecode<>\"\")|);
         warn "BIBLIOADDSAUTHORITIES: $error";
            return (0,0) ;
          }
-      if ($results && scalar(@$results)==1) {
+      if ( @{$results} == 1) {
         my $marcrecord = MARC::File::USMARC::decode($results->[0]);
         $field->add_subfields('9'=>$marcrecord->field('001')->data);
         $countlinked++;
-      } elsif (scalar(@$results)>1) {
+      } elsif (@{$results} > 1) {
    #More than One result 
    #This can comes out of a lack of a subfield.
 #         my $marcrecord = MARC::File::USMARC::decode($results->[0]);
 #         $record->field($data->{tagfield})->add_subfields('9'=>$marcrecord->field('001')->data);
-  $countlinked++;
+        $countlinked++;
       } else {
   #There are no results, build authority record, add it to Authorities, get authid and add it to 9
   ###NOTICE : This is only valid if a subfield is linked to one and only one authtypecode     
index 4c8a989..5e89ef8 100755 (executable)
@@ -85,8 +85,8 @@ if ($query) {
 
     # format output
     # SimpleSearch() give the results per page we want, so 0 offet here
-    my $total = scalar @$marcresults;
-    my @newresults = searchResults( 'intranet', $query, $total, $results_per_page, 0, 0, @$marcresults );
+    my $total = @{$marcresults};
+    my @newresults = searchResults( 'intranet', $query, $total, $results_per_page, 0, 0, @{$marcresults} );
     $template->param(
         total          => $total_hits,
         query          => $query,
index 84a6208..ddb6547 100755 (executable)
@@ -335,7 +335,10 @@ sub plugin {
         my $orderby;
         $search = 'kw,wrdl='.$search.' and mc-itemtype='.$itype if $itype;
         my ( $errors, $results, $total_hits ) = SimpleSearch($search, $startfrom * $resultsperpage, $resultsperpage );
-        my $total = scalar(@$results);
+        if (defined $errors ) {
+            $results = [];
+        }
+        my $total = @{$results};
 
         #        warn " biblio count : ".$total;
 
index bdc2109..9b92009 100755 (executable)
@@ -92,8 +92,8 @@ if ( $op eq "do_search" ) {
     ( $error, $marcresults, $total_hits ) =
       SimpleSearch( $ccl_query, $offset, $resultsperpage );
 
-    if (scalar($marcresults) > 0) {
-        $show_results = scalar @$marcresults;
+    if (!defined $error && @{$marcresults} ) {
+        $show_results = @{$marcresults};
     }
     else {
         $debug and warn "ERROR label-item-search: no results from SimpleSearch";
index 3bb9ed8..1d31382 100755 (executable)
@@ -222,15 +222,15 @@ RECORD: while (  ) {
        my ($error, $results,$totalhits)=C4::Search::SimpleSearch( $query, 0, 3, [$server] );
        die "unable to search the database for duplicates : $error" if (defined $error);
        #warn "$query $server : $totalhits";
-       if ($results && scalar(@$results)==1){
+       if ( @{$results} == 1 ){
            my $marcrecord = MARC::File::USMARC::decode($results->[0]);
                   $id=GetRecordId($marcrecord,$tagid,$subfieldid);
        } 
-       elsif  ($results && scalar(@$results)>1){
-       $debug && warn "more than one match for $query";
+       elsif  ( @{$results} > 1){
+           $debug && warn "more than one match for $query";
        } 
        else {
-       $debug && warn "nomatch for $query";
+           $debug && warn "nomatch for $query";
        }
     }
        my $originalid;
index 070a109..fbeee78 100755 (executable)
@@ -62,6 +62,10 @@ while (my $data=$rqselect->fetchrow_hashref){
     $query= "an=".$data->{'authid'};
     # search for biblios mapped
     my ($err,$res,$used) = C4::Search::SimpleSearch($query,0,10);
+    if (defined $err) {
+        warn "error: $err on search $query\n";
+        next;
+    }
     print ".";
     print "$counter\n" unless $counter++ % 100;
     # if found, delete, otherwise, just count
index 1282e38..47f7538 100644 (file)
@@ -590,8 +590,8 @@ sub add_biblios {
 
     $self->reindex_marc();
     my $query = 'Finn Test';
-    my ( $error, $results ) = SimpleSearch( $query );
-    if ( $param{'count'} <= scalar( @$results ) ) {
+    my ( $error, $results, undef ) = SimpleSearch( $query );
+    if ( !defined $error && $param{'count'} <=  @{$results} ) {
         pass( "found all $param{'count'} titles" );
     } else {
         fail( "we never found all $param{'count'} titles" );