diff --git a/wise-webapp/src/main/java/com/wisemapping/importer/Importer.java b/wise-webapp/src/main/java/com/wisemapping/importer/Importer.java index 61f064ad..f54ecaff 100755 --- a/wise-webapp/src/main/java/com/wisemapping/importer/Importer.java +++ b/wise-webapp/src/main/java/com/wisemapping/importer/Importer.java @@ -19,11 +19,11 @@ package com.wisemapping.importer; import com.wisemapping.model.MindMap; +import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.io.InputStream; -public interface Importer -{ - public MindMap importMap(String mapName,String description,InputStream input) throws ImporterException; +public interface Importer { + public MindMap importMap(@NotNull String mapName, @NotNull String description, @NotNull InputStream input) throws ImporterException; } diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/TransformerController.java b/wise-webapp/src/main/java/com/wisemapping/rest/TransformerController.java index 2c4a1819..8221ab5e 100644 --- a/wise-webapp/src/main/java/com/wisemapping/rest/TransformerController.java +++ b/wise-webapp/src/main/java/com/wisemapping/rest/TransformerController.java @@ -81,6 +81,18 @@ public class TransformerController extends BaseController { return new ModelAndView("transformViewFreemind", values); } + + @RequestMapping(method = RequestMethod.POST, value = "/transform", produces = {"application/wisemapping+xml"}, consumes = {"application/freemind"}) + @ResponseBody + public ModelAndView transformWisemapping(@RequestBody @Nullable final String content) throws IOException { + final Map values = new HashMap(); + if (content == null || content.length() == 0) { + throw new IllegalArgumentException("Body can not be null."); + } + values.put("content", content); + return new ModelAndView("transformViewWise", values); + } + @RequestMapping(method = RequestMethod.POST, value = "/transform", consumes = {"application/x-www-form-urlencoded"}) public ModelAndView transform(@NotNull HttpServletRequest request, @NotNull HttpServletResponse response) throws IOException { diff --git a/wise-webapp/src/main/java/com/wisemapping/rest/view/ImportTransformationView.java b/wise-webapp/src/main/java/com/wisemapping/rest/view/ImportTransformationView.java new file mode 100644 index 00000000..31e290c4 --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/rest/view/ImportTransformationView.java @@ -0,0 +1,52 @@ +package com.wisemapping.rest.view; + + +import com.wisemapping.importer.ImportFormat; +import com.wisemapping.importer.Importer; +import com.wisemapping.importer.ImporterException; +import com.wisemapping.importer.ImporterFactory; +import com.wisemapping.model.MindMap; +import org.jetbrains.annotations.NotNull; +import org.springframework.web.servlet.view.AbstractView; + +import javax.servlet.ServletOutputStream; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.util.Map; + +public class ImportTransformationView extends AbstractView { + + private String contentType; + private Importer importer; + + public ImportTransformationView(@NotNull final String contentType) throws ImporterException { + ImporterFactory exporterFactory = ImporterFactory.getInstance(); + importer = exporterFactory.getImporter(ImportFormat.FREEMIND); + this.contentType = contentType; + } + + @Override + protected void renderMergedOutputModel(@NotNull Map viewMap, @NotNull HttpServletRequest request, @NotNull final HttpServletResponse response) throws Exception { + final String content = (String) viewMap.get("content"); + final String filename = (String) viewMap.get("filename"); + + // Convert to map ... + final InputStream is = new ByteArrayInputStream(content.getBytes("UTF-8")); + final MindMap mindMap = importer.importMap("filename", "filename", is); + + // Set file name... + final String fileName = (filename != null ? filename : "map") + "." + "xwise"; + response.setHeader("Content-Disposition", "attachment;filename=" + fileName); + + // Write the conversion content ... + final ServletOutputStream outputStream = response.getOutputStream(); + outputStream.print(mindMap.getXmlStr()); + } + + @Override + public String getContentType() { + return contentType; + } +} 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 6b75a502..2ec1c1b1 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 @@ -43,16 +43,6 @@ public class TransformView extends AbstractView { } } - final ByteArrayOutputStream bos = new ByteArrayOutputStream(); - - // Change image link URL. - setBaseBaseImgUrl(exportFormat, properties); - if (exportFormat == ExportFormat.FREEMIND) { - ExporterFactory.export(properties, content, bos, null); - } else { - ExporterFactory.export(properties, null, bos, content); - } - // Set format content type... final String contentType = exportFormat.getContentType(); response.setContentType(contentType); @@ -61,9 +51,16 @@ public class TransformView extends AbstractView { final String fileName = (filename != null ? filename : "map") + "." + exportFormat.getFileExtension(); response.setHeader("Content-Disposition", "attachment;filename=" + fileName); - // Write content ... + // Change image link URL. + setBaseBaseImgUrl(exportFormat, properties); + + // Write the conversion content ... final ServletOutputStream outputStream = response.getOutputStream(); - outputStream.write(bos.toByteArray()); + if (exportFormat == ExportFormat.FREEMIND) { + ExporterFactory.export(properties, content, outputStream, null); + } else { + ExporterFactory.export(properties, null, outputStream, content); + } } @Override @@ -71,7 +68,6 @@ public class TransformView extends AbstractView { return contentType; } - private void setBaseBaseImgUrl(@NotNull ExportFormat format, @NotNull ExportProperties properties) { final String baseUrl; diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml index 31b0d02f..ed8f588e 100644 --- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml +++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-rest.xml @@ -38,6 +38,8 @@ + + @@ -79,4 +81,8 @@ + + + + \ No newline at end of file diff --git a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml index 256c2640..0092731a 100644 --- a/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml +++ b/wise-webapp/src/main/webapp/WEB-INF/wisemapping-security.xml @@ -32,7 +32,7 @@ - +