Changeset 8023 for trunk/gli/src


Ignore:
Timestamp:
2004-08-23T16:02:45+12:00 (20 years ago)
Author:
mdewsnip
Message:

More new metadata code: metadata elements now have definitions and comments.

Location:
trunk/gli/src/org/greenstone/gatherer
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/gli/src/org/greenstone/gatherer/gui/MetadataValueTableCellRenderer.java

    r7983 r8023  
    88import org.greenstone.gatherer.Gatherer;
    99import org.greenstone.gatherer.metadata.MetadataElement;
     10import org.greenstone.gatherer.metadata.MetadataTools;
    1011import org.greenstone.gatherer.metadata.MetadataValueTableModel;
    1112import org.greenstone.gatherer.util.Utility;
     
    7576      }
    7677
    77       // We set a tooltip over the element column containing the description of the element
     78      // We set a tooltip over the element column containing the definition of the element
    7879      if (value instanceof MetadataElement) {
    79      renderer.setToolTipText(Utility.formatHTMLWidth(((MetadataElement) value).getDescription(), 60));
     80      String interface_language_code = Gatherer.config.getLanguage();
     81      String metadata_element_definition = MetadataTools.getMetadataElementAttribute((MetadataElement) value, "definition", interface_language_code, "en");
     82      if (metadata_element_definition != null) {
     83          renderer.setToolTipText(Utility.formatHTMLWidth(metadata_element_definition, 60));
     84      }
    8085      }
    8186
  • trunk/gli/src/org/greenstone/gatherer/metadata/DocXMLFile.java

    r8021 r8023  
    170170                MetadataElement metadata_element = extracted_metadata_set.getMetadataElement(metadata_element_name_full);
    171171                if (metadata_element == null) {
    172                 metadata_element_name_full = metadata_set_namespace + MetadataTools.NAMESPACE_SEPARATOR + metadata_element_name_full;
    173                 metadata_element = new MetadataElement(metadata_element_name_full, null);
     172                // This element isn't defined in ex.mds, so we're uninterested
     173                continue;
    174174                }
    175175
  • trunk/gli/src/org/greenstone/gatherer/metadata/MetadataElement.java

    r7978 r8023  
    11package org.greenstone.gatherer.metadata;
     2
     3
     4import org.greenstone.gatherer.util.XMLTools;
     5import org.w3c.dom.*;
    26
    37
     
    610{
    711    private String metadata_element_name_full = null;
    8     private String metadata_element_description = null;
     12    private Element metadata_element_element = null;
    913    private MetadataValueTreeModel metadata_value_tree_model = null;
    1014
    1115
    12     public MetadataElement(String metadata_element_name_full, String metadata_element_description)
     16    public MetadataElement(String metadata_element_name_full, Element metadata_element_element)
    1317    {
    1418    this.metadata_element_name_full = metadata_element_name_full;
    15     this.metadata_element_description = metadata_element_description;
     19    this.metadata_element_element = metadata_element_element;
    1620    this.metadata_value_tree_model = new MetadataValueTreeModel(this);
    1721    }
     
    2428
    2529
    26     public String getDescription()
     30    public String getAttribute(String attribute_name, String language_code)
    2731    {
    28     return metadata_element_description;
     32    // Some extracted metadata elements may not be in ex.mds, and so have no attributes
     33    // if (metadata_element_element == null) {
     34    //     return null;
     35    // }
     36
     37    Element parent_element = metadata_element_element;
     38    boolean language_matches = false;
     39
     40    NodeList language_elements_nodelist = metadata_element_element.getElementsByTagName("Language");
     41    for (int i = 0; i < language_elements_nodelist.getLength(); i++) {
     42        Element current_language_element = (Element) language_elements_nodelist.item(i);
     43        String current_language_element_code = current_language_element.getAttribute("code");
     44        if (current_language_element_code.equals(language_code)) {
     45        // Found language; use it for the next step
     46        parent_element = current_language_element;
     47        language_matches = true;
     48        break;
     49        }
     50    }
     51
     52    NodeList attribute_elements_nodelist = parent_element.getElementsByTagName("Attribute");
     53    for (int i = 0; i < attribute_elements_nodelist.getLength(); i++) {
     54        Element current_attribute_element = (Element) attribute_elements_nodelist.item(i);
     55        String current_attribute_element_name = current_attribute_element.getAttribute("name");
     56        if (!current_attribute_element_name.equals(attribute_name)) {
     57        // Move on to the next Attribute element if the name doesn't match
     58        continue;
     59        }
     60
     61        // Check if the language matches
     62        String current_attribute_element_language = current_attribute_element.getAttribute("language");
     63        if (language_matches || current_attribute_element_language.equals(language_code)) {
     64        // Found attribute; returns its value
     65        return XMLTools.getElementTextValue(current_attribute_element);
     66        }
     67    }
     68
     69    return null;
    2970    }
    3071
  • trunk/gli/src/org/greenstone/gatherer/metadata/MetadataSet.java

    r7978 r8023  
    3030    NodeList element_elements_nodelist = document.getElementsByTagName("Element");
    3131    for (int i = 0; i < element_elements_nodelist.getLength(); i++) {
    32         Element current_element_element = (Element) element_elements_nodelist.item(i);
    33         String metadata_element_name = current_element_element.getAttribute("name");
     32        Element metadata_element_element = (Element) element_elements_nodelist.item(i);
     33        String metadata_element_name = metadata_element_element.getAttribute("name");
    3434        String metadata_element_name_full = metadata_set_namespace + MetadataTools.NAMESPACE_SEPARATOR + metadata_element_name;
    35         String metadata_element_description = "Description";  // !!! TO DO
    36         metadata_set_elements.add(new MetadataElement(metadata_element_name_full, metadata_element_description));
     35        metadata_set_elements.add(new MetadataElement(metadata_element_name_full, metadata_element_element));
    3736    }
    3837    }
  • trunk/gli/src/org/greenstone/gatherer/metadata/MetadataSetManager.java

    r7978 r8023  
    4545    }
    4646
    47    
     47
    4848    static public MetadataSet getMetadataSet(String metadata_set_namespace)
    4949    {
     
    6262
    6363
     64    static public ArrayList listMetadataSets(File directory)
     65    {
     66    // Make sure the directory (metadata) exists
     67    if (directory.exists() == false) {
     68        return null;
     69    }
     70
     71    // Load just those .mds files in this directory, and return them
     72    ArrayList directory_metadata_sets = new ArrayList();
     73    File[] directory_files = directory.listFiles();
     74    for (int i = 0; i < directory_files.length; i++) {
     75        File child_file = directory_files[i];
     76        if (!child_file.isDirectory() && child_file.getName().endsWith(".mds")) {
     77        MetadataSet metadata_set = new MetadataSet(child_file);
     78        directory_metadata_sets.add(metadata_set);
     79        }
     80    }
     81
     82    return directory_metadata_sets;
     83    }
     84
     85
    6486    static public void loadMetadataSets(File directory)
    6587    {
     88    // Make sure the directory (metadata) exists
     89    if (directory.exists() == false) {
     90        return;
     91    }
     92
    6693    // Look recursively at each subfile of the directory for .mds files
    6794    File[] directory_files = directory.listFiles();
  • trunk/gli/src/org/greenstone/gatherer/metadata/MetadataTools.java

    r7978 r8023  
    66{
    77    static final public String NAMESPACE_SEPARATOR = ".";
     8
     9
     10    static public String getMetadataElementName(String metadata_element_name_full)
     11    {
     12    // Full element name contains namespace
     13    if (metadata_element_name_full.indexOf(NAMESPACE_SEPARATOR) != -1) {
     14        return metadata_element_name_full.substring(metadata_element_name_full.indexOf(NAMESPACE_SEPARATOR) + 1);
     15    }
     16
     17    // No namespace
     18    return metadata_element_name_full;     
     19    }
     20
     21
     22    static public String getMetadataElementAttribute(MetadataElement metadata_element, String attribute_name, String language_code, String fallback_language_code)
     23    {
     24    String metadata_element_attribute = metadata_element.getAttribute(attribute_name, language_code);
     25
     26    // If the attribute isn't defined in the desired language, resort to the fallback
     27    if (metadata_element_attribute == null && !language_code.equals(fallback_language_code)) {
     28        metadata_element_attribute = metadata_element.getAttribute(attribute_name, fallback_language_code);
     29    }
     30
     31    return metadata_element_attribute;
     32    }
    833
    934
     
    1843    return "";
    1944    }
    20 
    21 
    22     static public String getMetadataElementName(String metadata_element_name_full)
    23     {
    24     // Full element name contains namespace
    25     if (metadata_element_name_full.indexOf(NAMESPACE_SEPARATOR) != -1) {
    26         return metadata_element_name_full.substring(metadata_element_name_full.indexOf(NAMESPACE_SEPARATOR) + 1);
    27     }
    28 
    29     // No namespace
    30     return metadata_element_name_full;     
    31     }
    3245}
  • trunk/gli/src/org/greenstone/gatherer/util/XMLTools.java

    r8015 r8023  
    5050
    5151    // None found
    52     return null;
     52    return "";
    5353    }
    5454
Note: See TracChangeset for help on using the changeset viewer.