root/gs3-extensions/pharos/trunk/bin/script/pharos-imageis-query.pl @ 21260

Revision 21260, 4.1 KB (checked in by davidb, 10 years ago)

change to new jar and class setup

Line 
1#!/usr/bin/perl -w
2
3###########################################################################
4#
5# pharos-imageis-query.pl --
6# A component of the Greenstone digital library software
7# from the New Zealand Digital Library Project at the
8# University of Waikato, New Zealand.
9#
10# Copyright (C) 1999 New Zealand Digital Library Project
11#
12# This program is free software; you can redistribute it and/or modify
13# it under the terms of the GNU General Public License as published by
14# the Free Software Foundation; either version 2 of the License, or
15# (at your option) any later version.
16#
17# This program is distributed in the hope that it will be useful,
18# but WITHOUT ANY WARRANTY; without even the implied warranty of
19# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20# GNU General Public License for more details.
21#
22# You should have received a copy of the GNU General Public License
23# along with this program; if not, write to the Free Software
24# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25#
26###########################################################################
27
28BEGIN {
29    die "GSDLHOME not set\n" unless defined $ENV{'GSDLHOME'};
30    die "GSDLOS not set\n" unless defined $ENV{'GSDLOS'};
31    die "PHAROSIS_SRC_HOME not set\n" unless defined $ENV{'PHAROSIS_SRC_HOME'};
32    unshift (@INC, "$ENV{'GSDLHOME'}/perllib");
33}
34
35
36use strict;
37no strict 'refs'; # allow filehandles to be variables and vice versa
38no strict 'subs'; # allow barewords (eg STDERR) as function arguments
39
40use util;
41
42sub main
43{
44   
45    my $ARGC = scalar(@ARGV);
46   
47   
48    if ($ARGC != 2) {
49    my ($progname) = ($0 =~ m/^.*[\/|\\](.*?)$/);
50    print STDERR "Usage: $progname collection doc-id\n";
51    exit 1;
52    }
53
54    my ($col,$id) = @ARGV;
55           
56    my $docid = $id;
57    if ( $col ne "" ) {
58    $docid="$col:$docid";
59    }
60   
61    my $tmp_dir = &util::get_toplevel_tmp_dir();
62    $tmp_dir = &util::filename_cat($tmp_dir,"pharos-imageis");
63
64    print "Generating query_id.xml\n";
65   
66    my $query_template_filename
67    = &util::filename_cat($ENV{'PHAROSIS_SRC_HOME'},"resources","templates","query_id.xml");
68    my $query_this_filename = &util::filename_cat($tmp_dir,"query_id.xml");
69   
70    if (open(FIN,"<$query_template_filename")) {
71   
72    my $query_this_file_content = "";
73   
74    my $line;
75    while (defined ($line=<FIN>)) {
76        $line =~ s@\*\*docid\*\*@$docid@g;
77       
78        $query_this_file_content .= $line;
79    }
80   
81    close(FIN);
82   
83    if (open(FOUT,">$query_this_filename")) {
84        print FOUT $query_this_file_content;
85        close(FOUT);
86    }
87    else {
88        print STDERR "Error: failed to write out $query_this_filename\n";
89        print STDERR "$!\n";
90    }
91    }
92    else {
93    print STDERR "Error: failed to read $query_template_filename\n";
94    print STDERR "$!\n";
95    }
96   
97   
98    my $jar_filename = &util::filename_cat($ENV{'PHAROSIS_SRC_HOME'},"pharos-imageis-lib.jar");
99    my $classpath = &util::filename_cat($ENV{'PHAROSIS_SRC_HOME'},"classes");
100
101    my $java_cmd = "java -classpath \"$classpath\":\"$jar_filename\" pharosimageis.PharosImageIS \"$query_this_filename\"";
102
103
104    print "Querying $docid\n";
105   
106    chdir($tmp_dir);
107    my $status = system($java_cmd);
108   
109    if ($status == 0 ) {
110    &util::rm($query_this_filename);
111    }
112    else {
113    print STDERR "Error: Failed to run:\n";
114    print STDERR "$!\n";
115    exit 1;
116    }
117
118    my $result_filename = &util::filename_cat($tmp_dir,"image_cbs_result.xml");
119   
120    if ( ! -f $result_filename ) {
121    print STDERR "\n";
122    print STDERR "Error: Failed to generate $result_filename.xml\n";
123    print STDERR "       Check Tomcat's catalina.out for server-side error messages\n";
124    print STDERR "\n";
125    exit 1;
126    }
127    elsif ( -s $result_filename == 0) {
128    print STDERR "\n";
129    print STDERR "Warning: Server returned zero sized file image_cbs_result.xml\n";
130    print STDERR "         Check that the doc-id used is valid\n";
131    print STDERR "\n";
132    &util::rm($result_filename);
133    }
134    else {
135   
136    if (open(FIN,"<$result_filename")) {
137   
138        my $line;
139        while (defined ($line=<FIN>)) {
140        print $line;
141        }
142       
143        close(FIN);
144    }
145    else {
146        print STDERR "Error: failed to read $result_filename\n";
147        print STDERR "$!\n";
148    }
149
150    print "\n";
151    &util::rm($result_filename);
152    }
153}
154 
155
156main();
157
158
159
160
Note: See TracBrowser for help on using the browser.