Changeset 3442
- Timestamp:
- 2002-10-04T13:20:11+12:00 (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/MGPPGDBMService.java
r3388 r3442 44 44 public class MGPPGDBMService 45 45 extends ServiceModule { 46 // not sure where this should go - maybe need a greenstone constants? 47 // or is it per collection, so should be specified in the buildcfg.xml? 48 public static final String DEFAULT_TEXT_LEVEL="Section"; 46 49 47 private MGPPWrapper mgpp_src_=null; 50 48 private GDBMWrapper gdbm_src_=null; 51 49 52 50 private String default_index_=null; 51 private String default_level_=null; 52 53 53 public MGPPGDBMService() { 54 54 mgpp_src_ = new MGPPWrapper(); … … 56 56 57 57 } 58 /** passes the request Element to the appropriate service function*/59 protected Element processService(String name, Element request) {60 61 // dont need to check that the service name is supported for this particular object, because that has been checked by ServiceModule62 if (name.equals("TextQuery")) {63 return processTextQuery(request);64 } else if(name.equals("FieldQuery")) {65 return processFieldQuery(request);66 } else if (name.equals("ResourceRetrieve")) {67 return processResourceRetrieve(request);68 } else if (name.equals("MetadataRetrieve")) {69 return processMetadataRetrieve(request);70 }71 72 System.err.println("MGPPGDBMService:should never get here. service type wrong:"+name);73 return null;74 75 76 }77 58 78 59 … … 81 62 82 63 System.out.println("configuring MGPPGDBMService"); 83 // get the default index out of metadata 84 NodeList metadata = info.getElementsByTagName("metadata");85 String name=null;86 for(int i=0; i<metadata.getLength(); i++) {87 Element e = (Element)metadata.item(i);88 name = e.getAttribute("name");89 if (name.equals("defaultIndex")) {90 default_index_ = GSXML.getValue(e);91 break;92 93 } 64 65 // get the default index from <defaultIndex> 66 Element def = (Element)GSXML.getChildByTagName(info, "defaultIndex"); 67 if (def !=null) { 68 default_index_ = def.getAttribute("name"); 69 } 70 if (default_index_==null||default_index_.equals("")) { 71 System.err.println("Error: default index not specified!"); 72 return false; 73 } 74 94 75 System.out.println("default index="+default_index_); 76 77 // get the default level out of <defaultLevel> 78 def = (Element)GSXML.getChildByTagName(info, "defaultLevel"); 79 if (def !=null) { 80 default_level_ = def.getAttribute("name"); 81 } 82 if (default_level_==null||default_level_.equals("")) { 83 System.err.println("Error: default level not specified!"); 84 return false; 85 } 86 // the default level is also the level which gdbm is expecting 87 mgpp_src_.setReturnLevel(default_level_); 88 System.out.println("default level="+default_level_); 89 90 // set up which services are available for this collection 95 91 Element e = null; 96 92 // these entries should reflect the build config file - some services may not be available depending on how the collection was built. 93 97 94 // set up short_service_info_ - for now just has name and type 98 95 e = doc_.createElement("service"); … … 123 120 e.setAttribute("name", "TextQuery"); 124 121 Element paramList = doc_.createElement("paramList"); 122 Element param; 123 // first do index and level params 124 125 // the index info - read from config file 126 Element index_list = (Element)GSXML.getChildByTagName(info, "indexList"); 127 NodeList indexes = index_list.getElementsByTagName("index"); 128 int len = indexes.getLength(); 129 if (len > 1) { 130 // add level param to list 131 String [] inds = new String[len]; 132 for (int i=0; i<len; i++) { 133 inds[i] = ((Element)indexes.item(i)).getAttribute("name"); 134 } 135 param = GSXML.createParameter(doc_, "index", GSXML.PARAM_TYPE_ENUM, default_index_, inds); 136 paramList.appendChild(param); 137 } // else dont need to add it 138 139 // the level info - read from config file 140 Element level_list = (Element)GSXML.getChildByTagName(info, "levelList"); 141 NodeList levels = level_list.getElementsByTagName("level"); 142 len = levels.getLength(); 143 if (len > 1) { 144 // add level param to list 145 String [] levs = new String[len]; 146 for (int i=0; i<len; i++) { 147 levs[i] = ((Element)levels.item(i)).getAttribute("name"); 148 } 149 param = GSXML.createParameter(doc_, "queryLevel", GSXML.PARAM_TYPE_ENUM, default_level_, levs); 150 paramList.appendChild(param); 151 } // else dont need to add it 152 125 153 // boolean params 126 Elementparam = GSXML.createParameter(doc_, "case", GSXML.PARAM_TYPE_BOOLEAN, "1", null);154 param = GSXML.createParameter(doc_, "case", GSXML.PARAM_TYPE_BOOLEAN, "1", null); 127 155 paramList.appendChild(param); 128 156 param = GSXML.createParameter(doc_, "stem", GSXML.PARAM_TYPE_BOOLEAN, "1", null); … … 135 163 param = GSXML.createParameter(doc_, "sortBy", GSXML.PARAM_TYPE_ENUM, "rank", vals1 ); 136 164 paramList.appendChild(param); 137 String [] vals2 = {"Document", "Section"}; 138 param = GSXML.createParameter(doc_, "queryLevel", GSXML.PARAM_TYPE_ENUM, "Section", vals2); 139 paramList.appendChild(param); 165 140 166 // Integer params 141 167 param = GSXML.createParameter(doc_, "maxDocs", GSXML.PARAM_TYPE_INTEGER, "10", null); … … 163 189 service_info_map_.put("MetadataRetrieve", e); 164 190 165 166 if (gdbm_src_.openDatabase(site_home_+"/collect/"+collection_name_+"/index/text/"+collection_name_+".ldb", GDBMWrapper.READER)) { 191 if (gdbm_src_.openDatabase(GSFile.GDBMDatabaseFile(site_home_, collection_name_), GDBMWrapper.READER)) { 167 192 return true; 168 193 } … … 173 198 } 174 199 200 201 /** passes the request Element to the appropriate service function*/ 202 protected Element processService(String name, Element request) { 203 204 // dont need to check that the service name is supported for this particular object, because that has been checked by ServiceModule 205 if (name.equals("TextQuery")) { 206 return processTextQuery(request); 207 } else if(name.equals("FieldQuery")) { 208 return processFieldQuery(request); 209 } else if (name.equals("ResourceRetrieve")) { 210 return processResourceRetrieve(request); 211 } else if (name.equals("MetadataRetrieve")) { 212 return processMetadataRetrieve(request); 213 } 214 215 System.err.println("MGPPGDBMService:should never get here. service type wrong:"+name); 216 return null; 217 218 219 } 175 220 176 221 /** process a text query */ … … 209 254 210 255 HashMap params = GSXML.extractParams(param_elem); 211 String index = (String)params.get(" Index");256 String index = (String)params.get("index"); 212 257 if (index==null) { // if its not present, use the default index 213 258 index=default_index_; … … 310 355 // retrieve a doc 311 356 if (level==null) { 312 level= DEFAULT_TEXT_LEVEL;357 level=default_level_; 313 358 } 314 359 // whether to just get the doc, or all assoc files too.
Note:
See TracChangeset
for help on using the changeset viewer.