Changeset 4515
- Timestamp:
- 2003-06-09T12:38:07+12:00 (21 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/gli/src/org/greenstone/gatherer/msm/GDMDocument.java
r4402 r4515 201 201 } 202 202 try { 203 203 // Retrieve the document element. 204 204 Element directorymetadata_element = base_document.getDocumentElement(); 205 205 // Iterate through the filesets, checking the FileName child element against the target file's name using regular expression matching. 206 206 NodeList fileset_elements = directorymetadata_element.getElementsByTagName(FILESET_ELEMENT); 207 207 for(int i = 0; i < fileset_elements.getLength(); i++) { … … 235 235 else { 236 236 ElementWrapper element = Gatherer.c_man.getCollection().msm.getElement(raw_element); 237 GValueNode value = Metadata.getDefaultValueNode(element, raw_value); 238 ///ystem.err.println("Miss. Create new metadata: " + raw_element + " -> " + raw_value + "\n"); 239 metadata = new Metadata(element, value); 240 GDMManager.metadata_cache.put(raw_element, raw_value, metadata); 237 if (element != null) { 238 239 GValueNode value = Metadata.getDefaultValueNode(element, raw_value); 240 ///ystem.err.println("Miss. Create new metadata: " + raw_element + " -> " + raw_value + "\n"); 241 metadata = new Metadata(element, value); 242 GDMManager.metadata_cache.put(raw_element, raw_value, metadata); 241 243 ///ystem.err.println("Added metadata to cache: " + raw_element + " -> " + raw_value + "\n"); 242 value = null; 243 element = null; 244 value = null; 245 element = null; 246 } 244 247 } 248 // check whether the metadata is null 249 if (metadata != null) { 245 250 // We determine whether this metadata is file or folder level 246 if(filename != null) { 247 ///ystem.err.println("Filename = " + filename); 248 ///ystem.err.println("filename_text = " + filename_text); 249 // If can only be file level if there is no folder path details in filename and if the filename matched the filename text node (it may have matched .* instead)! 250 if(filename.indexOf(File.separator) == -1 && filename.equals(filename_text)) { 251 if(filename != null) { 252 ///ystem.err.println("Filename = " + filename); 253 ///ystem.err.println("filename_text = " + filename_text); 254 // If can only be file level if there is no folder path details in filename and if the filename matched the filename text node (it may have matched .* instead)! 255 if(filename.indexOf(File.separator) == -1 && filename.equals(filename_text)) { 256 metadata.setFileLevel(true); 257 ///ystem.err.println("File level!!!"); 258 } 259 else { 260 metadata.setFileLevel(false); 261 ///ystem.err.println("Inherited!!!"); 262 } 263 } 264 else { 265 ///ystem.err.println("Filename is null therefore this is file level metadata."); 251 266 metadata.setFileLevel(true); 252 ///ystem.err.println("File level!!!"); 267 } 268 metadata.setFile(file); 269 270 // If mode is overwrite, then remove any previous values for this metadata element. 271 if(mode.equals("accumulate")) { 272 metadata.setAccumulate(true); 253 273 } 254 274 else { 255 metadata.setFileLevel(false); 256 ///ystem.err.println("Inherited!!!"); 257 } 258 } 259 else { 260 ///ystem.err.println("Filename is null therefore this is file level metadata."); 261 metadata.setFileLevel(true); 262 } 263 metadata.setFile(file); 264 265 // If mode is overwrite, then remove any previous values for this metadata element. 266 if(mode.equals("accumulate")) { 267 metadata.setAccumulate(true); 268 } 269 else { 270 metadata.setAccumulate(false); 271 ///ystem.err.println("Metadata overwrites: " + metadata); 272 for(int m = metadatum.size() - 1; m >= 0; m--) { 273 Metadata old_metadata = (Metadata) metadatum.get(m); 275 metadata.setAccumulate(false); 276 ///ystem.err.println("Metadata overwrites: " + metadata); 277 for(int m = metadatum.size() - 1; m >= 0; m--) { 278 Metadata old_metadata = (Metadata) metadatum.get(m); 274 279 if(old_metadata.getElement().equals(metadata.getElement())) { 275 280 metadatum.remove(m); … … 277 282 } 278 283 old_metadata = null; 279 280 }281 mode = null;282 284 } 285 } 286 mode = null; 287 283 288 // Add the completed metadata and clean up 284 289 ///ystem.err.println("Adding metadata: " + metadata); 285 metadatum.add(metadata);286 290 metadatum.add(metadata); 291 287 292 // Having found our metadata check if the value from the xml matches the one from the gvaluenode. If not update it. This happens whenever hierarchy information is involved (indexes rapidly become obsolete). 288 293 // If remove was set, remove it. We can only remove pure file level metadata, or folder level iff we were asked for folder level. 289 if(remove && ((filename != null && filename.matches(filename_text) && !filename_text.equals(DIRECTORY_FILENAME)) || (filename == null && filename_text.equals(DIRECTORY_FILENAME)))) { 290 ///ystem.err.println("Removing " + metadata + " from " + file); 291 description_element.removeChild(metadata_element); 292 // Remove the description element if empty. 293 if(!description_element.hasChildNodes()) { 294 fileset_element.removeChild(description_element); 294 if(remove && ((filename != null && filename.matches(filename_text) && !filename_text.equals(DIRECTORY_FILENAME)) || (filename == null && filename_text.equals(DIRECTORY_FILENAME)))) { 295 ///ystem.err.println("Removing " + metadata + " from " + file); 296 description_element.removeChild(metadata_element); 297 // Remove the description element if empty. 298 if(!description_element.hasChildNodes()) { 299 fileset_element.removeChild(description_element); 300 } 301 } 302 else { 303 String current_value = metadata.getAbsoluteValue(); 304 if(!raw_value.equals(current_value)) { 305 // Remove old text 306 while(metadata_element.hasChildNodes()) { 307 metadata_element.removeChild(metadata_element.getFirstChild()); 308 } 309 // Add new. 310 metadata_element.appendChild(base_document.createTextNode(current_value)); 311 } 295 312 } 296 313 } 297 else {298 String current_value = metadata.getAbsoluteValue();299 if(!raw_value.equals(current_value)) {300 // Remove old text301 while(metadata_element.hasChildNodes()) {302 metadata_element.removeChild(metadata_element.getFirstChild());303 }304 // Add new.305 metadata_element.appendChild(base_document.createTextNode(current_value));306 }307 }308 309 314 metadata = null; 310 315 raw_value = null;
Note:
See TracChangeset
for help on using the changeset viewer.