package org.greenstone.gsdl3.gs3build.metadata; /** * A class to hold all the alternative file structures * for a particular METS Document */ import java.util.Map; import java.util.HashMap; import java.util.Iterator; import java.io.File; import java.io.PrintWriter; import java.net.URL; import org.greenstone.gsdl3.gs3build.doctypes.DocumentInterface; import org.greenstone.gsdl3.gs3build.database.*; import org.greenstone.gsdl3.gs3build.util.GS3SQLConnection; public class METSFileSet { Map fileGroups; public METSFileSet() { this.fileGroups = new HashMap(); this.fileGroups.put("default", new METSFileGroup("default")); } public METSFileGroup getGroup(String name) { if (!this.fileGroups.containsKey(name)) { return null; } return (METSFileGroup) this.fileGroups.get(name); } public METSFile getFile(int index) { METSFileGroup group = this.getGroup("default"); if (group == null) { return null; } return group.getFile(0); } public void addFile(METSFile file) { METSFileGroup defaultGroup = (METSFileGroup) this.fileGroups.get("default"); defaultGroup.addFile(file); } public METSFile addFile(URL url) { METSFile file = METSFile.makeMETSFile(url); this.addFile(file); return file; } public void addFile(METSFile file, String toGroup) { METSFileGroup destGroup = (METSFileGroup) this.fileGroups.get(toGroup); if (destGroup == null) { destGroup = new METSFileGroup(toGroup); this.fileGroups.put(destGroup.getName(), destGroup); } destGroup.addFile(file); } public void addFile(URL url, String toGroup) { METSFile file = METSFile.makeMETSFile(url); this.addFile(file, toGroup); } public void addGroup(METSFileGroup group) { this.fileGroups.put(group.getName(), group); } public void write(PrintWriter writer) { Iterator groups = this.fileGroups.values().iterator(); writer.println(""); while (groups.hasNext()) { METSFileGroup group = (METSFileGroup) groups.next(); group.write(writer); } writer.println(""); } public void writeSQL(DocumentInterface document, GS3SQLConnection connection) { Iterator groups = this.fileGroups.values().iterator(); GS3SQLInsert insert = new GS3SQLInsert("filesection"); insert.addValue("DocID", document.getID().toString()); insert.addValue("FileSecID", "test"); // TODO: remove magic string connection.execute(insert.toString()); while (groups.hasNext()) { METSFileGroup group = (METSFileGroup) groups.next(); group.writeSQL(document, connection); } } }