- Timestamp:
- 2004-09-21T11:19:32+12:00 (20 years ago)
- Location:
- trunk/gli/src/org/greenstone/gatherer/metadata
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gli/src/org/greenstone/gatherer/metadata/MetadataXMLFile.java
r8127 r8128 24 24 super(metadata_xml_file_path); 25 25 26 boolean file_changed = false; 27 26 28 // Parse the metadata.xml file 27 29 Document document = XMLTools.parseXMLFile(this); … … 37 39 String metadata_element_name_full = current_metadata_element.getAttribute("name"); 38 40 41 // If the metadata element is in an unloaded metadata set give the option of mapping it into a loaded set 39 42 String metadata_set_namespace = MetadataTools.getMetadataSetNamespace(metadata_element_name_full); 40 43 MetadataSet metadata_set = MetadataSetManager.getMetadataSet(metadata_set_namespace); 41 44 if (metadata_set == null) { 42 45 // Check if we have an import mapping for this metadata element 43 String mapped_metadata_element_name_full = ProfileXMLFileManager.getMetadataElementFor(metadata_element_name_full); 44 System.err.println(" Mapped " + metadata_element_name_full + " to: " + mapped_metadata_element_name_full); 45 if (mapped_metadata_element_name_full == null) { 46 new MetadataImportMappingPrompt(metadata_element_name_full); 47 } 48 49 // Skip this element if the metadata set isn't loaded 50 continue; 46 String target_metadata_element_name_full = ProfileXMLFileManager.getMetadataElementFor(metadata_element_name_full); 47 if (target_metadata_element_name_full == null) { 48 // No, so ask the user how they want to deal with this element 49 MetadataImportMappingPrompt metadata_import_mapping_prompt = new MetadataImportMappingPrompt(metadata_element_name_full); 50 int result = metadata_import_mapping_prompt.getResult(); 51 52 // !!! Add the element into an existing metadata set 53 if (result == MetadataImportMappingPrompt.ADD_BUTTON_PRESSED) { 54 MetadataSet target_metadata_set = metadata_import_mapping_prompt.getSelectedMetadataSet(); 55 System.err.println("Added to " + target_metadata_set); 56 // target_metadata_element_name_full = 57 } 58 59 // Map the element to an element in an existing metadata set 60 if (result == MetadataImportMappingPrompt.MAP_BUTTON_PRESSED) { 61 MetadataElement target_metadata_element = metadata_import_mapping_prompt.getSelectedMetadataElement(); 62 target_metadata_element_name_full = target_metadata_element.getFullName(); 63 } 64 65 // Ignore the element 66 if (result == MetadataImportMappingPrompt.IGNORE_BUTTON_PRESSED) { 67 target_metadata_element_name_full = ""; 68 } 69 70 // Store this import mapping for future elements with the same name 71 ProfileXMLFileManager.mapElement(metadata_element_name_full, target_metadata_element_name_full); 72 } 73 74 System.err.println(metadata_element_name_full + " -> " + target_metadata_element_name_full); 75 76 // Skip this element if we still don't have a loaded element for it 77 if (target_metadata_element_name_full == null || target_metadata_element_name_full.equals("")) { 78 continue; 79 } 80 81 // Update the metadata.xml file to have the new element name 82 current_metadata_element.setAttribute("name", target_metadata_element_name_full); 83 file_changed = true; 84 85 metadata_element_name_full = target_metadata_element_name_full; 86 metadata_set_namespace = MetadataTools.getMetadataSetNamespace(metadata_element_name_full); 87 metadata_set = MetadataSetManager.getMetadataSet(metadata_set_namespace); 51 88 } 52 89 … … 56 93 String current_metadata_element_value = XMLTools.getElementTextValue(current_metadata_element); 57 94 metadata_element.addMetadataValue(current_metadata_element_value); 95 } 96 97 // Rewrite the metadata.xml file if it has changed 98 if (file_changed) { 99 XMLTools.writeXMLFile(this, document); 58 100 } 59 101 } -
trunk/gli/src/org/greenstone/gatherer/metadata/ProfileXMLFile.java
r8127 r8128 3 3 4 4 import java.io.*; 5 import java.util.*;6 5 import org.greenstone.gatherer.util.XMLTools; 7 6 import org.w3c.dom.*; … … 12 11 extends File 13 12 { 14 private HashMap metadata_import_mapping = new HashMap();15 16 17 13 public ProfileXMLFile(String profile_xml_file_path) 18 14 { 19 15 super(profile_xml_file_path); 16 } 20 17 18 19 public String getMetadataElementFor(String source_metadata_element_name_full) 20 { 21 21 // Parse the profile.xml file 22 System.err.println("Loading profile.xml file " + profile_xml_file_path + "..."); 22 Document document = XMLTools.parseXMLFile(this); 23 if (document == null) { 24 System.err.println("Error: Could not parse profile.xml file " + getAbsolutePath()); 25 return null; 26 } 27 28 // Read all the Action elements in the file 29 NodeList action_elements_nodelist = document.getElementsByTagName("Action"); 30 for (int i = 0; i < action_elements_nodelist.getLength(); i++) { 31 Element current_action_element = (Element) action_elements_nodelist.item(i); 32 33 // Does this action map the desired element? 34 if (current_action_element.getAttribute("source").equals(source_metadata_element_name_full)) { 35 return current_action_element.getAttribute("target"); 36 } 37 } 38 39 // No import mapping for this element 40 return null; 41 } 42 43 44 public void mapElement(String source_metadata_element_name_full, String target_metadata_element_name_full) 45 { 46 // Parse the profile.xml file 23 47 Document document = XMLTools.parseXMLFile(this); 24 48 if (document == null) { … … 26 50 return; 27 51 } 28 }29 52 53 // Create a new Action element to record this mapping 54 Element new_action_element = document.createElement("Action"); 55 new_action_element.setAttribute("source", source_metadata_element_name_full); 56 new_action_element.setAttribute("target", target_metadata_element_name_full); 57 document.getDocumentElement().appendChild(new_action_element); 30 58 31 public String getMetadataElementFor(String metadata_element_name_full) 32 { 33 return (String) metadata_import_mapping.get(metadata_element_name_full); 59 // Rewrite the profile.xml file 60 XMLTools.writeXMLFile(this, document); 34 61 } 35 62 } -
trunk/gli/src/org/greenstone/gatherer/metadata/ProfileXMLFileManager.java
r8127 r8128 13 13 14 14 15 static public ProfileXMLFileloadProfileXMLFile(File directory)15 static public void loadProfileXMLFile(File directory) 16 16 { 17 17 // Make sure the directory (metadata) exists … … 27 27 28 28 profile_xml_file = new ProfileXMLFile(profile_xml_file_file.getAbsolutePath()); 29 return profile_xml_file;30 29 } 31 30 … … 35 34 return profile_xml_file.getMetadataElementFor(metadata_element_name_full); 36 35 } 36 37 38 static public void mapElement(String metadata_element_name_full, String target_metadata_element_name_full) 39 { 40 profile_xml_file.mapElement(metadata_element_name_full, target_metadata_element_name_full); 41 } 37 42 }
Note:
See TracChangeset
for help on using the changeset viewer.