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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 */
Note: See TracChangeset for help on using the changeset viewer.