source: gs3-extensions/solr/trunk/src/perllib/solrutil.pm@ 24483

Last change on this file since 24483 was 24483, checked in by davidb, 10 years ago
Reworking of code that detects existing running instance of Solr/Jetty server. This was due to Windows version of Perl not implementing '' on an open call. Code currently messy and needs a further tidy up.
File size: 2.8 KB
Line 
1###########################################################################
2#
3# solrutil.pm -- support module for Solr extension
4# A component of the Greenstone digital library software
5# from the New Zealand Digital Library Project at the
6# University of Waikato, New Zealand.
7#
8# Copyright (C) 1999 New Zealand Digital Library Project
9#
10# This program is free software; you can redistribute it and/or modify
11# it under the terms of the GNU General Public License as published by
12# the Free Software Foundation; either version 2 of the License, or
13# (at your option) any later version.
14#
15# This program is distributed in the hope that it will be useful,
16# but WITHOUT ANY WARRANTY; without even the implied warranty of
17# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18# GNU General Public License for more details.
19#
20# You should have received a copy of the GNU General Public License
21# along with this program; if not, write to the Free Software
22# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23#
24###########################################################################
25
26package solrutil;
27
28use strict;
29
30sub locate_file
31{
32 my ($search_path,$suffix) = @_;
33
34 foreach my $sp (@$search_path) {
35 my $full_path = &util::filename_cat($sp,$suffix);
36
37 if (-f $full_path) {
38 return $full_path;
39 }
40 }
41
42 # if get to here, then failed to find match
43
44 print STDERR "Error: Failed to find '$suffix'\n";
45 print STDERR " Looked in: ", join(", ", @$search_path), "\n";
46 exit -1;
47}
48
49
50sub get_search_path
51{
52 my $search_path = [];
53
54 push(@$search_path,$ENV{'GSDLCOLLECTDIR'}) if defined $ENV{'GSDLCOLLECTDIR'};
55 push(@$search_path,$ENV{'GSDLHOME'}) if defined $ENV{'GSDLHOME'};
56 push(@$search_path,$ENV{'GEXT_SOLR'}) if defined $ENV{'GEXT_SOLR'};
57
58 return $search_path;
59}
60
61
62
63sub open_post_pipe
64{
65 my ($collect,$ds_idx) = @_;
66
67 my $search_path = get_search_path();
68
69 chdir($ENV{'GEXT_SOLR'});
70
71 my $post_jar = &util::filename_cat("lib","java","solr-post.jar");
72 my $full_post_jar = solrutil::locate_file($search_path,$post_jar);
73
74 my $jetty_port = $ENV{'SOLR_JETTY_PORT'};
75
76 # Now run solr-post command
77 my $core = $collect."-".$ds_idx;
78 my $post_props = "-Durl=http://localhost:$jetty_port/solr/$core/update";
79 $post_props .= " -Ddata=stdin";
80 $post_props .= " -Dcommit=yes";
81
82 my $post_java_cmd = "java $post_props -jar \"$full_post_jar\"";
83
84### print STDERR "**** post cmd = $post_java_cmd\n";
85
86 open (PIPEOUT, "| $post_java_cmd")
87 || die "Error in solr_passes.pl: Failed to run $post_java_cmd\n!$\n";
88
89}
90
91sub print_to_post_pipe
92{
93 my ($line) = @_;
94
95 print PIPEOUT $line;
96}
97
98sub close_post_pipe
99{
100 # closing the pipe has the effect of shutting down solr-post.jar
101 close(PIPEOUT);
102}
103
1041;
Note: See TracBrowser for help on using the repository browser.