Changeset 4903 for trunk/gsdl3


Ignore:
Timestamp:
2003-07-11T16:29:16+12:00 (21 years ago)
Author:
kjdon
Message:

tidied up a lot of stuff, particularly the display text stuff, including how its formatted, and some of the service rack methods

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  
    8484
    8585    // 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
    10491
    10592    // Configure GATE for use
     
    141128    }
    142129
    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;
    159145    }
    160146
     
    162148    /** creates a new param element and adds it to the param list */
    163149    protected void createParameter(String name, Element param_list,
    164                    boolean display, String lang)
     150                   String lang)
    165151    {
    166152    Element param = null;
    167153
    168154    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);
    177159        }
    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);
    181163    }
    182164   
    183     // Add the parameter to the list
    184     if (param != null) {
    185         param_list.appendChild(param);
    186     }   
    187     }
    188 
    189 
     165    }
     166   
     167   
    190168    protected Element processGatePOSTag(Element request)
    191169    {
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2Construct.java

    r4853 r4903  
    7777    }
    7878
    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 stuff
    82     return short_service_info_;
    83     }
    84 
    8579    /** returns a specific service description */
    8680    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   
    11191    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);
    12099        String[] types = {BUILDTYPE_MGPP, BUILDTYPE_MG};
    121100        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;
    137118   
    138119    }
     
    382363    short_service_info_.appendChild(e);
    383364
    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);
    456369
    457370
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2MGPPSearch.java

    r4709 r4903  
    5454
    5555    // extra parameters used
     56    private static final String INDEX_FIELD_PARAM = "index";
    5657    private static final String LEVEL_PARAM = "level";
    5758    private static final String RANK_PARAM = "sortBy";
     
    7778    private MGPPWrapper mgpp_src_=null;
    7879
     80    // the default level for retrieval - and we'll use it for searching too
    7981    private String default_level_=null;
    8082   
     
    124126    // else set up the fielded query services
    125127   
    126     // set up short_service_info_ - for now just has name and type
     128    // set up short_service_info_ - for now just has id and type - name will be added in on teh fly
    127129    Element fq_service = doc_.createElement(GSXML.SERVICE_ELEM);
    128130    fq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY);
    129131    fq_service.setAttribute(GSXML.NAME_ATT, FIELD_QUERY_SERVICE);
    130132    short_service_info_.appendChild(fq_service);
    131 
     133   
    132134    Element afq_service = doc_.createElement(GSXML.SERVICE_ELEM);
    133135    afq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY);
    134136    afq_service.setAttribute(GSXML.NAME_ATT, ADVANCED_FIELD_QUERY_SERVICE);
    135137    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   
    151139
    152140    //set up format info - the info is the same as that for text query
     
    159147    }
    160148
    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) {
    164174    Element param=null;
    165175   
    166     if (name.equals(LEVEL_PARAM)) {
     176    if (id.equals(LEVEL_PARAM)) {
    167177        // the level info - read from config file
    168178        Element level_list = (Element)GSXML.getChildByTagName(config_info_, LEVEL_ELEM+GSXML.LIST_MODIFIER);
     
    174184        for (int i=0; i<len; i++) {
    175185            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           
    179188        }
    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)) {
    187194        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)};
    190196       
    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)) {
    223209       
    224210        // the field list -  read from config file
     
    226212        NodeList fields = field_list.getElementsByTagName(GSXML.FIELD_ELEM);
    227213        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];
    235216        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);
    246222       
    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)};
    249230       
    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");
    256234       
    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   
    266238    // add the param to the list
    267239    if (param !=null) {
     
    269241    }
    270242    else {
    271         super.createParameter(name, param_list, display, lang);
    272     }
    273     }
    274     
     243        super.createParameter(id, param_list, lang);
     244    }
     245    }
     246   
    275247
    276248    /** this creates all teh params and appends them to param_list.
     
    279251     */
    280252    protected boolean createTextQueryParamList(Element param_list,
    281                            boolean display,
     253                           
    282254                           String lang)
    283255    {
    284256    // the order they are specified here is the order they appear on
    285257    // 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);
    294267
    295268    return true;
    296269    }
    297270
    298 
    299     // for now, the field queries just use the default index.
    300     // however, it is entirely possible to create two indexes with different
    301     // metadata. then you run into problems with displaying the form - you
    302     // need to use javascript to change teh field and maybe level lists
    303     // depending on which index is selected, or have the index preselected
    304     // before going to the query form
    305271
    306272
     
    309275     * otherwise it creates the description version
    310276     */
    311     protected boolean createFieldQueryParamList(Element param_list, boolean display,
     277    protected boolean createFieldQueryParamList(Element param_list,
    312278                        String lang)
    313279    {
    314280    // 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);
    322288
    323289    // create a multi param for the fields etc
     
    325291    Element multiparam = null;
    326292    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   
    335297    // 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   
    343301    return true;
    344302    }
    345303
    346     protected boolean createAdvancedFieldQueryParamList(Element param_list, boolean display,
     304    protected boolean createAdvancedFieldQueryParamList(Element param_list,
    347305                            String lang) {
    348306
    349307    // 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);
    354312
    355313
     
    360318    Element param=null;
    361319
    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   
    384330
    385331    return true;
    386332    }
    387333
    388 
    389     /** creates a display element containing all the text strings needed to display
    390     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 service
    394     Element display = super.createServiceDisplay(service, lang);
    395 
    396     // Now add MGPP's special services
    397     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    
    407334    // the following three functions are needed so the base class can
    408335    // call the process+SERVICE_NAME methods
     
    469396    }
    470397
    471     // If an index hasn't been specified, use the default
    472     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   
    477404    // set up mgpp_src
    478405    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_);
    480407    mgpp_src_.loadIndexData(indexdir);
    481408    setStandardQueryParams(params);
     
    483410    // if field search, create the query string
    484411    switch (query_type) {
     412    case TEXT_QUERY:
     413        query = addFieldInfo(query, field);
     414        break;
    485415    case SIMPLE_QUERY:
    486416        query = parseFieldQueryParams(params);
     
    532462        term_elem.setAttribute(FREQ_ATT, "" + term_info.term_freq_);
    533463        term_elem.setAttribute(NUM_DOCS_MATCH_ATT, "" + term_info.match_docs_);
    534         String field = term_info.tag_;
     464        field = term_info.tag_;
    535465        if (field.equals(query_level)) {
    536466        // ignore
     
    596526    }
    597527
     528    protected String addFieldInfo(String query, String field) {
     529    if (field.equals("") || field.equals("ZZ")) {
     530        return query;
     531    }
     532    return "["+query+"]:"+field;
     533    }
    598534    /** combines all the field params into a single query
    599535     * - for simple field query */
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2MGSearch.java

    r4012 r4903  
    6262     * otherwise it creates the description version
    6363     */
    64     protected boolean createTextQueryParamList(Element param_list, boolean display,
     64    protected boolean createTextQueryParamList(Element param_list,
    6565                           String lang)
    6666    {
    6767    // the order they are specified here is the order they appear on
    6868    // 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);
    7575
    7676    return true;
    77     }
    78 
    79 
    80     /** Creates a display element containing all the text strings needed to display
    81     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 service
    85     return super.createServiceDisplay(service, lang);
    8677    }
    8778
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2Retrieve.java

    r4861 r4903  
    7575
    7676    protected GDBMWrapper gdbm_src_ = null;
    77    
    7877    protected Element config_info_ = null; // the xml from the config file
    7978
     
    106105    dcr_service.setAttribute(GSXML.NAME_ATT, DOCUMENT_CONTENT_RETRIEVE_SERVICE);
    107106    short_service_info_.appendChild(dcr_service);
    108 
    109     // set up service_info_map_ - for now, just has the same elements as above
    110     // 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);
    114107
    115108    // Open GDBM database for querying
     
    146139        short_service_info_.appendChild(cbmr_service);
    147140
    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 one
    155     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    
    159141    // the format info
    160142    Element cb_format_info = doc_.createElement(GSXML.FORMAT_ELEM);
     
    166148        Element new_cl = (Element)doc_.importNode(cl, false); // just import this node, not the children
    167149       
    168         cl_list.appendChild(new_cl);
    169 
    170150        // get the format info out, and put inside a classifier element
    171151        Element format_cl = (Element)new_cl.cloneNode(false);
     
    185165    }
    186166       
    187    
    188     service_info_map_.put(CLASSIFIER_SERVICE, cb_service_info);
    189167    if (format_found) {
    190168        format_info_map_.put(CLASSIFIER_SERVICE, cb_format_info);
     
    201179    return true;
    202180    }
    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
    204255    /** this looks for any classifier specific display or format info from extra_info and adds it in to the correct place in info */
    205256    protected boolean extractExtraClassifierInfo(Element info, Element extra_info) {
     
    227278       
    228279        // get the display elements if any - displayName
    229         NodeList display_names = node_extra.getElementsByTagName(GSXML.DISPLAYNAME_ELEM);
     280        NodeList display_names = node_extra.getElementsByTagName(GSXML.DISPLAY_TEXT_ELEM);
    230281        if (display_names !=null) {
    231282        Element display = owner.createElement(GSXML.DISPLAY_ELEM);
    232283        for (int j=0; j<display_names.getLength(); j++) {
    233284            Element e = (Element)display_names.item(j);
     285            cl.appendChild(owner.importNode(e, true));
    234286           
    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        }
    240288        }
    241289       
     
    253301    }
    254302       
    255 
    256     /** creates a display element containing all the text strings needed to display the service page, in the language specified
    257      * the retrieval services dont get displayed to the users - they are only used internally by the actions. so this returns an empty display element
    258      * 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_SERVICE
    267     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 info
    271     // add <classifier name="CL1">text name</classifier> to the
    272     // display node
    273     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 name
    285         // for now this looks in the class properties file
    286         // this needs to use a general metadata thing instead
    287         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     }
    302303
    303304    /** parent is true if this node is definitely the  parent of something,
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/GS2Search.java

    r4862 r4903  
    9999    }
    100100
    101     // these entries should reflect the build config file - some services may not be available depending on how the colleciton was built.
    102     // set up short_service_info_ - for now just has name and type
     101    // 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.
    103103    Element tq_service = doc_.createElement(GSXML.SERVICE_ELEM);
    104104    tq_service.setAttribute(GSXML.TYPE_ATT, GSXML.SERVICE_TYPE_QUERY);
     
    106106    short_service_info_.appendChild(tq_service);
    107107
    108     // set up service_info_map_ - for now, just has the same elements as above
    109     // 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);
    115108
    116109    // Open GDBM database for querying
     
    130123    }
    131124
    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   
    133142    protected boolean addExtraQueryInfo(Element info, Element extra_info){
    134143
     
    155164       
    156165        // get the display elements if any - displayName
    157         NodeList display_names = node_extra.getElementsByTagName(GSXML.DISPLAYNAME_ELEM);
     166        NodeList display_names = node_extra.getElementsByTagName(GSXML.DISPLAY_TEXT_ELEM);
    158167        if (display_names !=null) {
    159         Element display = owner.createElement(GSXML.DISPLAY_ELEM);
    160168        for (int j=0; j<display_names.getLength(); j++) {
    161169            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));
    166171        }
    167         ind.appendChild(display);
    168172        }
    169173    } // for each index
     
    181185/** creates a new param element and adds it to the param list */
    182186    protected void createParameter(String name, Element param_list,
    183                    boolean display, String lang)
     187                   /*boolean display,*/ String lang)
    184188    {
    185189    Element param=null;
    186 
     190   
    187191    if (name.equals(INDEX_PARAM)) {
    188192        // the index info - read from config file
     
    194198        String [] ind_names = new String[len];
    195199        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       
    201204        }
    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    }
    225213    else if (name.equals(MATCH_PARAM)) {
    226214        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       
    234218    }
    235219    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       
    241222    }
    242223    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   
    250228    // add the param to the list
    251229    if (param != null) {
     
    260238     */
    261239    protected abstract boolean createTextQueryParamList(Element param_list,
    262                             boolean display,
    263240                            String lang);
    264 
    265     /** creates a display element containing all the text strings needed to display
    266     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 service
    270     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 params
    275     if (service.equals(TEXT_QUERY_SERVICE)) {
    276         createTextQueryParamList(display, true, lang);
    277     }
    278 
    279     return display;
    280     }
    281 
    282241
    283242    /** Creates a new documentNode element containing ID, node type
     
    293252    DBInfo info = gdbm_src_.getInfo(node_id);
    294253    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         }
    300254        doc_node.setAttribute(GSXML.DOC_TYPE_ATT, "simple");
    301255        return doc_node;
     
    304258    boolean is_leaf = (children.equals("") ? true : false);
    305259
     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    }
    306265    // set teh node type att
    307266    if (is_top) {
     
    312271        doc_node.setAttribute(GSXML.NODE_TYPE_ATT, GSXML.NODE_TYPE_INTERIOR);
    313272    }
    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   
    321274    if (!is_top) { // we need to look at the top info
    322275        info = gdbm_src_.getInfo(top_id);
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/PhindPhraseBrowse.java

    r4246 r4903  
    4444    private MGPPWrapper mgpp_src_=null;
    4545    private String basepath_ = null;
     46
     47    private Element applet_description = null;
     48   
    4649    public PhindPhraseBrowse() {
    4750    mgpp_src_ = new MGPPWrapper();
     
    6871    short_service_info_.appendChild(e);
    6972
    70     // set up service_info_map_ - we only have one element, and it has
    71     // 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);
    7578
    7679    // add in the applet info for the phind applet
     
    8790    Document dom = converter_.getDOM(app_info);
    8891    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));
    9293   
    9394    return true;
    9495    }
    9596
    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;
    104104    }
    105105
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/ServiceRack.java

    r4142 r4903  
    7979    protected Document doc_ = null;
    8080
    81     /** XML element for describe requests - list of supported services */
     81    /** XML element for describe requests - list of supported services
     82    - this is static     */
    8283    protected Element short_service_info_ = null;
    8384
    84     /** XML element for describe requests - map of service name to full
    85     description */
    86     protected HashMap service_info_map_ = null;
    8785    /** XML element for stylesheet requests - map of service name to format
    8886    elem */
     
    117115    doc_ = converter_.newDOM();
    118116    short_service_info_ = doc_.createElement(GSXML.SERVICE_ELEM+GSXML.LIST_MODIFIER);
    119     service_info_map_ = new HashMap();
    120117    format_info_map_ = new HashMap();
    121118    }
     
    191188        String to = GSPath.getFirstLink(request.getAttribute(GSXML.TO_ATT));       
    192189        Element response = null;
    193         if (service_info_map_.containsKey(to)) {
    194             try {
     190        try {
    195191            Class c = this.getClass();
    196192            Class []params = {Class.forName("org.w3c.dom.Element")};
    197 
     193           
    198194            String method_name = "process"+to;
    199195            Method m = null;
     
    226222            mainResult.appendChild(doc_.importNode(response, true));
    227223            }
    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");
    236227            return null;
    237228        }
     
    242233       
    243234    }
     235
     236 
    244237
    245238    /** process method for describe requests
     
    258251   
    259252    // 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);
    262257        response.setAttribute(GSXML.FROM_ATT, to);
    263         return response;
    264258    }
    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;
    268260   
    269261    }
     
    288280        return response;
    289281    }
    290     // else error in to field
     282    // else no format info
    291283    System.err.println("ServiceRack describe request: no format info for "+to+".");
    292284    return response;
    293285    }   
    294286   
    295     // the following two should be overwritten for info with any language stuff in it
    296287    /** returns the service list for the subclass */
    297288    protected Element getServiceList(String lang) {
    298     // for now, it is static and there is no lang stuff
    299     return short_service_info_;
     289    // for now, it is static and has no language stuff
     290    return (Element) short_service_info_.cloneNode(true);
    300291    }
    301292   
    302293    /** 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);
    320295
    321296    protected Element getServiceFormat(String service) {
     
    323298    return format;
    324299    }
    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);
    327300
    328301    /** overloaded version for no args case */
     
    345318    return result;
    346319    }
     320
     321   
    347322}
     323
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/service/XSLTServices.java

    r4012 r4903  
    119119  }
    120120
    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    }
    128125 
    129126  /** process method for specific services - must be implemented by all
Note: See TracChangeset for help on using the changeset viewer.