Quich fix for export error

This commit is contained in:
Pablo Luna 2011-03-28 15:16:32 +01:00
parent bd7c83f17d
commit 92d39f0a08
7 changed files with 28 additions and 21 deletions

View File

@ -38,6 +38,7 @@ import java.io.IOException;
public class ExportController extends BaseMultiActionController { public class ExportController extends BaseMultiActionController {
private static final String IMG_EXPORT_FORMAT = "IMG_EXPORT_FORMAT"; private static final String IMG_EXPORT_FORMAT = "IMG_EXPORT_FORMAT";
private static final String MAP_ID_PARAMETER = "mapId"; private static final String MAP_ID_PARAMETER = "mapId";
private static final String MAP_SVG_PARAMETER = "mapSvg";
private static final String EXPORT_FORMAT_PARAMETER = "exportFormat"; private static final String EXPORT_FORMAT_PARAMETER = "exportFormat";
private static final String IMG_SIZE_PARAMETER = "imgSize"; private static final String IMG_SIZE_PARAMETER = "imgSize";
@ -57,6 +58,8 @@ public class ExportController extends BaseMultiActionController {
int mindmapId = Integer.parseInt(mapIdStr); int mindmapId = Integer.parseInt(mapIdStr);
final String mapSvg = request.getParameter(MAP_SVG_PARAMETER);
String formatStr = request.getParameter(EXPORT_FORMAT_PARAMETER); String formatStr = request.getParameter(EXPORT_FORMAT_PARAMETER);
if (IMG_EXPORT_FORMAT.endsWith(formatStr)) { if (IMG_EXPORT_FORMAT.endsWith(formatStr)) {
formatStr = request.getParameter("imgFormat"); formatStr = request.getParameter("imgFormat");
@ -92,7 +95,7 @@ public class ExportController extends BaseMultiActionController {
// Write content ... // Write content ...
final ServletOutputStream outputStream = response.getOutputStream(); final ServletOutputStream outputStream = response.getOutputStream();
mindMap.export(properties, outputStream); mindMap.export(properties, outputStream, mapSvg);
} catch (Throwable e) { } catch (Throwable e) {
@ -135,6 +138,8 @@ public class ExportController extends BaseMultiActionController {
logger.info("Export Controller: generating image WiseMap action"); logger.info("Export Controller: generating image WiseMap action");
final String mapIdStr = request.getParameter(MAP_ID_PARAMETER); final String mapIdStr = request.getParameter(MAP_ID_PARAMETER);
final String mapSvg = request.getParameter(MAP_SVG_PARAMETER);
int mindmapId = Integer.parseInt(mapIdStr); int mindmapId = Integer.parseInt(mapIdStr);
final MindmapService service = getMindmapService(); final MindmapService service = getMindmapService();
final MindMap mindMap = service.getMindmapById(mindmapId); final MindMap mindMap = service.getMindmapById(mindmapId);
@ -154,7 +159,7 @@ public class ExportController extends BaseMultiActionController {
// Write content ... // Write content ...
final ServletOutputStream outputStream = response.getOutputStream(); final ServletOutputStream outputStream = response.getOutputStream();
mindMap.export(imageProperties, outputStream); mindMap.export(imageProperties, outputStream, mapSvg);
} catch (Throwable e) { } catch (Throwable e) {

View File

@ -52,7 +52,7 @@ public class SvgExporter {
private SvgExporter() { private SvgExporter() {
} }
public static void export(ExportProperties properties, MindMap map, OutputStream output) throws TranscoderException, IOException, ParserConfigurationException, SAXException, XMLStreamException, TransformerException, JAXBException, ExportException { public static void export(ExportProperties properties, MindMap map, OutputStream output, String mapSvg) throws TranscoderException, IOException, ParserConfigurationException, SAXException, XMLStreamException, TransformerException, JAXBException, ExportException {
final ExportFormat format = properties.getFormat(); final ExportFormat format = properties.getFormat();
final String imgPath = properties.getBaseImgPath(); final String imgPath = properties.getBaseImgPath();
@ -66,7 +66,7 @@ public class SvgExporter {
transcoder.addTranscodingHint(ImageTranscoder.KEY_WIDTH, size.getWidth()); transcoder.addTranscodingHint(ImageTranscoder.KEY_WIDTH, size.getWidth());
// Create the transcoder input. // Create the transcoder input.
char[] xml = map.generateSvgXml(); char[] xml = map.generateSvgXml(mapSvg);
xml = normalizeSvg(xml, imgPath); xml = normalizeSvg(xml, imgPath);
final CharArrayReader is = new CharArrayReader(xml); final CharArrayReader is = new CharArrayReader(xml);
TranscoderInput input = new TranscoderInput(is); TranscoderInput input = new TranscoderInput(is);
@ -87,7 +87,7 @@ public class SvgExporter {
transcoder.addTranscodingHint(ImageTranscoder.KEY_WIDTH, size.getWidth()); transcoder.addTranscodingHint(ImageTranscoder.KEY_WIDTH, size.getWidth());
// Create the transcoder input. // Create the transcoder input.
final char[] xml = map.generateSvgXml(); final char[] xml = map.generateSvgXml(mapSvg);
char[] svgXml = normalizeSvg(xml, imgPath); char[] svgXml = normalizeSvg(xml, imgPath);
final CharArrayReader is = new CharArrayReader(svgXml); final CharArrayReader is = new CharArrayReader(svgXml);
TranscoderInput input = new TranscoderInput(is); TranscoderInput input = new TranscoderInput(is);
@ -102,7 +102,7 @@ public class SvgExporter {
final Transcoder transcoder = new PDFTranscoder(); final Transcoder transcoder = new PDFTranscoder();
// Create the transcoder input. // Create the transcoder input.
final char[] xml = map.generateSvgXml(); final char[] xml = map.generateSvgXml(mapSvg);
char[] svgXml = normalizeSvg(xml, imgPath); char[] svgXml = normalizeSvg(xml, imgPath);
final CharArrayReader is = new CharArrayReader(svgXml); final CharArrayReader is = new CharArrayReader(svgXml);
TranscoderInput input = new TranscoderInput(is); TranscoderInput input = new TranscoderInput(is);
@ -113,7 +113,7 @@ public class SvgExporter {
break; break;
} }
case SVG: { case SVG: {
final char[] xml = map.generateSvgXml(); final char[] xml = map.generateSvgXml(mapSvg);
char[] svgXml = normalizeSvg(xml, imgPath); char[] svgXml = normalizeSvg(xml, imgPath);
output.write(new String(svgXml).getBytes("UTF-8")); output.write(new String(svgXml).getBytes("UTF-8"));
break; break;

View File

@ -215,10 +215,13 @@ public class MindMap {
return tags; return tags;
} }
public char[] generateSvgXml() public char[] generateSvgXml(String mapSvg)
throws IOException, JAXBException { throws IOException, JAXBException {
String svgText = mapSvg;
final MindMapNative mindmapNativeBrowser = this.getNativeBrowser(); final MindMapNative mindmapNativeBrowser = this.getNativeBrowser();
String svgText = mindmapNativeBrowser.getUnzippedSvgXml(); if(svgText==null){
svgText = mindmapNativeBrowser.getUnzippedSvgXml();
}
if (svgText == null || svgText.length() == 0) { if (svgText == null || svgText.length() == 0) {
// The map must be saved using IE. Convert VML to SVG. // The map must be saved using IE. Convert VML to SVG.
@ -265,8 +268,8 @@ public class MindMap {
this.creationTime = creationTime; this.creationTime = creationTime;
} }
public void export(final ExportProperties properties, OutputStream output) throws JAXBException, TranscoderException, TransformerException, IOException, ParserConfigurationException, ExportException, SAXException, XMLStreamException { public void export(final ExportProperties properties, OutputStream output, String mapSvg) throws JAXBException, TranscoderException, TransformerException, IOException, ParserConfigurationException, ExportException, SAXException, XMLStreamException {
SvgExporter.export(properties, this, output); SvgExporter.export(properties, this, output, mapSvg);
} }
public void setOwner(User owner) { public void setOwner(User owner) {

View File

@ -38,6 +38,7 @@
<form method="post" id="printForm" name="printForm" action='<c:url value="export.htm"/>' style="height:100%;" target="${mindmap.title}"> <form method="post" id="printForm" name="printForm" action='<c:url value="export.htm"/>' style="height:100%;" target="${mindmap.title}">
<input type="hidden" name="action" value="print" > <input type="hidden" name="action" value="print" >
<input type="hidden" name="mapId" value="${mindmap.id}" > <input type="hidden" name="mapId" value="${mindmap.id}" >
<input type="hidden" name="mapSvg" value="">
</form> </form>
<div id="waitDialog" style="display:none"> <div id="waitDialog" style="display:none">
@ -76,6 +77,7 @@
var isTryMode = ${editorTryMode}; var isTryMode = ${editorTryMode};
function printMap() { function printMap() {
document.printForm.mapSvg.value = $("workspaceContainer").innerHTML;
document.printForm.submit(); document.printForm.submit();
} }
</script> </script>

View File

@ -7,6 +7,7 @@
<form method="post" id="exportForm" name="exportForm" action="<c:url value="export.htm"/>" style="height:100%;"> <form method="post" id="exportForm" name="exportForm" action="<c:url value="export.htm"/>" style="height:100%;">
<input type="hidden" name="action" value="export"/> <input type="hidden" name="action" value="export"/>
<input type="hidden" name="mapId" value="${mindmap.id}"/> <input type="hidden" name="mapId" value="${mindmap.id}"/>
<input type="hidden" name="mapSvg" value=""/>
<table> <table>
<tbody> <tbody>
<tr> <tr>
@ -88,4 +89,6 @@
}); });
document.exportForm.mapSvg.value = $("workspaceContainer").innerHTML;
</script> </script>

View File

@ -227,10 +227,10 @@
<spring:message code="PUBLISH"/> <spring:message code="PUBLISH"/>
</a> </a>
</c:if> </c:if>
<a href="export.htm?mapId=${mindmap.id}" <%--<a href="export.htm?mapId=${mindmap.id}"
rel="moodalbox 600px 400px" title="<spring:message code="EXPORT_DETAILS"/>"> rel="moodalbox 600px 400px" title="<spring:message code="EXPORT_DETAILS"/>">
<spring:message code="EXPORT"/> <spring:message code="EXPORT"/>
</a> </a>--%>
<a href="javascript:printMap(${mindmap.id});"> <a href="javascript:printMap(${mindmap.id});">
<spring:message code="PRINT"/> <spring:message code="PRINT"/>
</a> </a>

View File

@ -3,11 +3,7 @@ package com.wisemapping.test.export;
import com.wisemapping.exporter.ExportException; import com.wisemapping.exporter.ExportException;
import com.wisemapping.exporter.ExportFormat; import com.wisemapping.exporter.ExportFormat;
import com.wisemapping.exporter.ExportProperties; import com.wisemapping.exporter.ExportProperties;
import com.wisemapping.exporter.freemind.FreemindExporter;
import com.wisemapping.importer.ImportFormat;
import com.wisemapping.importer.Importer;
import com.wisemapping.importer.ImporterException; import com.wisemapping.importer.ImporterException;
import com.wisemapping.importer.ImporterFactory;
import com.wisemapping.model.MindMap; import com.wisemapping.model.MindMap;
import com.wisemapping.model.MindMapNative; import com.wisemapping.model.MindMapNative;
@ -23,8 +19,6 @@ import javax.xml.parsers.ParserConfigurationException;
import javax.xml.stream.XMLStreamException; import javax.xml.stream.XMLStreamException;
import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerException;
import java.io.*; import java.io.*;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
@Test @Test
public class ExportTest { public class ExportTest {
@ -60,7 +54,7 @@ public class ExportTest {
if(pngFile.exists()){ if(pngFile.exists()){
// Export mile content ... // Export mile content ...
final ByteArrayOutputStream bos = new ByteArrayOutputStream(); final ByteArrayOutputStream bos = new ByteArrayOutputStream();
mindMap.export(properties, bos); mindMap.export(properties, bos, svgXml);
// Load rec file co // Load rec file co
final FileInputStream fis = new FileInputStream(pngFile); final FileInputStream fis = new FileInputStream(pngFile);
@ -92,7 +86,7 @@ public class ExportTest {
} }
else{ else{
OutputStream outputStream = new FileOutputStream(pngFile, false); OutputStream outputStream = new FileOutputStream(pngFile, false);
mindMap.export(properties, outputStream); mindMap.export(properties, outputStream, svgXml);
outputStream.close(); outputStream.close();
} }
} }