Changeset 3567
- Timestamp:
- 2002-11-26T13:54:23+13:00 (21 years ago)
- Location:
- trunk/gsdl3/src/java/org/greenstone/gsdl3/service
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GSDL2ClassifierServices.java
r3512 r3567 47 47 } 48 48 49 /** creates a display element containing all the text strings needed to display the service page, in the language specified */ 50 protected Element createServiceDisplay(String service, String lang) { 51 Element display = doc_.createElement(GSXML.DISPLAY_ELEM); 52 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_NAME_ELEM, getTextString(service+".name", lang))); 53 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_SUBMIT_ELEM, getTextString(service+".submit", lang))); 54 55 Element param; 56 57 return display; 58 59 } 60 49 61 /** processes the request */ 50 62 protected Element processService(String name, Element request) { -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/MGGDBMServices.java
r3512 r3567 40 40 private static final String METADATA_RETRIEVE_SERVICE = "MetadataRetrieve"; 41 41 42 43 /** creates a display element containing all the text strings needed to display the service page, in the language specified */ 44 protected Element createServiceDisplay(String service, String lang) { 45 Element display = doc_.createElement(GSXML.DISPLAY_ELEM); 46 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_NAME_ELEM, getTextString(service+".name", lang))); 47 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_SUBMIT_ELEM, getTextString(service+".submit", lang))); 48 49 Element param; 50 51 return display; 52 53 } 54 42 55 /** passes the request Element to the appropriate service function*/ 43 56 protected Element processService(String name, Element request) { -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/MGPPGDBMServices.java
r3512 r3567 34 34 import java.util.Map; 35 35 import java.util.Iterator; 36 import java.util.Locale; 36 37 /** 37 38 * A ServicesImpl class for MGPP+GDBM … … 46 47 extends ServicesImpl { 47 48 49 // these strings must match what is found in the properties file 48 50 // the services on offer 49 51 private static final String TEXT_QUERY_SERVICE = "TextQuery"; … … 52 54 private static final String METADATA_RETRIEVE_SERVICE = "MetadataRetrieve"; 53 55 56 // params used 57 private static final String CASE_PARAM = "case"; 58 private static final String STEM_PARAM = "stem"; 59 private static final String MATCH_PARAM = "matchMode"; 60 private static final String MATCH_PARAM_ALL = "all"; 61 private static final String MATCH_PARAM_SOME = "some"; 62 private static final String INDEX_PARAM = "index"; 63 private static final String LEVEL_PARAM = "level"; 64 private static final String RANK_PARAM = "sortBy"; 65 private static final String RANK_PARAM_RANK = "rank"; 66 private static final String RANK_PARAM_NONE = "natural"; 67 private static final String MAXDOCS_PARAM = "maxDocs"; 68 private static final String BOOLEAN_PARAM_ON = "1"; 69 private static final String BOOLEAN_PARAM_OFF = "0"; 70 71 // elements used in the config file that are specific to this class 72 private static final String DEFAULT_INDEX_ELEM = "defaultIndex"; 73 private static final String DEFAULT_LEVEL_ELEM = "defaultLevel"; 74 private static final String INDEX_ELEM = "index"; 75 private static final String LEVEL_ELEM = "level"; 76 77 54 78 private MGPPWrapper mgpp_src_=null; 55 79 private GDBMWrapper gdbm_src_=null; … … 58 82 private String default_level_=null; 59 83 84 private Element config_info_ = null; 60 85 public MGPPGDBMServices() { 61 86 mgpp_src_ = new MGPPWrapper(); … … 64 89 } 65 90 66 67 91 /** configure this service */ 68 92 public boolean configure(Element info) { 69 93 70 94 System.out.println("configuring MGPPGDBMServices"); 71 95 config_info_ = info; 96 // get the general info first 72 97 // get the default index from <defaultIndex> 73 Element def = (Element)GSXML.getChildByTagName(info, "defaultIndex");98 Element def = (Element)GSXML.getChildByTagName(info, DEFAULT_INDEX_ELEM ); 74 99 if (def !=null) { 75 100 default_index_ = def.getAttribute(GSXML.NAME_ATT); … … 80 105 } 81 106 82 System.out.println("default index="+default_index_);83 84 107 // get the default level out of <defaultLevel> 85 def = (Element)GSXML.getChildByTagName(info, "defaultLevel");108 def = (Element)GSXML.getChildByTagName(info, DEFAULT_LEVEL_ELEM); 86 109 if (def !=null) { 87 110 default_level_ = def.getAttribute(GSXML.NAME_ATT); … … 93 116 // the default level is also the level which gdbm is expecting 94 117 mgpp_src_.setReturnLevel(default_level_); 95 System.out.println("default level="+default_level_);96 118 97 119 // set up which services are available for this collection … … 126 148 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 127 149 e.setAttribute(GSXML.NAME_ATT, TEXT_QUERY_SERVICE); 128 Element paramList = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 150 Element param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 151 createTextQueryParamList(param_list, false, null); 152 e.appendChild(param_list); 153 service_info_map_.put(TEXT_QUERY_SERVICE, e); 154 155 156 e = doc_.createElement(GSXML.SERVICE_ELEM); 157 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 158 e.setAttribute(GSXML.NAME_ATT, FIELD_QUERY_SERVICE); 159 service_info_map_.put(FIELD_QUERY_SERVICE, e); 160 161 e = doc_.createElement(GSXML.SERVICE_ELEM); 162 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 163 e.setAttribute(GSXML.NAME_ATT, RESOURCE_RETRIEVE_SERVICE); 164 service_info_map_.put(RESOURCE_RETRIEVE_SERVICE, e); 165 166 e = doc_.createElement(GSXML.SERVICE_ELEM); 167 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 168 e.setAttribute(GSXML.NAME_ATT, METADATA_RETRIEVE_SERVICE); 169 service_info_map_.put(METADATA_RETRIEVE_SERVICE, e); 170 171 if (gdbm_src_.openDatabase(GSFile.GDBMDatabaseFile(site_home_, cluster_name_), GDBMWrapper.READER)) { 172 return true; 173 } 174 else { 175 System.err.println("couldn't open gdbm database!"); 176 return false; 177 } 178 } 179 180 /** this creates all teh params and appends them to param_list. 181 * if display=true it creates the text strings version 182 * otherwise it creates the description version 183 */ 184 protected boolean createTextQueryParamList(Element param_list, boolean display, String lang) { 129 185 Element param; 186 130 187 // first do index and level params 131 188 132 189 // the index info - read from config file 133 Element index_list = (Element)GSXML.getChildByTagName( info, "indexList");134 NodeList indexes = index_list.getElementsByTagName( "index");190 Element index_list = (Element)GSXML.getChildByTagName(config_info_, INDEX_ELEM+GSXML.LIST_MODIFIER); 191 NodeList indexes = index_list.getElementsByTagName(INDEX_ELEM); 135 192 int len = indexes.getLength(); 136 193 if (len > 1) { … … 140 197 inds[i] = ((Element)indexes.item(i)).getAttribute(GSXML.NAME_ATT); 141 198 } 142 param = GSXML.createParameter(doc_, "index", GSXML.PARAM_TYPE_ENUM, default_index_, inds); 143 paramList.appendChild(param); 199 if (display) { 200 // use the same index names for now - should get these out of the config info 201 param = GSXML.createParameterDisplay(doc_, INDEX_PARAM, getTextString("param."+INDEX_PARAM, lang), inds, inds); 202 } else { 203 param = GSXML.createParameter(doc_, INDEX_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, default_index_, inds); 204 } 205 param_list.appendChild(param); 144 206 } // else dont need to add it 145 207 146 208 // the level info - read from config file 147 Element level_list = (Element)GSXML.getChildByTagName( info, "levelList");148 NodeList levels = level_list.getElementsByTagName( "level");209 Element level_list = (Element)GSXML.getChildByTagName(config_info_, LEVEL_ELEM+GSXML.LIST_MODIFIER); 210 NodeList levels = level_list.getElementsByTagName(LEVEL_ELEM); 149 211 len = levels.getLength(); 150 212 if (len > 1) { … … 154 216 levs[i] = ((Element)levels.item(i)).getAttribute(GSXML.NAME_ATT); 155 217 } 156 param = GSXML.createParameter(doc_, "queryLevel", GSXML.PARAM_TYPE_ENUM, default_level_, levs); 157 paramList.appendChild(param); 218 if (display) { 219 param = GSXML.createParameterDisplay(doc_, LEVEL_PARAM, getTextString("param."+LEVEL_PARAM, lang), levs, levs); 220 } else { 221 param = GSXML.createParameter(doc_, LEVEL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, default_level_, levs); 222 } 223 param_list.appendChild(param); 158 224 } // else dont need to add it 159 225 160 226 // boolean params 161 param = GSXML.createParameter(doc_, "case", GSXML.PARAM_TYPE_BOOLEAN, "1", null); 162 paramList.appendChild(param); 163 param = GSXML.createParameter(doc_, "stem", GSXML.PARAM_TYPE_BOOLEAN, "1", null); 164 paramList.appendChild(param); 227 if (display) { 228 String[] bool_ops = {"0", "1"}; 229 String[] bool_texts = {getTextString("param.boolean.off", lang),getTextString("param.boolean.on", lang)}; 230 param = GSXML.createParameterDisplay(doc_, CASE_PARAM, getTextString("param."+CASE_PARAM, lang), bool_ops, bool_texts); 231 param_list.appendChild(param); 232 param = GSXML.createParameterDisplay(doc_, STEM_PARAM, getTextString("param."+STEM_PARAM, lang), bool_ops, bool_texts); 233 param_list.appendChild(param); 234 235 } else { 236 param = GSXML.createParameter(doc_, CASE_PARAM, GSXML.PARAM_TYPE_BOOLEAN, BOOLEAN_PARAM_ON, null); 237 param_list.appendChild(param); 238 param = GSXML.createParameter(doc_, STEM_PARAM, GSXML.PARAM_TYPE_BOOLEAN, BOOLEAN_PARAM_ON, null); 239 param_list.appendChild(param); 240 } 241 165 242 // enum params 166 String []vals = {"all", "some"}; 167 param = GSXML.createParameter(doc_, "matchMode", GSXML.PARAM_TYPE_ENUM, "all", vals); 168 paramList.appendChild(param); 169 String [] vals1 = {"rank", "natural"}; 170 param = GSXML.createParameter(doc_, "sortBy", GSXML.PARAM_TYPE_ENUM, "rank", vals1 ); 171 paramList.appendChild(param); 243 String []vals = {MATCH_PARAM_ALL, MATCH_PARAM_SOME}; 244 if (display) { 245 String []val_texts = {getTextString("param."+MATCH_PARAM+"."+MATCH_PARAM_ALL, lang),getTextString("param."+MATCH_PARAM+"."+MATCH_PARAM_SOME, lang)}; 246 247 param = GSXML.createParameterDisplay(doc_, MATCH_PARAM, getTextString("param."+MATCH_PARAM, lang), vals, val_texts); 248 } else { 249 param = GSXML.createParameter(doc_, MATCH_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, MATCH_PARAM_ALL, vals); 250 } 251 param_list.appendChild(param); 252 String [] vals1 = {RANK_PARAM_RANK, RANK_PARAM_NONE }; 253 if (display) { 254 String [] vals1_texts = { getTextString("param."+RANK_PARAM+"."+RANK_PARAM_RANK, lang), 255 getTextString("param."+RANK_PARAM+"."+RANK_PARAM_NONE, lang)}; 256 257 param = GSXML.createParameterDisplay(doc_, RANK_PARAM, getTextString("param."+RANK_PARAM, lang), vals1, vals1_texts); 258 } else { 259 param = GSXML.createParameter(doc_, RANK_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, RANK_PARAM_RANK, vals1 ); 260 } 261 param_list.appendChild(param); 172 262 173 263 // Integer params 174 param = GSXML.createParameter(doc_, "maxDocs", GSXML.PARAM_TYPE_INTEGER, "10", null); 175 paramList.appendChild(param); 176 177 178 e.appendChild(paramList); 179 180 service_info_map_.put(TEXT_QUERY_SERVICE, e); 181 182 183 e = doc_.createElement(GSXML.SERVICE_ELEM); 184 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 185 e.setAttribute(GSXML.NAME_ATT, FIELD_QUERY_SERVICE); 186 service_info_map_.put(FIELD_QUERY_SERVICE, e); 187 188 e = doc_.createElement(GSXML.SERVICE_ELEM); 189 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 190 e.setAttribute(GSXML.NAME_ATT, RESOURCE_RETRIEVE_SERVICE); 191 service_info_map_.put(RESOURCE_RETRIEVE_SERVICE, e); 192 193 e = doc_.createElement(GSXML.SERVICE_ELEM); 194 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 195 e.setAttribute(GSXML.NAME_ATT, METADATA_RETRIEVE_SERVICE); 196 service_info_map_.put(METADATA_RETRIEVE_SERVICE, e); 197 198 if (gdbm_src_.openDatabase(GSFile.GDBMDatabaseFile(site_home_, cluster_name_), GDBMWrapper.READER)) { 199 return true; 200 } 201 else { 202 System.err.println("couldn't open gdbm database!"); 203 return false; 204 } 205 } 206 264 if (display) { 265 param = GSXML.createParameterDisplay(doc_, MAXDOCS_PARAM, getTextString("param."+MAXDOCS_PARAM, lang), null, null); 266 } else { 267 param = GSXML.createParameter(doc_, MAXDOCS_PARAM, GSXML.PARAM_TYPE_INTEGER, "10", null); 268 } 269 param_list.appendChild(param); 270 return true; 271 } 272 273 /** creates a display element containing all the text strings needed to display the service page, in the language specified */ 274 protected Element createServiceDisplay(String service, String lang) { 275 Element display = doc_.createElement(GSXML.DISPLAY_ELEM); 276 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_NAME_ELEM, getTextString(service+".name", lang))); 277 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_SUBMIT_ELEM, getTextString(service+".submit", lang))); 278 279 // now need to add in the params 280 if (service.equals(TEXT_QUERY_SERVICE)) { 281 282 createTextQueryParamList(display, true, lang); 283 } 284 return display; 285 286 } 287 288 207 289 208 290 /** passes the request Element to the appropriate service function*/ … … 261 343 262 344 HashMap params = GSXML.extractParams(param_elem); 263 String index = (String)params.get( "index");345 String index = (String)params.get(INDEX_PARAM); 264 346 if (index==null) { // if its not present, use the default index 265 347 index=default_index_; … … 359 441 if (resource_type.equals("core")) { 360 442 // get docs from mgpp, and possibly associated files too 361 String level = (String)params.get( "level"); // level at which to443 String level = (String)params.get(LEVEL_PARAM); // level at which to 362 444 // retrieve a doc 363 445 if (level==null) { … … 448 530 protected boolean setQueryParams(HashMap params) { 449 531 532 // set the default ones 533 mgpp_src_.setReturnTerms(true); 450 534 Set entries = params.entrySet(); 451 535 Iterator i = entries.iterator(); … … 455 539 String value = (String)m.getValue(); 456 540 457 if (name.equals( "case")) {458 boolean val = (value.equals( "1")?true:false);541 if (name.equals(CASE_PARAM)) { 542 boolean val = (value.equals(BOOLEAN_PARAM_ON)?true:false); 459 543 mgpp_src_.setCase(val); 460 } else if (name.equals( "stem")) {461 boolean val = (value.equals( "1")?true:false);544 } else if (name.equals(STEM_PARAM)) { 545 boolean val = (value.equals(BOOLEAN_PARAM_ON)?true:false); 462 546 mgpp_src_.setStem(val); 463 } else if (name.equals( "maxDocs")) {547 } else if (name.equals(MAXDOCS_PARAM)) { 464 548 int docs = Integer.parseInt(value); 465 549 mgpp_src_.setMaxDocs(docs); 466 } else if (name.equals( "queryLevel")) {550 } else if (name.equals(LEVEL_PARAM)) { 467 551 mgpp_src_.setQueryLevel(value); 468 } else if (name.equals("resultLevel")) { 469 mgpp_src_.setReturnLevel(value); 470 } else if (name.equals("matchMode")) { 552 } else if (name.equals(MATCH_PARAM)) { 471 553 int mode; 472 if (value.equals( "all")) mode=1;554 if (value.equals(MATCH_PARAM_ALL)) mode=1; 473 555 else mode=0; 474 556 mgpp_src_.setMatchMode(mode); 475 } else if (name.equals( "sortBy")) {476 if (value.equals( "rank")) {557 } else if (name.equals(RANK_PARAM)) { 558 if (value.equals(RANK_PARAM_RANK)) { 477 559 mgpp_src_.setSortByRank(true); 478 } else if (value.equals( "natural")) {560 } else if (value.equals(RANK_PARAM_NONE)) { 479 561 mgpp_src_.setSortByRank(false); 480 562 } 481 } else if (name.equals("termInfo")) {482 boolean val = (value.equals("1")?true:false);483 mgpp_src_.setReturnTerms(val);484 563 } // ignore any others 485 564 } -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/PerlBuildServices.java
r3513 r3567 31 31 import java.util.ArrayList; 32 32 import java.io.File; 33 import java.util.Locale; 33 34 34 35 /** … … 50 51 private static final String RELOAD_SERVICE = "ReloadCollection"; 51 52 52 /** need to overwrite processDescribe because the params are dynamic */ 53 protected Element processDescribe(Element request) { 54 55 Element response = doc_.createElement(GSXML.RESPONSE_ELEM); 56 response.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_DESCRIBE); 57 58 String info = request.getAttribute(GSXML.INFO_ATT); 59 String to = GSPath.getFirstLink(request.getAttribute(GSXML.TO_ATT)); 60 61 if (to.equals("")) { // to="", look at info 62 if (info.equals(GSXML.SERVICE_ELEM+GSXML.LIST_MODIFIER)) { 63 response.appendChild(short_service_info_); 64 return response; 65 } 66 // else error in info field 67 System.err.println("ServicesImpl describe request: error in 'info' field, info='"+info+"'."); 68 return null; 69 } 70 71 // describe a particular service 72 73 if (service_info_map_.containsKey(to)) { 74 Element descript = (Element)service_info_map_.get(to); 75 // need to add in collection param list 76 if (!to.equals(NEW_SERVICE)) { 77 Element param_list = (Element) GSXML.getChildByTagName(descript, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 78 Element old_param = GSXML.getNamedElement(param_list, GSXML.PARAM_ELEM, GSXML.NAME_ATT, "collection"); 79 String[] colls = getCollectionList(); 80 Element param = GSXML.createParameter(doc_, "collection", GSXML.PARAM_TYPE_ENUM, null, colls); 53 // params used 54 private static final String COL_PARAM = "collection"; 55 private static final String NEW_COL_NAME_PARAM = "collectionName"; 56 private static final String CREATOR_PARAM = "creator"; 57 58 // the list of the collections - store between some method calls 59 private String[] collection_list_ = null; 60 61 /** returns the service list for the subclass */ 62 protected Element getServiceList(String lang) { 63 // for now, it is static and there is no lang stuff 64 return short_service_info_; 65 } 66 67 /** returns a specific service description */ 68 protected Element getServiceDescription(String service, String lang) { 69 Element descript = (Element)service_info_map_.get(service); 70 // need to add in collection param list 71 if (!service.equals(NEW_SERVICE)) { 72 Element param_list = (Element) GSXML.getChildByTagName(descript, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 73 Element old_param = GSXML.getNamedElement(param_list, GSXML.PARAM_ELEM, GSXML.NAME_ATT, COL_PARAM); 74 collection_list_ = getCollectionList(); 75 Element param = GSXML.createParameter(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, null, collection_list_); 81 76 // put at front of the list 82 param_list.replaceChild(param, old_param); 83 } 84 response.appendChild(descript); 85 return response; 86 } 87 // else error in to field 88 System.err.println("ServicesImpl describe request: error in 'to' field, to='"+to+"'."); 89 return null; 90 91 } 77 param_list.replaceChild(param, old_param); 78 } 79 // for now, create it on the fly - look at caching it later 80 Element display = createServiceDisplay(service, lang); 81 addServiceDisplay(descript, display); 82 return descript; 83 84 } 85 86 /** creates a display element containing all the text strings needed to display the service page, in the language specified */ 87 protected Element createServiceDisplay(String service, String lang) { 88 Element display = doc_.createElement(GSXML.DISPLAY_ELEM); 89 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_NAME_ELEM, getTextString(service+".name", lang))); 90 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_SUBMIT_ELEM, getTextString(service+".submit", lang))); 91 92 Element param; 93 if (service.equals(NEW_SERVICE)) { 94 // have the coll name and creator params 95 param = GSXML.createParameterDisplay(doc_, NEW_COL_NAME_PARAM, getTextString("param."+NEW_COL_NAME_PARAM, lang), null, null); 96 display.appendChild(param); 97 param = GSXML.createParameterDisplay(doc_, CREATOR_PARAM, getTextString("param."+CREATOR_PARAM, lang), null, null); 98 display.appendChild(param); 99 } else { 100 // have just the coll param 101 //use the colleciton list already created - this method is only called directly after getServiceDescription() 102 param = GSXML.createParameterDisplay(doc_, COL_PARAM, getTextString("param."+COL_PARAM, lang), collection_list_, collection_list_); 103 display.appendChild(param); 104 } 105 106 return display; 107 108 } 109 92 110 /** passes the request Element to the appropriate service function*/ 93 111 protected Element processService(String name, Element request) { 94 112 95 //if (name.equals(NEW_SERVICE)) { 96 // return newCollection(request); 97 //} 98 113 String language = request.getAttribute(GSXML.LANG_ATT); 99 114 // extract the collection out of here 100 115 Element param_list = (Element)GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 101 116 HashMap params = GSXML.extractParams(param_list); 102 String coll_name = (String)params.get( "collection");117 String coll_name = (String)params.get(COL_PARAM); 103 118 104 119 Element response = doc_.createElement(GSXML.RESPONSE_ELEM); … … 106 121 Element status=null; 107 122 if (name.equals(NEW_SERVICE)) { 108 status = newCollection(coll_name );123 status = newCollection(coll_name, language); 109 124 } else if (name.equals(IMPORT_SERVICE)) { 110 status = importCollection(coll_name );125 status = importCollection(coll_name, language); 111 126 } else if (name.equals(BUILD_SERVICE)) { 112 status = buildCollection(coll_name );127 status = buildCollection(coll_name, language); 113 128 } else if (name.equals(ACTIVATE_SERVICE)) { 114 status = activateCollection(coll_name );129 status = activateCollection(coll_name, language); 115 130 } else if (name.equals(DELETE_SERVICE)) { 116 status = deleteCollection(coll_name );131 status = deleteCollection(coll_name, language); 117 132 } else if (name.equals(RELOAD_SERVICE)) { 118 status = reloadCollection(coll_name );133 status = reloadCollection(coll_name, language); 119 134 } 120 135 … … 179 194 Element param_list; 180 195 Element param; 196 197 String lang = Locale.US.toString(); 198 181 199 // should have full details about each service incl params lists etc. 182 183 200 e = doc_.createElement(GSXML.SERVICE_ELEM); 184 201 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_BUILD); 185 202 e.setAttribute(GSXML.NAME_ATT, NEW_SERVICE); 186 203 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 187 param = GSXML.createParameter(doc_, "collectionName", GSXML.PARAM_TYPE_INPUT, "", null);188 param_list.appendChild(param); 189 param = GSXML.createParameter(doc_, "creator", GSXML.PARAM_TYPE_INPUT, "", null);204 param = GSXML.createParameter(doc_, NEW_COL_NAME_PARAM, GSXML.PARAM_TYPE_STRING, "", null); 205 param_list.appendChild(param); 206 param = GSXML.createParameter(doc_, CREATOR_PARAM, GSXML.PARAM_TYPE_STRING, "", null); 190 207 param_list.appendChild(param); 191 208 e.appendChild(param_list); … … 196 213 e.setAttribute(GSXML.NAME_ATT, IMPORT_SERVICE); 197 214 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 198 param = GSXML.createParameter(doc_, "collection", GSXML.PARAM_TYPE_ENUM, "", null);215 param = GSXML.createParameter(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, "", null); 199 216 param_list.appendChild(param); 200 217 e.appendChild(param_list); … … 205 222 e.setAttribute(GSXML.NAME_ATT, BUILD_SERVICE); 206 223 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 207 param = GSXML.createParameter(doc_, "collection", GSXML.PARAM_TYPE_ENUM, "", null);224 param = GSXML.createParameter(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, "", null); 208 225 param_list.appendChild(param); 209 226 e.appendChild(param_list); … … 214 231 e.setAttribute(GSXML.NAME_ATT, ACTIVATE_SERVICE); 215 232 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 216 param = GSXML.createParameter(doc_, "collection", GSXML.PARAM_TYPE_ENUM, "", null);233 param = GSXML.createParameter(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, "", null); 217 234 param_list.appendChild(param); 218 235 e.appendChild(param_list); … … 223 240 e.setAttribute(GSXML.NAME_ATT, DELETE_SERVICE); 224 241 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 225 param = GSXML.createParameter(doc_, "collection", GSXML.PARAM_TYPE_ENUM, "", null);242 param = GSXML.createParameter(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, "", null); 226 243 param_list.appendChild(param); 227 244 e.appendChild(param_list); … … 232 249 e.setAttribute(GSXML.NAME_ATT, RELOAD_SERVICE); 233 250 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 234 param = GSXML.createParameter(doc_, "collection", GSXML.PARAM_TYPE_ENUM, "", null);251 param = GSXML.createParameter(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, "", null); 235 252 param_list.appendChild(param); 236 253 e.appendChild(param_list); … … 242 259 243 260 /** creates a new collection using mkcol.pl */ 244 protected Element newCollection(String coll_name ) {261 protected Element newCollection(String coll_name, String lang) { 245 262 Element status = doc_.createElement(GSXML.STATUS_ELEM); 246 263 Text t = doc_.createTextNode("trying to create new coll:"+coll_name); … … 250 267 251 268 /** imports a collection using import.pl */ 252 protected Element importCollection(String coll_name ) {269 protected Element importCollection(String coll_name, String lang) { 253 270 Element status = doc_.createElement(GSXML.STATUS_ELEM); 254 271 Text t = doc_.createTextNode("trying to import coll:"+coll_name); … … 257 274 } 258 275 /** builds a collection using buildcol.pl */ 259 protected Element buildCollection(String coll_name ) {276 protected Element buildCollection(String coll_name, String lang) { 260 277 Element status = doc_.createElement(GSXML.STATUS_ELEM); 261 278 Text t = doc_.createTextNode("trying to build coll:"+coll_name); … … 263 280 return status; 264 281 } 265 protected Element reloadCollection(String coll_name ) {282 protected Element reloadCollection(String coll_name, String lang) { 266 283 Element status = doc_.createElement(GSXML.STATUS_ELEM); 267 284 … … 277 294 request.appendChild(command); 278 295 Element response = router_.process(message); // at the moment, get no info in response so ignore it 296 297 String[] args={coll_name}; 298 279 299 if (response == null) { 280 Text t = doc_.createTextNode( "couldn't activate "+coll_name+" in the messagerouter");300 Text t = doc_.createTextNode(getTextString("reload.activate_error", args , lang)); 281 301 status.appendChild(t); 282 302 return status; 283 303 } 284 304 // if we got here, we have succeeded! 285 Text t = doc_.createTextNode( "collection "+coll_name+ " activated!");305 Text t = doc_.createTextNode(getTextString("reload.success", args, lang)); 286 306 status.appendChild(t); 287 307 return status; … … 291 311 * also instructs the MR to activate this new/modified collection 292 312 * fails if no valid building directory */ 293 protected Element activateCollection(String coll_name ) {313 protected Element activateCollection(String coll_name, String lang) { 294 314 // the return element 295 315 Element status = doc_.createElement(GSXML.STATUS_ELEM); 316 String[] args={coll_name}; 296 317 297 318 // check that we have buildcfg.xml in the building directory 298 319 File coll_build_dir = new File(GSFile.collectionBuildDir(site_home_, coll_name)); 299 320 if (!coll_build_dir.exists()) { 300 Text t = doc_.createTextNode( "collection:"+coll_name+" has no building directory");321 Text t = doc_.createTextNode(getTextString("activate.build_dir_error", args, lang)); 301 322 status.appendChild(t); 302 323 return status; … … 304 325 File coll_build_file = new File(GSFile.collectionBuildConfigFileBuilding(site_home_, coll_name)); 305 326 if (!coll_build_file.exists()) { 306 Text t = doc_.createTextNode( "collection:"+coll_name+" has no build config file");327 Text t = doc_.createTextNode(getTextString("activate.build_config_error", args, lang)); 307 328 status.appendChild(t); 308 329 return status; … … 314 335 // remove it 315 336 if (!GSFile.deleteFile(coll_index_dir)) { 316 Text t = doc_.createTextNode( "couldn't remove old index dir");337 Text t = doc_.createTextNode(getTextString("activate.rm_index_error", args, lang)); 317 338 status.appendChild(t); 318 339 return status; … … 322 343 // copy building to index 323 344 if (!GSFile.moveDirectory(coll_build_dir, coll_index_dir)) { 324 Text t = doc_.createTextNode( "couldn't copy building to index");345 Text t = doc_.createTextNode(getTextString("activate.rename_building_error", args, lang)); 325 346 status.appendChild(t); 326 347 return status; … … 328 349 329 350 // now have to tell the message router 330 return reloadCollection(coll_name );351 return reloadCollection(coll_name, lang); 331 352 332 353 } 333 354 /** deletes a collection - removes the whole directory 334 355 * also instructs the MR to deactivate this collection*/ 335 protected Element deleteCollection(String coll_name) { 336 Element status = doc_.createElement(GSXML.STATUS_ELEM); 337 356 protected Element deleteCollection(String coll_name, String lang) { 357 Element status = doc_.createElement(GSXML.STATUS_ELEM); 358 359 String[] args={coll_name}; 338 360 File coll_dir = new File(GSFile.collectionBaseDir(site_home_, coll_name)); 339 361 if (coll_dir.exists()) { 340 362 if (!GSFile.deleteFile(coll_dir)) { 341 Text t = doc_.createTextNode( "couldn't delete coll:"+coll_name);363 Text t = doc_.createTextNode(getTextString("delete.delete_error", args, lang)); 342 364 status.appendChild(t); 343 365 return status; … … 358 380 Element response = router_.process(message); // at the moment, get no info in response so ignore it 359 381 if (response == null) { 360 Text t = doc_.createTextNode( "couldn't deactivate "+coll_name+" in the messagerouter");382 Text t = doc_.createTextNode(getTextString("delete.deactivate_error", args, lang)); 361 383 status.appendChild(t); 362 384 return status; … … 365 387 // success 366 388 367 Text t = doc_.createTextNode( "coll:"+coll_name+" deleted");389 Text t = doc_.createTextNode(getTextString("delete.success", args, lang)); 368 390 status.appendChild(t); 369 391 return status; … … 402 424 403 425 } 426 427 404 428 } -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/PhindServices.java
r3512 r3567 92 92 } 93 93 94 /** creates a display element containing all the text strings needed to display the service page, in the language specified */ 95 protected Element createServiceDisplay(String service, String lang) { 96 Element display = doc_.createElement(GSXML.DISPLAY_ELEM); 97 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_NAME_ELEM, getTextString(service+".name", lang))); 98 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_SUBMIT_ELEM, getTextString(service+".submit", lang))); 99 100 Element param; 101 102 return display; 103 104 } 105 94 106 protected Element processService(String name, Element request) { 95 107 -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/ServicesImpl.java
r3512 r3567 38 38 import java.util.HashMap; 39 39 40 import java.util.ResourceBundle; 41 import java.util.Locale; 42 40 43 /** 41 44 * ServicesImpl - abstract base class … … 159 162 160 163 } else { 161 162 String to = GSPath.getFirstLink(request.getAttribute(GSXML.TO_ATT));163 164 164 // other type of request, must be processed by the subclass - 165 165 // send to the service method 166 167 String to = GSPath.getFirstLink(request.getAttribute(GSXML.TO_ATT)); 166 168 if (service_info_map_.containsKey(to)) { 167 169 Element response = processService(to, request); … … 176 178 } 177 179 } // for each request 178 System.out.println("servicesImpl returning result");179 System.out.println(converter_.getString(mainResult));180 180 181 181 return mainResult; 182 183 184 } 185 186 /** process method for describe requests - is implemented here for services 187 * whose descriptions are static - those services whose params may change dynamically should overwrite this method 182 183 } 184 185 /** process method for describe requests 188 186 */ 189 187 protected Element processDescribe(Element request) { … … 192 190 response.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_DESCRIBE); 193 191 192 String lang = request.getAttribute(GSXML.LANG_ATT); 194 193 String info = request.getAttribute(GSXML.INFO_ATT); 195 194 String to = GSPath.getFirstLink(request.getAttribute(GSXML.TO_ATT)); … … 197 196 if (to.equals("")) { // to="", look at info 198 197 if (info.equals(GSXML.SERVICE_ELEM+GSXML.LIST_MODIFIER)) { 199 response.appendChild(short_service_info_); 198 //response.appendChild(short_service_info_); 199 response.appendChild(getServiceList(lang)); 200 200 return response; 201 201 } … … 208 208 209 209 if (service_info_map_.containsKey(to)) { 210 response.appendChild( (Element)service_info_map_.get(to));210 response.appendChild(getServiceDescription(to, lang));//(Element)service_info_map_.get(to)); 211 211 return response; 212 212 } … … 224 224 abstract protected Element processService(String service, Element request); 225 225 226 226 // the following two should be overwritten for info with any language stuff in it 227 /** returns the service list for the subclass */ 228 protected Element getServiceList(String lang) { 229 // for now, it is static and there is no lang stuff 230 return short_service_info_; 231 } 232 233 /** returns a specific service description */ 234 protected Element getServiceDescription(String service, String lang) { 235 Element descript = (Element)((Element)service_info_map_.get(service)).cloneNode(true); 236 // for now, create it on the fly - look at caching it later 237 Element display = createServiceDisplay(service, lang); 238 addServiceDisplay(descript, display); 239 return descript; 240 } 241 242 /** adds the display element into the description - appends to the root for now, but may do something fancy later */ 243 protected boolean addServiceDisplay(Element descript, Element display) { 244 if (descript.getOwnerDocument() != display.getOwnerDocument()) { 245 display = (Element)descript.getOwnerDocument().importNode(display, true); 246 } 247 descript.appendChild(display); 248 return true; 249 } 250 /** creates a display element containing all the text strings needed to display the service page, in the language specified */ 251 abstract protected Element createServiceDisplay(String service, String lang); 252 /** overloaded version for no args case */ 253 protected String getTextString(String key, String lang) { 254 return getTextString(key, null, lang); 255 } 256 /** getTextString - retrieves a language specific text string for the given 257 key and locale 258 */ 259 protected String getTextString(String key, String[] args, String lang) { 260 261 String class_name = getClass().getName(); 262 System.out.println("class name found="+class_name); 263 class_name = class_name.substring(class_name.lastIndexOf('.')+1); 264 System.out.println("class name altered="+class_name); 265 266 Dictionary dict = new Dictionary(class_name, lang); 267 String result = dict.get(key, args); 268 if (result == null) { // not found 269 return "_"+key+"_"; 270 } 271 return result; 272 } 227 273 }
Note:
See TracChangeset
for help on using the changeset viewer.