Dusplay proxy
[irspy-moved-to-github.git] / bin / irspy-rewrite-records.pl
1 #!/usr/bin/perl
2 #
3 # perl -I ../lib irspy-rewrite-records.pl localhost:8018/IR-Explain---1
4
5 use lib '../lib';
6 use Data::Dumper;
7 use Getopt::Long;
8 use ZOOM::IRSpy;
9 use ZOOM::IRSpy::Utils qw(render_record validate_record);
10
11 use strict;
12 use warnings;
13
14 my $irspy_to_zeerex_xsl = '../xsl/irspy2zeerex.xsl';
15 my $debug               = 1;
16 my $cql_query           = "cql.allRecords=1";
17
18 sub usage {
19     my $message = shift;
20
21     warn "$message\n" if defined $message;
22
23     <<EOF
24 usage $0 [ options ] database
25
26 --xslt=$irspy_to_zeerex_xsl     set xslt sheet
27 --debug=0..2                    verbose level
28 --query=$cql_query
29 EOF
30 }
31
32 GetOptions(
33     "xslt"    => \$irspy_to_zeerex_xsl,
34     "debug=i" => \$debug,
35     "query=s" => \$cql_query,
36 );
37
38 my $dbname = shift;
39 die usage("no database name specified\n") if !defined $dbname;
40
41 $ZOOM::IRSpy::irspy_to_zeerex_xsl = $irspy_to_zeerex_xsl
42   if $irspy_to_zeerex_xsl;
43
44 my $spy = new ZOOM::IRSpy( $dbname, "admin", "fruitbat" );
45 my $rs = $spy->{conn}->search( new ZOOM::Query::CQL($cql_query) );
46 print STDERR "rewriting ", $rs->size(), " target records\n" if $debug;
47
48 foreach my $i ( 1 .. $rs->size() ) {
49     my $xml = render_record( $rs, $i - 1, "zeerex" );
50     my $rec = $spy->{libxml}->parse_string($xml)->documentElement();
51
52     if ( $debug >= 2 ) {
53         my ( $ok, $errors ) = validate_record($rec);
54         if ( !$ok ) {
55             my @e  = @$errors;
56             my $id = shift @e;
57             print "Id: $id => ", join( " / ", @e ), "\n";
58         }
59     }
60     ZOOM::IRSpy::_rewrite_zeerex_record( $spy->{conn}, $rec );
61     print STDERR "." if $debug == 1;
62 }
63 print STDERR "Done\n" if $debug;
64