#!/usr/bin/perl -w

#use lib qw(/www/zOpals/module);
#use Opals::Context('/www/zOpals/config/zopals');
#use Opals::Search qw(
#    srch_exclusiveResultSize
#);
#use POSIX qw(
#    strftime
#);
#print strftime('%Y-%m-%d %H:%M:%S', localtime(time)).": starting...\n";
#my $dbh = Opals::Context->dbh();
#my $zid = 0;
#my $pqf = '@attr 1=1016 canal';
#print strftime('%Y-%m-%d %H:%M:%S', localtime(time)).": searching...\n";
#my @exclusiveResultSize = srch_exclusiveResultSize($dbh, $zid, $pqf);
#print strftime('%Y-%m-%d %H:%M:%S', localtime(time)).": search done.\n";
#foreach my $zdb (@exclusiveResultSize) {
#    print "$zdb->{'host'}:$zdb->{'port'}/$zdb->{'name'}: $zdb->{'rsSize'}\n";
#}
#print strftime('%Y-%m-%d %H:%M:%S', localtime(time)).": done.\n\n";

#use Net::Z3950;
#$conn = new Net::Z3950::Connection('z3950.loc.gov', 7090,
#				   databaseName => 'Voyager');
#$conn->option('preferredRecordSyntax', Net::Z3950::RecordSyntax::USMARC);
#$rs = $conn->search('@attr 1=7 0253333490');
#print "found ", $rs->size(), " records:\n";
##$rec = $rs->record(1);
##print $rec->render();

use POSIX qw(
    strftime
);
use ZOOM;

my @zzz = (
    ['localhost',210,'opals'],              #0
    ['z3950.loc.gov',7090,'voyager'],       #1
    ['192.234.223.154',210,'Horizon'],      #2
    ['catalogue.biblrn.qc.ca',3950,'BMRN'], #3
    ['library.ox.ac.uk',210,'ADVANCE'],     #4
    ['library.slnsw.gov.au',210,'INNOPAC'], #5: no conn
    ['aleph.mcgill.ca',210,'muse'],         #6: no conn
    ['libms3.albany.edu',9991,'ALB01'],     #7
);
my $zid = $ARGV[1];
($zid) || ($zid = 0);
print strftime('%Y-%m-%d %H:%M:%S', localtime(time)).": connecting to $zzz[$zid][0]:$zzz[$zid][1]/$zzz[$zid][2]...\n";

$conn = new ZOOM::Connection(
        $zzz[$zid][0],
        $zzz[$zid][1],
        databaseName => $zzz[$zid][2]);
#$conn->option(elementSetName => 'F');
#$conn->option(preferredRecordSyntax => 'opac');
print("server is '", $conn->option("serverImplementationName"), "'\n");
my $q = "\@attr 1=1016 $ARGV[0]";
print "Query: $q\n";
$rs = $conn->search_pqf($q);
$rs->option(preferredRecordSyntax => 'opac');
print $conn->errmsg()."\n" unless $rs;
my $count = $rs->size();
print "found ", $count, " records\n";
my $rec;
for (my $i=0; $i<$count && $i <=2; $i++) {
    my $raw = $rs->record($i)->render;#raw;#
    $rec .= $raw;
    print "Record: #$i\n$raw\n";
}
#open TTT, ">/tmp/ttt";
#print TTT $rec;
#close TTT;
#print strftime('%Y-%m-%d %H:%M:%S', localtime(time)).": delete record set: starting...\n";
#if ($rs->delete()){print "Delete record set OK.\n"};
#print strftime('%Y-%m-%d %H:%M:%S', localtime(time)).": delete record set: done.\n";
#print strftime('%Y-%m-%d %H:%M:%S', localtime(time)).": close connection: starting...\n";
#$conn->destroy();
#print strftime('%Y-%m-%d %H:%M:%S', localtime(time)).": close connection: done.\n";
#my $rec = $rs->record(1);
#print $rec->render();
