Changeset 7171


Ignore:
Timestamp:
2004-03-31T14:40:22+12:00 (20 years ago)
Author:
mdewsnip
Message:

Hacked up something to rewrite metadata.xml files of legacy collections as lots of little metadata.xml files so the GLI can actually work with them.

Location:
trunk/gli/src/org/greenstone/gatherer/msm
Files:
2 edited

Legend:

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

    r7168 r7171  
    115115
    116116
    117     private void copyMetadataXMLFiles(File source_dir, File target_dir)
    118     {
    119     // Find the metadata.xml file in this dir
    120     File metadata_file = new File(source_dir, StaticStrings.METADATA_XML);
    121     if (metadata_file.exists()) {
    122         File backup_metadata_file = new File(target_dir, StaticStrings.METADATA_XML);
     117    private void copyMetadataXMLFiles(File source_dir, File dest_dir)
     118    {
     119    // Find the metadata file in this dir
     120    File meta_file = new File(source_dir, "metadata.xml");
     121    if (meta_file.exists()) {
     122        File new_meta_file = new File(dest_dir, "metadata.xml");
    123123        try {
    124         target_dir.mkdirs();
    125         Gatherer.f_man.getQueue().copyFile(metadata_file, backup_metadata_file, null);
    126         if (!backup_metadata_file.exists()) {
     124        dest_dir.mkdirs();
     125        Gatherer.f_man.getQueue().copyFile(meta_file, new_meta_file, null);
     126        if (!new_meta_file.exists()) {
    127127            throw new Exception("");
    128128        }
    129129        }
    130130        catch (Exception e) {
    131         Gatherer.println("Exception: couldn't copy file " + metadata_file.getPath() + e.getMessage());
     131        Gatherer.println("Exception: couldn't move the file " + meta_file.getPath() + e.getMessage());
    132132        }
    133133    }
     
    138138        File child = children[i];
    139139        if (child.isDirectory()) {
    140         copyMetadataXMLFiles(child, new File(target_dir, child.getName()));
     140        copyMetadataXMLFiles(child, new File(dest_dir, child.getName()));
    141141        }
    142142    }
     
    176176    }
    177177
    178 //      // First, copy the original file to make a backup
    179 //      File backup_file = new File(file.getParentFile(), StaticStrings.METADATA_BAK);
    180 //      try {
    181 //          Gatherer.f_man.getQueue().copyFile(file, backup_file, null);
    182 //          if (!backup_file.exists()) {
    183 //          throw new Error();
    184 //          }
    185 //      }
    186 //      catch (Exception ex) {
    187 //          System.err.println("Exception occurred while importing legacy collection.");
    188 //          System.err.println("Error: Could not backup metadata.xml file to " + backup_file);
    189 //          ex.printStackTrace();
    190 //          System.err.println("Aborting legacy collection import.");
    191 //          cancelled = true;
    192 //          return;
    193 //      }
    194 
    195178    // Parse the metadata.xml file
    196179    // System.err.println("Importing metadata from " + file);
     
    202185    for (int i = 0; i < metadata_elements_list.getLength(); i++) {
    203186        metadata_elements[i] = metadata_elements_list.item(i);
     187        // System.err.println("Metadata element: " + MSMUtils.getValue(metadata_elements[i]));
     188        // System.err.println("Metadata element parent: " + metadata_elements[i].getParentNode().getNodeName());
    204189    }
    205190
     
    261246        }
    262247    }
     248
     249    // ----------------------------------------------------------------------------------
     250    //   HACK CODE ADDED IN AT VERY LAST MINUTE FOR REWRITING METADATA.XML FILES
     251
     252    // Get a list of all the <FileSet> elements in the file, and put them in an array
     253    NodeList fileset_elements_list = document.getDocumentElement().getElementsByTagName(MetadataXMLFile.FILESET_ELEMENT);
     254    Node[] fileset_elements = new Node[fileset_elements_list.getLength()];
     255    for (int i = 0; i < fileset_elements_list.getLength(); i++) {
     256        fileset_elements[i] = fileset_elements_list.item(i);
     257    }
     258
     259    // For each fileset element...
     260    for (int i = 0; i < fileset_elements.length; i++) {
     261        Node fileset_node = fileset_elements[i];
     262        NodeList fileset_children = fileset_node.getChildNodes();
     263        for (int j = 0; j < fileset_children.getLength(); j++) {
     264        Node fileset_child = fileset_children.item(j);
     265        if (fileset_child.getNodeName().equals(MetadataXMLFile.FILENAME_ELEMENT)) {
     266            String child_filename = MSMUtils.getValue(fileset_child);
     267            File child_file = new File(file.getParentFile(), child_filename);
     268            if (child_file.isDirectory()) {
     269            MetadataXMLFile child_metadata_xml_file = new MetadataXMLFile();
     270            Document child_metadata_xml_file_document = child_metadata_xml_file.getDocument();
     271
     272            fileset_node = fileset_node.getParentNode().removeChild(fileset_node);
     273
     274            // Change the filename value to .*
     275            MSMUtils.setValue((Element) fileset_child, ".*");
     276
     277            Node child_fileset_node = child_metadata_xml_file_document.importNode(fileset_node, true);
     278            child_metadata_xml_file_document.getDocumentElement().appendChild(child_fileset_node);
     279            Utility.export(child_metadata_xml_file_document, new File(child_file, StaticStrings.METADATA_XML));
     280            }
     281            break;
     282        }
     283        }
     284    }
     285
     286    //   END HACK CODE
     287    // ----------------------------------------------------------------------------------
    263288
    264289    // Write the modified metadata.xml file back out
  • trunk/gli/src/org/greenstone/gatherer/msm/MetadataXMLFile.java

    r6889 r7171  
    5353    static final private String DIRECTORY_FILENAME = ".*";
    5454    static final private String DESCRIPTION_ELEMENT = "Description";
    55     static final private String FILENAME_ELEMENT = "FileName";
    56     static final private String FILESET_ELEMENT = "FileSet";
     55    static final public String FILENAME_ELEMENT = "FileName";
     56    static final public String FILESET_ELEMENT = "FileSet";
    5757    static final private String HVALUE_ATTRIBUTE = "hvalue";
    5858    static final private String MODE_ATTRIBUTE = "mode";
Note: See TracChangeset for help on using the changeset viewer.