3247693aff87c633907b3dcf7f55ca4327ffcff8
[cdmlib.git] / cdmlib-print / src / main / java / eu / etaxonomy / cdm / print / out / odf / OdfOutputModule.java
1 /**
2 *
3 */
4 package eu.etaxonomy.cdm.print.out.odf;
5
6 import java.io.File;
7 import java.io.InputStream;
8
9 import org.apache.log4j.Logger;
10 import org.jdom.Document;
11 import org.jdom.transform.XSLTransformException;
12 import org.odftoolkit.odfdom.doc.OdfTextDocument;
13
14 import eu.etaxonomy.cdm.common.IProgressMonitor;
15 import eu.etaxonomy.cdm.print.Transformator;
16 import eu.etaxonomy.cdm.print.out.AbstractPublishOutputModule;
17
18 /**
19 * This output module will transform the given document into <a href="http://www.oasis-open.org/committees/office/">ODF</a> format for further editing in
20 * <a href="http://www.openoffice.org/">OpenOffice</a> or any other tool that understands ODF.
21 *
22 * @author n.hoffmann
23 * @created Apr 20, 2010
24 * @version 1.0
25 */
26 public class OdfOutputModule extends AbstractPublishOutputModule {
27 private static final Logger logger = Logger
28 .getLogger(OdfOutputModule.class);
29
30 public static String STYLESHEET_RESOURCE_DEFAULT = "/eu/etaxonomy/cdm/print/out/odf/cdmToOdfText.xsl";
31
32 private DocumentCreator documentCreator;
33 private Transformator transformator;
34
35 private InputStream stylesheet;
36
37 public OdfOutputModule() {
38 stylesheet = OdfOutputModule.class.getResourceAsStream(STYLESHEET_RESOURCE_DEFAULT);
39 documentCreator = new DocumentCreator();
40 try {
41 transformator = new Transformator(stylesheet);
42 }
43 catch (XSLTransformException e) {
44 logger.error("XSLTransformException while creating ODF output module", e);
45 }
46 }
47
48
49 /* (non-Javadoc)
50 * @see eu.etaxonomy.printpublisher.out.IPublishOutputModule#output(org.jdom.Document, java.io.File)
51 */
52 public void output(Document document, File exportFolder, IProgressMonitor progressMonitor) {
53
54 super.output(document, exportFolder, progressMonitor);
55
56 Document transformedDocument;
57 String filePath = getFilePath(exportFolder);
58
59 try{
60 transformedDocument = transformator.transform(document);
61
62 OdfTextDocument odfTextDocument = documentCreator.create(transformedDocument);
63
64 odfTextDocument.save(filePath);
65 logger.warn("ODF output written to disk: " + filePath);
66 }catch(Exception e){
67 throw new RuntimeException(e);
68 }
69 }
70
71 /*
72 * (non-Javadoc)
73 * @see eu.etaxonomy.printpublisher.out.IPublishOutputModule#getOutputFileSuffix()
74 */
75 public String getOutputFileSuffix() {
76 return "odf";
77 }
78
79 }