source: main/trunk/greenstone2/runtime-src/src/colservr/comtypes.h@ 31811

Last change on this file since 31811 was 31387, checked in by ak19, 7 years ago

Round 1 of commits for getting OAI deletion policy to work with GS2 (server end). The perl code writing out the OAI db and the GS3 server code implementing the deletion policy had already been completed earlier (end 2016).

  • Property svn:executable set to *
File size: 11.7 KB
Line 
1/**********************************************************************
2 *
3 * comtypes.h --
4 * Copyright (C) 1999,2004 The New Zealand Digital Library Project
5 *
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 * 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
26
27#ifndef COMTYPES_H
28#define COMTYPES_H
29
30#include "gsdlconf.h"
31#include "text_t.h"
32
33#if defined(GSDL_USE_OBJECTSPACE)
34# include <ospace\std\vector>
35# include <ospace\std\list>
36# include <ospace\std\memory> // for pair
37# include <ospace\std\map>
38#elif defined(GSDL_USE_STL_H)
39# include <vector.h>
40# include <list.h>
41# include <memory.h> // for pair
42# include <map.h>
43#else
44# include <vector>
45# include <list>
46# include <memory> // for pair
47# include <map>
48#endif
49
50
51enum comerror_t {noError, authenticationFailure, protocolError,
52 configurationError, systemProblem, syntaxError};
53text_t get_comerror_string (comerror_t err);
54
55
56// ShortColInfo ::= SEQUENCE {
57// name GeneralString,
58// host GeneralString,
59// port INTEGER
60// }
61struct ShortColInfo_t {
62 void clear ();
63 ShortColInfo_t () {clear();}
64
65 text_t name;
66 text_t host;
67 int port;
68};
69
70// for collection metadata: metadata name -> lang -> value
71// for collection macros: macro name -> params -> value
72typedef map<text_t, text_tmap, lttext_t> collectionmeta_map;
73
74#define CCSUniformSearchResultsFormatting 1
75
76#define SIcasefold 1
77#define SIstem 2
78#define SIaccentfold 4
79
80struct ColInfoResponse_t {
81 void clear ();
82 ColInfoResponse_t () {clear();}
83 text_t get_collectionmeta(text_t name, text_t lang);
84
85 ShortColInfo_t shortInfo;
86 bool useBook; //whether we want to display the book
87 bool isPublic;
88 bool isBeta;
89 bool isSegmented;
90 bool isCollectGroup; // used to group a set of collections as one item on the home page
91 unsigned long buildDate;
92 text_tarray ccsCols; // empty if collection does not use cross-collection searching
93 int ccsOptions; // uses CCS #defines from above
94 int stemIndexes; // uses SI #defines from above
95 text_tarray languages;
96 unsigned long numDocs; // 0 if not known
97 unsigned long numSections; // 0 if not known
98 unsigned long numWords; // 0 if not known
99 unsigned long numBytes; // 0 if not known
100 collectionmeta_map collectionmeta;
101 text_tmap format;
102 collectionmeta_map collection_macros; // for collectionmacro config directive (> gsdl 2.53)
103 text_tmap building;
104 text_t httpdomain; // GRB: could these two http items need removing
105 text_t httpprefix;
106 text_t receptionist;
107 text_t buildType; // 'mg' or 'mgpp' or 'lucene'
108 text_t infodbType; // 'gdbm', 'sqlite', etc.
109 text_t authenticate; // 'document' or 'collection'
110 text_t auth_group; // 'mygroup' 'yourgroup'
111 text_tmap public_documents; // the acl to allow access to listed documents
112 text_tmap private_documents; // the acl to disallow access to listed documents
113 text_tmap dynamic_classifiers;
114 text_t earliestDatestamp; // For OAIserver validation. Time since linux Epoch, expressed as (long) integer value in string form
115};
116
117
118// -- filter options which might be supported for the QueryFilter
119// --
120// -- onePerQuery StartResults integer
121// -- onePerQuery EndResults integer
122// -- onePerQuery QueryType enumerated (boolean, ranked)
123// -- onePerTerm Term string ???
124// -- onePerTerm Casefold boolean
125// -- onePerTerm Stem boolean
126// -- onePerTerm Index enumerated
127// -- onePerTerm Subcollection enumerated
128// --
129// -- filter options which might be supported for the BrowseFilter
130// --
131// -- onePerQuery StartResults integer
132// -- onePerQuery EndResults integer
133// -- onePerQuery ParentNode string ("" will return the browsing available)
134// --
135// -- The NullFilter always returns the set it was given, it doesn't have
136// -- any options
137
138// InfoFiltersResponse ::= SEQUENCE {
139// filterNames StringSet
140// }
141struct InfoFiltersResponse_t {
142 void clear ();
143
144 text_tset filterNames;
145};
146
147// InfoFilterOptionsRequest ::= SEQUENCE {
148// filterName GeneralString
149// }
150struct InfoFilterOptionsRequest_t {
151 void clear ();
152
153 text_t filterName;
154};
155
156// FilterOption ::= SEQUENCE {
157// name GeneralString,
158// type ENUMERATED {booleant(0), integert(1), enumeratedt(2), stringt(3)},
159// repeatable ENUMERATED {onePerQuery(0), onePerTerm(1), nPerTerm(2)},
160// defaultValue GeneralString,
161// -- the interpretation of the validValues depends on the type
162// -- for boolean: the first value is the false value, the second is true value
163// -- for integer: the first value is the minimum, the second the maximum
164// -- for enumerated: all values a listed
165// -- for string: this value is ignored
166// validValues StringSequence
167// }
168struct FilterOption_t {
169 void clear ();
170 void check_defaultValue ();
171 FilterOption_t () {clear();}
172
173 text_t name;
174
175 enum type_t {booleant=0, integert=1, enumeratedt=2, stringt=3};
176 type_t type;
177
178 enum repeatable_t {onePerQuery=0, onePerTerm=1, nPerTerm=2};
179 repeatable_t repeatable;
180
181 text_t defaultValue;
182 text_tarray validValues;
183};
184
185bool operator==(const FilterOption_t &x, const FilterOption_t &y);
186bool operator<(const FilterOption_t &x, const FilterOption_t &y);
187
188
189typedef map<text_t, FilterOption_t, lttext_t> FilterOption_tmap;
190
191
192// InfoFilterOptionsResponse ::= SEQUENCE {
193// filterOptions SET OF FilterOption
194// }
195struct InfoFilterOptionsResponse_t {
196 void clear ();
197
198 FilterOption_tmap filterOptions;
199};
200
201
202// OptionValue ::= SEQUENCE {
203// name GeneralString,
204// value GeneralString
205// }
206struct OptionValue_t {
207 void clear ();
208
209 text_t name;
210 text_t value;
211};
212
213typedef vector<OptionValue_t> OptionValue_tarray;
214
215
216// -- Terms are presented in the same order that they are requested,
217// -- any information relating to the terms is in reference to the
218// -- index specified for that term.
219//
220// FilterRequest ::= SEQUENCE {
221// filterName [0] GeneralString,
222// filterOptions [1] IMPLICIT SEQUENCE OF OptionValue,
223// docSet [2] IMPLICIT StringSequence, -- the OID "" represents everything
224// filterResultOptions [3] IMPLICIT BIT STRING {termFreq(0), matchTerms(1), OID(2),
225// subCol(3), ranking(4), docFreq(5),
226// metadata(6)}
227//
228// -- the next set of options are for the metadata request,
229// -- they can be left blank if metadata is not wanted
230// requestParams [4] IMPLICIT GeneralString, -- used to negotiate the metadata content
231// refParams [5] IMPLICIT GeneralString, -- used to decide whether to return a
232// -- reference to the data or the actual data
233// fields [6] IMPLICIT StringSet
234// getParents [7] IMPLICIT BOOLEAN -- gets metadata of all parents too
235// }
236#define FRtermFreq 1
237#define FRmatchTerms 2
238#define FROID 4
239#define FRsubCol 8
240#define FRranking 16
241#define FRdocFreq 32
242#define FRmetadata 64
243// used to indicate a full text browse query for mgpp
244#define FRfullTextBrowse 128
245#define FROAI 256
246
247struct FilterRequest_t {
248 void clear ();
249 FilterRequest_t () {clear();}
250
251 text_t filterName;
252 text_t filterLang; // non empty if we want info to be retrived in language specific
253 OptionValue_tarray filterOptions;
254 text_tarray docSet; // empty if not used
255 int filterResultOptions; // use the FR* defines above
256
257 text_t requestParams; // empty if not used
258 text_t refParams; // empty if not used
259 text_tset fields; // empty if not used
260 bool getParents; // defaults to false
261};
262
263
264// TermInfo ::= SEQUENCE {
265// term [0] GeneralString,
266// freq [1] IMPLICIT INTEGER, -- 0 if not requested
267// matchTerms [2] IMPLICIT StringSequence -- empty if not requested
268// }
269struct TermInfo_t {
270 void clear ();
271 TermInfo_t () {clear();}
272
273 text_t term;
274 int freq; // 0 if not requested
275 text_tarray matchTerms; // empty if not requested
276};
277
278typedef vector<TermInfo_t> TermInfo_tarray;
279
280
281// MetadataInfo ::= SEQUENCE {
282// params [0] IMPLICIT GeneralString,
283// isRef [1] IMPLICIT BOOLEAN,
284// values [3] IMPLICIT SEQUENCE OF GeneralString,
285// name [4] IMPLICIT GeneralString
286// }
287struct MetadataInfo_t {
288 text_t params;
289 bool isRef;
290 text_tarray values;
291 MetadataInfo_t *parent;
292
293 void clear ();
294 MetadataInfo_t ();
295 MetadataInfo_t (const MetadataInfo_t &x); // copy constructor
296 ~MetadataInfo_t ();
297 MetadataInfo_t &operator=(const MetadataInfo_t &x);
298};
299
300typedef map<text_t, MetadataInfo_t, lttext_t> MetadataInfo_tmap;
301
302// ResultDocInfo ::= SEQUENCE {
303// OID [0] IMPLICIT GeneralString,
304// ranking [1] IMPLICIT INTEGER, -- 0 if not requested, range 0-10000
305// docFreq [2] IMPLICIT SEQUENCE OF INTEGER, -- empty if not requested
306// metadata [3] IMPLICIT SEQUENCE OF MetadataInfo, -- no longer a SEQUENCE (SET maybe??)
307// classifier_metadata_type [4] IMPLICIT GeneralString, -- empty if not requested
308// classifier_metadata_offset [5] IMPLICIT INTEGER, -- 0 if not requested
309// }
310struct ResultDocInfo_t {
311 void clear ();
312 ResultDocInfo_t () {clear();}
313
314 text_t OID;
315 int result_num; // place in results list
316 int ranking; // 0 if not requested (real ranking*10000)
317 int num_terms_matched; // not available on all versions of mg
318 int num_phrase_match; // not available on all versions of mg
319 vector<int> docFreq; // empty if not requested
320 MetadataInfo_tmap metadata; // empty if not requested
321 text_t classifier_metadata_type; // empty if not requested
322 int classifier_metadata_offset; // 0 if not requested
323 ResultDocInfo_t &operator=(const ResultDocInfo_t &x);
324};
325
326typedef vector<ResultDocInfo_t> ResultDocInfo_tarray;
327
328
329// FilterResponse ::= SEQUENCE {
330// numDocs [0] IMPLICIT INTEGER,
331// isApprox [1] ENUMERATED {Exact(0), Approximate(1), MoreThan(2)}, -- whether numDocs is approximate
332// termInfo [2] IMPLICIT SEQUENCE OF TermInfo, -- empty if not required
333// docInfo [3] IMPLICIT SEQUENCE OF ResultDocInfo -- empty if not required
334// }
335
336enum isapprox {Exact=0, Approximate=1, MoreThan=2};
337
338struct FilterResponse_t {
339 void clear ();
340 FilterResponse_t () {clear();}
341
342 text_t error_message; // Currently only used by Lucene
343 int numDocs;
344 isapprox isApprox;
345 TermInfo_tarray termInfo; // empty if not requested
346 ResultDocInfo_tarray docInfo; // empty if not requested
347 text_tset stopwords;
348
349 FilterResponse_t &operator=(const FilterResponse_t &x);
350};
351
352
353// DocumentRequest ::= SEQUENCE {
354// OID GeneralString,
355// docType GeneralString,
356// docFormat GeneralString
357// }
358struct DocumentRequest_t {
359 void clear ();
360 DocumentRequest_t () {clear();}
361
362 text_t OID;
363 text_t docType;
364 text_t docFormat;
365};
366
367
368// DocumentResponse ::= SEQUENCE {
369// doc OCTET STRING
370// }
371
372struct DocumentResponse_t {
373 void clear ();
374 DocumentResponse_t () {clear();}
375
376 text_t doc;
377};
378
379
380#endif
381
Note: See TracBrowser for help on using the repository browser.