4b9834cdc935021c5cf4076e48835e939c4b9fca
[irspy-moved-to-github.git] / bin / zoom-delete-records.pl
1 #!/opt/local/bin/perl
2 #
3 # ./zoom-delete-records.pl user=admin,password=fruitbat,localhost:8018/IR-Explain---1 'concat(count(irspy:status/irspy:probe[@ok=1]), "/", count(irspy:status/irspy:probe))' 'count(irspy:status/irspy:probe[@ok=1]) = 0 and count(irspy:status/irspy:probe) >= 10'
4
5 use lib '../lib';
6 use XML::LibXML;
7 use ZOOM;
8 use strict;
9 use warnings;
10
11 die "Usage: $0 <database> <displayXPath> <deleteXPath>\n" if @ARGV != 3;
12 my($dbname, $displayXPath, $deleteXPath) = @ARGV;
13
14 my $libxml = new XML::LibXML;
15 my $conn = new ZOOM::Connection($dbname);
16 my $rs = $conn->search(new ZOOM::Query::CQL("cql.allRecords=1"));
17 $rs->option(elementSetName => "zeerex");
18
19 my $n = $rs->size();
20 foreach my $i (1 .. $n) {
21     my $xml = $rs->record($i-1)->render();
22     my $rec = $libxml->parse_string($xml)->documentElement();
23     my $xc = XML::LibXML::XPathContext->new($rec);
24     $xc->registerNs(zeerex => "http://explain.z3950.org/dtd/2.0/");
25     $xc->registerNs(irspy => "http://indexdata.com/irspy/1.0");
26     my $val = $xc->findvalue($displayXPath);
27     print "Record $i/$n: $val";
28     $val = $xc->findvalue($deleteXPath);
29     print " DELETE" if $val eq "true";
30     print "\n";
31 }