Changeset 26577
- Timestamp:
- 2012-12-13T09:53:54+13:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/CrossCollectionSearch.java
r26406 r26577 19 19 package org.greenstone.gsdl3.service; 20 20 21 import java.util.ArrayList; 22 import java.util.HashMap; 23 import java.util.Iterator; 24 import java.util.Map; 25 import java.util.Set; 26 27 import org.apache.log4j.Logger; 28 import org.greenstone.gsdl3.util.GSPath; 21 29 import org.greenstone.gsdl3.util.GSXML; 22 import org.greenstone.gsdl3.util.GSPath;23 30 import org.greenstone.gsdl3.util.UserContext; 24 25 31 import org.w3c.dom.Element; 26 32 import org.w3c.dom.Node; 27 33 import org.w3c.dom.NodeList; 28 29 import java.util.ArrayList;30 import java.util.Map;31 import java.util.Iterator;32 import java.util.Set;33 import java.util.HashMap;34 35 import org.apache.log4j.*;36 34 37 35 /** … … 53 51 protected String[] coll_ids_list = null; 54 52 protected String[] coll_ids_list_no_all = null; 55 // maps lang to coll names list 56 protected HashMap<String, String[]> coll_names_map = null; 57 //protected String[] coll_names_list = null; 53 // maps lang to coll names list 54 protected HashMap<String, String[]> coll_names_map = null; 55 56 //protected String[] coll_names_list = null; 58 57 59 58 /** constructor */ … … 123 122 initCollectionList(lang); 124 123 } 125 if (!coll_names_map.containsKey(lang)) { 126 addCollectionNames(lang); 124 if (!coll_names_map.containsKey(lang)) 125 { 126 addCollectionNames(lang); 127 127 } 128 128 Element param = GSXML.createParameterDescription(this.doc, COLLECTION_PARAM, getTextString("param." + COLLECTION_PARAM, lang), GSXML.PARAM_TYPE_ENUM_MULTI, "all", coll_ids_list, coll_names_map.get(lang)); … … 153 153 154 154 UserContext userContext = new UserContext(request); 155 155 156 156 // Get the parameters of the request 157 157 Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); … … 290 290 Element c = (Element) colls.item(i); 291 291 String name = c.getAttribute(GSXML.NAME_ATT); 292 if (i!=0) { 293 colls_sb.append(","); 292 if (i != 0) 293 { 294 colls_sb.append(","); 294 295 } 295 296 colls_sb.append(name); … … 317 318 // use the name of the response in case we are talking to a remote collection, not the name of the collection. 318 319 String coll_id = response.getAttribute(GSXML.FROM_ATT); 319 String coll_name = GSXML.getDisplayText(coll, GSXML.DISPLAY_TEXT_NAME, lang, "en"); 320 String coll_name = GSXML.getDisplayText(coll, GSXML.DISPLAY_TEXT_NAME, lang, "en"); 320 321 valid_colls.add(coll_id); 321 322 valid_coll_names.add(coll_name); … … 343 344 } 344 345 345 protected void addCollectionNames(String lang) { 346 347 UserContext userContext = new UserContext(); 348 userContext.setLanguage(lang); 349 userContext.setUserID(""); 350 351 ArrayList<String> coll_names = new ArrayList<String>(); 352 coll_names.add(getTextString("param." + COLLECTION_PARAM + ".all", lang)); 353 354 // need to request MR for collection descriptions 355 Element metadata_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 356 357 // get a comma separated list of coll ids to send to MR 358 // the first item is the place holder for 'all' 359 StringBuffer colls_sb = new StringBuffer(); 360 for (int i=1; i<coll_ids_list.length; i++) { 361 if (i!=1) { 362 colls_sb.append(","); 363 } 364 colls_sb.append(coll_ids_list[i]); 365 } 366 Element metadata_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_DESCRIBE, colls_sb.toString(), userContext); 367 // param_list to request just displayTextList 368 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER); 369 Element param = GSXML.createParameter(this.doc, GSXML.SUBSET_PARAM, GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER); 370 param_list.appendChild(param); 371 metadata_request.appendChild(param_list); 372 metadata_message.appendChild(metadata_request); 373 logger.debug("coll names metadata request = " + this.converter.getPrettyString(metadata_message)); 374 Element metadata_response = (Element) this.router.process(metadata_message); 375 logger.debug("coll names metadata response = " + this.converter.getPrettyString(metadata_response)); 376 NodeList coll_responses = metadata_response.getElementsByTagName(GSXML.RESPONSE_ELEM); 377 for (int i = 0; i < coll_responses.getLength(); i++) 378 { 379 Element response = (Element) coll_responses.item(i); 380 Element coll = (Element) GSXML.getChildByTagName(response, GSXML.COLLECTION_ELEM); 381 String coll_name = GSXML.getDisplayText(coll, GSXML.DISPLAY_TEXT_NAME, lang, "en"); 382 coll_names.add(coll_name); 383 } 384 385 String[] coll_names_list = new String[1]; 386 coll_names_list = coll_names.toArray(coll_names_list); 387 this.coll_names_map.put(lang, coll_names_list); 388 389 } 346 protected void addCollectionNames(String lang) 347 { 348 349 UserContext userContext = new UserContext(); 350 userContext.setLanguage(lang); 351 userContext.setUserID(""); 352 353 ArrayList<String> coll_names = new ArrayList<String>(); 354 coll_names.add(getTextString("param." + COLLECTION_PARAM + ".all", lang)); 355 356 // need to request MR for collection descriptions 357 Element metadata_message = this.doc.createElement(GSXML.MESSAGE_ELEM); 358 359 // get a comma separated list of coll ids to send to MR 360 // the first item is the place holder for 'all' 361 StringBuffer colls_sb = new StringBuffer(); 362 for (int i = 1; i < coll_ids_list.length; i++) 363 { 364 if (i != 1) 365 { 366 colls_sb.append(","); 367 } 368 colls_sb.append(coll_ids_list[i]); 369 } 370 Element metadata_request = GSXML.createBasicRequest(this.doc, GSXML.REQUEST_TYPE_DESCRIBE, colls_sb.toString(), userContext); 371 // param_list to request just displayTextList 372 Element param_list = this.doc.createElement(GSXML.PARAM_ELEM + GSXML.LIST_MODIFIER); 373 Element param = GSXML.createParameter(this.doc, GSXML.SUBSET_PARAM, GSXML.DISPLAY_TEXT_ELEM + GSXML.LIST_MODIFIER); 374 param_list.appendChild(param); 375 metadata_request.appendChild(param_list); 376 metadata_message.appendChild(metadata_request); 377 logger.debug("coll names metadata request = " + this.converter.getPrettyString(metadata_message)); 378 Element metadata_response = (Element) this.router.process(metadata_message); 379 logger.debug("coll names metadata response = " + this.converter.getPrettyString(metadata_response)); 380 NodeList coll_responses = metadata_response.getElementsByTagName(GSXML.RESPONSE_ELEM); 381 for (int i = 0; i < coll_responses.getLength(); i++) 382 { 383 Element response = (Element) coll_responses.item(i); 384 Element coll = (Element) GSXML.getChildByTagName(response, GSXML.COLLECTION_ELEM); 385 String coll_name = GSXML.getDisplayText(coll, GSXML.DISPLAY_TEXT_NAME, lang, "en"); 386 coll_names.add(coll_name); 387 } 388 389 String[] coll_names_list = new String[1]; 390 coll_names_list = coll_names.toArray(coll_names_list); 391 this.coll_names_map.put(lang, coll_names_list); 392 393 } 390 394 391 395 protected Element processDocumentMetadataRetrieve(Element request)
Note:
See TracChangeset
for help on using the changeset viewer.