Changeset 4903
- Timestamp:
- 2003-07-11T16:29:16+12:00 (21 years ago)
- Location:
- trunk/gsdl3/src/java/org/greenstone/gsdl3/service
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GATEServices.java
r4098 r4903 84 84 85 85 // set up short_service_info_ - for now just has name and type 86 Element tq_service = doc_.createElement(GSXML.SERVICE_ELEM); 87 tq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_ENRICH); 88 tq_service.setAttribute(GSXML.NAME_ATT, GATE_POS_TAG_SERVICE); 89 short_service_info_.appendChild(tq_service); 90 91 // set up service_info_map_ - for now, just has the same elements as above 92 // should have full details about each service incl params lists etc. 93 Element tq_service_full = (Element) tq_service.cloneNode(true); 94 Element param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 95 createParameter(ANNOTATION_TYPE_PARAM, param_list, false, null); 96 tq_service_full.appendChild(param_list); 97 service_info_map_.put(GATE_POS_TAG_SERVICE, tq_service_full); 98 99 // add some format info to service map if there is any 100 // Element format = (Element) GSXML.getChildByTagName(info, GSXML.FORMAT_ELEM); 101 // if (format != null) { 102 // format_info_map_.put(GATE_POS_TAG_SERVICE, doc_.importNode(format, true)); 103 // } 86 Element tag_service = doc_.createElement(GSXML.SERVICE_ELEM); 87 tag_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_ENRICH); 88 tag_service.setAttribute(GSXML.NAME_ATT, GATE_POS_TAG_SERVICE); 89 short_service_info_.appendChild(tag_service); 90 104 91 105 92 // Configure GATE for use … … 141 128 } 142 129 143 144 /** creates a display element containing all the text strings needed to display 145 the service page, in the language specified */ 146 protected Element createServiceDisplay(String service, String lang) 147 { 148 // Create a service display for the basic text query service 149 Element display = doc_.createElement(GSXML.DISPLAY_ELEM); 150 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_NAME_ELEM, getTextString(service+".name", lang))); 151 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_SUBMIT_ELEM, getTextString(service+".submit", lang))); 152 153 // now need to add in the params 154 if (service.equals(GATE_POS_TAG_SERVICE)) { 155 createParameter(ANNOTATION_TYPE_PARAM, display, true, lang); 156 } 157 158 return display; 130 protected Element getServiceDescription(String service, String lang) { 131 132 if (!service.equals(GATE_POS_TAG_SERVICE)) { 133 return null; 134 } 135 Element tag_service = doc_.createElement(GSXML.SERVICE_ELEM); 136 tag_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_ENRICH); 137 tag_service.setAttribute(GSXML.NAME_ATT, GATE_POS_TAG_SERVICE); 138 tag_service.appendChild(GSXML.createDisplayTextElement(doc_, GSXML.DISPLAY_TEXT_NAME, getTextString(service+".name", lang))); 139 tag_service.appendChild(GSXML.createDisplayTextElement(doc_, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(service+".submit", lang))); 140 Element param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 141 createParameter(ANNOTATION_TYPE_PARAM, param_list, lang); 142 tag_service.appendChild(param_list); 143 144 return tag_service; 159 145 } 160 146 … … 162 148 /** creates a new param element and adds it to the param list */ 163 149 protected void createParameter(String name, Element param_list, 164 boolean display,String lang)150 String lang) 165 151 { 166 152 Element param = null; 167 153 168 154 if (name.equals(ANNOTATION_TYPE_PARAM)) { 169 if (display) { 170 int len = annotation_types_.length; 171 String[] annotation_type_names = new String[len]; 172 for (int i = 0; i < len; i++) { 173 annotation_type_names[i] = getTextString("param." + name + "." + annotation_types_[i], lang); 174 } 175 176 param = GSXML.createParameterDisplay(doc_, name, getTextString("param." + name, lang), annotation_types_, annotation_type_names); 155 int len = annotation_types_.length; 156 String[] annotation_type_names = new String[len]; 157 for (int i = 0; i < len; i++) { 158 annotation_type_names[i] = getTextString("param." + name + "." + annotation_types_[i], lang); 177 159 } 178 else {179 param = GSXML.createParameterDescription(doc_, name, GSXML.PARAM_TYPE_ENUM_MULTI, annotation_types_[0], annotation_types_);180 }160 161 param = GSXML.createParameterDescription(doc_, name, getTextString("param." + name, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, annotation_types_[0], annotation_types_, annotation_type_names); 162 param_list.appendChild(param); 181 163 } 182 164 183 // Add the parameter to the list 184 if (param != null) { 185 param_list.appendChild(param); 186 } 187 } 188 189 165 } 166 167 190 168 protected Element processGatePOSTag(Element request) 191 169 { -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2Construct.java
r4853 r4903 77 77 } 78 78 79 /** returns the service list for the subclass */80 protected Element getServiceList(String lang) {81 // for now, it is static and there is no lang stuff82 return short_service_info_;83 }84 85 79 /** returns a specific service description */ 86 80 protected Element getServiceDescription(String service, String lang) { 87 Element descript = (Element)((Element)service_info_map_.get(service)).cloneNode(true); 88 // need to add in collection param list 89 if (!service.equals(NEW_SERVICE)) {//new doesn't need a collection list 90 Element param_list = (Element) GSXML.getChildByTagName(descript, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 91 Element old_param = GSXML.getNamedElement(param_list, GSXML.PARAM_ELEM, GSXML.NAME_ATT, COL_PARAM); 92 collection_list_ = getCollectionList(); 93 Element param = GSXML.createParameterDescription(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, null, collection_list_); 94 // put at front of the list 95 param_list.replaceChild(param, old_param); 96 } 97 // for now, create it on the fly - look at caching it later 98 Element display = createServiceDisplay(service, lang); 99 addServiceDisplay(descript, display); 100 return descript; 101 102 } 103 104 /** creates a display element containing all the text strings needed to display the service page, in the language specified */ 105 protected Element createServiceDisplay(String service, String lang) { 106 Element display = doc_.createElement(GSXML.DISPLAY_ELEM); 107 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_NAME_ELEM, getTextString(service+".name", lang))); 108 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_SUBMIT_ELEM, getTextString(service+".submit", lang))); 109 110 Element param; 81 82 Element description = doc_.createElement(GSXML.SERVICE_ELEM); 83 description.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 84 description.setAttribute(GSXML.NAME_ATT, service); 85 description.appendChild(GSXML.createDisplayTextElement(doc_, GSXML.DISPLAY_TEXT_NAME, getTextString(service+".name", lang))); 86 description.appendChild(GSXML.createDisplayTextElement(doc_, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(service+".submit", lang))); 87 88 Element param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 89 description.appendChild(param_list); 90 111 91 if (service.equals(NEW_SERVICE)) { 112 // have the coll title, about, buildtype and creator params 113 param = GSXML.createParameterDisplay(doc_, NEW_COL_TITLE_PARAM, getTextString("param."+NEW_COL_TITLE_PARAM, lang), null, null); 114 display.appendChild(param); 115 param = GSXML.createParameterDisplay(doc_, CREATOR_PARAM, getTextString("param."+CREATOR_PARAM, lang), null, null); 116 display.appendChild(param); 117 param = GSXML.createParameterDisplay(doc_, NEW_COL_ABOUT_PARAM, getTextString("param."+NEW_COL_ABOUT_PARAM, lang), null, null); 118 display.appendChild(param); 119 92 93 Element param = GSXML.createParameterDescription(doc_, NEW_COL_TITLE_PARAM, getTextString("param."+NEW_COL_TITLE_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null); 94 param_list.appendChild(param); 95 param = GSXML.createParameterDescription(doc_, CREATOR_PARAM, getTextString("param."+CREATOR_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null); 96 param_list.appendChild(param); 97 param = GSXML.createParameterDescription(doc_, NEW_COL_ABOUT_PARAM, getTextString("param."+NEW_COL_ABOUT_PARAM, lang), GSXML.PARAM_TYPE_TEXT, null, null, null); 98 param_list.appendChild(param); 120 99 String[] types = {BUILDTYPE_MGPP, BUILDTYPE_MG}; 121 100 String[] type_texts = {getTextString("param."+BUILDTYPE_PARAM+"."+BUILDTYPE_MGPP, lang), getTextString("param."+BUILDTYPE_PARAM+"."+BUILDTYPE_MG, lang)}; 122 param = GSXML.createParameterDisplay(doc_, BUILDTYPE_PARAM, getTextString("param."+BUILDTYPE_PARAM, lang), types, type_texts); 123 display.appendChild(param); 124 } else { 125 // have just the coll param 126 //use the collection list already created - this method is only called directly after getServiceDescription() 127 param = GSXML.createParameterDisplay(doc_, COL_PARAM, getTextString("param."+COL_PARAM, lang), collection_list_, collection_list_); 128 display.appendChild(param); 129 if (service.equals(ADD_DOC_SERVICE)) { 130 // also have the file param 131 param = GSXML.createParameterDisplay(doc_, NEW_FILE_PARAM, getTextString("param."+NEW_FILE_PARAM, lang), null, null); 132 display.appendChild(param); 133 } 134 } 135 136 return display; 101 102 param = GSXML.createParameterDescription(doc_, BUILDTYPE_PARAM, getTextString("param."+BUILDTYPE_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, BUILDTYPE_MGPP, types, type_texts); 103 param_list.appendChild(param); 104 return description; 105 } 106 107 108 if (service.equals(ACTIVATE_SERVICE) || service.equals(IMPORT_SERVICE) || service.equals(BUILD_SERVICE) || service.equals(RELOAD_SERVICE) || service.equals(DELETE_SERVICE)) { 109 110 collection_list_ = getCollectionList(); 111 Element param = GSXML.createParameterDescription(doc_, COL_PARAM, getTextString("param."+COL_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, null, collection_list_, collection_list_); 112 param_list.appendChild(param); 113 114 return description; 115 } 116 // invalid service name 117 return null; 137 118 138 119 } … … 382 363 short_service_info_.appendChild(e); 383 364 384 e = doc_.createElement(GSXML.SERVICE_ELEM); 385 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 386 e.setAttribute(GSXML.NAME_ATT, ADD_DOC_SERVICE); 387 short_service_info_.appendChild(e); 388 389 // set up service_info_map_ 390 // should have full details about each service incl params lists etc. 391 392 Element param_list; 393 Element param; 394 395 e = doc_.createElement(GSXML.SERVICE_ELEM); 396 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 397 e.setAttribute(GSXML.NAME_ATT, NEW_SERVICE); 398 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 399 param = GSXML.createParameterDescription(doc_, NEW_COL_TITLE_PARAM, GSXML.PARAM_TYPE_STRING, "", null); 400 param_list.appendChild(param); 401 param = GSXML.createParameterDescription(doc_, CREATOR_PARAM, GSXML.PARAM_TYPE_STRING, "", null); 402 param_list.appendChild(param); 403 param = GSXML.createParameterDescription(doc_, NEW_COL_ABOUT_PARAM, GSXML.PARAM_TYPE_TEXT, "", null); 404 param_list.appendChild(param); 405 String[] types = {BUILDTYPE_MGPP, BUILDTYPE_MG}; 406 param = GSXML.createParameterDescription(doc_, BUILDTYPE_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, BUILDTYPE_MGPP, types); 407 param_list.appendChild(param); 408 409 e.appendChild(param_list); 410 service_info_map_.put(NEW_SERVICE, e); 411 412 e = doc_.createElement(GSXML.SERVICE_ELEM); 413 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 414 e.setAttribute(GSXML.NAME_ATT, IMPORT_SERVICE); 415 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 416 param = GSXML.createParameterDescription(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, "", null); 417 param_list.appendChild(param); 418 e.appendChild(param_list); 419 service_info_map_.put(IMPORT_SERVICE, e); 420 421 e = doc_.createElement(GSXML.SERVICE_ELEM); 422 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 423 e.setAttribute(GSXML.NAME_ATT, BUILD_SERVICE); 424 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 425 param = GSXML.createParameterDescription(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, "", null); 426 param_list.appendChild(param); 427 e.appendChild(param_list); 428 service_info_map_.put(BUILD_SERVICE, e); 429 430 e = doc_.createElement(GSXML.SERVICE_ELEM); 431 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 432 e.setAttribute(GSXML.NAME_ATT, ACTIVATE_SERVICE); 433 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 434 param = GSXML.createParameterDescription(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, "", null); 435 param_list.appendChild(param); 436 e.appendChild(param_list); 437 service_info_map_.put(ACTIVATE_SERVICE, e); 438 439 e = doc_.createElement(GSXML.SERVICE_ELEM); 440 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 441 e.setAttribute(GSXML.NAME_ATT, DELETE_SERVICE); 442 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 443 param = GSXML.createParameterDescription(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, "", null); 444 param_list.appendChild(param); 445 e.appendChild(param_list); 446 service_info_map_.put(DELETE_SERVICE, e); 447 448 e = doc_.createElement(GSXML.SERVICE_ELEM); 449 e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 450 e.setAttribute(GSXML.NAME_ATT, RELOAD_SERVICE); 451 param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 452 param = GSXML.createParameterDescription(doc_, COL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, "", null); 453 param_list.appendChild(param); 454 e.appendChild(param_list); 455 service_info_map_.put(RELOAD_SERVICE, e); 365 //e = doc_.createElement(GSXML.SERVICE_ELEM); 366 //e.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_PROCESS); 367 //e.setAttribute(GSXML.NAME_ATT, ADD_DOC_SERVICE); 368 //short_service_info_.appendChild(e); 456 369 457 370 -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2MGPPSearch.java
r4709 r4903 54 54 55 55 // extra parameters used 56 private static final String INDEX_FIELD_PARAM = "index"; 56 57 private static final String LEVEL_PARAM = "level"; 57 58 private static final String RANK_PARAM = "sortBy"; … … 77 78 private MGPPWrapper mgpp_src_=null; 78 79 80 // the default level for retrieval - and we'll use it for searching too 79 81 private String default_level_=null; 80 82 … … 124 126 // else set up the fielded query services 125 127 126 // set up short_service_info_ - for now just has name and type128 // set up short_service_info_ - for now just has id and type - name will be added in on teh fly 127 129 Element fq_service = doc_.createElement(GSXML.SERVICE_ELEM); 128 130 fq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 129 131 fq_service.setAttribute(GSXML.NAME_ATT, FIELD_QUERY_SERVICE); 130 132 short_service_info_.appendChild(fq_service); 131 133 132 134 Element afq_service = doc_.createElement(GSXML.SERVICE_ELEM); 133 135 afq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 134 136 afq_service.setAttribute(GSXML.NAME_ATT, ADVANCED_FIELD_QUERY_SERVICE); 135 137 short_service_info_.appendChild(afq_service); 136 137 // set up service_info_map_ has full details about each service 138 // incl params lists etc. 139 Element fq_service_full = (Element) fq_service.cloneNode(true); 140 Element fq_param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 141 createFieldQueryParamList(fq_param_list, false, null); 142 fq_service_full.appendChild(fq_param_list); 143 service_info_map_.put(FIELD_QUERY_SERVICE, fq_service_full); 144 145 Element afq_service_full = (Element) afq_service.cloneNode(true); 146 Element afq_param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 147 createAdvancedFieldQueryParamList(afq_param_list, false, null); 148 afq_service_full.appendChild(afq_param_list); 149 service_info_map_.put(ADVANCED_FIELD_QUERY_SERVICE, afq_service_full); 150 138 151 139 152 140 //set up format info - the info is the same as that for text query … … 159 147 } 160 148 161 162 /** creates a new param element and adds it to the param list */ 163 protected void createParameter(String name, Element param_list, boolean display, String lang) { 149 protected Element getServiceDescription(String service_id, String lang) { 150 151 if (!service_id.equals(FIELD_QUERY_SERVICE) && !service_id.equals(ADVANCED_FIELD_QUERY_SERVICE)) { 152 return super.getServiceDescription(service_id, lang); 153 } 154 155 Element service = doc_.createElement(GSXML.SERVICE_ELEM); 156 service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 157 service.setAttribute(GSXML.NAME_ATT, service_id); 158 service.appendChild(GSXML.createDisplayTextElement(doc_, GSXML.DISPLAY_TEXT_NAME, getTextString(service_id+".name", lang))); 159 service.appendChild(GSXML.createDisplayTextElement(doc_, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(service_id+".submit", lang))); 160 Element param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 161 service.appendChild(param_list); 162 if (service_id.equals(FIELD_QUERY_SERVICE)) { 163 164 createFieldQueryParamList(param_list, lang); 165 } else { 166 createAdvancedFieldQueryParamList(param_list, lang); 167 } 168 return service; 169 170 } 171 172 /** creates a new param element and adds it to the param list */ 173 protected void createParameter(String id, Element param_list, String lang) { 164 174 Element param=null; 165 175 166 if ( name.equals(LEVEL_PARAM)) {176 if (id.equals(LEVEL_PARAM)) { 167 177 // the level info - read from config file 168 178 Element level_list = (Element)GSXML.getChildByTagName(config_info_, LEVEL_ELEM+GSXML.LIST_MODIFIER); … … 174 184 for (int i=0; i<len; i++) { 175 185 levs[i] = ((Element)levels.item(i)).getAttribute(GSXML.NAME_ATT); 176 if (display) { 177 lev_names[i] = getTextString("level."+levs[i], lang); 178 } 186 lev_names[i] = getTextString("level."+levs[i], lang); 187 179 188 } 180 if (display) { 181 param = GSXML.createParameterDisplay(doc_, LEVEL_PARAM, getTextString("param."+LEVEL_PARAM, lang), levs, lev_names); 182 } else { 183 param = GSXML.createParameterDescription(doc_, LEVEL_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, default_level_, levs); 184 } 185 } 186 } else if (name.equals(RANK_PARAM)) { 189 // the first one is the default 190 param = GSXML.createParameterDescription(doc_, LEVEL_PARAM, getTextString("param."+LEVEL_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, levs[0], levs, lev_names); 191 192 } 193 } else if (id.equals(RANK_PARAM)) { 187 194 String [] vals1 = {RANK_PARAM_RANK, RANK_PARAM_NONE }; 188 if (display) { 189 String [] vals1_texts = { getTextString("param."+RANK_PARAM+"."+RANK_PARAM_RANK, lang), getTextString("param."+RANK_PARAM+"."+RANK_PARAM_NONE, lang)}; 195 String [] vals1_texts = { getTextString("param."+RANK_PARAM+"."+RANK_PARAM_RANK, lang), getTextString("param."+RANK_PARAM+"."+RANK_PARAM_NONE, lang)}; 190 196 191 param = GSXML.createParameterDisplay(doc_, RANK_PARAM, getTextString("param."+RANK_PARAM, lang), vals1, vals1_texts); 192 } else { 193 param = GSXML.createParameterDescription(doc_, RANK_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, RANK_PARAM_RANK, vals1 ); 194 } 195 } else if (name.equals(FIELD_QUERY_PARAM)) { 196 if (display) { 197 param = GSXML.createParameterDisplay(doc_, FIELD_QUERY_PARAM, getTextString("param."+FIELD_QUERY_PARAM, lang), null, null); 198 } else { 199 param = GSXML.createParameterDescription(doc_, FIELD_QUERY_PARAM, GSXML.PARAM_TYPE_STRING, null, null); 200 } 201 202 } else if (name.equals(FIELD_CASE_PARAM)) { 203 if (display) { 204 String[] bool_ops = {"0", "1"}; 205 String[] bool_texts = {getTextString("param.boolean.off", lang),getTextString("param.boolean.on", lang)}; 206 param = GSXML.createParameterDisplay(doc_, FIELD_CASE_PARAM, getTextString("param."+FIELD_CASE_PARAM, lang), bool_ops, bool_texts); 207 208 } else { 209 param = GSXML.createParameterDescription(doc_, FIELD_CASE_PARAM, GSXML.PARAM_TYPE_BOOLEAN, BOOLEAN_PARAM_ON, null); 210 211 } 212 } else if (name.equals(FIELD_STEM_PARAM)) { 213 if (display) { 214 String[] bool_ops = {"0", "1"}; 215 String[] bool_texts = {getTextString("param.boolean.off", lang),getTextString("param.boolean.on", lang)}; 216 param = GSXML.createParameterDisplay(doc_, FIELD_STEM_PARAM, getTextString("param."+FIELD_STEM_PARAM, lang), bool_ops, bool_texts); 217 } else { 218 param = GSXML.createParameterDescription(doc_, FIELD_STEM_PARAM, GSXML.PARAM_TYPE_BOOLEAN, BOOLEAN_PARAM_ON, null); 219 220 } 221 222 } else if (name.equals(FIELD_FIELD_PARAM)) { 197 param = GSXML.createParameterDescription(doc_, RANK_PARAM, getTextString("param."+RANK_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, RANK_PARAM_RANK, vals1, vals1_texts ); 198 199 } else if (id.equals(FIELD_QUERY_PARAM)) { 200 param = GSXML.createParameterDescription(doc_, FIELD_QUERY_PARAM, getTextString("param."+FIELD_QUERY_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null); 201 202 203 } else if (id.equals(FIELD_CASE_PARAM) || id.equals(FIELD_STEM_PARAM)) { 204 String[] bool_ops = {"0", "1"}; 205 String[] bool_texts = {getTextString("param.boolean.off", lang),getTextString("param.boolean.on", lang)}; 206 param = GSXML.createParameterDescription(doc_, id, getTextString("param."+id, lang), GSXML.PARAM_TYPE_BOOLEAN, BOOLEAN_PARAM_ON, bool_ops, bool_texts); 207 208 } else if (id.equals(FIELD_FIELD_PARAM) || id.equals(INDEX_FIELD_PARAM)) { 223 209 224 210 // the field list - read from config file … … 226 212 NodeList fields = field_list.getElementsByTagName(GSXML.FIELD_ELEM); 227 213 int len = fields.getLength(); 228 String [] f_names = new String [len+1]; 229 String [] f_texts = new String [len+1]; 230 231 f_names[0] = "ZZ"; 232 if (display) { 233 f_texts[0] = getTextString("param.fqf.all", lang); 234 } 214 String [] f_names = new String [len]; 215 String [] f_texts = new String [len]; 235 216 for (int i=0; i< len;i++) { 236 f_names[i+1] = ((Element)fields.item(i)).getAttribute(GSXML.SHORTNAME_ATT); 237 if (display) { 238 // should these be changed to a text element based on lang? 239 // or is the name of a metadata element eg dc:Title its 240 // name in all langs 241 f_texts[i+1] = ((Element)fields.item(i)).getAttribute(GSXML.NAME_ATT); 242 } 243 } 244 if (display) { 245 param = GSXML.createParameterDisplay(doc_, FIELD_FIELD_PARAM, getTextString("param."+FIELD_FIELD_PARAM, lang), f_names, f_texts); 217 f_names[i] = ((Element)fields.item(i)).getAttribute(GSXML.SHORTNAME_ATT); 218 // should these be changed to a text element based on lang? 219 // or is the name of a metadata element eg dc:Title its 220 // name in all langs 221 f_texts[i] = ((Element)fields.item(i)).getAttribute(GSXML.NAME_ATT); 246 222 247 } else { 248 param = GSXML.createParameterDescription(doc_, FIELD_FIELD_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, "", f_names ); 223 } 224 param = GSXML.createParameterDescription(doc_, id, getTextString("param."+id, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, f_names[0], f_names, f_texts ); 225 226 } else if (id.equals(FIELD_COMBINE_PARAM)) { 227 228 String []vals = {FIELD_COMBINE_PARAM_AND, FIELD_COMBINE_PARAM_OR, FIELD_COMBINE_PARAM_NOT}; 229 String []val_texts = {getTextString("param."+FIELD_COMBINE_PARAM+"."+FIELD_COMBINE_PARAM_AND, lang), getTextString("param."+FIELD_COMBINE_PARAM+"."+FIELD_COMBINE_PARAM_OR, lang), getTextString("param."+FIELD_COMBINE_PARAM+"."+FIELD_COMBINE_PARAM_NOT, lang)}; 249 230 250 } 251 } else if (name.equals(FIELD_COMBINE_PARAM)) { 252 253 String []vals = {FIELD_COMBINE_PARAM_AND, FIELD_COMBINE_PARAM_OR, FIELD_COMBINE_PARAM_NOT}; 254 if (display) { 255 String []val_texts = {getTextString("param."+FIELD_COMBINE_PARAM+"."+FIELD_COMBINE_PARAM_AND, lang), getTextString("param."+FIELD_COMBINE_PARAM+"."+FIELD_COMBINE_PARAM_OR, lang), getTextString("param."+FIELD_COMBINE_PARAM+"."+FIELD_COMBINE_PARAM_NOT, lang)}; 231 232 param = GSXML.createParameterDescription(doc_, FIELD_COMBINE_PARAM, "", GSXML.PARAM_TYPE_ENUM_SINGLE, FIELD_COMBINE_PARAM_AND, vals, val_texts); 233 param.setAttribute(GSXML.PARAM_IGNORE_POS_ATT, "0"); 256 234 257 param = GSXML.createParameterDisplay(doc_, FIELD_COMBINE_PARAM, "", vals, val_texts); 258 259 } else { 260 param = GSXML.createParameterDescription(doc_, FIELD_COMBINE_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, FIELD_COMBINE_PARAM_AND, vals); 261 param.setAttribute(GSXML.PARAM_IGNORE_POS_ATT, "0"); 262 263 } 264 } 265 235 236 } 237 266 238 // add the param to the list 267 239 if (param !=null) { … … 269 241 } 270 242 else { 271 super.createParameter( name, param_list, display, lang);272 } 273 } 274 243 super.createParameter(id, param_list, lang); 244 } 245 } 246 275 247 276 248 /** this creates all teh params and appends them to param_list. … … 279 251 */ 280 252 protected boolean createTextQueryParamList(Element param_list, 281 boolean display,253 282 254 String lang) 283 255 { 284 256 // the order they are specified here is the order they appear on 285 257 // the query form 286 createParameter(INDEX_PARAM, param_list, display, lang); 287 createParameter(LEVEL_PARAM, param_list, display, lang); 288 createParameter(CASE_PARAM, param_list, display, lang); 289 createParameter(STEM_PARAM, param_list, display, lang); 290 createParameter(MATCH_PARAM, param_list, display, lang); 291 createParameter(RANK_PARAM, param_list, display, lang); 292 createParameter(MAXDOCS_PARAM, param_list, display, lang); 293 createParameter(QUERY_PARAM, param_list, display, lang); 258 //createParameter(INDEX_PARAM, param_list, display, lang); - there is only ever one index now 259 createParameter(INDEX_FIELD_PARAM, param_list, lang); 260 createParameter(LEVEL_PARAM, param_list, lang); 261 createParameter(CASE_PARAM, param_list, lang); 262 createParameter(STEM_PARAM, param_list, lang); 263 createParameter(MATCH_PARAM, param_list, lang); 264 createParameter(RANK_PARAM, param_list, lang); 265 createParameter(MAXDOCS_PARAM, param_list, lang); 266 createParameter(QUERY_PARAM, param_list, lang); 294 267 295 268 return true; 296 269 } 297 270 298 299 // for now, the field queries just use the default index.300 // however, it is entirely possible to create two indexes with different301 // metadata. then you run into problems with displaying the form - you302 // need to use javascript to change teh field and maybe level lists303 // depending on which index is selected, or have the index preselected304 // before going to the query form305 271 306 272 … … 309 275 * otherwise it creates the description version 310 276 */ 311 protected boolean createFieldQueryParamList(Element param_list, boolean display,277 protected boolean createFieldQueryParamList(Element param_list, 312 278 String lang) 313 279 { 314 280 // add in the index param 315 createParameter(INDEX_PARAM, param_list, display, lang);316 createParameter(LEVEL_PARAM, param_list, display,lang);317 createParameter(MATCH_PARAM, param_list, display,lang);318 createParameter(CASE_PARAM, param_list, display,lang);319 createParameter(STEM_PARAM, param_list, display,lang);320 createParameter(RANK_PARAM, param_list, display,lang);321 createParameter(MAXDOCS_PARAM, param_list, display,lang);281 //createParameter(INDEX_PARAM, param_list, display, lang); 282 createParameter(LEVEL_PARAM, param_list, lang); 283 createParameter(MATCH_PARAM, param_list, lang); 284 createParameter(CASE_PARAM, param_list, lang); 285 createParameter(STEM_PARAM, param_list, lang); 286 createParameter(RANK_PARAM, param_list, lang); 287 createParameter(MAXDOCS_PARAM, param_list, lang); 322 288 323 289 // create a multi param for the fields etc … … 325 291 Element multiparam = null; 326 292 Element param=null; 327 if (display) { 328 param = GSXML.createParameterDisplay(doc_, SIMPLE_FIELD_PARAM, "", null, null); 329 param_list.appendChild(param); 330 } else { 331 multiparam = GSXML.createParameterDescription(doc_, SIMPLE_FIELD_PARAM, GSXML.PARAM_TYPE_MULTI, null, null); 332 multiparam.setAttribute("occurs", "4"); 333 param_list.appendChild(multiparam); 334 } 293 multiparam = GSXML.createParameterDescription(doc_, SIMPLE_FIELD_PARAM, "", GSXML.PARAM_TYPE_MULTI, null, null, null); 294 multiparam.setAttribute("occurs", "4"); 295 param_list.appendChild(multiparam); 296 335 297 // the components 336 if (display) { 337 createParameter(FIELD_QUERY_PARAM, param_list, display, lang); 338 createParameter(FIELD_FIELD_PARAM, param_list, display, lang); 339 } else { 340 createParameter(FIELD_QUERY_PARAM, multiparam, display, lang); 341 createParameter(FIELD_FIELD_PARAM, multiparam, display, lang); 342 } 298 createParameter(FIELD_QUERY_PARAM, multiparam, lang); 299 createParameter(FIELD_FIELD_PARAM, multiparam, lang); 300 343 301 return true; 344 302 } 345 303 346 protected boolean createAdvancedFieldQueryParamList(Element param_list, boolean display,304 protected boolean createAdvancedFieldQueryParamList(Element param_list, 347 305 String lang) { 348 306 349 307 // first do index and level params 350 createParameter(INDEX_PARAM, param_list, display, lang);351 createParameter(LEVEL_PARAM, param_list, display,lang);352 createParameter(RANK_PARAM, param_list, display,lang);353 createParameter(MAXDOCS_PARAM, param_list, display,lang);308 //createParameter(INDEX_PARAM, param_list, display, lang); 309 createParameter(LEVEL_PARAM, param_list, lang); 310 createParameter(RANK_PARAM, param_list, lang); 311 createParameter(MAXDOCS_PARAM, param_list, lang); 354 312 355 313 … … 360 318 Element param=null; 361 319 362 if (display) { 363 param = GSXML.createParameterDisplay(doc_, ADVANCED_FIELD_PARAM, "", null, null); 364 param_list.appendChild(param); 365 } else { 366 multiparam = GSXML.createParameterDescription(doc_, ADVANCED_FIELD_PARAM, GSXML.PARAM_TYPE_MULTI, null, null); 367 multiparam.setAttribute("occurs", "4"); 368 param_list.appendChild(multiparam); 369 } 370 371 if (display) { 372 createParameter(FIELD_COMBINE_PARAM, param_list, display, lang); 373 createParameter(FIELD_QUERY_PARAM, param_list, display, lang); 374 createParameter(FIELD_CASE_PARAM, param_list, display, lang); 375 createParameter(FIELD_STEM_PARAM, param_list, display, lang); 376 createParameter(FIELD_FIELD_PARAM, param_list, display, lang); 377 } else { 378 createParameter(FIELD_COMBINE_PARAM, multiparam, display, lang); 379 createParameter(FIELD_QUERY_PARAM, multiparam, display, lang); 380 createParameter(FIELD_CASE_PARAM, multiparam, display, lang); 381 createParameter(FIELD_STEM_PARAM, multiparam, display, lang); 382 createParameter(FIELD_FIELD_PARAM, multiparam, display, lang); 383 } 320 multiparam = GSXML.createParameterDescription(doc_, ADVANCED_FIELD_PARAM, "", GSXML.PARAM_TYPE_MULTI, null, null, null); 321 multiparam.setAttribute("occurs", "4"); 322 param_list.appendChild(multiparam); 323 324 createParameter(FIELD_COMBINE_PARAM, multiparam, lang); 325 createParameter(FIELD_QUERY_PARAM, multiparam, lang); 326 createParameter(FIELD_CASE_PARAM, multiparam, lang); 327 createParameter(FIELD_STEM_PARAM, multiparam, lang); 328 createParameter(FIELD_FIELD_PARAM, multiparam, lang); 329 384 330 385 331 return true; 386 332 } 387 333 388 389 /** creates a display element containing all the text strings needed to display390 the service page, in the language specified */391 protected Element createServiceDisplay(String service, String lang)392 {393 // Create a service display for the basic text query service394 Element display = super.createServiceDisplay(service, lang);395 396 // Now add MGPP's special services397 if (service.equals(FIELD_QUERY_SERVICE)) {398 createFieldQueryParamList(display, true, lang);399 }400 if (service.equals(ADVANCED_FIELD_QUERY_SERVICE)) {401 createAdvancedFieldQueryParamList(display, true, lang);402 }403 404 return display;405 }406 407 334 // the following three functions are needed so the base class can 408 335 // call the process+SERVICE_NAME methods … … 469 396 } 470 397 471 // If an index hasn't been specified, use the default472 String index = (String) params.get(INDEX_PARAM);473 if ( index== null) {474 index = default_index_;475 } 476 398 // If an field hasn't been specified, use all fields 399 String field = (String) params.get(INDEX_FIELD_PARAM); 400 if (field == null) { 401 field = "ZZ"; 402 } 403 477 404 // set up mgpp_src 478 405 String indexdir = GSFile.collectionBaseDir(site_home_, cluster_name_) + 479 File.separatorChar + GSFile.collectionIndexPath(cluster_name_, index);406 File.separatorChar + GSFile.collectionIndexPath(cluster_name_, default_index_); 480 407 mgpp_src_.loadIndexData(indexdir); 481 408 setStandardQueryParams(params); … … 483 410 // if field search, create the query string 484 411 switch (query_type) { 412 case TEXT_QUERY: 413 query = addFieldInfo(query, field); 414 break; 485 415 case SIMPLE_QUERY: 486 416 query = parseFieldQueryParams(params); … … 532 462 term_elem.setAttribute(FREQ_ATT, "" + term_info.term_freq_); 533 463 term_elem.setAttribute(NUM_DOCS_MATCH_ATT, "" + term_info.match_docs_); 534 Stringfield = term_info.tag_;464 field = term_info.tag_; 535 465 if (field.equals(query_level)) { 536 466 // ignore … … 596 526 } 597 527 528 protected String addFieldInfo(String query, String field) { 529 if (field.equals("") || field.equals("ZZ")) { 530 return query; 531 } 532 return "["+query+"]:"+field; 533 } 598 534 /** combines all the field params into a single query 599 535 * - for simple field query */ -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2MGSearch.java
r4012 r4903 62 62 * otherwise it creates the description version 63 63 */ 64 protected boolean createTextQueryParamList(Element param_list, boolean display,64 protected boolean createTextQueryParamList(Element param_list, 65 65 String lang) 66 66 { 67 67 // the order they are specified here is the order they appear on 68 68 // the query form 69 createParameter(INDEX_PARAM, param_list, display,lang);70 createParameter(CASE_PARAM, param_list, display,lang);71 createParameter(STEM_PARAM, param_list, display,lang);72 createParameter(MATCH_PARAM, param_list, display,lang);73 createParameter(MAXDOCS_PARAM, param_list, display,lang);74 createParameter(QUERY_PARAM, param_list, display,lang);69 createParameter(INDEX_PARAM, param_list, lang); 70 createParameter(CASE_PARAM, param_list, lang); 71 createParameter(STEM_PARAM, param_list, lang); 72 createParameter(MATCH_PARAM, param_list, lang); 73 createParameter(MAXDOCS_PARAM, param_list, lang); 74 createParameter(QUERY_PARAM, param_list, lang); 75 75 76 76 return true; 77 }78 79 80 /** Creates a display element containing all the text strings needed to display81 the service page, in the language specified */82 protected Element createServiceDisplay(String service, String lang)83 {84 // Create a service display for the basic text query service85 return super.createServiceDisplay(service, lang);86 77 } 87 78 -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2Retrieve.java
r4861 r4903 75 75 76 76 protected GDBMWrapper gdbm_src_ = null; 77 78 77 protected Element config_info_ = null; // the xml from the config file 79 78 … … 106 105 dcr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_CONTENT_RETRIEVE_SERVICE); 107 106 short_service_info_.appendChild(dcr_service); 108 109 // set up service_info_map_ - for now, just has the same elements as above110 // should have full details about each service incl params lists etc.111 service_info_map_.put(DOCUMENT_STRUCTURE_RETRIEVE_SERVICE, dsr_service);112 service_info_map_.put(DOCUMENT_METADATA_RETRIEVE_SERVICE, dmr_service);113 service_info_map_.put(DOCUMENT_CONTENT_RETRIEVE_SERVICE, dcr_service);114 107 115 108 // Open GDBM database for querying … … 146 139 short_service_info_.appendChild(cbmr_service); 147 140 148 // service_info_map_149 150 // the metadata one has the same info for now - should this advertise what metadata is available??151 Element cbmr_service_info = (Element) cbmr_service.cloneNode(true);152 service_info_map_.put(CLASSIFIER_METADATA_SERVICE, cbmr_service_info);153 154 //the browse one155 Element cb_service_info = (Element)cb_service.cloneNode(true);156 Element cl_list = doc_.createElement(GSXML.CLASSIFIER_ELEM+GSXML.LIST_MODIFIER);157 cb_service_info.appendChild(cl_list);158 159 141 // the format info 160 142 Element cb_format_info = doc_.createElement(GSXML.FORMAT_ELEM); … … 166 148 Element new_cl = (Element)doc_.importNode(cl, false); // just import this node, not the children 167 149 168 cl_list.appendChild(new_cl);169 170 150 // get the format info out, and put inside a classifier element 171 151 Element format_cl = (Element)new_cl.cloneNode(false); … … 185 165 } 186 166 187 188 service_info_map_.put(CLASSIFIER_SERVICE, cb_service_info);189 167 if (format_found) { 190 168 format_info_map_.put(CLASSIFIER_SERVICE, cb_format_info); … … 201 179 return true; 202 180 } 203 181 182 protected Element getServiceDescription(String service_id, String lang) { 183 184 if (service_id.equals(CLASSIFIER_SERVICE)) { 185 186 Element class_list = (Element)GSXML.getChildByTagName(config_info_, GSXML.CLASSIFIER_ELEM+GSXML.LIST_MODIFIER); 187 if (class_list == null) { 188 // no classifiers specified 189 return null; 190 } 191 192 Element cb_service = doc_.createElement(GSXML.SERVICE_ELEM); 193 cb_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_BROWSE); 194 cb_service.setAttribute(GSXML.NAME_ATT, CLASSIFIER_SERVICE); 195 cb_service.appendChild(GSXML.createDisplayTextElement(doc_, GSXML.DISPLAY_TEXT_NAME, getTextString(CLASSIFIER_SERVICE+".name", lang))); 196 197 Element cl_list = doc_.createElement(GSXML.CLASSIFIER_ELEM+GSXML.LIST_MODIFIER); 198 cb_service.appendChild(cl_list); 199 NodeList classifiers = class_list.getElementsByTagName(GSXML.CLASSIFIER_ELEM); 200 for(int i=0; i<classifiers.getLength(); i++) { 201 Element cl = (Element)classifiers.item(i); 202 Element new_cl = (Element)doc_.importNode(cl, false); // just import this node, not the children 203 204 cl_list.appendChild(new_cl); 205 String text = GSXML.getDisplayText(cl, 206 GSXML.DISPLAY_TEXT_NAME, 207 lang, "en"); 208 if (text == null || text.equals("")) { 209 // no display element was specified, use the metadata name 210 // for now this looks in the class properties file 211 // this needs to use a general metadata thing instead 212 text = getTextString(cl.getAttribute(GSXML.CLASSIFIER_CONTENT_ATT), lang); 213 } 214 215 Element cl_name = GSXML.createDisplayTextElement(doc_, GSXML.DISPLAY_TEXT_NAME, text); 216 new_cl.appendChild(cl_name); 217 218 } 219 return cb_service; 220 } 221 222 // these ones are probably never called, but put them here just in case 223 224 if (service_id.equals(CLASSIFIER_METADATA_SERVICE)) { 225 226 Element cbmr_service = doc_.createElement(GSXML.SERVICE_ELEM); 227 cbmr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 228 cbmr_service.setAttribute(GSXML.NAME_ATT, CLASSIFIER_METADATA_SERVICE); 229 return cbmr_service; 230 } 231 232 if (service_id.equals(DOCUMENT_STRUCTURE_RETRIEVE_SERVICE)) { 233 Element dsr_service = doc_.createElement(GSXML.SERVICE_ELEM); 234 dsr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 235 dsr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_STRUCTURE_RETRIEVE_SERVICE); 236 return dsr_service; 237 } 238 if (service_id.equals(DOCUMENT_METADATA_RETRIEVE_SERVICE)) { 239 Element dmr_service = doc_.createElement(GSXML.SERVICE_ELEM); 240 dmr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 241 dmr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_METADATA_RETRIEVE_SERVICE); 242 return dmr_service; 243 } 244 245 if (service_id.equals(DOCUMENT_CONTENT_RETRIEVE_SERVICE)) { 246 Element dcr_service = doc_.createElement(GSXML.SERVICE_ELEM); 247 dcr_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_RETRIEVE); 248 dcr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_CONTENT_RETRIEVE_SERVICE); 249 return dcr_service; 250 } 251 252 return null; 253 } 254 204 255 /** this looks for any classifier specific display or format info from extra_info and adds it in to the correct place in info */ 205 256 protected boolean extractExtraClassifierInfo(Element info, Element extra_info) { … … 227 278 228 279 // get the display elements if any - displayName 229 NodeList display_names = node_extra.getElementsByTagName(GSXML.DISPLAY NAME_ELEM);280 NodeList display_names = node_extra.getElementsByTagName(GSXML.DISPLAY_TEXT_ELEM); 230 281 if (display_names !=null) { 231 282 Element display = owner.createElement(GSXML.DISPLAY_ELEM); 232 283 for (int j=0; j<display_names.getLength(); j++) { 233 284 Element e = (Element)display_names.item(j); 285 cl.appendChild(owner.importNode(e, true)); 234 286 235 Element display_name = GSXML.createTextElement(owner, GSXML.DISPLAY_NAME_ELEM, GSXML.getNodeText(e)); 236 display_name.setAttribute(GSXML.LANG_ATT, e.getAttribute(GSXML.LANG_ATT)); 237 display.appendChild(display_name); 238 } 239 cl.appendChild(display); 287 } 240 288 } 241 289 … … 253 301 } 254 302 255 256 /** creates a display element containing all the text strings needed to display the service page, in the language specified257 * the retrieval services dont get displayed to the users - they are only used internally by the actions. so this returns an empty display element258 * for those services. CLASSIFIER_BROWSE service returns some info */259 protected Element createServiceDisplay(String service, String lang)260 {261 Element display = doc_.createElement(GSXML.DISPLAY_ELEM);262 if (!service.equals(CLASSIFIER_SERVICE)) {263 return display;264 }265 266 // CLASSIFIER_SERVICE267 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_NAME_ELEM, getTextString(service+".name", lang)));268 //display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_SUBMIT_ELEM, getTextString(service+".submit", lang)));269 270 // need to add in the classifier name info271 // add <classifier name="CL1">text name</classifier> to the272 // display node273 NodeList classifiers = config_info_.getElementsByTagName(GSXML.CLASSIFIER_ELEM);274 for (int i=0; i<classifiers.getLength(); i++) {275 Element cl = (Element)classifiers.item(i);276 Element disp = (Element)GSXML.getChildByTagName(cl, GSXML.DISPLAY_ELEM);277 String text = null;278 if (disp !=null) {279 text = GSXML.getDisplayText(disp,280 GSXML.DISPLAY_NAME_ELEM,281 lang, "en");282 }283 if (text == null || text.equals("")) {284 // no display element was specified, use the metadata name285 // for now this looks in the class properties file286 // this needs to use a general metadata thing instead287 text = getTextString(cl.getAttribute(GSXML.CLASSIFIER_CONTENT_ATT), lang);288 }289 290 Element cl_elem = doc_.createElement(GSXML.CLASSIFIER_ELEM);291 cl_elem.setAttribute(GSXML.NAME_ATT, cl.getAttribute(GSXML.NAME_ATT));292 Element cl_name = GSXML.createTextElement(doc_, GSXML.DISPLAY_NAME_ELEM, text);293 cl_elem.appendChild(cl_name);294 295 display.appendChild(cl_elem);296 297 }298 299 return display;300 301 }302 303 303 304 /** parent is true if this node is definitely the parent of something, -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2Search.java
r4862 r4903 99 99 } 100 100 101 // these entries should reflect the build config file - some services may not be available depending on how the collec iton was built.102 // set up short_service_info_ - for now just has name and type101 // these entries should reflect the build config file - some services may not be available depending on how the collection was built. 102 // set up short_service_info_ - for now just has id and type. the name (lang dependent) will be added in if the list is requested. 103 103 Element tq_service = doc_.createElement(GSXML.SERVICE_ELEM); 104 104 tq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); … … 106 106 short_service_info_.appendChild(tq_service); 107 107 108 // set up service_info_map_ - for now, just has the same elements as above109 // should have full details about each service incl params lists etc.110 Element tq_service_full = (Element) tq_service.cloneNode(true);111 Element param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);112 createTextQueryParamList(param_list, false, null);113 tq_service_full.appendChild(param_list);114 service_info_map_.put(TEXT_QUERY_SERVICE, tq_service_full);115 108 116 109 // Open GDBM database for querying … … 130 123 } 131 124 132 125 protected Element getServiceDescription(String service, String lang) { 126 127 if (!service.equals(TEXT_QUERY_SERVICE)) { 128 return null; 129 } 130 Element tq_service = doc_.createElement(GSXML.SERVICE_ELEM); 131 tq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY); 132 tq_service.setAttribute(GSXML.NAME_ATT, TEXT_QUERY_SERVICE); 133 tq_service.appendChild(GSXML.createDisplayTextElement(doc_, GSXML.DISPLAY_TEXT_NAME, getTextString(TEXT_QUERY_SERVICE+".name", lang))); 134 tq_service.appendChild(GSXML.createDisplayTextElement(doc_, GSXML.DISPLAY_TEXT_SUBMIT, getTextString(TEXT_QUERY_SERVICE+".submit", lang))); 135 Element param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 136 createTextQueryParamList(param_list, lang); 137 tq_service.appendChild(param_list); 138 return tq_service; 139 140 } 141 133 142 protected boolean addExtraQueryInfo(Element info, Element extra_info){ 134 143 … … 155 164 156 165 // get the display elements if any - displayName 157 NodeList display_names = node_extra.getElementsByTagName(GSXML.DISPLAY NAME_ELEM);166 NodeList display_names = node_extra.getElementsByTagName(GSXML.DISPLAY_TEXT_ELEM); 158 167 if (display_names !=null) { 159 Element display = owner.createElement(GSXML.DISPLAY_ELEM);160 168 for (int j=0; j<display_names.getLength(); j++) { 161 169 Element e = (Element)display_names.item(j); 162 163 Element display_name = GSXML.createTextElement(owner, GSXML.DISPLAY_NAME_ELEM, GSXML.getNodeText(e)); 164 display_name.setAttribute(GSXML.LANG_ATT, e.getAttribute(GSXML.LANG_ATT)); 165 display.appendChild(display_name); 170 ind.appendChild(owner.importNode(e, true)); 166 171 } 167 ind.appendChild(display);168 172 } 169 173 } // for each index … … 181 185 /** creates a new param element and adds it to the param list */ 182 186 protected void createParameter(String name, Element param_list, 183 boolean display,String lang)187 /*boolean display,*/ String lang) 184 188 { 185 189 Element param=null; 186 190 187 191 if (name.equals(INDEX_PARAM)) { 188 192 // the index info - read from config file … … 194 198 String [] ind_names = new String[len]; 195 199 for (int i=0; i<len; i++) { 196 inds[i] = ((Element)indexes.item(i)).getAttribute(GSXML.NAME_ATT); 197 if (display) { 198 Element disp = (Element)GSXML.getChildByTagName(indexes.item(i), GSXML.DISPLAY_ELEM); 199 ind_names[i] = GSXML.getDisplayText(disp, GSXML.DISPLAY_NAME_ELEM, lang, "en"); 200 } 200 Element index = (Element)indexes.item(i); 201 inds[i] = index.getAttribute(GSXML.NAME_ATT); 202 ind_names[i] = GSXML.getDisplayText(index, GSXML.DISPLAY_TEXT_NAME, lang, "en"); 203 201 204 } 202 if (display) { 203 param = GSXML.createParameterDisplay(doc_, INDEX_PARAM, getTextString("param."+INDEX_PARAM, lang), inds, ind_names); 204 } else { 205 param = GSXML.createParameterDescription(doc_, INDEX_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, default_index_, inds); 206 } 207 } else if (name.equals(CASE_PARAM)) { 208 if (display) { 209 String[] bool_ops = {"0", "1"}; 210 String[] bool_texts = {getTextString("param.boolean.off", lang),getTextString("param.boolean.on", lang)}; 211 param = GSXML.createParameterDisplay(doc_, CASE_PARAM, getTextString("param."+CASE_PARAM, lang), bool_ops, bool_texts); 212 } else { 213 param = GSXML.createParameterDescription(doc_, CASE_PARAM, GSXML.PARAM_TYPE_BOOLEAN, BOOLEAN_PARAM_ON, null); 214 } 215 } 216 else if (name.equals(STEM_PARAM)) { 217 if (display) { 218 String[] bool_ops = {"0", "1"}; 219 String[] bool_texts = {getTextString("param.boolean.off", lang),getTextString("param.boolean.on", lang)}; 220 param = GSXML.createParameterDisplay(doc_, STEM_PARAM, getTextString("param."+STEM_PARAM, lang), bool_ops, bool_texts); 221 } else { 222 param = GSXML.createParameterDescription(doc_, STEM_PARAM, GSXML.PARAM_TYPE_BOOLEAN, BOOLEAN_PARAM_ON, null); 223 } 224 } 205 param = GSXML.createParameterDescription(doc_, INDEX_PARAM, getTextString("param."+INDEX_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, default_index_, inds, ind_names); 206 207 } 208 else if (name.equals(CASE_PARAM) || name.equals(STEM_PARAM)) { 209 String[] bool_ops = {"0", "1"}; 210 String[] bool_texts = {getTextString("param.boolean.off", lang),getTextString("param.boolean.on", lang)}; 211 param = GSXML.createParameterDescription(doc_, name, getTextString("param."+name, lang), GSXML.PARAM_TYPE_BOOLEAN, BOOLEAN_PARAM_ON, bool_ops, bool_texts); 212 } 225 213 else if (name.equals(MATCH_PARAM)) { 226 214 String[] vals = {MATCH_PARAM_ALL, MATCH_PARAM_SOME}; 227 if (display) { 228 String[] val_texts = {getTextString("param."+MATCH_PARAM+"."+MATCH_PARAM_ALL, lang),getTextString("param."+MATCH_PARAM+"."+MATCH_PARAM_SOME, lang)}; 229 230 param = GSXML.createParameterDisplay(doc_, MATCH_PARAM, getTextString("param."+MATCH_PARAM, lang), vals, val_texts); 231 } else { 232 param = GSXML.createParameterDescription(doc_, MATCH_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, MATCH_PARAM_ALL, vals); 233 } 215 String[] val_texts = {getTextString("param."+MATCH_PARAM+"."+MATCH_PARAM_ALL, lang),getTextString("param."+MATCH_PARAM+"."+MATCH_PARAM_SOME, lang)}; 216 param = GSXML.createParameterDescription(doc_, MATCH_PARAM, getTextString("param."+MATCH_PARAM, lang), GSXML.PARAM_TYPE_ENUM_SINGLE, MATCH_PARAM_ALL, vals, val_texts); 217 234 218 } 235 219 else if (name.equals(MAXDOCS_PARAM)) { 236 if (display) { 237 param = GSXML.createParameterDisplay(doc_, MAXDOCS_PARAM, getTextString("param."+MAXDOCS_PARAM, lang), null, null); 238 } else { 239 param = GSXML.createParameterDescription(doc_, MAXDOCS_PARAM, GSXML.PARAM_TYPE_INTEGER, "10", null); 240 } 220 param = GSXML.createParameterDescription(doc_, MAXDOCS_PARAM, getTextString("param."+MAXDOCS_PARAM, lang), GSXML.PARAM_TYPE_INTEGER, "10", null, null); 221 241 222 } 242 223 else if (name.equals(QUERY_PARAM)) { 243 if (display) { 244 param = GSXML.createParameterDisplay(doc_, QUERY_PARAM, getTextString("param."+QUERY_PARAM, lang), null, null); 245 } else { 246 param = GSXML.createParameterDescription(doc_, QUERY_PARAM, GSXML.PARAM_TYPE_STRING, null, null); 247 } 248 } 249 224 param = GSXML.createParameterDescription(doc_, QUERY_PARAM, getTextString("param."+QUERY_PARAM, lang), GSXML.PARAM_TYPE_STRING, null, null, null); 225 226 } 227 250 228 // add the param to the list 251 229 if (param != null) { … … 260 238 */ 261 239 protected abstract boolean createTextQueryParamList(Element param_list, 262 boolean display,263 240 String lang); 264 265 /** creates a display element containing all the text strings needed to display266 the service page, in the language specified */267 protected Element createServiceDisplay(String service, String lang)268 {269 // Create a service display for the basic text query service270 Element display = doc_.createElement(GSXML.DISPLAY_ELEM);271 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_NAME_ELEM, getTextString(service+".name", lang)));272 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_SUBMIT_ELEM, getTextString(service+".submit", lang)));273 274 // now need to add in the params275 if (service.equals(TEXT_QUERY_SERVICE)) {276 createTextQueryParamList(display, true, lang);277 }278 279 return display;280 }281 282 241 283 242 /** Creates a new documentNode element containing ID, node type … … 293 252 DBInfo info = gdbm_src_.getInfo(node_id); 294 253 if (info == null) { // make it up - cant query the gdbm db 295 if (is_top) {296 doc_node.setAttribute(GSXML.NODE_TYPE_ATT, GSXML.NODE_TYPE_ROOT);297 } else {298 doc_node.setAttribute(GSXML.NODE_TYPE_ATT, GSXML.NODE_TYPE_INTERIOR);299 }300 254 doc_node.setAttribute(GSXML.DOC_TYPE_ATT, "simple"); 301 255 return doc_node; … … 304 258 boolean is_leaf = (children.equals("") ? true : false); 305 259 260 // check for simple doc types 261 if (is_top && is_leaf) { // a single section document 262 doc_node.setAttribute(GSXML.DOC_TYPE_ATT, "simple"); 263 return doc_node; 264 } 306 265 // set teh node type att 307 266 if (is_top) { … … 312 271 doc_node.setAttribute(GSXML.NODE_TYPE_ATT, GSXML.NODE_TYPE_INTERIOR); 313 272 } 314 315 // set teh doc type att 316 if (is_top && is_leaf) { // a single section document 317 doc_node.setAttribute(GSXML.DOC_TYPE_ATT, "simple"); 318 return doc_node; 319 } 320 273 321 274 if (!is_top) { // we need to look at the top info 322 275 info = gdbm_src_.getInfo(top_id); -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/PhindPhraseBrowse.java
r4246 r4903 44 44 private MGPPWrapper mgpp_src_=null; 45 45 private String basepath_ = null; 46 47 private Element applet_description = null; 48 46 49 public PhindPhraseBrowse() { 47 50 mgpp_src_ = new MGPPWrapper(); … … 68 71 short_service_info_.appendChild(e); 69 72 70 // set up service_info_map_ - we only have one element, and it has71 // no extra info yet - we are not processing the config info 72 Element f= doc_.createElement(GSXML.SERVICE_ELEM);73 f.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_APPLET);74 f.setAttribute(GSXML.NAME_ATT, PHIND_SERVICE);73 // set up the static applet description 74 75 applet_description = doc_.createElement(GSXML.SERVICE_ELEM); 76 applet_description.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_APPLET); 77 applet_description.setAttribute(GSXML.NAME_ATT, PHIND_SERVICE); 75 78 76 79 // add in the applet info for the phind applet … … 87 90 Document dom = converter_.getDOM(app_info); 88 91 Element app_elem = dom.getDocumentElement(); 89 f.appendChild(doc_.importNode(app_elem, true)); 90 91 service_info_map_.put(PHIND_SERVICE, f); 92 applet_description.appendChild(doc_.importNode(app_elem, true)); 92 93 93 94 return true; 94 95 } 95 96 96 /** creates a display element containing all the text strings needed to display the service page, in the language specified */ 97 protected Element createServiceDisplay(String service, String lang) { 98 Element display = doc_.createElement(GSXML.DISPLAY_ELEM); 99 display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_NAME_ELEM, getTextString(service+".name", lang))); 100 //display.appendChild(GSXML.createTextElement(doc_, GSXML.DISPLAY_SUBMIT_ELEM, getTextString(service+".submit", lang))); 101 102 return display; 103 97 protected Element getServiceDescription(String service, String lang) { 98 if (!service.equals(PHIND_SERVICE)) { 99 return null; 100 } 101 Element describe = (Element) applet_description.cloneNode(true); 102 describe.appendChild(GSXML.createDisplayTextElement(doc_, GSXML.DISPLAY_TEXT_NAME, getTextString(PHIND_SERVICE+".name", lang))); 103 return describe; 104 104 } 105 105 -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/ServiceRack.java
r4142 r4903 79 79 protected Document doc_ = null; 80 80 81 /** XML element for describe requests - list of supported services */ 81 /** XML element for describe requests - list of supported services 82 - this is static */ 82 83 protected Element short_service_info_ = null; 83 84 84 /** XML element for describe requests - map of service name to full85 description */86 protected HashMap service_info_map_ = null;87 85 /** XML element for stylesheet requests - map of service name to format 88 86 elem */ … … 117 115 doc_ = converter_.newDOM(); 118 116 short_service_info_ = doc_.createElement(GSXML.SERVICE_ELEM+GSXML.LIST_MODIFIER); 119 service_info_map_ = new HashMap();120 117 format_info_map_ = new HashMap(); 121 118 } … … 191 188 String to = GSPath.getFirstLink(request.getAttribute(GSXML.TO_ATT)); 192 189 Element response = null; 193 if (service_info_map_.containsKey(to)) { 194 try { 190 try { 195 191 Class c = this.getClass(); 196 192 Class []params = {Class.forName("org.w3c.dom.Element")}; 197 193 198 194 String method_name = "process"+to; 199 195 Method m = null; … … 226 222 mainResult.appendChild(doc_.importNode(response, true)); 227 223 } 228 229 } catch (ClassNotFoundException e) { 230 System.err.println("ServiceRack error: Element class not found"); 231 return null; 232 } 233 } else { 234 // else error in to field 235 System.err.println("ServiceRack describe request: error in 'to' field, non-existant service "+to+" specified!"); 224 225 } catch (ClassNotFoundException e) { 226 System.err.println("ServiceRack error: Element class not found"); 236 227 return null; 237 228 } … … 242 233 243 234 } 235 236 244 237 245 238 /** process method for describe requests … … 258 251 259 252 // describe a particular service 260 if (service_info_map_.containsKey(to)) { 261 response.appendChild(getServiceDescription(to, lang)); 253 //if (service_info_map_.containsKey(to)) { 254 Element description = getServiceDescription(to, lang); 255 if (description != null) { // may be null if non-existant service 256 response.appendChild(description); 262 257 response.setAttribute(GSXML.FROM_ATT, to); 263 return response;264 258 } 265 // else error in to field 266 System.err.println("ServiceRack describe request: error in 'to' field, to='"+to+"'."); 267 return null; 259 return response; 268 260 269 261 } … … 288 280 return response; 289 281 } 290 // else error in to field282 // else no format info 291 283 System.err.println("ServiceRack describe request: no format info for "+to+"."); 292 284 return response; 293 285 } 294 286 295 // the following two should be overwritten for info with any language stuff in it296 287 /** returns the service list for the subclass */ 297 288 protected Element getServiceList(String lang) { 298 // for now, it is static and there is no langstuff299 return short_service_info_;289 // for now, it is static and has no language stuff 290 return (Element) short_service_info_.cloneNode(true); 300 291 } 301 292 302 293 /** returns a specific service description */ 303 protected Element getServiceDescription(String service, String lang) { 304 Element descript = (Element)((Element)service_info_map_.get(service)).cloneNode(true); 305 // for now, create the display element on the fly - look at caching it later 306 Element display = createServiceDisplay(service, lang); 307 addServiceDisplay(descript, display); 308 return descript; 309 } 310 311 312 /** adds the display element into the description - appends to the root for now, but may do something fancy later */ 313 protected boolean addServiceDisplay(Element descript, Element display) { 314 if (descript.getOwnerDocument() != display.getOwnerDocument()) { 315 display = (Element)descript.getOwnerDocument().importNode(display, true); 316 } 317 descript.appendChild(display); 318 return true; 319 } 294 abstract protected Element getServiceDescription(String service, String lang); 320 295 321 296 protected Element getServiceFormat(String service) { … … 323 298 return format; 324 299 } 325 /** creates a display element containing all the text strings needed to display the service page, in the language specified */326 abstract protected Element createServiceDisplay(String service, String lang);327 300 328 301 /** overloaded version for no args case */ … … 345 318 return result; 346 319 } 320 321 347 322 } 323 -
trunk/gsdl3/src/java/org/greenstone/gsdl3/service/XSLTServices.java
r4012 r4903 119 119 } 120 120 121 /** 122 * creates a display element containing all the text strings 123 * needed to display the service page, in the language specified 124 */ 125 protected Element createServiceDisplay(String service, String lang) { 126 return null; 127 } 121 protected Element getServiceDescription(String service, String lang) { 122 123 return null; 124 } 128 125 129 126 /** process method for specific services - must be implemented by all
Note:
See TracChangeset
for help on using the changeset viewer.