Changeset 6889
- Timestamp:
- 2004-02-25T11:40:41+13:00 (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gli/src/org/greenstone/gatherer/msm/MetadataXMLFile.java
r6881 r6889 268 268 } 269 269 /** Retrieve the metadata associated with the given filename. Keep track of what metadata should be overwritten and what should be accumulated. Also make note of the source file, and remove the metadata if required. Finally if purge is set retrieve every piece of metadata in this file. */ 270 // !! Michael has written a much nicer version of this function !! 270 271 public ArrayList getMetadata(String filename, boolean remove, ArrayList metadatum_so_far, File file, boolean append_folder_level, boolean purge) { 271 272 Gatherer.println("Get metadata for " + filename); 272 273 Gatherer.println("remove = " + remove + ", metadata_so_far = " + (metadatum_so_far != null ? String.valueOf(metadatum_so_far.size()) : "null") + ", file = " + file + ", append_folder_level = " + append_folder_level + ", purge = " + purge); 273 // Of course null is not an acceptable filename 274 //if(filename == null) { 275 // return metadatum_so_far; 276 //} 274 275 // Determine the file's path relative to the location of the metadata.xml file 276 String file_relative_path = ((filename != null) ? filename : ""); 277 if (file_relative_path.endsWith(File.separator)) { 278 file_relative_path = file_relative_path.substring(0, file_relative_path.length() - File.separator.length()); 279 } 280 277 281 ArrayList metadatum = null; 278 282 ArrayList queued_for_removal = new ArrayList(); … … 347 351 // Determine whether this metadata is file or folder level 348 352 if (metadata != null) { 349 // The metadata is folder level if the file expression matches .* 350 if (filename_text != null && filename_text.equals(DIRECTORY_FILENAME)) { 353 // System.err.println("File relative path: " + file_relative_path + " Filename text: " + filename_text); 354 // Direct match to regular expression 355 if (file_relative_path.matches(filename_text)) { 356 boolean is_folder_level = filename_text.equals(".*") && !file_relative_path.equals(""); 357 metadata.setFile(file); 358 metadata.setFileLevel(!is_folder_level); 359 } 360 // Indirect match to regular expression (always folder level) 361 else if (file_relative_path.startsWith(filename_text + File.separator)) { 362 metadata.setFile(new File(file, filename_text)); 351 363 metadata.setFileLevel(false); 352 364 } 353 // Otherwise it must be file level 354 else { 355 metadata.setFileLevel(true); 356 } 357 358 metadata.setFile(file); 365 359 366 // If mode is overwrite, then remove any previous values for this metadata element. 360 367 if(mode.equals("accumulate")) {
Note:
See TracChangeset
for help on using the changeset viewer.