/* * Created on Oct 23, 2004 * */ package net.sf.jabref.mods; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import net.sf.jabref.BibtexDatabase; import net.sf.jabref.BibtexEntry; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; /** * @author Michael Wrighton * */ public class MODSDatabase { protected Set<MODSEntry> entries; public MODSDatabase() { // maybe make this sorted later... entries = new HashSet<MODSEntry>(); } public MODSDatabase(BibtexDatabase bibtex) { addEntries(bibtex, bibtex.getKeySet()); } public MODSDatabase(BibtexDatabase bibtex, Set<String> keySet) { if (keySet == null) keySet = bibtex.getKeySet(); addEntries(bibtex, keySet); } private void addEntries(BibtexDatabase database, Set<String> keySet) { entries = new HashSet<MODSEntry>(); for(Iterator<String> iter = keySet.iterator(); iter.hasNext(); ) { BibtexEntry entry = database.getEntryById(iter.next()); MODSEntry newMods = new MODSEntry(entry); entries.add(newMods); } } public Document getDOMrepresentation() { Document result = null; try { DocumentBuilder dbuild = DocumentBuilderFactory. newInstance(). newDocumentBuilder(); result = dbuild.newDocument(); Element modsCollection = result.createElement("modsCollection"); modsCollection.setAttribute("xmlns", "http://www.loc.gov/mods/v3"); modsCollection.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); modsCollection.setAttribute("xsi:schemaLocation", "http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-0.xsd"); for(Iterator<MODSEntry> iter = entries.iterator(); iter.hasNext(); ) { MODSEntry entry = iter.next(); Node node = entry.getDOMrepresentation(result); modsCollection.appendChild(node); } result.appendChild(modsCollection); } catch (Exception e) { System.out.println("Exception caught..." + e); e.printStackTrace(); } return result; } }