source: main/trunk/greenstone2/runtime-src/src/oaiservr/oaiconfig.h@ 27534

Last change on this file since 27534 was 27534, checked in by kjdon, 11 years ago

more changes for super collection stuff. Now can handle having collections in a super colleciton that are not in the main collection list

  • Property svn:keywords set to Author Date Id Revision
File size: 5.3 KB
Line 
1/**********************************************************************
2 *
3 * oaiconfig.h --
4 *
5 * Copyright (C) 2004-2010 The New Zealand Digital Library Project
6 *
7 * A component of the Greenstone digital library software
8 * from the New Zealand Digital Library Project at the
9 * University of Waikato, New Zealand.
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as published by
13 * the Free Software Foundation; either version 2 of the License, or
14 * (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24 *
25 *********************************************************************/
26
27#ifndef _OAICONFIG_H_
28#define _OAICONFIG_H_
29
30#include "cnfgable.h"
31
32#include <map>
33
34class oaicollectconfig {
35 public:
36 oaicollectconfig(const text_t &collectname) { this->collection = collectname; }
37 text_t collection;
38 text_t setName; // A display name for the set (collection)
39 text_t setDescription; // A display description for the set (collection)
40 text_tmap fieldMap; // maps from OAI name to GSDL name
41 text_tarray superCollectList; // a list of all super collections this belongs to
42};
43
44typedef map<text_t, oaicollectconfig *, lttext_t> oaicollectmap;
45
46class oaisupercollectconfig {
47 public:
48 oaisupercollectconfig(const text_t &supercollectionname) { this->supercollection = supercollectionname; }
49 text_t supercollection;
50 text_t setName; // A display name for the set (supercollection)
51 text_t setDescription; // A display description for the set (supercollection)
52 text_tarray collectionList; // a list of collections contained in this super collection
53};
54
55typedef map<text_t, oaisupercollectconfig *, lttext_t> oaisupercollectmap;
56
57
58class oaiconfig : configurable {
59 public:
60 oaiconfig();
61 oaiconfig(text_t &gsdlhome, text_t &gsdlcollect);
62 virtual ~oaiconfig();
63 virtual void configure(const text_t &key, const text_tarray &cfgline);
64 text_tarray & getCollectionsList() { return this->collectList; }
65 // get a list of all collections - those part of a super coll and those individual ones
66 text_tarray & getAllCollectionsList() {return this->allCollectList; }
67 text_tarray & getSuperCollectionsList() { return this->superCollectList; }
68 // get the list of collections for this super coll
69 text_tarray & getSuperCollectionCollections(const text_t super_coll) {
70 return this->superCollectMap[super_coll]->collectionList;
71 }
72 // is this collection valid
73 bool isValidCollection(const text_t &collection);
74 // what super collections is this collection part of?
75 text_tarray getSuperCollectionsForThisCollection(const text_t &collection);
76 text_tset & getMetadataSet() { return this->metadataSet; }
77 text_t getMapping(const text_t &collection, const text_t &collectfield);
78 text_t getMapping(const text_t &collection, const text_t &collectfield, const text_t &format);
79 text_tmap * getInformation() { return &this->infoMap; }
80 text_t getSetName(const text_t &setSpec);
81 text_t getSetDescription(const text_t &setSpec);
82 int getOAIVersion();
83 int resumeAfter();
84 text_t getBaseURL();
85 text_t getBaseLibraryURL();
86 text_t getBaseDocRoot();
87 text_t getRelativeBaseDocRoot();
88 text_t getRepositoryName();
89 text_t getRepositoryId();
90 text_t getRepositoryIdVersion();
91 text_t getMaintainer();
92 private:
93 bool configureCollection(const text_t &gsdlhome, const text_t &collection);
94 void addToAllCollectionsList(const text_t coll_name);
95 text_t generateBaseServerURL();
96 text_t repositoryName; // human readable name
97 text_t repositoryId; // unique (among oai servers) domain name or id for the repository
98 text_t repositoryIdVersion; // 1.1 or 2.0 for identifier scheme
99 text_t baseServerURL; // URL of web server
100 text_t oaiserverPath; // relative path for oaiserver
101 text_t libraryPath; //relative path for library.cgi (used for urls to greenstone documents )
102 text_t docRootPath; // relative path for gsdl directory (used for urls to source documents and oai xsl )
103 text_t oaiVersion; // The version of OAI running
104 int resumptionSize; // The number of items to produce before spitting out a resumptionToken
105 text_t maintainer;
106
107 text_tarray collectList; // The list of collections to be taken in hand
108 text_tset metadataSet; // The list of metadata sets to be supported
109 text_tmap infoMap; // Holds the information to be given in the case
110 // of an OAI identify request
111 oaicollectmap collectMap; // The configuration of collections
112 text_t collection; // Used to track which collection is being configured
113 text_tarray superCollectList; //a list of super collections. may be empty
114 oaisupercollectmap superCollectMap; // The configuration of the super collections
115 text_tarray allCollectList; //a list of all collections, includes those in collectList and those that are part of a super collection and not in collectList
116};
117#endif
118
119
Note: See TracBrowser for help on using the repository browser.