From 06210ab95bed3c3cbf16cf8eb734dd727934ed1a Mon Sep 17 00:00:00 2001 From: Paulo Gustavo Veiga Date: Thu, 28 Mar 2013 17:01:42 -0300 Subject: [PATCH] Add text/plan, open office and xls transformation support. --- wise-webapp/pom.xml | 2 +- .../wisemapping/exporter/ExportFormat.java | 5 +- .../com/wisemapping/exporter/Exporter.java | 3 +- .../wisemapping/exporter/ExporterFactory.java | 15 + .../wisemapping/exporter/XSLTExporter.java | 88 + .../wisemapping/rest/MindmapController.java | 32 + .../wisemapping/rest/view/TransformView.java | 3 + .../com/wisemapping/export/xslt/LICENSE.MIT | 17 + .../com/wisemapping/export/xslt/hide.png | Bin 0 -> 209 bytes .../com/wisemapping/export/xslt/ilink.png | Bin 0 -> 447 bytes .../com/wisemapping/export/xslt/leaf.png | Bin 0 -> 203 bytes .../com/wisemapping/export/xslt/marktree.js | 473 +++ .../wisemapping/export/xslt/masterfile.tex | 23 + .../export/xslt/mindmanager2mm.xsl | 138 + .../com/wisemapping/export/xslt/minus.png | Bin 0 -> 1012 bytes .../com/wisemapping/export/xslt/mm2csv.xsl | 37 + .../com/wisemapping/export/xslt/mm2html.xsl | 140 + .../com/wisemapping/export/xslt/mm2latex.xsl | 570 +++ .../export/xslt/mm2latex_latin1_TEMPLATE.mm | 268 ++ .../wisemapping/export/xslt/mm2latexartcl.xsl | 260 ++ .../wisemapping/export/xslt/mm2latexbook.xsl | 251 ++ .../wisemapping/export/xslt/mm2msp_utf8.xsl | 120 + .../export/xslt/mm2msp_utf8_TEMPLATE.mm | 785 +++++ .../export/xslt/mm2ooimpress.manifest.xsl | 55 + .../wisemapping/export/xslt/mm2ooimpress.xsl | 714 ++++ .../export/xslt/mm2ooimpressStyles.xml | 1132 ++++++ .../export/xslt/mm2oowriter.manifest.xsl | 55 + .../wisemapping/export/xslt/mm2oowriter.xsl | 540 +++ .../export/xslt/mm2oowriterStyles.xml | 275 ++ .../com/wisemapping/export/xslt/mm2text.xsl | 39 + .../export/xslt/mm2tjiresources.xsl | 162 + .../wisemapping/export/xslt/mm2tjitasks.xsl | 114 + .../com/wisemapping/export/xslt/mm2tsk.xsl | 77 + .../com/wisemapping/export/xslt/mm2twiki.xsl | 118 + .../export/xslt/mm2twiki_headings.xsl | 192 ++ .../export/xslt/mm2wordml_utf8.xsl | 439 +++ .../export/xslt/mm2wordml_utf8_TEMPLATE.mm | 112 + .../com/wisemapping/export/xslt/mm2xbel.xsl | 54 + .../wisemapping/export/xslt/mm2xls_utf8.xsl | 116 + .../com/wisemapping/export/xslt/opml2mm.xsl | 15 + .../com/wisemapping/export/xslt/plus.png | Bin 0 -> 1020 bytes .../com/wisemapping/export/xslt/show.png | Bin 0 -> 216 bytes .../wisemapping/export/xslt/treestyles.css | 247 ++ .../com/wisemapping/export/xslt/xbel2mm.xsl | 59 + .../src/main/resources/messages_en.properties | 6 + .../src/main/webapp/WEB-INF/app.properties | 2 +- .../main/webapp/WEB-INF/wisemapping-rest.xml | 20 + .../src/main/webapp/jsp/mindmapExport.jsp | 26 +- .../ExportFreemindTest.java} | 6 +- ...xportTest.java => ExportSVGBasedTest.java} | 2 +- .../test/export/ExportXsltBasedTest.java | 81 + .../FreeMindImportExportTest.java} | 6 +- .../src/test/resources/data/export/bigmap.csv | 836 +++++ .../src/test/resources/data/export/bigmap.doc | 2137 ++++++++++++ .../test/resources/data/export/bigmap.fodt | 276 ++ .../test/resources/data/export/bigmap.latex | 251 ++ .../data/{wisemaps => export}/bigmap.mmr | 0 .../src/test/resources/data/export/bigmap.odt | 276 ++ .../src/test/resources/data/export/bigmap.txt | 264 ++ .../data/{wisemaps => export}/bigmap.wxml | 0 .../src/test/resources/data/export/bigmap.xls | 991 ++++++ .../data/{wisemaps => export}/bug.mmr | 0 .../src/test/resources/data/export/bug2.csv | 79 + .../src/test/resources/data/export/bug2.doc | 582 ++++ .../src/test/resources/data/export/bug2.fodt | 120 + .../src/test/resources/data/export/bug2.latex | 32 + .../data/{wisemaps => export}/bug2.mmr | 0 .../src/test/resources/data/export/bug2.odt | 120 + .../src/test/resources/data/export/bug2.txt | 52 + .../data/{wisemaps => export}/bug2.wxml | 0 .../src/test/resources/data/export/bug2.xls | 191 + .../src/test/resources/data/export/bug3.csv | 1511 ++++++++ .../src/test/resources/data/export/bug3.doc | 3064 +++++++++++++++++ .../src/test/resources/data/export/bug3.fodt | 391 +++ .../src/test/resources/data/export/bug3.latex | 438 +++ .../data/{wisemaps => export}/bug3.mmr | 0 .../src/test/resources/data/export/bug3.odt | 391 +++ .../src/test/resources/data/export/bug3.txt | 1043 ++++++ .../data/{wisemaps => export}/bug3.wxml | 0 .../src/test/resources/data/export/bug3.xls | 1669 +++++++++ .../resources/data/export/cdata-support.csv | 1 + .../resources/data/export/cdata-support.doc | 277 ++ .../resources/data/export/cdata-support.fodt | 85 + .../resources/data/export/cdata-support.latex | 2 + .../{wisemaps => export}/cdata-support.mmr | 0 .../resources/data/export/cdata-support.odt | 85 + .../resources/data/export/cdata-support.txt | 13 + .../{wisemaps => export}/cdata-support.wxml | 0 .../resources/data/export/cdata-support.xls | 36 + .../src/test/resources/data/export/enc.csv | 68 + .../src/test/resources/data/export/enc.doc | 519 +++ .../src/test/resources/data/export/enc.fodt | 111 + .../src/test/resources/data/export/enc.latex | 25 + .../data/{wisemaps => export}/enc.mmr | 0 .../src/test/resources/data/export/enc.odt | 111 + .../src/test/resources/data/export/enc.txt | 291 ++ .../data/{wisemaps => export}/enc.wxml | 0 .../src/test/resources/data/export/enc.xls | 296 ++ .../src/test/resources/data/export/i18n.csv | 7 + .../src/test/resources/data/export/i18n.doc | 297 ++ .../src/test/resources/data/export/i18n.fodt | 87 + .../src/test/resources/data/export/i18n.latex | 5 + .../src/test/resources/data/export/i18n.mmr | 7 + .../src/test/resources/data/export/i18n.odt | 87 + .../src/test/resources/data/export/i18n.txt | 8 + .../src/test/resources/data/export/i18n.wxml | 15 + .../src/test/resources/data/export/i18n.xls | 46 + .../src/test/resources/data/export/i18n2.csv | 5 + .../src/test/resources/data/export/i18n2.doc | 297 ++ .../src/test/resources/data/export/i18n2.fodt | 87 + .../test/resources/data/export/i18n2.latex | 4 + .../src/test/resources/data/export/i18n2.mmr | 25 + .../src/test/resources/data/export/i18n2.odt | 87 + .../src/test/resources/data/export/i18n2.txt | 26 + .../src/test/resources/data/export/i18n2.wxml | 14 + .../src/test/resources/data/export/i18n2.xls | 49 + .../test/resources/data/export/longnodes.csv | 3 + .../test/resources/data/export/longnodes.doc | 277 ++ .../test/resources/data/export/longnodes.fodt | 85 + .../resources/data/export/longnodes.latex | 3 + .../test/resources/data/export/longnodes.mmr | 18 + .../test/resources/data/export/longnodes.odt | 85 + .../test/resources/data/export/longnodes.txt | 19 + .../test/resources/data/export/longnodes.wxml | 13 + .../test/resources/data/export/longnodes.xls | 42 + .../src/test/resources/data/export/npe.csv | 1 + .../src/test/resources/data/export/npe.doc | 267 ++ .../src/test/resources/data/export/npe.fodt | 84 + .../src/test/resources/data/export/npe.latex | 2 + .../data/{wisemaps => export}/npe.mmr | 0 .../src/test/resources/data/export/npe.odt | 84 + .../src/test/resources/data/export/npe.txt | 4 + .../data/{wisemaps => export}/npe.wxml | 0 .../src/test/resources/data/export/npe.xls | 31 + .../test/resources/data/export/process.csv | 240 ++ .../test/resources/data/export/process.doc | 967 ++++++ .../test/resources/data/export/process.fodt | 157 + .../test/resources/data/export/process.latex | 75 + .../test/resources/data/export/process.mmr | 100 + .../test/resources/data/export/process.odt | 157 + .../test/resources/data/export/process.txt | 101 + .../test/resources/data/export/process.wxml | 225 ++ .../test/resources/data/export/process.xls | 381 ++ .../resources/data/export/simple-maps.csv | 1932 +++++++++++ .../resources/data/export/simple-maps.doc | 2021 +++++++++++ .../resources/data/export/simple-maps.fodt | 299 ++ .../resources/data/export/simple-maps.latex | 385 +++ .../data/{wisemaps => export}/simple-maps.mmr | 0 .../resources/data/export/simple-maps.odt | 299 ++ .../resources/data/export/simple-maps.txt | 802 +++++ .../{wisemaps => export}/simple-maps.wxml | 0 .../resources/data/export/simple-maps.xls | 1106 ++++++ .../test/resources/data/export/welcome.csv | 71 + .../test/resources/data/export/welcome.doc | 527 +++ .../test/resources/data/export/welcome.fodt | 113 + .../test/resources/data/export/welcome.latex | 27 + .../data/{wisemaps => export}/welcome.mmr | 0 .../test/resources/data/export/welcome.odt | 113 + .../test/resources/data/export/welcome.txt | 79 + .../data/{wisemaps => export}/welcome.wxml | 0 .../test/resources/data/export/welcome.xls | 166 + 161 files changed, 37030 insertions(+), 12 deletions(-) create mode 100644 wise-webapp/src/main/java/com/wisemapping/exporter/XSLTExporter.java create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/LICENSE.MIT create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/hide.png create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/ilink.png create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/leaf.png create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/marktree.js create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/masterfile.tex create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mindmanager2mm.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/minus.png create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2csv.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2html.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2latex.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2latex_latin1_TEMPLATE.mm create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2latexartcl.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2latexbook.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2msp_utf8.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2msp_utf8_TEMPLATE.mm create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2ooimpress.manifest.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2ooimpress.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2ooimpressStyles.xml create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2oowriter.manifest.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2oowriter.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2oowriterStyles.xml create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2text.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2tjiresources.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2tjitasks.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2tsk.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2twiki.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2twiki_headings.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2wordml_utf8.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2wordml_utf8_TEMPLATE.mm create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2xbel.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/mm2xls_utf8.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/opml2mm.xsl create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/plus.png create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/show.png create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/treestyles.css create mode 100644 wise-webapp/src/main/resources/com/wisemapping/export/xslt/xbel2mm.xsl rename wise-webapp/src/test/java/com/wisemapping/test/{freemind/ExportTest.java => export/ExportFreemindTest.java} (96%) rename wise-webapp/src/test/java/com/wisemapping/test/export/{ExportTest.java => ExportSVGBasedTest.java} (99%) create mode 100644 wise-webapp/src/test/java/com/wisemapping/test/export/ExportXsltBasedTest.java rename wise-webapp/src/test/java/com/wisemapping/test/{freemind/ImportExportTest.java => importer/FreeMindImportExportTest.java} (96%) create mode 100644 wise-webapp/src/test/resources/data/export/bigmap.csv create mode 100644 wise-webapp/src/test/resources/data/export/bigmap.doc create mode 100644 wise-webapp/src/test/resources/data/export/bigmap.fodt create mode 100644 wise-webapp/src/test/resources/data/export/bigmap.latex rename wise-webapp/src/test/resources/data/{wisemaps => export}/bigmap.mmr (100%) create mode 100644 wise-webapp/src/test/resources/data/export/bigmap.odt create mode 100644 wise-webapp/src/test/resources/data/export/bigmap.txt rename wise-webapp/src/test/resources/data/{wisemaps => export}/bigmap.wxml (100%) create mode 100644 wise-webapp/src/test/resources/data/export/bigmap.xls rename wise-webapp/src/test/resources/data/{wisemaps => export}/bug.mmr (100%) create mode 100644 wise-webapp/src/test/resources/data/export/bug2.csv create mode 100644 wise-webapp/src/test/resources/data/export/bug2.doc create mode 100644 wise-webapp/src/test/resources/data/export/bug2.fodt create mode 100644 wise-webapp/src/test/resources/data/export/bug2.latex rename wise-webapp/src/test/resources/data/{wisemaps => export}/bug2.mmr (100%) create mode 100644 wise-webapp/src/test/resources/data/export/bug2.odt create mode 100644 wise-webapp/src/test/resources/data/export/bug2.txt rename wise-webapp/src/test/resources/data/{wisemaps => export}/bug2.wxml (100%) create mode 100644 wise-webapp/src/test/resources/data/export/bug2.xls create mode 100644 wise-webapp/src/test/resources/data/export/bug3.csv create mode 100644 wise-webapp/src/test/resources/data/export/bug3.doc create mode 100644 wise-webapp/src/test/resources/data/export/bug3.fodt create mode 100644 wise-webapp/src/test/resources/data/export/bug3.latex rename wise-webapp/src/test/resources/data/{wisemaps => export}/bug3.mmr (100%) create mode 100644 wise-webapp/src/test/resources/data/export/bug3.odt create mode 100644 wise-webapp/src/test/resources/data/export/bug3.txt rename wise-webapp/src/test/resources/data/{wisemaps => export}/bug3.wxml (100%) create mode 100644 wise-webapp/src/test/resources/data/export/bug3.xls create mode 100644 wise-webapp/src/test/resources/data/export/cdata-support.csv create mode 100644 wise-webapp/src/test/resources/data/export/cdata-support.doc create mode 100644 wise-webapp/src/test/resources/data/export/cdata-support.fodt create mode 100644 wise-webapp/src/test/resources/data/export/cdata-support.latex rename wise-webapp/src/test/resources/data/{wisemaps => export}/cdata-support.mmr (100%) create mode 100644 wise-webapp/src/test/resources/data/export/cdata-support.odt create mode 100644 wise-webapp/src/test/resources/data/export/cdata-support.txt rename wise-webapp/src/test/resources/data/{wisemaps => export}/cdata-support.wxml (100%) create mode 100644 wise-webapp/src/test/resources/data/export/cdata-support.xls create mode 100644 wise-webapp/src/test/resources/data/export/enc.csv create mode 100644 wise-webapp/src/test/resources/data/export/enc.doc create mode 100644 wise-webapp/src/test/resources/data/export/enc.fodt create mode 100644 wise-webapp/src/test/resources/data/export/enc.latex rename wise-webapp/src/test/resources/data/{wisemaps => export}/enc.mmr (100%) create mode 100644 wise-webapp/src/test/resources/data/export/enc.odt create mode 100644 wise-webapp/src/test/resources/data/export/enc.txt rename wise-webapp/src/test/resources/data/{wisemaps => export}/enc.wxml (100%) create mode 100644 wise-webapp/src/test/resources/data/export/enc.xls create mode 100644 wise-webapp/src/test/resources/data/export/i18n.csv create mode 100644 wise-webapp/src/test/resources/data/export/i18n.doc create mode 100644 wise-webapp/src/test/resources/data/export/i18n.fodt create mode 100644 wise-webapp/src/test/resources/data/export/i18n.latex create mode 100644 wise-webapp/src/test/resources/data/export/i18n.mmr create mode 100644 wise-webapp/src/test/resources/data/export/i18n.odt create mode 100644 wise-webapp/src/test/resources/data/export/i18n.txt create mode 100644 wise-webapp/src/test/resources/data/export/i18n.wxml create mode 100644 wise-webapp/src/test/resources/data/export/i18n.xls create mode 100644 wise-webapp/src/test/resources/data/export/i18n2.csv create mode 100644 wise-webapp/src/test/resources/data/export/i18n2.doc create mode 100644 wise-webapp/src/test/resources/data/export/i18n2.fodt create mode 100644 wise-webapp/src/test/resources/data/export/i18n2.latex create mode 100644 wise-webapp/src/test/resources/data/export/i18n2.mmr create mode 100644 wise-webapp/src/test/resources/data/export/i18n2.odt create mode 100644 wise-webapp/src/test/resources/data/export/i18n2.txt create mode 100644 wise-webapp/src/test/resources/data/export/i18n2.wxml create mode 100644 wise-webapp/src/test/resources/data/export/i18n2.xls create mode 100644 wise-webapp/src/test/resources/data/export/longnodes.csv create mode 100644 wise-webapp/src/test/resources/data/export/longnodes.doc create mode 100644 wise-webapp/src/test/resources/data/export/longnodes.fodt create mode 100644 wise-webapp/src/test/resources/data/export/longnodes.latex create mode 100644 wise-webapp/src/test/resources/data/export/longnodes.mmr create mode 100644 wise-webapp/src/test/resources/data/export/longnodes.odt create mode 100644 wise-webapp/src/test/resources/data/export/longnodes.txt create mode 100644 wise-webapp/src/test/resources/data/export/longnodes.wxml create mode 100644 wise-webapp/src/test/resources/data/export/longnodes.xls create mode 100644 wise-webapp/src/test/resources/data/export/npe.csv create mode 100644 wise-webapp/src/test/resources/data/export/npe.doc create mode 100644 wise-webapp/src/test/resources/data/export/npe.fodt create mode 100644 wise-webapp/src/test/resources/data/export/npe.latex rename wise-webapp/src/test/resources/data/{wisemaps => export}/npe.mmr (100%) create mode 100644 wise-webapp/src/test/resources/data/export/npe.odt create mode 100644 wise-webapp/src/test/resources/data/export/npe.txt rename wise-webapp/src/test/resources/data/{wisemaps => export}/npe.wxml (100%) create mode 100644 wise-webapp/src/test/resources/data/export/npe.xls create mode 100644 wise-webapp/src/test/resources/data/export/process.csv create mode 100644 wise-webapp/src/test/resources/data/export/process.doc create mode 100644 wise-webapp/src/test/resources/data/export/process.fodt create mode 100644 wise-webapp/src/test/resources/data/export/process.latex create mode 100644 wise-webapp/src/test/resources/data/export/process.mmr create mode 100644 wise-webapp/src/test/resources/data/export/process.odt create mode 100644 wise-webapp/src/test/resources/data/export/process.txt create mode 100644 wise-webapp/src/test/resources/data/export/process.wxml create mode 100644 wise-webapp/src/test/resources/data/export/process.xls create mode 100644 wise-webapp/src/test/resources/data/export/simple-maps.csv create mode 100644 wise-webapp/src/test/resources/data/export/simple-maps.doc create mode 100644 wise-webapp/src/test/resources/data/export/simple-maps.fodt create mode 100644 wise-webapp/src/test/resources/data/export/simple-maps.latex rename wise-webapp/src/test/resources/data/{wisemaps => export}/simple-maps.mmr (100%) create mode 100644 wise-webapp/src/test/resources/data/export/simple-maps.odt create mode 100644 wise-webapp/src/test/resources/data/export/simple-maps.txt rename wise-webapp/src/test/resources/data/{wisemaps => export}/simple-maps.wxml (100%) create mode 100644 wise-webapp/src/test/resources/data/export/simple-maps.xls create mode 100644 wise-webapp/src/test/resources/data/export/welcome.csv create mode 100644 wise-webapp/src/test/resources/data/export/welcome.doc create mode 100644 wise-webapp/src/test/resources/data/export/welcome.fodt create mode 100644 wise-webapp/src/test/resources/data/export/welcome.latex rename wise-webapp/src/test/resources/data/{wisemaps => export}/welcome.mmr (100%) create mode 100644 wise-webapp/src/test/resources/data/export/welcome.odt create mode 100644 wise-webapp/src/test/resources/data/export/welcome.txt rename wise-webapp/src/test/resources/data/{wisemaps => export}/welcome.wxml (100%) create mode 100644 wise-webapp/src/test/resources/data/export/welcome.xls diff --git a/wise-webapp/pom.xml b/wise-webapp/pom.xml index 00090372..bff5060c 100644 --- a/wise-webapp/pom.xml +++ b/wise-webapp/pom.xml @@ -9,7 +9,7 @@ org.wisemapping wisemapping ../pom.xml - 3.0-SNAPSHOT + 3.1-SNAPSHOT diff --git a/wise-webapp/src/main/java/com/wisemapping/exporter/ExportFormat.java b/wise-webapp/src/main/java/com/wisemapping/exporter/ExportFormat.java index 7bc60eca..560ae519 100644 --- a/wise-webapp/src/main/java/com/wisemapping/exporter/ExportFormat.java +++ b/wise-webapp/src/main/java/com/wisemapping/exporter/ExportFormat.java @@ -26,9 +26,12 @@ public enum ExportFormat { PNG("image/png", "png"), PDF("application/pdf", "pdf"), FREEMIND("application/freemind", "mm"), + TEXT("text/plain", "txt"), + MICROSOFT_EXCEL("application/vnd.ms-excel", "xls"), + MICROSOFT_WORD("application/msword", "doc"), + OPEN_OFFICE_WRITER("application/vnd.oasis.opendocument.text", "odt"), WISEMAPPING("application/wisemapping+xml", "wxml"); - private String contentType; private String fileExtension; diff --git a/wise-webapp/src/main/java/com/wisemapping/exporter/Exporter.java b/wise-webapp/src/main/java/com/wisemapping/exporter/Exporter.java index f2b86523..7516a5fc 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exporter/Exporter.java +++ b/wise-webapp/src/main/java/com/wisemapping/exporter/Exporter.java @@ -19,10 +19,11 @@ package com.wisemapping.exporter; import com.wisemapping.model.Mindmap; +import org.jetbrains.annotations.NotNull; import java.io.OutputStream; public interface Exporter { - public void export(byte[] xml, OutputStream outputStream) throws ExportException; + public void export(@NotNull byte[] xml, @NotNull OutputStream outputStream) throws ExportException; public void export(Mindmap map, OutputStream outputStream) throws ExportException; } diff --git a/wise-webapp/src/main/java/com/wisemapping/exporter/ExporterFactory.java b/wise-webapp/src/main/java/com/wisemapping/exporter/ExporterFactory.java index 6ece42b7..6c717f5f 100644 --- a/wise-webapp/src/main/java/com/wisemapping/exporter/ExporterFactory.java +++ b/wise-webapp/src/main/java/com/wisemapping/exporter/ExporterFactory.java @@ -124,6 +124,21 @@ public class ExporterFactory { output.write(svgString.getBytes("UTF-8")); break; } + case TEXT: { + final Exporter exporter = XSLTExporter.create(XSLTExporter.Type.TEXT); + exporter.export(xml.getBytes("UTF-8"), output); + break; + } + case OPEN_OFFICE_WRITER: { + final Exporter exporter = XSLTExporter.create(XSLTExporter.Type.OPEN_OFFICE); + exporter.export(xml.getBytes("UTF-8"), output); + break; + } + case MICROSOFT_EXCEL: { + final Exporter exporter = XSLTExporter.create(XSLTExporter.Type.MICROSOFT_EXCEL); + exporter.export(xml.getBytes("UTF-8"), output); + break; + } case FREEMIND: { final FreemindExporter exporter = new FreemindExporter(); exporter.export(xml.getBytes("UTF-8"), output); diff --git a/wise-webapp/src/main/java/com/wisemapping/exporter/XSLTExporter.java b/wise-webapp/src/main/java/com/wisemapping/exporter/XSLTExporter.java new file mode 100644 index 00000000..f0e163ef --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/exporter/XSLTExporter.java @@ -0,0 +1,88 @@ +package com.wisemapping.exporter; + +import com.wisemapping.model.Mindmap; +import org.jetbrains.annotations.NotNull; + +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; +import java.io.*; + +public class XSLTExporter implements Exporter { + + private Type type; + + public XSLTExporter(@NotNull Type type) { + this.type = type; + } + + @Override + public void export(@NotNull byte[] xml, @NotNull OutputStream outputStream) throws ExportException { + final ByteArrayOutputStream mmos = new ByteArrayOutputStream(); + + // Convert to freemind ... + final FreemindExporter exporter = new FreemindExporter(); + exporter.export(xml, mmos); + + // Convert to xslt transform ... + final InputStream xsltis = this.getClass().getResourceAsStream("/com/wisemapping/export/xslt/" + type.getXsltName()); + if (xsltis == null) { + throw new IllegalStateException("XSLT could not be resolved."); + } + + try { + final TransformerFactory factory = TransformerFactory.newInstance(); + final Source xslt = new StreamSource(xsltis); + Transformer transformer = factory.newTransformer(xslt); + + final CharArrayReader reader = new CharArrayReader(mmos.toString("iso-8859-1").toCharArray()); + final Source mmSource = new StreamSource(reader); + transformer.transform(mmSource, new StreamResult(outputStream)); + } catch (TransformerException e) { + throw new ExportException(e); + } catch (UnsupportedEncodingException e) { + throw new ExportException(e); + } + + } + + @Override + public void export(@NotNull Mindmap map, OutputStream outputStream) throws ExportException { + throw new UnsupportedOperationException(); + } + + @NotNull + public static Exporter createTextExporter() { + return create(Type.TEXT); + } + + @NotNull + public static Exporter create(@NotNull Type type) { + return new XSLTExporter(type); + } + + public static enum Type { + TEXT("mm2text.xsl"), + WORD("mm2wordml_utf8.xsl"), + CSV("mm2csv.xsl"), + LATEX("mm2latex.xsl"), + MICROSOFT_EXCEL("mm2xls_utf8.xsl"), + OPEN_OFFICE("mm2oowriter.xsl"); + + public String getXsltName() { + return xsltName; + } + + private String xsltName; + + Type(@NotNull String xstFile) { + this.xsltName = xstFile; + } + } + + +} + diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java b/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java index b0e60a07..976c860b 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/MindmapController.java @@ -88,6 +88,38 @@ public class MindmapController extends BaseController { return new ModelAndView("transformViewFreemind", values); } + + @RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"text/plain"}, params = {"download=txt"}) + @ResponseBody + public ModelAndView retrieveDocumentAsText(@PathVariable int id) throws IOException { + final Mindmap mindMap = mindmapService.findMindmapById(id); + final Map values = new HashMap(); + values.put("content", mindMap.getXmlStr()); + values.put("filename", mindMap.getTitle()); + return new ModelAndView("transformViewTxt", values); + } + + @RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"application/vnd.ms-excel"}, params = {"download=xls"}) + @ResponseBody + public ModelAndView retrieveDocumentAsExcel(@PathVariable int id) throws IOException { + final Mindmap mindMap = mindmapService.findMindmapById(id); + final Map values = new HashMap(); + values.put("content", mindMap.getXmlStr()); + values.put("filename", mindMap.getTitle()); + return new ModelAndView("transformViewXls", values); + } + + @RequestMapping(method = RequestMethod.GET, value = "/maps/{id}", produces = {"application/vnd.oasis.opendocument.text"}, params = {"download=odt"}) + @ResponseBody + public ModelAndView retrieveDocumentAsOdt(@PathVariable int id) throws IOException { + final Mindmap mindMap = mindmapService.findMindmapById(id); + final Map values = new HashMap(); + values.put("content", mindMap.getXmlStr()); + values.put("filename", mindMap.getTitle()); + return new ModelAndView("transformViewOdt", values); + } + + @RequestMapping(method = RequestMethod.GET, value = "/maps/", produces = {"application/json", "text/html", "application/xml"}) public ModelAndView retrieveList(@RequestParam(required = false) String q) throws IOException { final User user = Utils.getUser(); diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/view/TransformView.java b/wise-webapp/src/main/java/com/wisemapping/rest/view/TransformView.java index f83a866c..79497e18 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/view/TransformView.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/view/TransformView.java @@ -86,6 +86,9 @@ public class TransformView extends AbstractView { final Object mindmap = viewMap.get("mindmap"); final StreamResult result = new StreamResult(outputStream); jaxbMarshaller.marshal(mindmap, result); + } else if (exportFormat == ExportFormat.MICROSOFT_EXCEL || exportFormat == ExportFormat.TEXT || exportFormat == ExportFormat.OPEN_OFFICE_WRITER) { + response.setCharacterEncoding("UTF-8"); + factory.export(properties, content, outputStream, null); } else { factory.export(properties, null, outputStream, content); } diff --git a/wise-webapp/src/main/resources/com/wisemapping/export/xslt/LICENSE.MIT b/wise-webapp/src/main/resources/com/wisemapping/export/xslt/LICENSE.MIT new file mode 100644 index 00000000..9e231e60 --- /dev/null +++ b/wise-webapp/src/main/resources/com/wisemapping/export/xslt/LICENSE.MIT @@ -0,0 +1,17 @@ +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/wise-webapp/src/main/resources/com/wisemapping/export/xslt/hide.png b/wise-webapp/src/main/resources/com/wisemapping/export/xslt/hide.png new file mode 100644 index 0000000000000000000000000000000000000000..067acdb8b441007d61c60688b6693c2228adb779 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIoCO|{#XvD(5N2eUHAey{$X?>< z>&kwGi$_pP@3l*`0#Hb{#5JPCIX^cyHLrxhxhOTUBsE2$JhLQ2AtWPJ!QIn0;C+f} z9#EmXr;B4q#Vy}c8+lt81dbeV-DP#+<^JycMkkJI(>U}hWTGbjvHrv`waRw^*Cfse y2IG~kcizubu{YXie!=v0u3Ci1wGM`#-p00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF-Rh3>6+KPzuBn0000TbVXQnLvL+uWo~o;Lvm$dbY)~9 zcWHEJAXI2&AV*0}Q14_VZU6uQHAzH4RCwBzk}op_P!Pq>-LoHoLZOKM6$IMj1H7bY zk|O#Nl4?dYBOyqPdDVM`fTB={`aO4r`&^zO*l=fe?{CkY-MtBWf#2+UqgRwwN>(l^ zk|g;L=%zau-pBv~K=^vE1K@1sd`LfRJ>*hK&MH(ZO+ZSKa*arO^8$c7Bme;{pDwkk z%g&WlifA=9l60DpBBFh&+;2UWVn6_23mKs&4<>5( zwEd*ajHpu#Xp}aN?~hggdFMr$L3m1eeXT1 p6tPXY9)XBx%l+e5{c48)*auZHgiZy-Qo;ZL002ovPDHLkV1nT9yNLh* literal 0 HcmV?d00001 diff --git a/wise-webapp/src/main/resources/com/wisemapping/export/xslt/leaf.png b/wise-webapp/src/main/resources/com/wisemapping/export/xslt/leaf.png new file mode 100644 index 0000000000000000000000000000000000000000..a864906f5309a813e2b3c3d218e4dd94366ef345 GIT binary patch literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIoCO|{#XvD(5N2eUHAey{$X?>< z>&kwGi$|Q%sCP%(7NC%9iEBiObAE1aYF-J0b5UwyNotBhd1gt5LP$ocg1e`0!21-{ zJfK2HPZ!6Kid(*?H}W<(2pl=U8f*IHzVyLcm)OM{9v6NpeY(`+;miO*MPU{fqm>$0 sd|HyOzhT(9St7>&U|N!(&d+j&Rr>=0 if true */ +function is_active(node) { + if (node.className==null) return false + return node.className.indexOf('_active'); +} + +function toggle_class(node) { + if ((node==null) || (node.className==null)) return; + str=node.className; + result=""; + i = str.indexOf('_active'); + if (i>0) + result= str.substr(0,i); + else + result= str+"_active"; + node.className=result; + return node; +} + +function activate(node) { + node.style.backgroundColor='#eeeeff'; +} + +function deactivate(node) { + node.style.backgroundColor='#ffffff'; +} + +function is_list_node(n) { + if (n==null) return false; + if (n.className==null) return false; + if ( (is_exp(n)) || + (is_col(n)) || + (is_basic(n)) ) + return true; else return false; +} + + +function get_href(n) { + alist=n.attributes; + if (alist!=null) { + hr = alist.getNamedItem('href'); + if (hr!=null) return hr.nodeValue; + } + if (n.childNodes.length==0) return ''; + for (var i=0; i=0) + toggle_class(lastnode); + lastnode=n; + if (!(is_active(lastnode)>=0)) + toggle_class(lastnode); + + +/*var d2 = new Date(); +var t_mil2 = d2.getMilliseconds(); + window.alert(t_mil2-t_mil);*/ +} + +function next_list_node() { + tempIndex = list_index; + while (tempIndex0) { + tempIndex--; + var x = listnodes[tempIndex]; + if (is_list_node(x)) { + list_index=tempIndex; + return; + } + } +} + + + +function getsub (li) { + if (li.childNodes.length==0) return null; + for (var c = 0; c < li.childNodes.length; c++) + if ( (li.childNodes[c].className == 'sub') || (li.childNodes[c].className == 'subexp') ) + return li.childNodes[c]; +} + +function find_listnode_recursive (li) { + if (is_list_node(li)) return li; + if (li.childNodes.length==0) return null; + result=null; + for (var c = 0; c < li.childNodes.length; c++) { + result=find_listnode_recursive(li.childNodes[c]); + if (result!=null) return result; + } + return null; +} + +function next_child_listnode(li) { + var result=null; + for (var i=0; i