Changeset 6881


Ignore:
Timestamp:
2004-02-24T13:33:28+13:00 (20 years ago)
Author:
mdewsnip
Message:

Fixed a bug matching filenames to metadata.xml filesets.

File:
1 edited

Legend:

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

    r6879 r6881  
    8484    public void addMetadata(String filename, Metadata metadata, boolean force_accumulate)
    8585    {
    86     System.err.println("Add '" + metadata + "' to " + (filename != null ? filename : "directory."));
     86    // System.err.println("Add '" + metadata + "' to " + (filename != null ? filename : "directory."));
    8787    try {
    88         // Retrieve the document element.
    89         Element directorymetadata_element = base_document.getDocumentElement();
    90         // Iterate through the filesets looking for one that matches the given filename.
    91         Element fileset_element = null;
    92         boolean found = false;
    93         NodeList fileset_elements = directorymetadata_element.getElementsByTagName(FILESET_ELEMENT);
    94         for(int i = 0; !found && i < fileset_elements.getLength(); i++) {
    95         fileset_element = (Element) fileset_elements.item(i);
    96         NodeList filename_elements = fileset_element.getElementsByTagName(FILENAME_ELEMENT);
    97         for(int j = 0; !found && j < filename_elements.getLength(); j++) {
    98             Element filename_element = (Element) filename_elements.item(j);
    99             String filename_pattern = MSMUtils.getValue(filename_element);
    100             System.err.println("Checking " + filename + " against " + filename_pattern + "|");
    101             // Have we found a match. If so break out of for loop.
    102             if (filename != null && filename.matches(filename_pattern) && !filename_pattern.equals(DIRECTORY_FILENAME)) {
    103             System.err.println("Adding to existing file fileset!");
    104             found = true;
    105             }
    106             else if (filename == null && filename_pattern.equals(DIRECTORY_FILENAME)) {
    107             System.err.println("Adding to existing folder fileset!");
    108             found = true;
    109             }
    110             // No match. On to the next one.
    111             else {
    112             System.err.println("No match at all!");
    113             }
    114             filename_pattern = null;
    115             filename_element = null;
    116         }
    117         }
    118         fileset_elements = null;
    119         // If we still haven't found an existing fileset, then its time to create one.
     88        // Retrieve the document element
     89        Element gdm_element = base_document.getDocumentElement();
     90
     91        // Find the fileset element for the filename
     92        Element fileset_element = findFileSetElementForFile(gdm_element, filename);
     93
     94        // If there is no existing fileset, then create one
    12095        if (fileset_element == null) {
    121         System.err.println("Creating a new fileset.");
     96        // System.err.println("Creating a new fileset.");
    12297        fileset_element = base_document.createElement(FILESET_ELEMENT);
    12398        Element filename_element = base_document.createElement(FILENAME_ELEMENT);
     
    126101        fileset_element.appendChild(description_element);
    127102        Text filename_text = null;
    128         // If the filename is null then we add a directory metadata set as directorymetadata_element's first child
     103        // If the filename is null then we add a directory metadata set as gdm_element's first child
    129104        if (filename == null) {
    130105            filename_text = base_document.createTextNode(DIRECTORY_FILENAME);
    131             if (directorymetadata_element.hasChildNodes()) {
    132             directorymetadata_element.insertBefore(fileset_element, directorymetadata_element.getFirstChild());
     106            if (gdm_element.hasChildNodes()) {
     107            gdm_element.insertBefore(fileset_element, gdm_element.getFirstChild());
    133108            }
    134109            else {
    135             directorymetadata_element.appendChild(fileset_element);
     110            gdm_element.appendChild(fileset_element);
    136111            }
    137112        }
    138         // Otherwise we append the new fileset to directorymetadata_element's children
     113        // Otherwise we append the new fileset to gdm_element's children
    139114        else {
    140             System.err.println("New fileset for " + filename);
     115            // System.err.println("New fileset for " + filename);
    141116            filename = Codec.transform(filename, Codec.TEXT_TO_REGEXP);
    142             System.err.println("After transform: " + filename);
     117            // System.err.println("After transform: " + filename);
    143118            filename_text = base_document.createTextNode(filename);
    144             directorymetadata_element.appendChild(fileset_element);
     119            gdm_element.appendChild(fileset_element);
    145120        }
    146121        filename_element.appendChild(filename_text);
     
    208183        description_element = null;
    209184        metadata_element = null;
    210                 //mode = null;
    211185        fileset_element = null;
    212         directorymetadata_element = null;
     186        gdm_element = null;
    213187        up_to_date = false;
    214188    }
     
    249223    return count;
    250224    }
     225
     226
     227    private Element findFileSetElementForFile(Element gdm_element, String filename)
     228    {
     229    // Iterate through the filesets looking for one that matches the given filename
     230    NodeList fileset_elements = gdm_element.getElementsByTagName(FILESET_ELEMENT);
     231    for (int i = 0; i < fileset_elements.getLength(); i++) {
     232        Element fileset_element = (Element) fileset_elements.item(i);
     233
     234        NodeList filename_elements = fileset_element.getElementsByTagName(FILENAME_ELEMENT);
     235        for (int j = 0; j < filename_elements.getLength(); j++) {
     236        Element filename_element = (Element) filename_elements.item(j);
     237        String filename_pattern = MSMUtils.getValue(filename_element);
     238
     239        // System.err.println("Checking " + filename + " against " + filename_pattern);
     240
     241        // Is this a file match?
     242        if (filename != null && filename.matches(filename_pattern) &&
     243            !filename_pattern.equals(DIRECTORY_FILENAME)) {
     244            // System.err.println("Existing file fileset!");
     245            return fileset_element;
     246        }
     247        // Is this a folder match?
     248        else if (filename == null && filename_pattern.equals(DIRECTORY_FILENAME)) {
     249            // System.err.println("Existing folder fileset!");
     250            return fileset_element;
     251        }
     252        }
     253    }
     254
     255    // No match found
     256    return null;
     257    }
     258
    251259
    252260    /** Retrieve the document this class is wrapping. */
Note: See TracChangeset for help on using the changeset viewer.