Changeset 4942


Ignore:
Timestamp:
2003-07-16T13:50:18+12:00 (21 years ago)
Author:
kjdon
Message:

some coll metadata is now displayItems instead, so the configuration and processing has to take that into account

Location:
trunk/gsdl3/src/java/org/greenstone/gsdl3/collection
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/collection/Collection.java

    r4105 r4942  
    5151
    5252    public Collection() {
    53     this.service_map = new HashMap();
    54     this.converter = new XMLConverter();
    55     this.transformer = new XMLTransformer();
    56     this.doc = this.converter.newDOM();
     53    super();
    5754    this.description = this.doc.createElement(GSXML.COLLECTION_ELEM);
    5855   
     
    8279        return false;
    8380    }
    84     // process the metadata
    85     findAndLoadMetadata(coll_config_xml, build_config_xml);
    86 
     81    // process the metadata and display items
     82    findAndLoadInfo(coll_config_xml, build_config_xml);
     83   
    8784    // now do the services 
    8885    Element service_list = (Element)GSXML.getChildByTagName(build_config_xml, GSXML.SERVICE_CLASS_ELEM+GSXML.LIST_MODIFIER);
     
    127124
    128125    /**
    129      * find the metadata from the two config files and add it to a new
    130      * metadata list 
     126     * find the metadata and display elems from the two config files and add it to the appropriate lists
    131127     */
    132     protected boolean findAndLoadMetadata(Element coll_config_xml,
    133                       Element build_config_xml){
     128    protected boolean findAndLoadInfo(Element coll_config_xml,
     129                      Element build_config_xml){
    134130
    135     this.metadata_list = this.doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);
     131    // metadata
    136132    Element meta_list = (Element)GSXML.getChildByTagName(coll_config_xml, GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);
    137133    addMetadata(meta_list);
     
    142138    GSXML.addMetadata(this.doc, meta_list, "httpPath", this.site_http_address+"/collect/"+this.cluster_name);
    143139    addMetadata(meta_list);
     140
     141    // display stuff
     142    Element display_list = (Element)GSXML.getChildByTagName(coll_config_xml, GSXML.DISPLAY_TEXT_ELEM+GSXML.LIST_MODIFIER);
     143    if (display_list != null) {
     144        addDisplayItems(display_list);
     145    }
    144146    return true;
    145147
     
    164166    }
    165167
    166     if (subset.equals(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER)) {
    167         return findAndLoadMetadata(coll_config_elem, build_config_elem);
     168    if (subset.equals(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER) || subset.equals(GSXML.DISPLAY_TEXT_ELEM+GSXML.LIST_MODIFIER)) {
     169        return findAndLoadInfo(coll_config_elem, build_config_elem);
    168170       
    169171    }
  • trunk/gsdl3/src/java/org/greenstone/gsdl3/collection/ServiceCluster.java

    r4280 r4942  
    7373    /** list of services */
    7474    protected Element service_list = null;
    75     /** list of Metadata - lang independent */
     75    /** list of metadata - all metadata, regardless of language goes in here */
    7676    protected Element metadata_list = null;
    7777    /** language specific stuff */
    78     protected Element lang_specific_metadata_list = null;
     78    //protected Element lang_specific_metadata_list = null;
     79    protected Element display_item_list = null;
    7980    /** the element that will have any descriptions passed back in */
    8081    protected Element description = null;
     
    102103    this.doc = this.converter.newDOM();
    103104    this.description = this.doc.createElement(GSXML.CLUSTER_ELEM);
    104    
     105    this.display_item_list = this.doc.createElement(GSXML.DISPLAY_TEXT_ELEM+GSXML.LIST_MODIFIER);
    105106    }
    106107
     
    147148    public boolean configure(Element service_cluster_info) {
    148149   
    149     // do the metadata
    150     this.metadata_list = this.doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);
    151150    // get the metadata - for now just add it to the list
    152151    Element meta_list = (Element) GSXML.getChildByTagName(service_cluster_info, GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);
     
    157156        }
    158157    }
     158
     159    // get the display info
     160    Element display_list = (Element) GSXML.getChildByTagName(service_cluster_info, GSXML.DISPLAY_TEXT_ELEM+GSXML.LIST_MODIFIER);
     161    if (display_list !=null) {
     162        if (!addDisplayItems(display_list)) {
     163       
     164        System.err.println("couldn't configure the display items");
     165        }
     166    }
     167   
    159168
    160169    // do the service racks
     
    166175    } else {
    167176       
    168         boolean result = configureServiceRack(service_rack_list, null);
    169         if (result == false) {
     177        if (!configureServiceRack(service_rack_list, null)) {
    170178        System.err.println("couldn't configure the  service racks!!");
    171179        return false;
     
    177185   
    178186    /** adds metadata from a metadataList into the metadata_list xml
    179      * language independent stuff goes inot the main list, lang dependent stuff
    180      * goes into a separate element, like:
    181      * <metadataList><metadata name="Title"><metadata name="Title" lang="en">xxx</metadata><metadata name="Title" lang="fr">yyy</metadata></metadata></metadataList>
    182      * this is a bit wasteful on space but is the easiest to process (that I've thought of so far)
    183187     */
    184188    protected boolean addMetadata(Element metadata_list) {
    185189   
    186     NodeList metanodes = metadata_list.getElementsByTagName(GSXML.METADATA_ELEM);
    187     if (metanodes.getLength()>0) { 
    188         for(int k=0; k<metanodes.getLength(); k++) {
    189         Element m = (Element) metanodes.item(k);
    190         String lang = m.getAttribute(GSXML.LANG_ATT);
     190    if (this.metadata_list == null) {
     191        this.metadata_list = (Element)this.doc.importNode(metadata_list, true);
     192    } else {
     193       
     194        NodeList metanodes = metadata_list.getElementsByTagName(GSXML.METADATA_ELEM);
     195        if (metanodes.getLength()>0) { 
     196        for(int k=0; k<metanodes.getLength(); k++) {
     197            this.metadata_list.appendChild(this.doc.importNode(metanodes.item(k), true));
     198        }
     199        }
     200    }
     201    return true;
     202    }
     203
     204    protected boolean addDisplayItems(Element display_list) {
     205   
     206    NodeList displaynodes = display_list.getElementsByTagName(GSXML.DISPLAY_TEXT_ELEM);
     207    if (displaynodes.getLength()>0) {   
     208        for(int k=0; k<displaynodes.getLength(); k++) {
     209        Element d = (Element) displaynodes.item(k);
     210        String lang = d.getAttribute(GSXML.LANG_ATT);
    191211        if (lang==null||lang.equals("")) {
    192             // just add it to the normal list
    193             this.metadata_list.appendChild(this.doc.importNode(m,true));
    194         } else {
    195             String name = m.getAttribute(GSXML.NAME_ATT);
    196             // add it to the lang-dependent list
    197             if (this.lang_specific_metadata_list == null) {
    198             this.lang_specific_metadata_list = this.doc.createElement(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER);
    199             }
    200             Element this_meta = GSXML.getNamedElement(this.lang_specific_metadata_list, GSXML.METADATA_ELEM, GSXML.NAME_ATT, name);
    201             if (this_meta==null) {
    202             this_meta = this.doc.createElement(GSXML.METADATA_ELEM);
    203             this_meta.setAttribute(GSXML.NAME_ATT, name);
    204             this.lang_specific_metadata_list.appendChild(this_meta);
    205             }
     212            //set the lang to teh default
     213            d.setAttribute(GSXML.LANG_ATT, DEFAULT_LANG);
     214        }
     215        String name = d.getAttribute(GSXML.NAME_ATT);
     216        System.out.println("adding display named "+name);
     217        Element this_item = GSXML.getNamedElement(this.display_item_list, GSXML.DISPLAY_TEXT_ELEM, GSXML.NAME_ATT, name);
     218        if (this_item==null) {
     219            this_item = this.doc.createElement(GSXML.DISPLAY_TEXT_ELEM);
     220            this_item.setAttribute(GSXML.NAME_ATT, name);
     221            this.display_item_list.appendChild(this_item);
     222        }
     223       
     224        this_item.appendChild(this.doc.importNode(d, true));
    206225           
    207             this_meta.appendChild(this.doc.importNode(m, true));
    208            
    209         }
    210         }
    211     }       
     226       
     227        }
     228    }
     229   
    212230    return true;
    213231    }
     
    369387        Element param_list = (Element) GSXML.getChildByTagName(request, GSXML.PARAM_ELEM+GSXML.LIST_MODIFIER);
    370388        if (param_list == null) {
     389        addAllDisplayInfo(description, lang);
    371390        description.appendChild(this.service_list);
    372         description.appendChild(oneLanguageMetadata( lang));
     391        description.appendChild(this.metadata_list);
    373392        return response;
    374393        }
     
    385404            description.appendChild(this.service_list);
    386405            } else if (info.equals(GSXML.METADATA_ELEM+GSXML.LIST_MODIFIER)) {
    387             description.appendChild(oneLanguageMetadata(lang));
    388             }
     406            description.appendChild(metadata_list);
     407            } else if (info.equals(GSXML.DISPLAY_TEXT_ELEM+GSXML.LIST_MODIFIER)) {
     408            addAllDisplayInfo(description, lang);
     409           
     410            }
    389411        }
    390412        }
     
    502524    }
    503525
    504     /** takes a metadata list and deletes any items that are not in the right lang, if there is a correct one present.
    505      * its a bit of a hack */
    506     protected Element oneLanguageMetadata(String lang) {
    507    
    508     Element meta_list = (Element)this.metadata_list.cloneNode(true);
    509     // go through and add lang dependent ones unwanted elements
    510     if (this.lang_specific_metadata_list==null) {
    511         return meta_list;
    512     }
    513     NodeList metas = this.lang_specific_metadata_list.getChildNodes();
    514     for (int i=0; i<metas.getLength(); i++) {
    515         Element m = (Element) metas.item(i);
     526
     527    protected boolean addAllDisplayInfo(Element description, String lang) {
     528   
     529    NodeList items = this.display_item_list.getChildNodes();
     530    for (int i=0; i<items.getLength(); i++) { // for each key
     531        Element m = (Element) items.item(i);
    516532        // find the child with the correct language
    517         Element new_m = GSXML.getNamedElement(m, GSXML.METADATA_ELEM, GSXML.LANG_ATT, lang);
    518         if (new_m==null) {
     533        Element new_m = GSXML.getNamedElement(m, GSXML.DISPLAY_TEXT_ELEM, GSXML.LANG_ATT, lang);
     534        if (new_m==null && lang != DEFAULT_LANG) {
    519535        // use the default lang
    520         new_m = GSXML.getNamedElement(m, GSXML.METADATA_ELEM, GSXML.LANG_ATT, DEFAULT_LANG);
     536        new_m = GSXML.getNamedElement(m, GSXML.DISPLAY_TEXT_ELEM, GSXML.LANG_ATT, DEFAULT_LANG);
    521537        }
    522538        if (new_m==null) {
    523539        // just get the first one
    524         new_m = (Element)GSXML.getChildByTagName(m, GSXML.METADATA_ELEM);
    525         }
    526         meta_list.appendChild(this.doc.importNode(new_m, true));
    527     }
    528     return meta_list;
     540        new_m = (Element)GSXML.getChildByTagName(m, GSXML.DISPLAY_TEXT_ELEM);
     541        }
     542        description.appendChild(new_m.cloneNode(true));
     543    }
     544    return true;
     545   
     546    }
     547
     548   
     549    protected Element getDisplayTextElement(String key, String lang) {
     550   
     551    Element this_item = GSXML.getNamedElement(this.display_item_list, GSXML.DISPLAY_TEXT_ELEM, GSXML.NAME_ATT, key);
     552    if (this_item == null) {
     553        return null;
     554    }
     555
     556    Element this_lang = GSXML.getNamedElement(this_item, GSXML.DISPLAY_TEXT_ELEM, GSXML.LANG_ATT, lang);
     557    if (this_lang == null && lang != DEFAULT_LANG) {
     558        // try the default
     559        this_lang = GSXML.getNamedElement(this_item, GSXML.DISPLAY_TEXT_ELEM, GSXML.LANG_ATT, DEFAULT_LANG);
     560    }
     561    if (this_lang == null) {
     562        // just return the first one
     563        return (Element)this_item.getFirstChild().cloneNode(true);
     564    }
     565    return (Element)this_lang.cloneNode(true);
    529566   
    530567    }
Note: See TracChangeset for help on using the changeset viewer.