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.

File:
1 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        }
Note: See TracChangeset for help on using the changeset viewer.