Ignore:
Timestamp:
2003-04-02T15:59:59+12:00 (21 years ago)
Author:
kjdon
Message:

what metadata to ask for is now dynamically determined from the xslt using a method from GSXSLT.java

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/action/QueryAction.java

    r3999 r4080  
    1111
    1212import java.util.HashMap;
     13import java.util.Vector;
    1314import java.util.Map;
    1415import java.util.Iterator;
     
    155156    }
    156157   
     158    // add in the format info to the stylesheet if there is any
     159    Element format_elem = getAndTransformFormat(format_response);
     160    if (format_elem != null) {
     161        GSXSLT.mergeStylesheets(style_doc, format_elem);
     162    }
     163
     164
    157165    // do the query
    158166    Element mr_query_message = doc_.createElement(GSXML.MESSAGE_ELEM);
     
    163171    Element query_param_list = (Element)doc_.importNode(cgi_param_list, true);
    164172    mr_query_request.appendChild(query_param_list);
     173
     174    // do the query
    165175        Element mr_query_response = (Element)mr_.process(mr_query_message);
    166176
     
    169179    if (query_result_metadata_list == null) {
    170180        System.err.println("QueryAction: Warning: No query result metadata.\n");
    171     }
     181    } else { // add it into the page response
     182        page_response.appendChild(doc_.importNode(query_result_metadata_list, true));
     183    }
     184   
    172185    path = GSPath.appendLink(GSXML.RESPONSE_ELEM, GSXML.TERM_ELEM+GSXML.LIST_MODIFIER);
    173186    Element query_term_info_list = (Element) GSXML.getNodeByPath(mr_query_response, path);
    174187    if (query_term_info_list == null) {
    175188        System.err.println("QueryAction: Warning: No query term information.\n");
    176     }
    177 
    178     // this result is the list of docs.
    179     // now take that list, and get the Titles
    180     // for now, just create a whole new request
    181    
     189    } else { // add it into the page response
     190        page_response.appendChild(doc_.importNode(query_term_info_list, true));
     191    }
     192
    182193    // check that there are some documents - for now check the list, but later should use a numdocs metadata elem
    183194    path = GSPath.appendLink(GSXML.RESPONSE_ELEM, GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);
     
    187198    // documentList not present if no docs found
    188199    if (document_list == null) {
    189        
    190         //Element result_response = (Element)GSXML.getChildByTagName(mr_query_response, GSXML.RESPONSE_ELEM);
    191 
    192         //page.appendChild(doc_.importNode(result_response, true));
    193200        GSXSLT.absoluteIncludePaths(style_doc, config_);
    194201        return (Element)transformer_.transform(style_doc, page);   
     
    196203    }
    197204   
    198     // add in the format info
    199     Element format_elem = getAndTransformFormat(format_response);
    200     if (format_elem != null) {
    201         GSXSLT.mergeStylesheets(style_doc, format_elem);
    202     }
    203 
    204     // we have a doc list, so get the metadata - for now, get title.
    205     // can we dynamically decide what metadata to get?
     205   
     206    // we have a doc list, so get the metadata - look through the stylesheet to determine what metadata to ask for
     207
     208    Vector document_metadata = GSXSLT.extractWantedMetadata(style_doc, GSXML.DOC_NODE_ELEM);
     209    if (document_metadata.isEmpty()) {
     210        System.err.println("no document metadata specified!!");
     211        // we dont need to do the metadata request, just append the original doc list and return the page
     212        page_response.appendChild(doc_.importNode(document_list, true));
     213        GSXSLT.absoluteIncludePaths(style_doc, config_);
     214        return (Element)transformer_.transform(style_doc, page);
     215
     216    }
     217    // we have to do the metadata request
     218
    206219    Element mr_metadata_message = doc_.createElement(GSXML.MESSAGE_ELEM);
    207220    Element mr_metadata_request = doc_.createElement(GSXML.REQUEST_ELEM);
     
    213226    mr_metadata_request.setAttribute(GSXML.TO_ATT, to);
    214227
    215     // Create a parameter list to specify the required metadata information
    216     Element dm_param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);
     228    Element dm_param_list = GSXML.createMetadataParamList(doc_, document_metadata);
    217229    mr_metadata_request.appendChild(dm_param_list);
    218     Element dm_param = doc_.createElement(GSXML.PARAM_ELEM);
    219     dm_param_list.appendChild(dm_param);
    220     dm_param.setAttribute(GSXML.NAME_ATT, "metadata");
    221     dm_param.setAttribute(GSXML.VALUE_ATT, "Title");
    222 
     230   
     231   
     232    // add in the doc node list too
    223233    mr_metadata_request.appendChild(doc_.importNode(document_list, true));
    224234    Element mr_metadata_response = (Element) mr_.process(mr_metadata_message); 
     
    229239    if (query_result_document_list != null) {
    230240        page_response.appendChild(doc_.importNode(query_result_document_list, true));
    231     }
    232     // If there is some metadata about the query results, add it in
    233     if (query_result_metadata_list != null) {
    234         page_response.appendChild(doc_.importNode(query_result_metadata_list, true));
    235     }
    236     // If there is some metadata about the query results, add it in
    237     if (query_term_info_list != null) {
    238         page_response.appendChild(doc_.importNode(query_term_info_list, true));
    239241    }
    240242
Note: See TracChangeset for help on using the changeset viewer.