Changeset 3862 for trunk/gsdl3/src


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

new xml format - removed content from request and response, document has been renamed documentNode

Location:
trunk/gsdl3/src/java/org/greenstone/gsdl3/service
Files:
5 edited

Legend:

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

    r3851 r3862  
    100100    result.setAttribute(GSXML.FROM_ATT, from);
    101101    result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS);
    102     Element result_content = doc_.createElement(GSXML.CONTENT_ELEM);
    103     result.appendChild(result_content);
     102    //Element result_content = doc_.createElement(GSXML.CONTENT_ELEM);
     103    //result.appendChild(result_content);
    104104
    105     // Get the parameters of the request
    106     Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);
    107     if (param_list == null) {
    108         System.err.println("GS2MGPPRetrieve, DocumentContentRetrieve Error: missing paramList.\n");
    109         return result;  // Return the empty result
    110     }
     105    // Get the parameters of the request - not used at the moment
     106    //Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);
    111107
    112     String level = default_level_;
    113 
    114     // Process the request parameters
    115     // are there any???
    116     Element param = (Element) param_list.getFirstChild();
    117     while (param != null) {
    118         if (!param.getNodeName().equals(GSXML.PARAM_ELEM)) {
    119         System.err.println("Warning: Non-param in paramList (ignored).");
    120         }
    121         else {
    122         // this looks for a level param but I think we dont use it
    123         if (param.getAttribute(GSXML.NAME_ATT) == LEVEL_PARAM) {
    124             level = GSXML.getValue(param);
    125             System.out.println("Level: " + level);
    126         }
    127         }
    128 
    129         param = (Element) param.getNextSibling();
    130     }
    131 
    132     // Get the request content
    133     Element content = (Element) GSXML.getChildByTagName(request, GSXML.CONTENT_ELEM);
    134     if (content == null) {
    135         System.err.println("Error: DocumentContentRetrieve request had no content.\n");
     108    // Get the request doc_list
     109    Element query_doc_list = (Element) GSXML.getChildByTagName(request, GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);
     110    if (query_doc_list == null) {
     111        System.err.println("Error: DocumentContentRetrieve request specified no doc nodes.\n");
    136112        return result;
    137113    }
    138114
    139     Element doc_list = doc_.createElement(GSXML.DOCUMENT_ELEM+GSXML.LIST_MODIFIER);
    140     result_content.appendChild(doc_list);
     115    Element doc_list = doc_.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);
     116    result.appendChild(doc_list);
    141117
    142118    // The location of the MGPP text files
     
    145121
    146122    // Get the documents
    147     String[] doc_ids = GSXML.getDocumentNameList(content);
     123    //String[] doc_ids = GSXML.getDocumentNameList(content);
     124    String[] doc_ids = GSXML.getAttributeValuesFromList(query_doc_list,
     125                             GSXML.DOC_NODE_ID_ATT);
    148126    for (int i = 0; i < doc_ids.length; i++) {
    149127        String doc_id = doc_ids[i];
    150128        long doc_num = gdbm_src_.oid2Docnum(doc_id);
    151         String doc_content = mgpp_src_.getDocument(basedir, textdir, level, doc_num);
     129        String doc_content = mgpp_src_.getDocument(basedir, textdir, default_level_, doc_num);
    152130
    153131        // For now, stick it in a text node - eventually should be parsed as xml??
    154         Element doc = GSXML.createDocumentElement(doc_, doc_id);
     132
     133        Element doc = doc_.createElement(GSXML.DOC_NODE_ELEM);
     134        doc.setAttribute(GSXML.DOC_NODE_ID_ATT, doc_id);
    155135        GSXML.addDocText(doc_, doc, doc_content);
    156136        doc_list.appendChild(doc);
     137
    157138    }
    158 
     139   
    159140    return result;
    160141    }
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2MGPPSearch.java

    r3851 r3862  
    5454    private static final String LEVEL_PARAM = "level";
    5555    private static final String RANK_PARAM = "sortBy";
    56     private static final String RANK_PARAM_RANK = "rank";
    57     private static final String RANK_PARAM_NONE = "natural";
     56    private static final String RANK_PARAM_RANK = "1";
     57    private static final String RANK_PARAM_NONE = "0";
    5858    private static final String SIMPLE_FIELD_PARAM = "simpleField";
    5959    private static final String ADVANCED_FIELD_PARAM = "complexField";
     
    105105
    106106    // the default level is also the level which gdbm is expecting
     107    // this must not be overwritten
    107108    mgpp_src_.setReturnLevel(default_level_);
     109    // return term info
    108110    mgpp_src_.setReturnTerms(true);
     111    // set the default - this may be overwritten by query params
    109112    mgpp_src_.setQueryLevel(default_level_);
    110113
    111     // set up which services are available for this collection
    112     // these entries should reflect the build config file - some services may not be available depending on how the collection was built.
    113 
     114    // set up the extra services which are available for this collection
     115    // check the config info - if there is no field list, then there is no fielded searching
     116   
     117    Element field_list = (Element) GSXML.getChildByTagName(info, GSXML.FIELD_ELEM+GSXML.LIST_MODIFIER);
     118    if (field_list==null) {
     119        // nothing more to do
     120        return true;
     121    }
     122    // else set up the fielded query services
     123   
    114124    // set up short_service_info_ - for now just has name and type
    115125    Element fq_service = doc_.createElement(GSXML.SERVICE_ELEM);
     
    123133    short_service_info_.appendChild(afq_service);
    124134
    125     // set up service_info_map_ - for now, just has the same elements as above
    126     // should have full details about each service incl params lists etc.
     135    // set up service_info_map_ has full details about each service
     136    // incl params lists etc.
    127137    Element fq_service_full = (Element) fq_service.cloneNode(true);
    128138    Element fq_param_list = doc_.createElement(GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);
     
    144154    protected void createParameter(String name, Element param_list, boolean display, String lang) {
    145155    Element param=null;
    146 
    147     if (name.equals(INDEX_PARAM)) {
    148         // the index info - read from config file
    149         Element index_list = (Element)GSXML.getChildByTagName(config_info_, INDEX_ELEM+GSXML.LIST_MODIFIER);
    150         NodeList indexes = index_list.getElementsByTagName(INDEX_ELEM);
    151         int len = indexes.getLength();
    152         if (len > 1) { // add index param to list only if more than one index specified
    153         String [] inds  = new String[len];
    154         String [] ind_names = new String[len];
    155         for (int i=0; i<len; i++) {
    156             inds[i] = ((Element)indexes.item(i)).getAttribute(GSXML.NAME_ATT);
    157             if (display) {
    158             Element disp = (Element)GSXML.getChildByTagName(indexes.item(i), GSXML.DISPLAY_ELEM);
    159             ind_names[i] = GSXML.getDisplayText(disp, GSXML.DISPLAY_NAME_ELEM, lang, "en");
    160             }
    161             //Element display_name = (Element)GSXML.getChildByTagName(indexes.item(i), GSXML.DISPLAYNAME_ELEM)
    162             //ind_names[i] = GSXML.getNodeText((Element)GSXML.getChildByTagName(indexes.item(i), GSXML.DISPLAYNAME_ELEM));
    163             // }
    164         }
    165         if (display) {
    166             // use the same index names for now - should get these out of the config info
    167             param = GSXML.createParameterDisplay(doc_, INDEX_PARAM, getTextString("param."+INDEX_PARAM, lang), inds, ind_names);
    168         } else {
    169             param = GSXML.createParameter(doc_, INDEX_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, default_index_, inds);
    170         }
    171         }
    172     } else if (name.equals(LEVEL_PARAM)) {
     156   
     157    if (name.equals(LEVEL_PARAM)) {
    173158        // the level info - read from config file
    174159        Element level_list = (Element)GSXML.getChildByTagName(config_info_, LEVEL_ELEM+GSXML.LIST_MODIFIER);
     
    181166            levs[i] = ((Element)levels.item(i)).getAttribute(GSXML.NAME_ATT);
    182167            if (display) {
    183             String lname = "level."+levs[i];
    184             System.out.println("lname="+lname);
    185             //lev_names[i] = levs[i];
    186             lev_names[i] = getTextString(lname, lang);
     168            lev_names[i] = getTextString("level."+levs[i], lang);
    187169            }
    188170        }
     
    196178        String [] vals1 = {RANK_PARAM_RANK, RANK_PARAM_NONE };
    197179        if (display) {
    198         String [] vals1_texts = { getTextString("param."+RANK_PARAM+"."+RANK_PARAM_RANK, lang),
    199                       getTextString("param."+RANK_PARAM+"."+RANK_PARAM_NONE, lang)};
     180        String [] vals1_texts = { getTextString("param."+RANK_PARAM+"."+RANK_PARAM_RANK, lang), getTextString("param."+RANK_PARAM+"."+RANK_PARAM_NONE, lang)};
    200181       
    201182        param = GSXML.createParameterDisplay(doc_, RANK_PARAM, getTextString("param."+RANK_PARAM, lang), vals1, vals1_texts);
     
    209190        param = GSXML.createParameter(doc_, FIELD_QUERY_PARAM, GSXML.PARAM_TYPE_STRING, null, null);
    210191        }
    211        
    212192       
    213193    } else if (name.equals(FIELD_CASE_PARAM)) {
     
    243223        f_names[i] = ((Element)fields.item(i)).getAttribute(GSXML.SHORTNAME_ATT);
    244224        if (display) {
    245             // these should be changed to a text element based on lang
     225            // should these be changed to a text element based on lang?
     226            // or is the name of a metadata element eg dc:Title its
     227            // name in all langs
    246228            f_texts[i] = ((Element)fields.item(i)).getAttribute(GSXML.NAME_ATT);
    247229        }
    248 
    249         }
    250         // String [] vals2 = {"TX", "SU", "TI", "OR"};
    251         //String [] vals2_texts = {"TextOnly", "Subject", "Title", "Organization"};
    252        
     230        }
    253231        if (display) {
    254232        param = GSXML.createParameterDisplay(doc_, FIELD_FIELD_PARAM, getTextString("param."+FIELD_FIELD_PARAM, lang), f_names, f_texts);
     
    259237        }
    260238    } else if (name.equals(FIELD_COMBINE_PARAM)) {
    261      
     239       
    262240        String []vals = {FIELD_COMBINE_PARAM_AND, FIELD_COMBINE_PARAM_OR, FIELD_COMBINE_PARAM_NOT};
    263241        if (display) {
     
    281259    }
    282260    }
    283 
     261   
    284262
    285263    /** this creates all teh params and appends them to param_list.
     
    375353    }
    376354   
    377     // the components
    378 
    379     //the combiners
    380    
    381 
    382355    if (display) {
    383356        createParameter(FIELD_COMBINE_PARAM, param_list, display, lang);
     
    465438    result.setAttribute(GSXML.FROM_ATT, from);
    466439    result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS);
    467     Element result_content = doc_.createElement(GSXML.CONTENT_ELEM);
    468     result.appendChild(result_content);
    469440   
    470441    // Get the parameters of the request
     
    515486   
    516487    // Create a metadata list to store information about the query results
    517     Element metadata_list = GSXML.addMetaList(doc_, result);
    518 
     488    // should we be using metadataList? or something else?
     489    Element metadata_list = doc_.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);
     490    result.appendChild(metadata_list);
     491   
    519492    // Add a metadata element specifying the number of matching documents
    520493    long totalDocs = mqr.getTotalDocs();
     
    526499    // Create a document list to store the matching documents, and add them
    527500    Vector docs = mqr.getDocs();
    528     Element document_list = doc_.createElement(GSXML.DOCUMENT_ELEM+GSXML.LIST_MODIFIER);
    529     result_content.appendChild(document_list);
     501    Element document_list = doc_.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);
     502    result.appendChild(document_list);
    530503    for (int d = 0; d < docs.size(); d++) {
    531504        long docnum = ((MGPPDocInfo) docs.elementAt(d)).num_;
     
    538511    String query_level = (String)params.get(LEVEL_PARAM); // the current query level
    539512    Element term_list = doc_.createElement(GSXML.TERM_ELEM+GSXML.LIST_MODIFIER);
    540     result_content.appendChild(term_list);
     513    result.appendChild(term_list);
    541514    Vector terms = mqr.getTerms();
    542515    for (int t = 0; t < terms.size(); t++) {
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2MGRetrieve.java

    r3820 r3862  
    102102    result.setAttribute(GSXML.FROM_ATT, from);
    103103    result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS);
    104     Element result_content = doc_.createElement(GSXML.CONTENT_ELEM);
    105     result.appendChild(result_content);
     104    //Element result_content = doc_.createElement(GSXML.CONTENT_ELEM);
     105    //result.appendChild(result_content);
    106106
    107     // Get the parameters of the request
    108     Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);
    109     if (param_list == null) {
    110         System.err.println("GS2Retrieve, DocumentContentRetrieve Error: missing paramList.\n");
    111         return result;  // Return the empty result
    112     }
    113 
    114     String index = default_index_;
    115 
    116     // Process the request parameters
    117     Element param = (Element) param_list.getFirstChild();
    118     while (param != null) {
    119         if (!param.getNodeName().equals(GSXML.PARAM_ELEM)) {
    120         System.err.println("Warning: Non-param in paramList (ignored).");
    121         }
    122         else {
    123         //
    124         if (param.getAttribute(GSXML.NAME_ATT) == INDEX_PARAM) {
    125             index = GSXML.getValue(param);
    126             System.out.println("Index: " + index);
    127         }
    128         }
    129 
    130         param = (Element) param.getNextSibling();
    131     }
     107    // Get the parameters of the request - no parameters at this stage
     108    //Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);
    132109
    133110    // Get the request content
    134     Element content = (Element) GSXML.getChildByTagName(request, GSXML.CONTENT_ELEM);
    135     if (content == null) {
    136         System.err.println("Error: DocumentContentRetrieve request had no content.\n");
     111   
     112    Element query_doc_list = (Element) GSXML.getChildByTagName(request, GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);
     113    if (query_doc_list == null) {
     114        System.err.println("Error: DocumentContentRetrieve request specified no doc nodes.\n");
    137115        return result;
    138116    }
    139 
    140     Element doc_list = doc_.createElement(GSXML.DOCUMENT_ELEM+GSXML.LIST_MODIFIER);
    141     result_content.appendChild(doc_list);
    142 
     117   
     118    Element doc_list = doc_.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);
     119    result.appendChild(doc_list);
     120   
    143121    // The location of the MG index and text files
    144122    String basedir = GSFile.collectionBaseDir(site_home_, cluster_name_)
    145                      + File.separatorChar;  // Needed by MG
     123                          + File.separatorChar;  // Needed by MG
    146124    String textdir = GSFile.collectionTextPath(cluster_name_);
    147     String indexpath = GSFile.collectionIndexPath(cluster_name_, index);
    148 
     125    // index is only needed to start up MG, not used so just use the default index
     126    String indexpath = GSFile.collectionIndexPath(cluster_name_, default_index_);
    149127    mg_src_.setIndex(indexpath);
    150 
     128   
    151129    // Get the documents
    152     String[] doc_ids = GSXML.getDocumentNameList(content);
     130    //String[] doc_ids = GSXML.getDocumentNameList(query_doc_list);
     131    String[] doc_ids = GSXML.getAttributeValuesFromList(query_doc_list,
     132                                GSXML.DOC_NODE_ID_ATT);
    153133    for (int i = 0; i < doc_ids.length; i++) {
    154134        String doc_id = doc_ids[i];
    155135        long doc_num = gdbm_src_.oid2Docnum(doc_id);
    156136        String doc_content = mg_src_.getDocument(basedir, textdir, doc_num);
    157 
    158         // For now, stick it in a text node - eventually should be parsed as xml??
    159         Element doc = GSXML.createDocumentElement(doc_, doc_id);
     137        // Stick it in a text node
     138        Element doc = doc_.createElement(GSXML.DOC_NODE_ELEM);
     139        doc.setAttribute(GSXML.DOC_NODE_ID_ATT, doc_id);
    160140        GSXML.addDocText(doc_, doc, doc_content);
    161141        doc_list.appendChild(doc);
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2MGSearch.java

    r3851 r3862  
    7373
    7474    /** creates a new param element and adds it to the param list */
    75     protected void createParameter(String name, Element param_list, boolean display,
    76                    String lang)
     75    protected void createParameter(String name, Element param_list,
     76                   boolean display, String lang)
    7777    {
    7878    Element param = null;
    79 
     79   
    8080    if (name.equals(INDEX_PARAM)) {
    8181        // the index info - read from config file
     
    144144    result.setAttribute(GSXML.FROM_ATT, from);
    145145    result.setAttribute(GSXML.TYPE_ATT, GSXML.REQUEST_TYPE_PROCESS);
    146     Element result_content = doc_.createElement(GSXML.CONTENT_ELEM);
    147     result.appendChild(result_content);
     146    //Element result_content = doc_.createElement(GSXML.CONTENT_ELEM);
     147    //result.appendChild(result_content);
    148148
    149149    // Get the parameters of the request
     
    189189
    190190    // Create a metadata list to store information about the query results
    191     Element metadata_list = GSXML.addMetaList(doc_, result);
     191    Element metadata_list = doc_.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);
     192    result.appendChild(metadata_list);
    192193
    193194    // Add a metadata element specifying the number of matching documents
     
    198199
    199200    // Create a document list to store the matching documents, and add them
    200     Element document_list = doc_.createElement(GSXML.DOCUMENT_ELEM+GSXML.LIST_MODIFIER);
    201     result_content.appendChild(document_list);
     201    Element document_list = doc_.createElement(GSXML.DOC_NODE_ELEM+GSXML.LIST_MODIFIER);
     202    result.appendChild(document_list);
    202203    for (int d = 0; d < docs.size(); d++) {
    203204        long docnum = ((MGDocInfo) docs.elementAt(d)).num_;
     
    209210    // Create a term list to store the term information, and add it
    210211    Element term_list = doc_.createElement(GSXML.TERM_ELEM+GSXML.LIST_MODIFIER);
    211     result_content.appendChild(term_list);
     212    result.appendChild(term_list);
    212213    Vector terms = mqr.getTerms();
    213214    for (int t = 0; t < terms.size(); t++) {
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2Search.java

    r3851 r3862  
    2626// XML classes
    2727import org.w3c.dom.Element;
     28import org.w3c.dom.NodeList;
    2829
    2930
     
    128129    Element param=null;
    129130
    130     if (name.equals(CASE_PARAM)) {
     131    if (name.equals(INDEX_PARAM)) {
     132        // the index info - read from config file
     133        Element index_list = (Element)GSXML.getChildByTagName(config_info_, INDEX_ELEM+GSXML.LIST_MODIFIER);
     134        NodeList indexes = index_list.getElementsByTagName(INDEX_ELEM);
     135        int len = indexes.getLength();
     136        if (len > 1) { // add index param to list only if more than one index specified
     137        String [] inds  = new String[len];
     138        String [] ind_names = new String[len];
     139        for (int i=0; i<len; i++) {
     140            inds[i] = ((Element)indexes.item(i)).getAttribute(GSXML.NAME_ATT);
     141            if (display) {
     142            Element disp = (Element)GSXML.getChildByTagName(indexes.item(i), GSXML.DISPLAY_ELEM);
     143            ind_names[i] = GSXML.getDisplayText(disp, GSXML.DISPLAY_NAME_ELEM, lang, "en");
     144            }
     145        }
     146        if (display) {
     147            param = GSXML.createParameterDisplay(doc_, INDEX_PARAM, getTextString("param."+INDEX_PARAM, lang), inds, ind_names);
     148        } else {
     149            param = GSXML.createParameter(doc_, INDEX_PARAM, GSXML.PARAM_TYPE_ENUM_SINGLE, default_index_, inds);
     150        }
     151        }
     152    } else if (name.equals(CASE_PARAM)) {
    131153        if (display) {
    132154        String[] bool_ops = {"0", "1"};
Note: See TracChangeset for help on using the changeset viewer.