Changeset 4515


Ignore:
Timestamp:
2003-06-09T12:38:07+12:00 (21 years ago)
Author:
kjdon
Message:

now doesn't try to add metadata if there are no metadata sets

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/gli/src/org/greenstone/gatherer/msm/GDMDocument.java

    r4402 r4515  
    201201    }
    202202    try {
    203                 // Retrieve the document element.
     203        // Retrieve the document element.
    204204        Element directorymetadata_element = base_document.getDocumentElement();
    205                 // Iterate through the filesets, checking the FileName child element against    the target file's name using regular expression matching.
     205        // Iterate through the filesets, checking the FileName child element against    the target file's name using regular expression matching.
    206206        NodeList fileset_elements = directorymetadata_element.getElementsByTagName(FILESET_ELEMENT);
    207207        for(int i = 0; i < fileset_elements.getLength(); i++) {
     
    235235                else {
    236236                    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);
    241243                    ///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                    }
    244247                }
     248                // check whether the metadata is null
     249                if (metadata != null) {
    245250                // 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.");
    251266                    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);
    253273                    }
    254274                    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);
    274279                    if(old_metadata.getElement().equals(metadata.getElement())) {
    275280                        metadatum.remove(m);
     
    277282                    }
    278283                    old_metadata = null;
    279                     }
    280                 }
    281                 mode = null;
    282 
     284                    }
     285                    }
     286                    mode = null;
     287                   
    283288                // Add the completed metadata and clean up
    284289                ///ystem.err.println("Adding metadata: " + metadata);
    285                 metadatum.add(metadata);
    286 
     290                    metadatum.add(metadata);
     291                   
    287292                // 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).
    288293                // 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                    }
    295312                    }
    296313                }
    297                 else {
    298                     String current_value = metadata.getAbsoluteValue();
    299                     if(!raw_value.equals(current_value)) {
    300                     // Remove old text
    301                     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 
    309314                metadata = null;
    310315                raw_value = null;
Note: See TracChangeset for help on using the changeset viewer.