org.mycore.frontend.export.MCRExportCollection.java Source code

Java tutorial

Introduction

Here is the source code for org.mycore.frontend.export.MCRExportCollection.java

Source

/*
 * $Revision$ 
 * $Date$
 *
 * This file is part of ***  M y C o R e  ***
 * See http://www.mycore.de/ for details.
 *
 * This program is free software; you can use it, redistribute it
 * and / or modify it under the terms of the GNU General Public License
 * (GPL) as published by the Free Software Foundation; either version 2
 * of the License or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program, in a file called gpl.txt or license.txt.
 * If not, write to the Free Software Foundation Inc.,
 * 59 Temple Place - Suite 330, Boston, MA  02111-1307 USA
 */

package org.mycore.frontend.export;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.Namespace;
import org.mycore.common.content.MCRJDOMContent;
import org.mycore.common.xml.MCRURIResolver;
import org.mycore.frontend.basket.MCRBasket;
import org.mycore.frontend.basket.MCRBasketEntry;
import org.mycore.frontend.basket.MCRBasketXMLBuilder;

/**
 * Represents a collection of XML data to export.
 * XML can be added by URI or by JDOM Element, 
 * or the contents of a complete MCRBasket can be added.
 * The collected XML data is wrapped by a root element 
 * thats name and namespace can be set.
 * 
 * @author Frank L\u00FCtzenkirchen
 */
public class MCRExportCollection {

    /** The collection to export */
    private Element collection;

    private static MCRBasketXMLBuilder basketBuilder = new MCRBasketXMLBuilder(true);

    public MCRExportCollection() {
        collection = new Element("exportCollection");
        new Document(collection);
    }

    /** Sets the name and namespace of the root element that wraps the collected data */
    public void setRootElement(String elementName, String namespaceURI) {
        collection.setName(elementName);
        if ((namespaceURI != null) && (!namespaceURI.isEmpty()))
            collection.setNamespace(Namespace.getNamespace(namespaceURI));
    }

    /**
     * Adds the contents of the given basket.
     */
    public void add(MCRBasket basketOfMODS) throws Exception {
        for (MCRBasketEntry entry : basketOfMODS) {
            collection.addContent(basketBuilder.buildXML(entry));
        }
    }

    /**
     * Adds XML data from the given URI.
     */
    public void add(String uri) {
        add(MCRURIResolver.instance().resolve(uri));
    }

    /**
     * Adds the given XML element, making a clone.
     */
    public void add(Element element) {
        collection.addContent((Element) (element.clone()));
    }

    /**
     * Returns the collected XML data as MCRJDOMContent.
     */
    public MCRJDOMContent getContent() {
        return new MCRJDOMContent(collection.getDocument());
    }
}