Changeset 10971 for trunk/gli


Ignore:
Timestamp:
2005-12-02T15:11:04+13:00 (18 years ago)
Author:
kjdon
Message:

metadata elements can now have predefined values, defined in the metadata set xml file. An element can have attributes predefined (have predefined metadata) and restricted (only allowed these predefined values). If there are predefined values, load them into the value tree, if its restricted, don't allow the user to add any other values

Location:
trunk/gli/src/org/greenstone/gatherer/metadata
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/gli/src/org/greenstone/gatherer/metadata/MetadataElement.java

    r9551 r10971  
    3131import org.greenstone.gatherer.Configuration;
    3232import org.greenstone.gatherer.util.XMLTools;
     33import org.greenstone.gatherer.util.StaticStrings;
    3334import org.w3c.dom.*;
    3435
     
    4142    private Element metadata_element_element = null;
    4243    private MetadataValueTreeModel metadata_value_tree_model = null;
    43 
     44    /* this is true if the metadata element comes with a pre defined set of values */
     45    private boolean predefined_values = false;
     46    /* This restricts the user to only the predefined values */
     47    private boolean restricted_values = false;
    4448
    4549    public MetadataElement(String metadata_element_name_full, Element metadata_element_element)
     
    4852    this.metadata_element_element = metadata_element_element;
    4953    this.metadata_value_tree_model = new MetadataValueTreeModel(this);
    50     }
    51 
    52 
     54    if (metadata_element_element.getAttribute(StaticStrings.PREDEFINED_METADATA_ATTRIBUTE).equals("true")) {
     55        predefined_values = true;
     56        loadOptionList();
     57        if (metadata_element_element.getAttribute(StaticStrings.RESTRICTED_METADATA_ATTRIBUTE).equals("true")) {
     58        // cant have restricted values if no predefined values
     59        restricted_values = true;
     60        }
     61    }
     62    }
     63   
     64    // do this better
     65    protected boolean loadOptionList() {
     66    NodeList values = metadata_element_element.getElementsByTagName("Value");
     67    for (int i=0; i<values.getLength(); i++) {
     68        String val = XMLTools.getValue(values.item(i));
     69        addMetadataValue(val);
     70    }
     71    return true;
     72    }
    5373    public MetadataValueTreeNode addMetadataValue(String metadata_value)
    5474    {
     
    170190    }
    171191
     192    public boolean isPredefined() {
     193    return predefined_values;
     194    }
     195
     196    public boolean isRestricted() {
     197    return restricted_values;
     198    }
    172199
    173200    public boolean isSubelement()
  • trunk/gli/src/org/greenstone/gatherer/metadata/MetadataValueTableModel.java

    r10612 r10971  
    220220    Gatherer.g_man.wait(true);
    221221
     222   
     223    // Check for a restricted metadata element
     224    MetadataElement metadata_element = metadata_value_table_entry.getMetadataElement();
     225    if (!new_metadata_value.equals("") && metadata_element.isRestricted()) {
     226        if (metadata_element.getMetadataValueTreeNode((String)new_metadata_value)==null) {
     227        WarningDialog dialog = new WarningDialog("warning.InvalidMetadata", "InvalidMetadata.Title", Dictionary.get("InvalidMetadata.Message"), null, false);
     228        int dialog_result = dialog.display();
     229        dialog.dispose();
     230        Gatherer.g_man.wait(false);
     231        return;
     232       
     233        }
     234    }
     235   
    222236    // Metadata value added
    223     if (old_metadata_value.equals("") && !new_metadata_value.equals("")) {
    224         // If we're adding metadata to folders display the warning
     237    if (old_metadata_value.equals("") && !new_metadata_value.equals("")) {   
     238        // If we're adding metadata to folders display the warning
    225239        if (!file_nodes[0].isLeaf()) {
    226240        WarningDialog dialog = new WarningDialog("warning.DirectoryLevelMetadata", "DirectoryLevelMetadata.Title", Dictionary.get("DirectoryLevelMetadata.Message"), null, true);
     
    233247        }
    234248
    235         MetadataElement metadata_element = metadata_value_table_entry.getMetadataElement();
    236249        MetadataValueTreeNode metadata_value_tree_node = metadata_element.addMetadataValue((String) new_metadata_value);
    237250        MetadataValue metadata_value = new MetadataValue(metadata_element, metadata_value_tree_node);
     
    247260    // Metadata value replaced
    248261    else {
    249         MetadataElement metadata_element = metadata_value_table_entry.getMetadataElement();
    250262        MetadataValueTreeNode metadata_value_tree_node = metadata_element.addMetadataValue((String) new_metadata_value);
    251263        MetadataValue metadata_value = new MetadataValue(metadata_element, metadata_value_tree_node);
Note: See TracChangeset for help on using the changeset viewer.