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
|
---|
21 | package org.nzdl.gsdl.util;
|
---|
22 |
|
---|
23 | import java.util.Set;
|
---|
24 | import java.util.HashSet;
|
---|
25 | import java.util.List;
|
---|
26 | import java.util.ListIterator;
|
---|
27 |
|
---|
28 | import org.nzdl.gsdl.service.NzdlQuery;
|
---|
29 | import org.nzdl.gsdl.service.NzdlBrowse;
|
---|
30 | import org.nzdl.gsdl.corba.gsdlInterface.*;
|
---|
31 | import org.nzdl.gsdl.util.NzdlConstants;
|
---|
32 |
|
---|
33 | /**
|
---|
34 | * Returns CORBA objects via it's operations.
|
---|
35 | */
|
---|
36 | public 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 |
|
---|