Changeset 8122


Ignore:
Timestamp:
2004-09-15T17:16:29+12:00 (20 years ago)
Author:
mdewsnip
Message:

Further improvements and bug fixes to the new metadata code.

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

Legend:

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

    r8023 r8122  
    7676                if (!is_unix_path && !Utility.isWindows()) {
    7777                    // Convert path from Windows to Unix
    78                     gsdlsourcefilename_value = gsdlsourcefilename_value.replaceAll("\\", File.separator);
     78                    gsdlsourcefilename_value = gsdlsourcefilename_value.replaceAll("\\\\", File.separator);
    7979                }
    8080                }
     
    158158            String metadata_element_name_full = current_metadata_element.getAttribute("name");
    159159
    160             // If the metadata has no namespace, it is extracted metadata
     160            // If the metadata has a namespace it isn't extracted metadata, so we're not interested
    161161            String metadata_set_namespace = MetadataTools.getMetadataSetNamespace(metadata_element_name_full);
    162             if (metadata_set_namespace.equals("")) {
    163                 metadata_set_namespace = MetadataSetManager.EXTRACTED_METADATA_NAMESPACE;
     162            if (!metadata_set_namespace.equals("")) {
     163                continue;
     164            }
    164165
    165                 // We're not interested in lower-case metadata elements (gsdlsourcefilename, gsdlassocfile etc.)
    166                 if (Character.isLowerCase(metadata_element_name_full.charAt(0))) {
    167                 continue;
    168                 }
     166            // Extracted metadata!
     167            String metadata_element_name = metadata_element_name_full;
    169168
    170                 MetadataElement metadata_element = extracted_metadata_set.getMetadataElement(metadata_element_name_full);
    171                 if (metadata_element == null) {
    172                 // This element isn't defined in ex.mds, so we're uninterested
    173                 continue;
    174                 }
     169            // Ignore lower-case metadata elements (gsdlsourcefilename, gsdlassocfile etc.)
     170            //   and those starting with '/' (/srclink)
     171            char first_character = metadata_element_name.charAt(0);
     172            if (Character.isLowerCase(first_character) || first_character == '/') {
     173                continue;
     174            }
    175175
    176                 // Value trees are not stored for extracted metadata, so create a new value tree node now
    177                 String current_metadata_element_value = XMLTools.getElementTextValue(current_metadata_element);
    178                 metadata_element.addMetadataValue(current_metadata_element_value);
    179                 MetadataValueTreeNode metadata_value_tree_node = metadata_element.getMetadataValueTreeNode(current_metadata_element_value);
     176            MetadataElement metadata_element = extracted_metadata_set.getMetadataElement(metadata_element_name);
     177            if (metadata_element == null) {
     178                // This element isn't defined in ex.mds, so create it for this session
     179                System.err.println("Extracted metadata element not defined: " + metadata_element_name);
     180                metadata_element = extracted_metadata_set.addMetadataElementForThisSession(metadata_element_name);
     181            }
    180182
    181                 // Add the new metadata value to the list
    182                 MetadataValue metadata_value = new MetadataValue(metadata_element, metadata_value_tree_node);
    183                 metadata_values.add(metadata_value);
    184             }
     183            // Value trees are not stored for extracted metadata, so create a new value tree node now
     184            String current_metadata_element_value = XMLTools.getElementTextValue(current_metadata_element);
     185            metadata_element.addMetadataValue(current_metadata_element_value);
     186            MetadataValueTreeNode metadata_value_tree_node = metadata_element.getMetadataValueTreeNode(current_metadata_element_value);
     187
     188            // Add the new metadata value to the list
     189            MetadataValue metadata_value = new MetadataValue(metadata_element, metadata_value_tree_node);
     190            metadata_values.add(metadata_value);
    185191            }
    186192        }
  • trunk/gli/src/org/greenstone/gatherer/metadata/MetadataElement.java

    r8037 r8122  
    3131    {
    3232    // 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     // }
     33    if (metadata_element_element == null) {
     34        return null;
     35    }
    3636
    3737    Element parent_element = metadata_element_element;
  • trunk/gli/src/org/greenstone/gatherer/metadata/MetadataSet.java

    r8120 r8122  
    3838        metadata_set_elements.add(new MetadataElement(metadata_element_name_full, metadata_element_element));
    3939    }
     40    }
     41
     42
     43    public MetadataElement addMetadataElementForThisSession(String metadata_element_name)
     44    {
     45    String metadata_element_name_full = metadata_set_namespace + MetadataTools.NAMESPACE_SEPARATOR + metadata_element_name;
     46    MetadataElement metadata_element = new MetadataElement(metadata_element_name_full, null);
     47    metadata_set_elements.add(metadata_element);
     48    return metadata_element;
    4049    }
    4150
  • trunk/gli/src/org/greenstone/gatherer/metadata/MetadataValueTableModel.java

    r8013 r8122  
    167167
    168168        // If we haven't seen this metadata element and it isn't extracted, add it now
    169         if (!metadata_elements_seen.contains(metadata_element) && !metadata_element.isExtractedMetadata()) { 
     169        if (!metadata_elements_seen.contains(metadata_element) && !metadata_element.isExtractedMetadata()) {
    170170            MetadataValueTableEntry metadata_value_table_entry = new MetadataValueTableEntry(metadata_element, new MetadataValueTreeNode(""));
    171171
Note: See TracChangeset for help on using the changeset viewer.