001: /**
002: * LibreSource Community
003: * Copyright (C) 2004-2007 Artenum SARL / INRIA
004: * http://www.libresource.org - contact@artenum.com
005: *
006: * This software is not a free software; you can modify it under the
007: * LibreSource Enterprise user license but you can't redistribute it.
008: * See licenses details in LSE-user-license.txt
009: *
010: * Initial authors :
011: *
012: * Guillaume Bort / INRIA
013: * Francois Charoy / Universite Nancy 2
014: * Julien Forest / Artenum
015: * Claude Godart / Universite Henry Poincare
016: * Florent Jouille / INRIA
017: * Sebastien Jourdain / INRIA / Artenum
018: * Yves Lerumeur / Artenum
019: * Pascal Molli / Universite Henry Poincare
020: * Gerald Oster / INRIA
021: * Mariarosa Penzi / Artenum
022: * Gerard Sookahet / Artenum
023: * Raphael Tani / INRIA
024: *
025: * Contributors :
026: *
027: * Stephane Bagnier / Artenum
028: * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
029: */package org.libresource.form;
030:
031: import org.libresource.Libresource;
032:
033: import org.libresource.form.ejb.model.FormResourceValue;
034: import org.libresource.form.interfaces.LibresourceFormService;
035:
036: import org.libresource.xml.ImportExportLogger;
037: import org.libresource.xml.LibresourceExportHandler;
038: import org.libresource.xml.XmlDumpAttributes;
039: import org.libresource.xml.XmlDumpHelper;
040:
041: import org.xml.sax.ContentHandler;
042:
043: import java.io.ByteArrayInputStream;
044: import java.io.ByteArrayOutputStream;
045: import java.io.ObjectOutputStream;
046:
047: import java.net.URI;
048:
049: /**
050: * Artenum Contribution
051: * @author <a href="mailto:jourdain@artenum.com">Sebastien Jourdain</a> - <a href="http://www.artenum.com">Artenum</a>
052: */
053: public class FormExportHandler extends LibresourceExportHandler {
054: private URI uri;
055:
056: public FormExportHandler(URI uri) {
057: this .uri = uri;
058: }
059:
060: public void export(ContentHandler handler, ImportExportLogger logger)
061: throws Exception {
062: try {
063: LibresourceFormService formService = (LibresourceFormService) Libresource
064: .getService(FormConstants.SERVICE);
065: FormResourceValue formResourceValue = formService
066: .getForm(uri);
067:
068: XmlDumpAttributes attributes = new XmlDumpAttributes();
069: XmlDumpHelper.beginElement("form", "form", XmlDumpHelper
070: .generateAttributesSet(attributes), handler);
071:
072: XmlDumpHelper.outputElementWithContent("form", "name",
073: formResourceValue.getName(), XmlDumpHelper
074: .getEmptyAttributesSet(), handler);
075: XmlDumpHelper.outputElementWithContent("form",
076: "description", formResourceValue.getDescription(),
077: XmlDumpHelper.getEmptyAttributesSet(), handler);
078: XmlDumpHelper.outputElementWithContent("form",
079: "resourceTypeToCreate", formResourceValue
080: .getResourceTypeToCreate(), XmlDumpHelper
081: .getEmptyAttributesSet(), handler);
082: XmlDumpHelper.outputElementWithContent("form",
083: "destination", formResourceValue
084: .getDestinationURI(), XmlDumpHelper
085: .getEmptyAttributesSet(), handler);
086: XmlDumpHelper.outputElementWithContent("form", "redirect",
087: formResourceValue.getRedirectionURI(),
088: XmlDumpHelper.getEmptyAttributesSet(), handler);
089:
090: // Write the binary content
091: ByteArrayOutputStream outTmp = new ByteArrayOutputStream();
092: ObjectOutputStream objOutTmp = new ObjectOutputStream(
093: outTmp);
094: objOutTmp.writeObject(formResourceValue.getFormFields());
095: objOutTmp.flush();
096: XmlDumpHelper.outputElementWithContent("form", "fields",
097: new ByteArrayInputStream(outTmp.toByteArray()),
098: XmlDumpHelper.getEmptyAttributesSet(), handler);
099: XmlDumpHelper.endElement("form", "form", handler);
100: } catch (Exception e) {
101: e.printStackTrace();
102: throw e;
103: }
104: }
105: }
|