source: trunk/gsdl/src/recpt/nullproto.cpp@ 5017

Last change on this file since 5017 was 4774, checked in by sjboddie, 21 years ago

No longer show search page (or search form on "about" page) if a collection
doesn't have at least one searchable index. Note that this change includes
the addition of an is_searchable() function to the protocol.

  • Property svn:executable set to *
  • Property svn:keywords set to Author Date Id Revision
File size: 5.6 KB
RevLine 
[166]1/**********************************************************************
2 *
3 * nullproto.cpp --
4 * Copyright (C) 1999 The New Zealand Digital Library Project
5 *
[533]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.
[166]9 *
[533]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 *
[166]24 *********************************************************************/
25
26#include "nullproto.h"
27#include <assert.h>
28
[1649]29#include "filter.h"
30#include "browsefilter.h"
31#include "mgqueryfilter.h"
32#include "mgppqueryfilter.h"
33#include "infodbclass.h"
34#include "mggdbmsource.h"
35#include "mgsearch.h"
36#include "mgppsearch.h"
37#include "fileutil.h"
38
[1892]39nullproto::nullproto() {
40 cset = NULL;
41}
[1649]42
[1459]43nullproto::~nullproto() {
44}
45
[1892]46// add collection to collectset (this should not be called until after the
47// collectset has been added to the protocol with set_collectset()
[1649]48void nullproto::add_collection (const text_t &collection, void *recpt,
[1860]49 const text_t &gsdlhome, const text_t &gdbmhome) {
[1892]50
51 if (cset != NULL) {
52 this->cset->add_collection (collection, recpt, gsdlhome, gdbmhome);
53 }
54}
[1649]55
[1892]56
[1679]57// remove_collection deletes the collection server of collection.
58// This only needs to be called if a collectionserver is to be
59// removed while the library is running. The destructor function
60// cleans up all collectservers when the program exits.
61void nullproto::remove_collection (const text_t &collection, ostream &logout) {
[1860]62 cset->remove_collection(collection, logout);
[1679]63}
64
[166]65// this configure will configure each of the collection servers
[2113]66void nullproto::configure (const text_t &key, const text_tarray &cfgline,
67 comerror_t &err) {
[166]68 // the naming of the collection should not be done here,
69 // it should be done just after the collection server has been
70 // created
71
[1860]72 // the protocol should not configure the collection set; it should be
73 // done direct to the collection server set
[2212]74 if (key == "gsdlhome" || key == "gdbmhome") {
[1860]75 cset->configure(key, cfgline);
[166]76 }
77}
78
79// this init will configure and init each of the collection servers
[2113]80bool nullproto::init (comerror_t &err, ostream &logout) {
[1860]81 return cset->init(logout);
82}
[166]83
[2113]84text_t nullproto::get_site_name (comerror_t &err) {
85 return "localhost";
[166]86}
87
[2113]88text_t nullproto::get_protocol_name (comerror_t &err) {
[166]89 return "nullproto";
90}
91
92
93void nullproto::get_collection_list (text_tarray &collist, comerror_t &err,
94 ostream &/*logout*/) {
[1860]95 cset->getCollectionList(collist);
96 err = noError; // no error is guaranteed - collection server shouldn't
97 // about receptionist error states, logout is irrelevant
[166]98}
99
100void nullproto::has_collection (const text_t &collection, bool &hascollection,
101 comerror_t &err, ostream &/*logout*/) {
[1860]102 hascollection = (cset->getCollectServer(collection) != NULL);
[166]103 err = noError;
104}
105
106void nullproto::ping (const text_t &collection, bool &wassuccess,
[2173]107 comerror_t &err, ostream &logout) {
108 collectserver *cserver = cset->getCollectServer(collection);
109 if (cserver != NULL) cserver->ping(wassuccess, err, logout);
110 else err = protocolError;
[166]111}
112
113void nullproto::get_collectinfo (const text_t &collection,
114 ColInfoResponse_t &collectinfo,
[184]115 comerror_t &err, ostream &logout) {
[1860]116 collectserver *cserver = cset->getCollectServer (collection);
[184]117 if (cserver != NULL) cserver->get_collectinfo (collectinfo, err, logout);
118 else err = protocolError;
119}
[166]120
[184]121
[220]122void nullproto::get_filterinfo (const text_t &collection,
123 InfoFiltersResponse_t &response,
124 comerror_t &err, ostream &logout) {
[1860]125 collectserver *cserver = cset->getCollectServer (collection);
[220]126 if (cserver != NULL) cserver->get_filterinfo (response, err, logout);
127 else err = protocolError;
128}
129
[184]130void nullproto::get_filteroptions (const text_t &collection,
[220]131 const InfoFilterOptionsRequest_t &request,
[184]132 InfoFilterOptionsResponse_t &response,
133 comerror_t &err, ostream &logout) {
[1860]134 collectserver *cserver = cset->getCollectServer (collection);
[220]135 if (cserver != NULL) cserver->get_filteroptions (request, response, err, logout);
[184]136 else err = protocolError;
[166]137}
[184]138
139void nullproto::filter (const text_t &collection,
[248]140 FilterRequest_t &request,
[184]141 FilterResponse_t &response,
142 comerror_t &err, ostream &logout) {
[1860]143 collectserver *cserver = cset->getCollectServer (collection);
[184]144 if (cserver != NULL) cserver->filter (request, response, err, logout);
145 else err = protocolError;
146}
147
[257]148void nullproto::get_document (const text_t &collection,
149 const DocumentRequest_t &request,
150 DocumentResponse_t &response,
151 comerror_t &err, ostream &logout) {
[1860]152 collectserver *cserver = cset->getCollectServer (collection);
[257]153 if (cserver != NULL) cserver->get_document (request, response, err, logout);
154 else err = protocolError;
155}
[4774]156
157void nullproto::is_searchable (const text_t &collection, bool &issearchable,
158 comerror_t &err, ostream &logout) {
159 issearchable = false;
160 collectserver *cserver = cset->getCollectServer (collection);
161 if (cserver != NULL) cserver->is_searchable (issearchable, err, logout);
162 else err = protocolError;
163}
Note: See TracBrowser for help on using the repository browser.