Changeset 5087


Ignore:
Timestamp:
2003-08-04T11:44:06+12:00 (21 years ago)
Author:
jmt12
Message:

Made special collection metadata their own elements in order to ensure correct ordering. Also fixed slight bug when retrieving mgpp indexes.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gli/src/org/greenstone/gatherer/cdm/CollectionConfiguration.java

    r5037 r5087  
    224224        return self.metadataToString(command_element);
    225225    }
     226    else if(command_element_name.equals(COLLECTIONMETADATA_CREATOR_ELEMENT)) {
     227        return self.metadataToString(command_element);
     228    }
     229    else if(command_element_name.equals(COLLECTIONMETADATA_MAINTAINER_ELEMENT)) {
     230        return self.metadataToString(command_element);
     231    }
     232    else if(command_element_name.equals(COLLECTIONMETADATA_PUBLIC_ELEMENT)) {
     233        return self.metadataToString(command_element);
     234    }
     235    else if(command_element_name.equals(COLLECTIONMETADATA_BETA_ELEMENT)) {
     236        return self.metadataToString(command_element);
     237    }
    226238    else if(command_element_name.equals(PLUGIN_ELEMENT)) {
    227239        return self.pluginToString(command_element, show_extracted_namespace);
     
    290302    static final private String EXTRACTED_PREFIX = Utility.EXTRACTED_METADATA_NAMESPACE + MSMUtils.NS_SEP;
    291303    /** Gives the preferred ordering of commands */
    292     static final private String[] COMMAND_ORDER = {StaticStrings.COLLECTIONMETADATA_ELEMENT, StaticStrings.SEARCHTYPE_ELEMENT, StaticStrings.PLUGIN_ELEMENT, StaticStrings.INDEXES_ELEMENT, StaticStrings.LEVELS_ELEMENT, StaticStrings.INDEX_DEFAULT_ELEMENT, StaticStrings.LANGUAGES_ELEMENT, StaticStrings.LANGUAGE_DEFAULT_ELEMENT, StaticStrings.SUBCOLLECTION_ELEMENT, StaticStrings.SUBCOLLECTION_INDEXES_ELEMENT, StaticStrings.SUBCOLLECTION_DEFAULT_INDEX_ELEMENT, StaticStrings.SUPERCOLLECTION_ELEMENT, StaticStrings.CLASSIFY_ELEMENT, StaticStrings.FORMAT_ELEMENT, StaticStrings.COLLECTIONMETADATA_ELEMENT};
     304    static final private String[] COMMAND_ORDER = {StaticStrings.COLLECTIONMETADATA_CREATOR_ELEMENT, StaticStrings.COLLECTIONMETADATA_MAINTAINER_ELEMENT, StaticStrings.COLLECTIONMETADATA_PUBLIC_ELEMENT, StaticStrings.COLLECTIONMETADATA_BETA_ELEMENT, StaticStrings.SEARCHTYPE_ELEMENT, StaticStrings.PLUGIN_ELEMENT, StaticStrings.INDEXES_ELEMENT, StaticStrings.LEVELS_ELEMENT, StaticStrings.INDEX_DEFAULT_ELEMENT, StaticStrings.LANGUAGES_ELEMENT, StaticStrings.LANGUAGE_DEFAULT_ELEMENT, StaticStrings.SUBCOLLECTION_ELEMENT, StaticStrings.SUBCOLLECTION_INDEXES_ELEMENT, StaticStrings.SUBCOLLECTION_DEFAULT_INDEX_ELEMENT, StaticStrings.SUPERCOLLECTION_ELEMENT, StaticStrings.CLASSIFY_ELEMENT, StaticStrings.FORMAT_ELEMENT, StaticStrings.COLLECTIONMETADATA_ELEMENT};
    293305
    294306    /** ************************** Public Data Members ***************************/
     
    335347    }
    336348
     349    public Element getBeta() {
     350    Element element = getOrCreateElementByTagName(COLLECTIONMETADATA_BETA_ELEMENT, null, null);
     351    element.setAttribute(SPECIAL_ATTRIBUTE, TRUE_STR);
     352    return element;
     353    }
     354
     355    public Element getCreator() {
     356    Element element = getOrCreateElementByTagName(COLLECTIONMETADATA_CREATOR_ELEMENT, null, null);
     357    element.setAttribute(SPECIAL_ATTRIBUTE, TRUE_STR);
     358    return element;
     359    }
     360
    337361    public Element getDocumentElement() {
    338362    return document.getDocumentElement();
     
    352376    }
    353377
     378    public Element getMaintainer() {
     379    Element element = getOrCreateElementByTagName(COLLECTIONMETADATA_MAINTAINER_ELEMENT, null, null);
     380    element.setAttribute(SPECIAL_ATTRIBUTE, TRUE_STR);
     381    return element;
     382    }
     383
    354384    /** Retrieve or create the indexes Element. Note that this method behaves differently from the other getBlah methods, in that it also has to keep in mind that indexes come in two flavours, MG and MGPP. */
    355385    public Element getMGIndexes() {
     
    361391    }
    362392
     393    public Element getPublic() {
     394    Element element = getOrCreateElementByTagName(COLLECTIONMETADATA_PUBLIC_ELEMENT, null, null);
     395    element.setAttribute(SPECIAL_ATTRIBUTE, TRUE_STR);
     396    return element;
     397    }
     398
    363399    /** Retrieve or create the searchtype element. */
    364400    public Element getSearchType() {
    365     return getOrCreateElementByTagName(SEARCHTYPE_ELEMENT, null, null);
     401    ///ystem.err.println("Get or create element by tag name: " + name);
     402    Element document_element = document.getDocumentElement();
     403    NodeList elements = document_element.getElementsByTagName(SEARCHTYPE_ELEMENT);
     404    int elements_length = elements.getLength();
     405    if(elements_length > 0) {
     406        document_element = null;
     407        return (Element) elements.item(0);
     408    }
     409    // Create the element
     410    Element element = document.createElement(SEARCHTYPE_ELEMENT);
     411    Node target_node = findInsertionPoint(element);
     412    if(target_node != null) {
     413        document_element.insertBefore(element, target_node);
     414    }
     415    else {
     416        document_element.appendChild(element);
     417    }
     418    document_element = null;
     419    // Append a default search type node - form
     420    Element a_searchtype_element = CollectionDesignManager.collect_config.document.createElement(CollectionConfiguration.CONTENT_ELEMENT);
     421    a_searchtype_element.setAttribute(CollectionConfiguration.NAME_ATTRIBUTE, SearchTypeManager.SEARCH_TYPES[0]);
     422    element.appendChild(a_searchtype_element);
     423    return element;
    366424    }
    367425
     
    415473            }
    416474            // Anything else we write to file, but only if it has been assigned, the exception being the Indexes element which just get commented if unassigned (a side effect of MG && MGPP compatibility)
    417             else if(!command_element.getAttribute(ASSIGNED_ATTRIBUTE).equals(FALSE_STR) || command_element.getNodeName().equals(INDEXES_ELEMENT)){
     475            else if(!command_element.getAttribute(ASSIGNED_ATTRIBUTE).equals(FALSE_STR) || command_element.getNodeName().equals(INDEXES_ELEMENT) || command_element.getNodeName().equals(INDEX_DEFAULT_ELEMENT) || command_element.getNodeName().equals(LEVELS_ELEMENT)){
    418476                String command = toString(command_element, false);
    419477                if(command != null && command.length() > 0) {
     
    586644
    587645    private String indexDefaultToString(Element command_element, boolean show_extracted_namespace) {
    588     boolean comment_only = false;
    589646    StringBuffer text = new StringBuffer("");
    590647    if(command_element.getAttribute(ASSIGNED_ATTRIBUTE).equals(FALSE_STR)) {
    591648        text.append("#");
    592         comment_only = true;
    593649    }
    594650    text.append(INDEX_DEFAULT_STR);
     
    763819            command_element = parseFormat(command_str);
    764820            }
    765             if(command_element == null && command_type.equals(INDEX_STR)) {
     821            if(command_element == null && (command_type.equals(INDEX_STR)  || command_type.equals(COMMENTED_INDEXES_STR))) {
    766822            command_element = parseIndex(command_str);
    767823            }
    768             if(command_element == null && command_type.equals(INDEX_DEFAULT_STR)) {
     824            if(command_element == null && (command_type.equals(INDEX_DEFAULT_STR) || command_type.equals(COMMENTED_INDEX_DEFAULT_STR))) {
    769825            command_element = parseIndexDefault(command_str);
    770826            }
     
    775831            command_element = parseLanguageDefault(command_str);
    776832            }
    777             if(command_element == null && command_type.equals(LEVELS_STR)) {
     833            if(command_element == null && (command_type.equals(LEVELS_STR) || command_type.equals(COMMENTED_LEVELS_STR))) {
    778834            command_element = parseLevels(command_str);
    779835            }
     
    908964    try {
    909965        StringTokenizer tokenizer = new StringTokenizer(command_str);
    910         tokenizer.nextToken();
     966        String command = tokenizer.nextToken();
    911967        if(tokenizer.hasMoreTokens()) {
    912968        command_element = document.createElement(INDEXES_ELEMENT);
    913969        }
    914         boolean first_index = true;
     970        command_element.setAttribute(ASSIGNED_ATTRIBUTE, (command.equals(INDEX_STR) ? TRUE_STR : FALSE_STR));
     971        command = null;
    915972        while(tokenizer.hasMoreTokens()) {
    916973        Element index_element = document.createElement(INDEX_ELEMENT);
     
    922979            index_element.setAttribute(LEVEL_ATTRIBUTE, index_str.substring(0, index_str.indexOf(StaticStrings.COLON_CHARACTER)));
    923980            index_str = index_str.substring(index_str.indexOf(StaticStrings.COLON_CHARACTER) + 1);
    924             if(first_index) {
    925             command_element.setAttribute(MGPP_ATTRIBUTE, FALSE_STR);
    926             first_index = false;
    927             }
     981            command_element.setAttribute(MGPP_ATTRIBUTE, FALSE_STR);
    928982        }
    929983        else {
    930             if(first_index) {
    931             command_element.setAttribute(MGPP_ATTRIBUTE, TRUE_STR);
    932             first_index = false;
    933             }
     984            command_element.setAttribute(MGPP_ATTRIBUTE, TRUE_STR);
    934985            old_index = false;
    935986        }
     
    9701021        if(tokenizer.countTokens() >= 2) {
    9711022        command_element = document.createElement(INDEX_DEFAULT_ELEMENT);
    972         tokenizer.nextToken();
     1023        command_element.setAttribute(ASSIGNED_ATTRIBUTE, ((tokenizer.nextToken()).equals(INDEX_DEFAULT_STR) ? TRUE_STR : FALSE_STR));
    9731024        String index_str = tokenizer.nextToken();
    9741025        command_element.setAttribute(LEVEL_ATTRIBUTE, index_str.substring(0, index_str.indexOf(StaticStrings.COLON_CHARACTER)));
     
    10371088        StringTokenizer tokenizer = new StringTokenizer(command_str);
    10381089        // First token is command type (levels)
    1039         tokenizer.nextToken();
     1090        String command = tokenizer.nextToken();
    10401091        if(tokenizer.hasMoreTokens()) {
    10411092        command_element = document.createElement(LEVELS_ELEMENT);
    1042         command_element.setAttribute(ASSIGNED_ATTRIBUTE, TRUE_STR);
     1093        command_element.setAttribute(ASSIGNED_ATTRIBUTE, (command.equals(LEVELS_STR) ? TRUE_STR : FALSE_STR));
    10431094        while(tokenizer.hasMoreTokens()) {
    10441095            Element level_element = document.createElement(CONTENT_ELEMENT);
     
    10481099        }
    10491100        }
     1101        command = null;
    10501102    }
    10511103    catch(Exception exception) {
     
    10981150        StringTokenizer tokenizer = new StringTokenizer(command_str);
    10991151        if(tokenizer.countTokens() >= 2) {
    1100         command_element = document.createElement(COLLECTIONMETADATA_ELEMENT);
    11011152        String name_str = tokenizer.nextToken();
    11021153        String value_str = tokenizer.nextToken();
    1103         command_element.setAttribute(NAME_ATTRIBUTE, name_str);
    1104         command_element.setAttribute(LANGUAGE_ATTRIBUTE, ENGLISH_LANGUAGE_STR);
    1105         command_element.setAttribute(SPECIAL_ATTRIBUTE, TRUE_STR);
    1106         MSMUtils.setValue(command_element, value_str);
     1154        if(name_str.equals(COLLECTIONMETADATA_BETA_STR)) {
     1155            command_element = document.createElement(COLLECTIONMETADATA_BETA_ELEMENT);
     1156        }
     1157        else if(name_str.equals(COLLECTIONMETADATA_CREATOR_STR)) {
     1158            command_element = document.createElement(COLLECTIONMETADATA_CREATOR_ELEMENT);
     1159        }
     1160        else if(name_str.equals(COLLECTIONMETADATA_MAINTAINER_STR)) {
     1161            command_element = document.createElement(COLLECTIONMETADATA_MAINTAINER_ELEMENT);
     1162        }
     1163        else if(name_str.equals(COLLECTIONMETADATA_PUBLIC_STR)) {
     1164            command_element = document.createElement(COLLECTIONMETADATA_PUBLIC_ELEMENT);
     1165        }
     1166        if(command_element != null) {
     1167            command_element.setAttribute(NAME_ATTRIBUTE, name_str);
     1168            command_element.setAttribute(LANGUAGE_ATTRIBUTE, ENGLISH_LANGUAGE_STR);
     1169            command_element.setAttribute(SPECIAL_ATTRIBUTE, TRUE_STR);
     1170            MSMUtils.setValue(command_element, value_str);
     1171        }
    11071172        value_str = null;
    11081173        name_str = null;
Note: See TracChangeset for help on using the changeset viewer.