Changeset 8120
- Timestamp:
- 2004-09-15T11:57:11+12:00 (20 years ago)
- Location:
- trunk/gli/src/org/greenstone/gatherer/metadata
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gli/src/org/greenstone/gatherer/metadata/MetadataSet.java
r8037 r8120 114 114 } 115 115 116 116 117 public File getMetadataSetFile() 118 { 119 return metadata_set_file; 120 } 121 122 117 123 public String getNamespace() 118 124 { -
trunk/gli/src/org/greenstone/gatherer/metadata/MetadataSetManager.java
r8023 r8120 62 62 63 63 64 static public ArrayList getMetadataSets() 65 { 66 return metadata_sets; 67 } 68 69 64 70 static public ArrayList listMetadataSets(File directory) 65 71 { … … 105 111 106 112 107 static p rivatevoid loadMetadataSet(File metadata_set_file)113 static public void loadMetadataSet(File metadata_set_file) 108 114 { 109 115 MetadataSet metadata_set = new MetadataSet(metadata_set_file); -
trunk/gli/src/org/greenstone/gatherer/metadata/MetadataTools.java
r8037 r8120 8 8 9 9 10 static public String getMetadataElementName(String metadata_element_name_full)10 static public MetadataElement getMetadataElement(String metadata_element_name_full) 11 11 { 12 // Full element name contains namespace 13 if (metadata_element_name_full.indexOf(NAMESPACE_SEPARATOR) != -1) { 14 return metadata_element_name_full.substring(metadata_element_name_full.indexOf(NAMESPACE_SEPARATOR) + 1); 12 String metadata_set_namespace = MetadataTools.getMetadataSetNamespace(metadata_element_name_full); 13 MetadataSet metadata_set = MetadataSetManager.getMetadataSet(metadata_set_namespace); 14 if (metadata_set == null) { 15 return null; 15 16 } 16 17 17 // No namespace18 return metadata_ element_name_full;18 String metadata_element_name = MetadataTools.getMetadataElementName(metadata_element_name_full); 19 return metadata_set.getMetadataElement(metadata_element_name); 19 20 } 20 21 … … 30 31 31 32 return metadata_element_attribute; 33 } 34 35 36 static public String getMetadataElementName(String metadata_element_name_full) 37 { 38 // Full element name contains namespace 39 if (metadata_element_name_full.indexOf(NAMESPACE_SEPARATOR) != -1) { 40 return metadata_element_name_full.substring(metadata_element_name_full.indexOf(NAMESPACE_SEPARATOR) + 1); 41 } 42 43 // No namespace 44 return metadata_element_name_full; 32 45 } 33 46 -
trunk/gli/src/org/greenstone/gatherer/metadata/MetadataXMLFileManager.java
r8013 r8120 15 15 16 16 17 static public void addMetadata(FileNode file_node, MetadataValue metadata_value) 18 { 19 FileNode[] file_nodes = new FileNode[1]; 20 file_nodes[0] = file_node; 21 addMetadata(file_nodes, metadata_value); 22 } 23 24 17 25 static public void addMetadata(FileNode[] file_nodes, MetadataValue metadata_value) 18 26 { 27 // Add the metadata to each file node in turn 19 28 for (int i = 0; i < file_nodes.length; i++) { 20 29 File current_file = file_nodes[i].getFile(); … … 27 36 MetadataXMLFile metadata_xml_file = (MetadataXMLFile) metadata_xml_files.get(j); 28 37 29 // This metadata.xml file is only potentially applicable if it is above or at the same level as the file 30 if (current_file_directory.getAbsolutePath().startsWith(metadata_xml_file.getParentFile().getAbsolutePath())) { 38 // This metadata.xml file is only applicable if it is above or at the same level as the file 39 // if (current_file_directory.getAbsolutePath().startsWith(metadata_xml_file.getParentFile().getAbsolutePath())) { 40 // This metadata.xml file is only applicable if it is at the same level as the file 41 if (current_file_directory.getAbsolutePath().equals(metadata_xml_file.getParentFile().getAbsolutePath())) { 31 42 applicable_metadata_xml_file_found = true; 32 43 metadata_xml_file.addMetadata(current_file, metadata_value); … … 56 67 57 68 58 static public ArrayList getMetadataAssignedToFile(File file) 59 { 60 // Build up a list of metadata values assigned to this file 61 ArrayList metadata_values_all = new ArrayList(); 62 63 // Look at each loaded metadata.xml file to see if any assign metadata to this file 69 /** Returns the metadata assigned to files outside the collection, excluding folder-level/inherited metadata. */ 70 static public ArrayList getMetadataAssignedDirectlyToExternalFile(File file) 71 { 72 System.err.println("Getting metadata assigned directly to external file " + file + "..."); 73 74 // Build up a list of applicable metadata.xml files 75 ArrayList applicable_metadata_xml_files = new ArrayList(); 76 77 File directory = (file.isDirectory() ? file : file.getParentFile()); 78 while (directory != null) { 79 File[] directory_files = directory.listFiles(); 80 for (int i = 0; i < directory_files.length; i++) { 81 File child_file = directory_files[i]; 82 if (!child_file.isDirectory() && child_file.getName().equals("metadata.xml")) { 83 System.err.println("Found: " + child_file); 84 applicable_metadata_xml_files.add(new MetadataXMLFile(child_file.getAbsolutePath())); 85 } 86 } 87 88 directory = directory.getParentFile(); 89 } 90 91 // Get the metadata assigned to the specified file from the applicable metadata.xml files 92 ArrayList assigned_metadata = getMetadataAssignedToFile(file, applicable_metadata_xml_files); 93 94 // Remove any folder-level metadata 95 for (int i = assigned_metadata.size() - 1; i >= 0; i--) { 96 if (((MetadataValue) assigned_metadata.get(i)).isInheritedMetadata()) { 97 assigned_metadata.remove(i); 98 } 99 } 100 101 return assigned_metadata; 102 } 103 104 105 /** This excludes folder-level/inherited metadata. */ 106 static public ArrayList getMetadataAssignedDirectlyToFile(File file) 107 { 108 // Build up a list of applicable metadata.xml files 109 ArrayList applicable_metadata_xml_files = new ArrayList(); 110 111 // Look at each loaded metadata.xml file to see if it is potentially applicable 64 112 File file_directory = (file.isDirectory() ? file : file.getParentFile()); 65 113 for (int i = 0; i < metadata_xml_files.size(); i++) { 66 114 MetadataXMLFile metadata_xml_file = (MetadataXMLFile) metadata_xml_files.get(i); 67 115 116 // This metadata.xml file is only applicable if it is at the same level as the file 117 if (file_directory.getAbsolutePath().equals(metadata_xml_file.getParentFile().getAbsolutePath())) { 118 applicable_metadata_xml_files.add(metadata_xml_file); 119 } 120 } 121 122 // Get the metadata assigned to the specified file from the applicable metadata.xml files 123 ArrayList assigned_metadata = getMetadataAssignedToFile(file, applicable_metadata_xml_files); 124 125 // Remove any folder-level metadata 126 for (int i = assigned_metadata.size() - 1; i >= 0; i--) { 127 if (((MetadataValue) assigned_metadata.get(i)).isInheritedMetadata()) { 128 assigned_metadata.remove(i); 129 } 130 } 131 132 return assigned_metadata; 133 } 134 135 136 static public ArrayList getMetadataAssignedToFile(File file) 137 { 138 // Build up a list of applicable metadata.xml files 139 ArrayList applicable_metadata_xml_files = new ArrayList(); 140 141 // Look at each loaded metadata.xml file to see if it is potentially applicable 142 File file_directory = (file.isDirectory() ? file : file.getParentFile()); 143 for (int i = 0; i < metadata_xml_files.size(); i++) { 144 MetadataXMLFile metadata_xml_file = (MetadataXMLFile) metadata_xml_files.get(i); 145 68 146 // This metadata.xml file is only potentially applicable if it is above or at the same level as the file 69 147 if (file_directory.getAbsolutePath().startsWith(metadata_xml_file.getParentFile().getAbsolutePath())) { 70 ArrayList metadata_values = metadata_xml_file.getMetadataAssignedToFile(file); 71 for (int j = 0; j < metadata_values.size(); j++) { 72 MetadataValue metadata_value = (MetadataValue) metadata_values.get(j); 73 74 // Overriding metadata: remove any values with this metadata element 75 if (metadata_value.isAccumulatingMetadata() == false) { 76 for (int k = metadata_values_all.size() - 1; k >= 0; k--) { 77 if (((MetadataValue) metadata_values_all.get(k)).getMetadataElement().equals(metadata_value.getMetadataElement())) { 78 metadata_values_all.remove(k); 79 } 148 applicable_metadata_xml_files.add(metadata_xml_file); 149 } 150 } 151 152 // Return the metadata assigned to the specified file from the applicable metadata.xml files 153 return getMetadataAssignedToFile(file, applicable_metadata_xml_files); 154 } 155 156 157 static private ArrayList getMetadataAssignedToFile(File file, ArrayList applicable_metadata_xml_files) 158 { 159 // Build up a list of metadata values assigned to this file 160 ArrayList metadata_values_all = new ArrayList(); 161 162 // Look at each applicable metadata.xml file to see if it assigns metadata to this file 163 for (int i = 0; i < applicable_metadata_xml_files.size(); i++) { 164 MetadataXMLFile metadata_xml_file = (MetadataXMLFile) applicable_metadata_xml_files.get(i); 165 System.err.println("Applicable metadata.xml file: " + metadata_xml_file); 166 167 ArrayList metadata_values = metadata_xml_file.getMetadataAssignedToFile(file); 168 for (int j = 0; j < metadata_values.size(); j++) { 169 MetadataValue metadata_value = (MetadataValue) metadata_values.get(j); 170 171 // Overriding metadata: remove any values with this metadata element 172 if (metadata_value.isAccumulatingMetadata() == false) { 173 for (int k = metadata_values_all.size() - 1; k >= 0; k--) { 174 if (((MetadataValue) metadata_values_all.get(k)).getMetadataElement().equals(metadata_value.getMetadataElement())) { 175 metadata_values_all.remove(k); 80 176 } 81 177 } 82 83 metadata_values_all.add(metadata_value); 84 }178 } 179 180 metadata_values_all.add(metadata_value); 85 181 } 86 182 } … … 119 215 120 216 217 static public void removeMetadata(FileNode file_node, MetadataValue metadata_value) 218 { 219 FileNode[] file_nodes = new FileNode[1]; 220 file_nodes[0] = file_node; 221 removeMetadata(file_nodes, metadata_value); 222 } 223 224 121 225 static public void removeMetadata(FileNode[] file_nodes, MetadataValue metadata_value) 122 226 { 227 // Remove the metadata from each file node in turn 123 228 for (int i = 0; i < file_nodes.length; i++) { 124 229 File current_file = file_nodes[i].getFile();
Note:
See TracChangeset
for help on using the changeset viewer.