source: trunk/java-client/org/nzdl/gsdl/util/NzdlCorbaFactory.java@ 3090

Last change on this file since 3090 was 3090, checked in by kjdon, 22 years ago

fixed parameter types for createQueryFilterRequest

  • Property svn:keywords set to Author Date Id Revision
File size: 11.3 KB
Line 
1/*
2 * NzdlCorbaFactory.java
3 * Copyright (C) 2001 New Zealand Digital Library Project
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.util;
22
23import java.util.Set;
24import java.util.HashSet;
25import java.util.List;
26import java.util.ListIterator;
27
28import org.nzdl.gsdl.service.NzdlQuery;
29import org.nzdl.gsdl.service.NzdlBrowse;
30import org.nzdl.gsdl.corba.gsdlInterface.*;
31import org.nzdl.gsdl.util.NzdlConstants;
32
33/**
34 * Returns CORBA objects via it's operations.
35 */
36public final class NzdlCorbaFactory {
37
38
39 private NzdlCorbaFactory() {}
40
41 public static corbatext_t toCorbaText(String _text) {
42 int len = _text.length();
43 short[] shorts = new short[len];
44 for (int i=0; i<len; i++) {
45 shorts[i] = (short)_text.charAt(i);
46 }
47 short encoding = 0;
48 corbatext_t corba_t = new corbatext_t(shorts, encoding, len);
49 return corba_t;
50 }
51
52 public static String toString(corbatext_t _text) {
53 // System.out.println("NzdlCorbaFactory.toString() called length = " + _text.text.length +
54 // " ecnoding = " + _text.encoding +
55 // " reported length = " + _text.length);
56 StringBuffer text = new StringBuffer(1000);
57 for (int j=0; j<_text.text.length; j++) {
58 text.append((char)_text.text[j]);
59 }
60 return text.toString();
61 }
62
63 public static corbaComErrorHolder createComErrorHolder() {
64 corbaComErrorHolder err
65 = new corbaComErrorHolder( corbaComError.from_int(0) );
66 return err;
67 }
68
69 public static corbatext_tarrayHolder createCorbaTextArrayHolder() {
70 corbatext_t [] array = {};
71 corbatext_tarrayHolder arrayHolder = new corbatext_tarrayHolder( array );
72 return arrayHolder;
73 }
74
75 public static Set toSet( corbatext_t [] _configLines ) {
76 HashSet set = new HashSet();
77 for (int i=0; i<_configLines.length; i++) {
78 set.add(NzdlCorbaFactory.toString(_configLines[i]));
79 }
80 return set;
81 }
82
83 public static corbatext_t [] toCorbaTextArray( Set _configLines ) {
84 Object [] lines = _configLines.toArray();
85 corbatext_t [] array = new corbatext_t[ lines.length ];
86 for (int i=0; i<lines.length; i++) {
87 array[i] = toCorbaText( (String)lines[i] );
88 }
89 return array;
90 }
91
92 public static corbaColInfoResponseHolder createColInfoResponseHolder() {
93 corbaShortColInfo shortInfo = new corbaShortColInfo();
94 shortInfo.name = toCorbaText("");
95 shortInfo.host = toCorbaText("");
96 corbaColInfoResponse response = new corbaColInfoResponse();
97 response.shoftInfo = shortInfo; // shoft !! typo in corba interface !!
98 response.isPublic = false;
99 response.isBeta = false;
100 response.buildDate = 0;
101 response.ccsCols = new corbatext_t[0];
102 response.languages = new corbatext_t[0];
103 response.numDocs = 0;
104 response.numWords = 0;
105 response.numBytes = 0;
106 response.collectionMeta = new corbatext_tmap(new corbatext_t[0],new corbatext_t[0]);
107 response.format = new corbatext_tmap(new corbatext_t[0],new corbatext_t[0]);
108 response.building = new corbatext_tmap(new corbatext_t[0],new corbatext_t[0]);
109 response.httpdomain = toCorbaText("");
110 response.httpprefix = toCorbaText("");
111 response.receptionist = toCorbaText("");
112 corbaColInfoResponseHolder responseHolder
113 = new corbaColInfoResponseHolder(response);
114 return responseHolder;
115 }
116
117 public static corbaFilterRequest
118 createQueryFilterRequest( String _term, String _type, int _numOfHits ) {
119 return createQueryFilterRequest( _term,
120 _type,
121 String.valueOf(NzdlConstants.DEFAULT_CASE_FOLDING),
122 String.valueOf(NzdlConstants.DEFAULT_STEMMING),
123 String.valueOf(NzdlConstants.DEFAULT_START_RESULTS),
124 String.valueOf(_numOfHits),
125 String.valueOf(NzdlConstants.DEFAULT_MAX_DOCS),
126 NzdlConstants.DEFAULT_QUERY_META
127 );
128 }
129
130 public static corbaFilterRequest
131 createQueryFilterRequest( NzdlQuery _query ) {
132 return createQueryFilterRequest( _query.getQueryTerm(),
133 _query.getQueryType(),
134 _query.getCaseFolding(),
135 _query.getStemming(),
136 String.valueOf(_query.getStartResults()),
137 String.valueOf(_query.getEndResults()),
138 String.valueOf(_query.getMaxDocs()),
139 _query.getMetadata()
140 );
141 }
142
143
144 public static corbaFilterRequest
145 createQueryFilterRequest( String _term, String _type, String _case,
146 String _stem, String _startHit, String _endHit, String _maxDocs) {
147 return createQueryFilterRequest(_term, _type, _case, _stem, _startHit, _endHit, _maxDocs,
148 NzdlConstants.DEFAULT_QUERY_META
149 );
150 }
151
152 public static corbaFilterRequest
153 createQueryFilterRequest( String _term, String _type, String _case,
154 String _stem, String _startHit, String _endHit, String _maxDocs, boolean _meta ) {
155
156 corbaFilterRequest queryFilter = new corbaFilterRequest();
157 queryFilter.filter = toCorbaText("QueryFilter");
158
159 queryFilter.filterOptions = new corbaOptionValue[8];
160 queryFilter.filterOptions[0]
161 = new corbaOptionValue(toCorbaText("Term"),
162 toCorbaText(_term));
163 queryFilter.filterOptions[1]
164 = new corbaOptionValue(toCorbaText("QueryType"),
165 toCorbaText(_type));
166 queryFilter.filterOptions[2]
167 = new corbaOptionValue(toCorbaText("Casefold"),
168 toCorbaText(_case));
169 queryFilter.filterOptions[3]
170 = new corbaOptionValue(toCorbaText("Stem"),
171 toCorbaText(_stem));
172 queryFilter.filterOptions[4]
173 = new corbaOptionValue(toCorbaText("StartResults"),
174 toCorbaText(_startHit));
175 queryFilter.filterOptions[5]
176 = new corbaOptionValue(toCorbaText("EndResults"),
177 toCorbaText(_endHit));
178 queryFilter.filterOptions[6]
179 = new corbaOptionValue(toCorbaText("Maxdocs"),
180 toCorbaText(_maxDocs));
181
182 queryFilter.filterOptions[7]
183 = new corbaOptionValue(toCorbaText("MatchMode"),
184 toCorbaText("all"));
185
186 queryFilter.docSet = new corbatext_t[0];
187 int resultOptions = NzdlConstants.FROID|NzdlConstants.FRtermFreq|NzdlConstants.FRranking;
188 if (_meta)
189 { resultOptions |= NzdlConstants.FRmetadata;
190 }
191 queryFilter.filterResultOptions = resultOptions;
192 queryFilter.requestParams = toCorbaText("");
193 queryFilter.refParams = toCorbaText("");
194 queryFilter.fields = new corbatext_t[0];
195 queryFilter.getParents = false;
196 return queryFilter;
197 }
198
199 public static corbaFilterRequest
200 createBrowseFilterRequest( NzdlBrowse _browse ) {
201 return createBrowseFilterRequest( _browse.getBrowseNode(), _browse.getMetadata());
202 }
203
204 public static corbaFilterRequest createBrowseFilterRequest(String _docID, String _metaTag) {
205
206 corbaFilterRequest browseFilter = new corbaFilterRequest();
207 browseFilter.filter = toCorbaText("BrowseFilter");
208
209 browseFilter.filterOptions = new corbaOptionValue[1];
210 browseFilter.filterOptions[0]
211 = new corbaOptionValue(toCorbaText("ParentNode"),
212 toCorbaText(_docID));
213
214 browseFilter.docSet = new corbatext_t[0];
215 int resultOptions = NzdlConstants.FROID|NzdlConstants.FRmetadata;
216 browseFilter.filterResultOptions = resultOptions;
217 browseFilter.requestParams = toCorbaText("");
218 browseFilter.refParams = toCorbaText("");
219 browseFilter.fields = new corbatext_t[1];
220 browseFilter.fields[0] = toCorbaText(_metaTag);
221 browseFilter.getParents = false;
222 return browseFilter;
223 }
224
225 public static corbaFilterRequest createBrowseFilterRequest( String _docID ) {
226 corbaFilterRequest browseFilter = new corbaFilterRequest();
227 browseFilter.filter = toCorbaText("BrowseFilter");
228 browseFilter.filterOptions = new corbaOptionValue[1];
229 browseFilter.filterOptions[0]
230 = new corbaOptionValue(toCorbaText("ParentNode"),
231 toCorbaText(_docID));
232 browseFilter.docSet = new corbatext_t[0];
233 int resultOptions = NzdlConstants.FROID;
234 browseFilter.filterResultOptions = resultOptions;
235 browseFilter.requestParams = toCorbaText("");
236 browseFilter.refParams = toCorbaText("");
237 browseFilter.fields = new corbatext_t[0];
238 browseFilter.getParents = false;
239 return browseFilter;
240 }
241
242 public static corbaFilterRequest createMetaDataFilterRequest( String _docID, String _metaTag ) {
243 corbaFilterRequest nullFilter = new corbaFilterRequest();
244 nullFilter.filter = toCorbaText("NullFilter");
245 nullFilter.filterOptions = new corbaOptionValue[0];
246 nullFilter.docSet = new corbatext_t[1];
247 nullFilter.docSet[0] = toCorbaText(_docID);
248 int resultOptions = NzdlConstants.FRmetadata;
249 nullFilter.filterResultOptions = resultOptions;
250 nullFilter.requestParams = toCorbaText("");
251 nullFilter.refParams = toCorbaText("");
252 nullFilter.fields = new corbatext_t[1];
253 nullFilter.fields[0] = toCorbaText(_metaTag);
254 nullFilter.getParents = false;
255 return nullFilter;
256 }
257
258 public static corbaFilterRequest createMetaDataFilterRequest( List _docIDs, String _metaTag ) {
259 corbaFilterRequest nullFilter = new corbaFilterRequest();
260 nullFilter.filter = toCorbaText("NullFilter");
261 nullFilter.filterOptions = new corbaOptionValue[0];
262 // we will request the meta data for all documents in _docIDs set
263 nullFilter.docSet = new corbatext_t[_docIDs.size()];
264 int i=0;
265 for (ListIterator itr = _docIDs.listIterator(); itr.hasNext(); ) {
266 nullFilter.docSet[i] = toCorbaText( (String)itr.next() );
267 i++;
268 }
269 int resultOptions = NzdlConstants.FRmetadata;
270 nullFilter.filterResultOptions = resultOptions;
271 nullFilter.requestParams = toCorbaText("");
272 nullFilter.refParams = toCorbaText("");
273 nullFilter.fields = new corbatext_t[1];
274 // this is the meta (_metaTag) data we need
275 nullFilter.fields[0] = toCorbaText(_metaTag);
276 nullFilter.getParents = false;
277 return nullFilter;
278 }
279
280 public static corbaFilterResponseHolder createFilterResponseHolder() {
281 corbaFilterResponse responseFilter = new corbaFilterResponse();
282 responseFilter.numDocs = 0;
283 responseFilter.isApprox = corbaIsApprox.from_int(0);
284 responseFilter.termInfo = new corbaTermInfo[0];
285 responseFilter.docInfo = new corbaResultDocInfo[0];
286 return new corbaFilterResponseHolder(responseFilter);
287 }
288
289 public static corbaDocRequestHolder createDocRequestHolder( String _docID ) {
290 corbaDocRequest docRequest
291 = new corbaDocRequest( toCorbaText( _docID ), toCorbaText(""), toCorbaText("") );
292 return new corbaDocRequestHolder(docRequest);
293 }
294
295 public static corbaDocResponseHolder createDocResponseHolder( ) {
296 corbaDocResponse docResponse = new corbaDocResponse( toCorbaText("") );
297 return new corbaDocResponseHolder( docResponse );
298 }
299
300}
301
302
303
304
305
Note: See TracBrowser for help on using the repository browser.