Skip to content
GroupsWriter.java 2.97 KiB
Newer Older
package ca.nrc.cadc.ac.xml;
import ca.nrc.cadc.ac.Group;
import ca.nrc.cadc.util.StringBuilderWriter;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer;
Jeff Burke's avatar
Jeff Burke committed
import java.util.Collection;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

public class GroupsWriter
{
Jeff Burke's avatar
Jeff Burke committed
    /**
     * Write a List of Group's to a StringBuilder.
     * @param groups List of Group's to write.
     * @param builder
     * @throws java.io.IOException
     * @throws WriterException
Jeff Burke's avatar
Jeff Burke committed
     */
Jeff Burke's avatar
Jeff Burke committed
    public static void write(Collection<Group> groups, StringBuilder builder)
Jeff Burke's avatar
Jeff Burke committed
        throws IOException, WriterException
Jeff Burke's avatar
Jeff Burke committed
        write(groups, new StringBuilderWriter(builder));
Jeff Burke's avatar
Jeff Burke committed

    /**
     * Write a List of Group's to an OutputStream.
     * 
     * @param groups List of Group's to write.
     * @param out OutputStream to write to.
     * @throws IOException if the writer fails to write.
     * @throws WriterException
Jeff Burke's avatar
Jeff Burke committed
     */
Jeff Burke's avatar
Jeff Burke committed
    public static void write(Collection<Group> groups, OutputStream out)
Jeff Burke's avatar
Jeff Burke committed
        throws IOException, WriterException
Jeff Burke's avatar
Jeff Burke committed
        OutputStreamWriter outWriter;
        try
        {
        outWriter = new OutputStreamWriter(out, "UTF-8");
        }
        catch (UnsupportedEncodingException e)
        {
        throw new RuntimeException("UTF-8 encoding not supported", e);
        }
        write(groups, new BufferedWriter(outWriter));
Jeff Burke's avatar
Jeff Burke committed
    /**
     * Write a List of Group's to a Writer.
     * 
     * @param groups List of Group's to write.
     * @param writer  Writer to write to.
     * @throws IOException if the writer fails to write.
     * @throws WriterException
Jeff Burke's avatar
Jeff Burke committed
     */
Jeff Burke's avatar
Jeff Burke committed
    public static void write(Collection<Group> groups, Writer writer)
Jeff Burke's avatar
Jeff Burke committed
        throws IOException, WriterException
Jeff Burke's avatar
Jeff Burke committed
        if (groups == null)
        {
        throw new WriterException("null groups");
        }

        write(getGroupsElement(groups), writer);
Jeff Burke's avatar
Jeff Burke committed
    /**
     * 
     * @param groups List of Group's to write.
     * @return Element of list of Group's.
     * @throws WriterException
Jeff Burke's avatar
Jeff Burke committed
     */
Jeff Burke's avatar
Jeff Burke committed
    public static Element getGroupsElement(Collection<Group> groups)
Jeff Burke's avatar
Jeff Burke committed
        throws WriterException
    {
        Element groupsElement = new Element("groups");

        for (Group group : groups)
        {
            groupsElement.addContent(GroupWriter.getGroupElement(group));
        }
Jeff Burke's avatar
Jeff Burke committed
        return groupsElement;
    }
Jeff Burke's avatar
Jeff Burke committed
    /**
     * Write to root Element to a writer.
     * 
     * @param root Root Element to write.
     * @param writer Writer to write to.
     * @throws IOException if the writer fails to write.
     */
    private static void write(Element root, Writer writer)
        throws IOException
Jeff Burke's avatar
Jeff Burke committed
        XMLOutputter outputter = new XMLOutputter();
        outputter.setFormat(Format.getPrettyFormat());
        outputter.output(new Document(root), writer);