- Timestamp:
- 2007-01-11T16:59:43+13:00 (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gli/src/org/greenstone/gatherer/metadata/MetadataXMLFile.java
r13278 r13577 45 45 static final private String METADATA_ELEMENT = "Metadata"; 46 46 47 // To speed things up a bit we keep the last accessed metadata.xml file in memory 48 static private File loaded_file = null; 49 static private Document loaded_file_document = null; 50 47 51 48 52 public MetadataXMLFile(String metadata_xml_file_path) … … 54 58 public void addMetadata(File file, ArrayList metadata_values) 55 59 { 56 // Parse the metadata.xml file 57 Document document = XMLTools.parseXMLFile(this); 58 if (document == null) { 59 System.err.println("Error: Could not parse metadata.xml file " + getAbsolutePath()); 60 return; 60 // If this metadata.xml file isn't the one currently loaded, load it now 61 if (loaded_file != this) { 62 // Parse the metadata.xml file 63 Document document = XMLTools.parseXMLFile(this); 64 if (document == null) { 65 System.err.println("Error: Could not parse metadata.xml file " + getAbsolutePath()); 66 return; 67 } 68 69 loaded_file = this; 70 loaded_file_document = document; 61 71 } 62 72 … … 83 93 84 94 // Read all the FileSet elements in the file 85 NodeList fileset_elements_nodelist = document.getElementsByTagName(FILESET_ELEMENT);95 NodeList fileset_elements_nodelist = loaded_file_document.getElementsByTagName(FILESET_ELEMENT); 86 96 for (int i = 0; i < fileset_elements_nodelist.getLength(); i++) { 87 97 Element current_fileset_element = (Element) fileset_elements_nodelist.item(i); … … 104 114 if (appropriate_fileset_element == null) { 105 115 DebugStream.println("Creating new FileSet element for file since none exists..."); 106 appropriate_fileset_element = document.createElement(FILESET_ELEMENT);107 108 Element new_filename_element = document.createElement(FILENAME_ELEMENT);109 new_filename_element.appendChild( document.createTextNode(file_path_regexp));116 appropriate_fileset_element = loaded_file_document.createElement(FILESET_ELEMENT); 117 118 Element new_filename_element = loaded_file_document.createElement(FILENAME_ELEMENT); 119 new_filename_element.appendChild(loaded_file_document.createTextNode(file_path_regexp)); 110 120 appropriate_fileset_element.appendChild(new_filename_element); 111 121 112 Element new_description_element = document.createElement(DESCRIPTION_ELEMENT);122 Element new_description_element = loaded_file_document.createElement(DESCRIPTION_ELEMENT); 113 123 appropriate_fileset_element.appendChild(new_description_element); 114 124 115 document.getDocumentElement().appendChild(appropriate_fileset_element);125 loaded_file_document.getDocumentElement().appendChild(appropriate_fileset_element); 116 126 } 117 127 … … 151 161 if (!metadata_already_assigned) { 152 162 // Create a new Metadata element to record this metadata 153 Element new_metadata_element = document.createElement(METADATA_ELEMENT);163 Element new_metadata_element = loaded_file_document.createElement(METADATA_ELEMENT); 154 164 new_metadata_element.setAttribute("name", metadata_value.getMetadataElement().getFullName()); 155 165 new_metadata_element.setAttribute("mode", (metadata_value.isAccumulatingMetadata() ? "accumulate" : "override")); 156 new_metadata_element.appendChild( document.createTextNode(metadata_value_string));166 new_metadata_element.appendChild(loaded_file_document.createTextNode(metadata_value_string)); 157 167 158 168 // Accumulating metadata: add at the end … … 168 178 169 179 // Rewrite the metadata.xml file 170 XMLTools.writeXMLFile(this, document);180 XMLTools.writeXMLFile(this, loaded_file_document); 171 181 } 172 182 … … 174 184 public ArrayList getMetadataAssignedToFile(File file) 175 185 { 176 // Parse the metadata.xml file 177 Document document = XMLTools.parseXMLFile(this); 178 if (document == null) { 179 System.err.println("Error: Could not parse metadata.xml file " + getAbsolutePath()); 180 return new ArrayList(); 186 // If this metadata.xml file isn't the one currently loaded, load it now 187 if (loaded_file != this) { 188 // Parse the metadata.xml file 189 Document document = XMLTools.parseXMLFile(this); 190 if (document == null) { 191 System.err.println("Error: Could not parse metadata.xml file " + getAbsolutePath()); 192 return new ArrayList(); 193 } 194 195 loaded_file = this; 196 loaded_file_document = document; 181 197 } 182 198 … … 192 208 193 209 // Read all the FileSet elements in the file 194 NodeList fileset_elements_nodelist = document.getElementsByTagName(FILESET_ELEMENT);210 NodeList fileset_elements_nodelist = loaded_file_document.getElementsByTagName(FILESET_ELEMENT); 195 211 for (int i = 0; i < fileset_elements_nodelist.getLength(); i++) { 196 212 Element current_fileset_element = (Element) fileset_elements_nodelist.item(i); … … 301 317 public void removeMetadata(File file, ArrayList metadata_values) 302 318 { 303 // Parse the metadata.xml file 304 Document document = XMLTools.parseXMLFile(this); 305 if (document == null) { 306 System.err.println("Error: Could not parse metadata.xml file " + getAbsolutePath()); 307 return; 319 // If this metadata.xml file isn't the one currently loaded, load it now 320 if (loaded_file != this) { 321 // Parse the metadata.xml file 322 Document document = XMLTools.parseXMLFile(this); 323 if (document == null) { 324 System.err.println("Error: Could not parse metadata.xml file " + getAbsolutePath()); 325 return; 326 } 327 328 loaded_file = this; 329 loaded_file_document = document; 308 330 } 309 331 … … 330 352 331 353 // Read all the FileSet elements in the file 332 NodeList fileset_elements_nodelist = document.getElementsByTagName(FILESET_ELEMENT);354 NodeList fileset_elements_nodelist = loaded_file_document.getElementsByTagName(FILESET_ELEMENT); 333 355 for (int i = 0; i < fileset_elements_nodelist.getLength(); i++) { 334 356 Element current_fileset_element = (Element) fileset_elements_nodelist.item(i); … … 392 414 393 415 // Rewrite the metadata.xml file 394 XMLTools.writeXMLFile(this, document);416 XMLTools.writeXMLFile(this, loaded_file_document); 395 417 } 396 418 … … 398 420 public void replaceMetadata(File file, MetadataValue old_metadata_value, MetadataValue new_metadata_value) 399 421 { 400 // Parse the metadata.xml file 401 Document document = XMLTools.parseXMLFile(this); 402 if (document == null) { 403 System.err.println("Error: Could not parse metadata.xml file " + getAbsolutePath()); 404 return; 422 // If this metadata.xml file isn't the one currently loaded, load it now 423 if (loaded_file != this) { 424 // Parse the metadata.xml file 425 Document document = XMLTools.parseXMLFile(this); 426 if (document == null) { 427 System.err.println("Error: Could not parse metadata.xml file " + getAbsolutePath()); 428 return; 429 } 430 431 loaded_file = this; 432 loaded_file_document = document; 405 433 } 406 434 … … 434 462 435 463 // Read all the FileSet elements in the file 436 NodeList fileset_elements_nodelist = document.getElementsByTagName(FILESET_ELEMENT);464 NodeList fileset_elements_nodelist = loaded_file_document.getElementsByTagName(FILESET_ELEMENT); 437 465 for (int i = 0; i < fileset_elements_nodelist.getLength(); i++) { 438 466 Element current_fileset_element = (Element) fileset_elements_nodelist.item(i); … … 497 525 498 526 // Rewrite the metadata.xml file 499 XMLTools.writeXMLFile(this, document);527 XMLTools.writeXMLFile(this, loaded_file_document); 500 528 } 501 529
Note:
See TracChangeset
for help on using the changeset viewer.