Changeset 13978


Ignore:
Timestamp:
2007-03-14T12:38:17+13:00 (17 years ago)
Author:
kjdon
Message:

cross coll search now works across remote servers

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/CrossCollectionSearch.java

    r13976 r13978  
    205205   
    206206    for (int k=0; k<responses.getLength(); k++) {
    207         String coll_name = GSPath.getFirstLink(((Element)responses.item(k)).getAttribute(GSXML.FROM_ATT));
     207        String coll_name = GSPath.removeLastLink(((Element)responses.item(k)).getAttribute(GSXML.FROM_ATT));
    208208        NodeList nodes = ((Element)responses.item(k)).getElementsByTagName(GSXML.DOC_NODE_ELEM);
    209209        if (nodes==null || nodes.getLength()==0) continue;
     
    261261    Element metadata_response = (Element)this.router.process(metadata_message);
    262262    logger.debug("metadata response = "+this.converter.getPrettyString(metadata_response));
    263 
    264     NodeList coll_responses = metadata_response.getElementsByTagName(GSXML.COLLECTION_ELEM);
     263    NodeList coll_responses = metadata_response.getElementsByTagName(GSXML.RESPONSE_ELEM);
    265264    ArrayList valid_colls = new ArrayList();
    266265    ArrayList valid_coll_names = new ArrayList();
    267266    for (int i=0; i<coll_responses.getLength(); i++) {
    268         Element coll = (Element)coll_responses.item(i);
     267        Element response = (Element)coll_responses.item(i);
     268        Element coll = (Element)GSXML.getChildByTagName(response, GSXML.COLLECTION_ELEM);
    269269        Element service_list = (Element)GSXML.getChildByTagName(coll, GSXML.SERVICE_ELEM+GSXML.LIST_MODIFIER);
    270270        if (service_list==null) continue;
    271271        Element query_service = GSXML.getNamedElement(service_list, GSXML.SERVICE_ELEM, GSXML.NAME_ATT, TEXT_QUERY_SERVICE); // should be AbstractSearch.TEXT_QUERY_SERVICE
    272272        if (query_service == null) continue;
    273         String coll_id = coll.getAttribute(GSXML.NAME_ATT);
     273        // use the name of the response in case we are talking to a remote collection, not the name of the collection.
     274        String coll_id = response.getAttribute(GSXML.FROM_ATT);
    274275        String coll_name = coll_id+": "+GSXML.getDisplayText(coll, GSXML.DISPLAY_TEXT_NAME, "en", "en"); // just use english for now until we do some caching or something
    275276        valid_colls.add(coll_id);
     
    298299    result.setAttribute(GSXML.FROM_ATT, DOCUMENT_METADATA_RETRIEVE_SERVICE);
    299300    result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS);
    300    
     301
    301302    String lang = request.getAttribute(GSXML.LANG_ATT);
    302303    // Get the parameters of the request
     
    306307        return result;  // Return the empty result
    307308    }
    308    
     309
    309310    NodeList query_doc_list = request.getElementsByTagName(GSXML.DOC_NODE_ELEM);
    310311    if (query_doc_list.getLength()==0) {
     
    316317    Element result_node_list = this.doc.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);
    317318    result.appendChild(result_node_list);
    318    
     319
    319320    // get all the metadata params
    320321    Element new_param_list = this.doc.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);
     
    335336        coll_items.appendChild(this.doc.importNode(doc_node, true));
    336337    }
    337    
     338
    338339    // create teh individual requests
    339340    Element meta_request_message = this.doc.createElement(GSXML.MESSAGE_ELEM);
    340341    Set mapping_set = coll_map.entrySet();
    341342    Iterator iter = mapping_set.iterator();
    342    
     343
    343344    while (iter.hasNext()) {
    344345        Map.Entry e = (Map.Entry)iter.next();
     
    351352       
    352353    }
     354
    353355    Element meta_result = this.router.process(meta_request_message);
    354356   
     
    358360    NodeList meta_responses = meta_result.getElementsByTagName(GSXML.RESPONSE_ELEM);
    359361    for (int i=0; i<meta_responses.getLength(); i++) {
    360         String collname = GSPath.getFirstLink(((Element)meta_responses.item(i)).getAttribute(GSXML.FROM_ATT));
     362        String collname = GSPath.removeLastLink(((Element)meta_responses.item(i)).getAttribute(GSXML.FROM_ATT));
    361363        Element first_elem = (Element)GSXML.getNodeByPath(meta_responses.item(i), "documentNodeList/documentNode");
    362364        coll_map.put(collname, first_elem);
Note: See TracChangeset for help on using the changeset viewer.