Changeset 8711
- Timestamp:
- 2004-11-30T16:50:25+13:00 (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gli/src/org/greenstone/gatherer/metadata/MetadataXMLFile.java
r8667 r8711 90 90 91 91 // Create a new Metadata element to record this metadata 92 Element new_metadata_ value_element = document.createElement(METADATA_ELEMENT);93 new_metadata_ value_element.setAttribute("name", metadata_value.getMetadataElement().getFullName());94 new_metadata_ value_element.setAttribute("mode", (metadata_value.isAccumulatingMetadata() ? "accumulate" : "override"));95 new_metadata_ value_element.appendChild(document.createTextNode(metadata_value_string));96 boolean have_added_metadata = false;92 Element new_metadata_element = document.createElement(METADATA_ELEMENT); 93 new_metadata_element.setAttribute("name", metadata_value.getMetadataElement().getFullName()); 94 new_metadata_element.setAttribute("mode", (metadata_value.isAccumulatingMetadata() ? "accumulate" : "override")); 95 new_metadata_element.appendChild(document.createTextNode(metadata_value_string)); 96 boolean must_add_new_fileset_for_metadata = true; 97 97 98 98 // Read all the FileSet elements in the file … … 109 109 // Only exact matches can be extended with new metadata 110 110 if (current_filename_element_value.equals(file_path_regexp)) { 111 // Append the new Metadata element to the Description element of this FileSet112 111 Element description_element = (Element) current_fileset_element.getElementsByTagName(DESCRIPTION_ELEMENT).item(0); 112 boolean metadata_already_assigned = false; 113 114 // Check if this piece of metadata has already been assigned to this FileSet element 115 NodeList metadata_elements_nodelist = description_element.getElementsByTagName(METADATA_ELEMENT); 116 for (int k = 0; k < metadata_elements_nodelist.getLength(); k++) { 117 Element current_metadata_element = (Element) metadata_elements_nodelist.item(k); 118 if (metadata_value_string.equals(XMLTools.getElementTextValue(current_metadata_element))) { 119 metadata_already_assigned = true; 120 break; 121 } 122 } 123 124 // If the metadata has already been assigned to this FileSet, move onto the next 125 if (metadata_already_assigned) { 126 must_add_new_fileset_for_metadata = false; 127 break; 128 } 113 129 114 130 // Accumulating metadata: add at the end 115 131 if (metadata_value.isAccumulatingMetadata()) { 116 description_element.appendChild(new_metadata_ value_element);132 description_element.appendChild(new_metadata_element); 117 133 } 118 134 // Override metadata: add at the start (so it overrides inherited metadata without affecting other assigned metadata) 119 135 else { 120 description_element.insertBefore(new_metadata_ value_element, description_element.getFirstChild());121 } 122 123 have_added_metadata = true;136 description_element.insertBefore(new_metadata_element, description_element.getFirstChild()); 137 } 138 139 must_add_new_fileset_for_metadata = false; 124 140 break; 125 141 } … … 127 143 } 128 144 129 // Check if the metadata was added to an existing FileSet 130 if (!have_added_metadata) { 131 // It wasn't, so create a new FileSet element for it 145 // If the metadata didn't apply to an existing FileSet, add a new FileSet element for this metadata 146 if (must_add_new_fileset_for_metadata) { 132 147 Element new_fileset_element = document.createElement(FILESET_ELEMENT); 133 148 … … 138 153 // Append the new Metadata element to the Description element of this FileSet 139 154 Element new_description_element = document.createElement(DESCRIPTION_ELEMENT); 140 new_description_element.appendChild(new_metadata_ value_element);155 new_description_element.appendChild(new_metadata_element); 141 156 new_fileset_element.appendChild(new_description_element); 142 157
Note:
See TracChangeset
for help on using the changeset viewer.