source: trunk/java-client/org/nzdl/gsdl/service/NzdlServiceServer.java@ 2316

Last change on this file since 2316 was 2284, checked in by say1, 23 years ago

Cross collection searching

  • Property svn:keywords set to Author Date Id Revision
File size: 9.5 KB
Line 
1/*
2 * SimpleServer.java
3 * Copyright (C) 2000 Stuart Yeates
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18 */
19
20// the package we're in
21package org.nzdl.gsdl.service;
22
23// java standard library classes used
24import java.io.IOException;
25import java.io.Serializable;
26import java.lang.Cloneable;
27import java.util.Set;
28import java.util.Iterator;
29
30import org.omg.CORBA.ORB;
31
32// local libraries
33import org.nzdl.gsdl.corba.gsdlInterface.*;
34import org.nzdl.gsdl.service.NzdlCollectionInfo;
35import org.nzdl.gsdl.service.NzdlQuery;
36import org.nzdl.gsdl.service.NzdlRequest;
37import org.nzdl.gsdl.service.NzdlResponse;
38import org.nzdl.gsdl.service.NzdlResultSet;
39import org.nzdl.gsdl.service.NzdlService;
40import org.nzdl.gsdl.util.NzdlCorbaFactory;
41
42
43/**
44 * Act as a Server.
45 *
46 * Designed as a mirror image of NzdlServiceClient
47 *
48 * @author stuart yeates ([email protected])
49 * @version $Revision: 2284 $
50 * @see org.nzdl.gsdl.service.NzdlService
51 * @see org.nzdl.gsdl.service.NzdlServiceClient
52 * @see org.nzdl.gsdl.service.NzdlServiceWrapper
53 * @see org.nzdl.gsdl.corba.gsdlInterface._corbaifaceImplBase
54 *
55 */
56
57
58public class NzdlServiceServer extends _corbaifaceImplBase {
59
60 /** The underlying interface */
61 NzdlService nzdl = null;
62
63 /** The normal constructor */
64 public NzdlServiceServer(NzdlService service) {
65 nzdl = service;
66 }
67
68 /** The beans constructor */
69 protected NzdlServiceServer() {
70 nzdl = null;
71 }
72
73 /** initialisation (not guaranteed to be called ...) */
74 public boolean initialise (corbaComErrorHolder error) {
75 // TODO should map the anything in NzdlService?
76 if (nzdl == null)
77 throw new Error ("NzdlServer needs a NzdlService to foward calls to ...");
78 error.value = corbaComError.from_int(corbaComError._corbaNoError);
79 return true;
80 }
81
82 /**
83 * Allow the client to configure a CORBA server.
84 * @param key the parameter to be set.
85 * @param values what that parameter will be set to.
86 */
87 public void configure (corbatext_t key,
88 corbatext_t[] cfgline,
89 corbaComErrorHolder error) {
90 // m_nzdlServer.configure( NzdlCorbaFactory.toCorbaText( _key ),
91 // NzdlCorbaFactory.toCorbaTextArray( _values ));
92
93 nzdl.configure( NzdlCorbaFactory.toString(key),
94 NzdlCorbaFactory.toSet(cfgline));
95 error.value = corbaComError.from_int(corbaComError._corbaNoError);
96 }
97
98
99 /**
100 * Obtain the set of collection names for a Greenstone library.
101 * @param collist A set of collection names in string format.
102 * @param error a corba error object
103 */
104 public void collectionList (corbatext_tarrayHolder collist,
105 corbaComErrorHolder error) {
106 System.err.println("Server::getCollectionSet() start " + error.value.value());
107 //corbatext_tarrayHolder c_collSet = NzdlCorbaFactory.createCorbaTextArrayHolder();
108 //m_nzdlServer.collectionList(c_collSet);
109 //Set collSet = new HashSet();
110 //for (int i=0; i<c_collSet.value.length; i++) {
111 // collSet.add( NzdlCorbaFactory.toString( c_collSet.value[i] ) );
112 //}
113 //return collSet ;
114 Set set = nzdl.getCollectionSet();
115 System.err.println("Server::getCollectionSet() in " + error.value.value());
116 System.err.println("Server::getCollectionSet() in " + set);
117
118 collist.value = new corbatext_t[set.size()];
119
120 Iterator itr = set.iterator();
121 int i = 0;
122 while (itr.hasNext()) {
123 String s = (String) itr.next();
124 if (s.indexOf("nuipepa") == -1)
125 collist.value[i++] = NzdlCorbaFactory.toCorbaText(s);
126 }
127 error.value = corbaComError.from_int(corbaComError._corbaNoError);
128 System.err.println("Server::getCollectionSet() end " + error.value.value());
129
130 return;
131 }
132
133 /**
134 * Does the server have a specific collections?
135 * @param has a boolean
136 * @param error a corba error object
137 */
138 public void hasCollection (corbatext_t corbaCollection,
139 org.omg.CORBA.BooleanHolder has,
140 corbaComErrorHolder error) {
141 // corbaComErrorHolder c_err = NzdlCorbaFactory.createComErrorHolder();
142 // org.omg.CORBA.BooleanHolder c_has = new org.omg.CORBA.BooleanHolder();
143 // m_nzdlServer.hasCollection( NzdlCorbaFactory.toCorbaText(_name), c_has, c_err );
144 // if (c_err.value.value() != 0)
145 // System.err.println("hasCollection error " + c_err.value.value());
146 // return c_has.value;
147 String name = NzdlCorbaFactory.toString(corbaCollection);
148 has.value = nzdl.hasCollection(name);
149 error.value = corbaComError.from_int(corbaComError._corbaNoError);
150 return;
151 }
152
153 /**
154 * Is the collection avalibale for use?
155 * @param error a corba error object
156 * @return <tt>true</tt> if the collection is avaliable,
157 * <tt>false</tt> otherwise
158 */
159 public void ping (corbatext_t collection,
160 org.omg.CORBA.BooleanHolder has,
161 corbaComErrorHolder error) {
162 String name = NzdlCorbaFactory.toString(collection);
163 has.value = nzdl.hasCollection(name);
164 }
165
166 /**
167 * Get a document
168 * @param collection the collection the document is in
169 * @param request the details of the document
170 * @param response the document
171 * @param error a corba error object
172 */
173 public void getDocument (corbatext_t collection,
174 corbaDocRequestHolder request,
175 corbaDocResponseHolder response,
176 corbaComErrorHolder error) {
177 // corbatext_t c_name = NzdlCorbaFactory.toCorbaText( _name );
178 // corbaDocRequestHolder c_request = NzdlCorbaFactory.createDocRequestHolder( _docID );
179 // corbaDocResponseHolder c_response = NzdlCorbaFactory.createDocResponseHolder( );
180 // corbaComErrorHolder c_err = NzdlCorbaFactory.createComErrorHolder();
181 // m_nzdlServer.getDocument( c_name, c_request, c_response, c_err );
182 // if (c_err.value.value() != 0)
183 // System.err.println("getDocument() error " + c_err.value.value());
184 // return NzdlCorbaFactory.toString( c_response.value.doc );
185 String collectionName = NzdlCorbaFactory.toString(collection);
186 String documentID = NzdlCorbaFactory.toString(request.value.OID);
187 String doc = nzdl.getDocument( collectionName, documentID );
188 response.value.doc = NzdlCorbaFactory.toCorbaText(doc);
189 error.value = corbaComError.from_int(corbaComError._corbaNoError);
190 return;
191 }
192
193 public void getCollectInfo (corbatext_t collection,
194 corbaColInfoResponseHolder response,
195 corbaComErrorHolder error) {
196 // corbaComErrorHolder c_err = NzdlCorbaFactory.createComErrorHolder();
197 // corbaColInfoResponseHolder c_info = NzdlCorbaFactory.createColInfoResponseHolder();
198 // m_nzdlServer.getCollectInfo( NzdlCorbaFactory.toCorbaText(_name), c_info, c_err );
199 // if (c_err.value.value() != 0)
200 // System.err.println("getCollectionInfo() error " + c_err.value.value());
201 // return new NzdlCollectionInfo( c_info.value );
202 String collectionName = NzdlCorbaFactory.toString(collection);
203 NzdlCollectionInfo info = nzdl.getCollectionInfo( collectionName );
204 response.value = info.getInfo();
205 error.value = corbaComError.from_int(corbaComError._corbaNoError);
206 return;
207 }
208
209 public void getFilterInfo (corbatext_t collection,
210 corbatext_tarrayHolder filterNames,
211 corbaComErrorHolder error) {
212 String collectionName = NzdlCorbaFactory.toString(collection);
213
214 Set set = nzdl.getFilterSet(collectionName);
215
216 Iterator itr = set.iterator();
217 int i = 0;
218 while (itr.hasNext()) {
219 String s = (String) itr.next();
220 filterNames.value[i++] = NzdlCorbaFactory.toCorbaText(s);
221 }
222
223 error.value = corbaComError.from_int(corbaComError._corbaNoError);
224 return;
225 }
226
227 public void getFilterOptions (corbatext_t collection,
228 corbatext_t option,
229 corbaFilterOptionsResponseHolder response,
230 corbaComErrorHolder error) {
231 String collectionName = NzdlCorbaFactory.toString(collection);
232 System.err.println("TO BE IMPLEMENTED: DON'T KNOW HOW YET !!! (getFilterOptions)");
233
234 error.value = corbaComError.from_int(corbaComError._corbaProtocolError);
235 return;
236 }
237
238 public void filter (corbatext_t collection,
239 corbaFilterRequest request,
240 corbaFilterResponseHolder response,
241 corbaComErrorHolder error) {
242 //corbatext_t c_name = NzdlCorbaFactory.toCorbaText( _name );
243 //corbaComErrorHolder c_err = NzdlCorbaFactory.createComErrorHolder();
244 //m_nzdlServer.filter( c_name, _request.getFilter(), _response.getHolder(), c_err );
245 //if (c_err.value.value() != 0)
246 // System.err.println("service() error " + c_err.value.value());
247 error.value = corbaComError.from_int(corbaComError._corbaNoError);
248
249 String collectionName = NzdlCorbaFactory.toString(collection);
250 NzdlRequest _request = new NzdlRequest(request);
251 NzdlResponse _response = new NzdlResponse();
252 _response.setResponse(response.value);
253
254 try {
255 nzdl.service(collectionName,_request,_response);
256 } catch (Throwable t) {
257 error.value = corbaComError.from_int(corbaComError._corbaProtocolError);
258 }
259 return;
260 }
261}
262
263
Note: See TracBrowser for help on using the repository browser.