From fd021de86d8032ee7847257161577e932bb5faeb Mon Sep 17 00:00:00 2001 From: Paulo Gustavo Veiga Date: Sat, 30 Mar 2013 01:09:28 -0300 Subject: [PATCH] Mindmap loading is lazy. --- .../wisemapping/dao/MindmapManagerImpl.java | 32 +++++----- .../exporter/FreemindExporter.java | 2 +- .../java/com/wisemapping/model/Mindmap.java | 62 +++++++++++-------- .../wisemapping/service/UserServiceImpl.java | 11 +--- .../com/wisemapping/model/Mindmap.hbm.xml | 2 +- .../test/export/ExportFreemindTest.java | 2 +- .../test/export/ExportXsltBasedTest.java | 2 +- 7 files changed, 59 insertions(+), 54 deletions(-) diff --git a/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java b/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java index 7fc8fdaf..eb72993c 100644 --- a/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java +++ b/wise-webapp/src/main/java/com/wisemapping/dao/MindmapManagerImpl.java @@ -84,24 +84,26 @@ public class MindmapManagerImpl final List historyList = hibernateCriteria.list(); - final Mindmap mindmapById = this.getMindmapById(mapId); - final Calendar yearAgo = Calendar.getInstance(); - yearAgo.add(Calendar.MONTH, -12); + final Mindmap mindmap = this.getMindmapById(mapId); + if (mindmap != null) { + final Calendar yearAgo = Calendar.getInstance(); + yearAgo.add(Calendar.MONTH, -12); - // If the map has not been modified in the last months, it means that I don't need to keep all the history ... - int max = mindmapById.getLastModificationTime().before(yearAgo) ? 10 : 25; + // If the map has not been modified in the last months, it means that I don't need to keep all the history ... + int max = mindmap.getLastModificationTime().before(yearAgo) ? 10 : 25; - for (MindMapHistory history : historyList) { - byte[] zippedXml = history.getZippedXml(); - if(new String(zippedXml).startsWith(" max) { - for (int i = max; i < historyList.size(); i++) { - getHibernateTemplate().delete(historyList.get(i)); + if (historyList.size() > max) { + for (int i = max; i < historyList.size(); i++) { + getHibernateTemplate().delete(historyList.get(i)); + } } } } @@ -245,7 +247,7 @@ public class MindmapManagerImpl getHibernateTemplate().delete(mindMap); } - private void saveHistory(@NotNull final Mindmap mindMap) { + private void saveHistory(@NotNull final Mindmap mindMap) { final MindMapHistory history = new MindMapHistory(); history.setZippedXml(mindMap.getZippedXml()); diff --git a/wise-webapp/src/main/java/com/wisemapping/exporter/FreemindExporter.java b/wise-webapp/src/main/java/com/wisemapping/exporter/FreemindExporter.java index f3deaf90..ea6fe517 100755 --- a/wise-webapp/src/main/java/com/wisemapping/exporter/FreemindExporter.java +++ b/wise-webapp/src/main/java/com/wisemapping/exporter/FreemindExporter.java @@ -57,7 +57,7 @@ public class FreemindExporter private Map nodesMap = null; public void export(Mindmap map, OutputStream outputStream) throws ExportException { - export(map.getXml(), outputStream); + export(map.getUnzipXml(), outputStream); } public void export(byte[] xml, @NotNull OutputStream outputStream) throws ExportException { diff --git a/wise-webapp/src/main/java/com/wisemapping/model/Mindmap.java b/wise-webapp/src/main/java/com/wisemapping/model/Mindmap.java index eae92e01..1947e5cd 100644 --- a/wise-webapp/src/main/java/com/wisemapping/model/Mindmap.java +++ b/wise-webapp/src/main/java/com/wisemapping/model/Mindmap.java @@ -48,7 +48,7 @@ public class Mindmap { private User creator; private String tags; private String title; - private byte[] xml; + private byte[] zippedXml; //~ Constructors ......................................................................................... @@ -57,32 +57,30 @@ public class Mindmap { //~ Methods .............................................................................................. - public void setXml(byte[] xml) { - this.xml = xml; - } - - public void setXmlStr(@NotNull String xml) - throws IOException { - this.xml = xml.getBytes(UTF_8); - } - - public byte[] getXml() { - return xml; - } - - public String getXmlStr() throws UnsupportedEncodingException { - String result = null; - if (this.xml != null) { - result = new String(this.xml, UTF_8); + public void setUnzipXml(@NotNull byte[] value) { + try { + final byte[] zip = ZipUtils.bytesToZip(value); + this.setZippedXml(zip); + } catch (IOException e) { + throw new IllegalStateException(e); } - return result; } - public byte[] getZippedXml(){ - byte[] result = this.xml; - if (result != null) { + public void setXmlStr(@NotNull String xml) { + try { + this.setUnzipXml(xml.getBytes(UTF_8)); + } catch (UnsupportedEncodingException e) { + throw new IllegalStateException(e); + } + } + + @NotNull + public byte[] getUnzipXml() { + byte[] result = new byte[]{}; + if (zippedXml != null) { try { - result = ZipUtils.bytesToZip(result); + final byte[] zip = this.getZippedXml(); + result = ZipUtils.zipToBytes(zip); } catch (IOException e) { throw new IllegalStateException(e); } @@ -90,9 +88,18 @@ public class Mindmap { return result; } - public void setZippedXml(byte[] xml) - throws IOException { - this.xml = ZipUtils.zipToBytes(xml); + @NotNull + public String getXmlStr() throws UnsupportedEncodingException { + return new String(this.getUnzipXml(), UTF_8); + } + + @NotNull + public byte[] getZippedXml() { + return zippedXml; + } + + public void setZippedXml(@NotNull byte[] value) { + this.zippedXml = value; } public Set getCollaborations() { @@ -143,6 +150,7 @@ public class Mindmap { this.isPublic = isPublic; } + @NotNull public Calendar getLastModificationTime() { return lastModificationTime; } @@ -282,7 +290,7 @@ public class Mindmap { final Mindmap result = new Mindmap(); result.setDescription(this.getDescription()); result.setTitle(this.getTitle()); - result.setXml(this.getXml()); + result.setUnzipXml(this.getUnzipXml()); result.setTags(this.getTags()); return result; diff --git a/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java b/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java index 01bb97cd..2842f6f8 100755 --- a/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java +++ b/wise-webapp/src/main/java/com/wisemapping/service/UserServiceImpl.java @@ -158,14 +158,9 @@ public class UserServiceImpl final String mapXml = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "/samples/tutorial.vm", model); - try { - result.setXmlStr(mapXml); - result.setTitle(messageSource.getMessage("WELCOME", null, locale) + " " + firstName); - result.setDescription(""); - - } catch (IOException e) { - e.printStackTrace(); - } + result.setXmlStr(mapXml); + result.setTitle(messageSource.getMessage("WELCOME", null, locale) + " " + firstName); + result.setDescription(""); return result; } diff --git a/wise-webapp/src/main/resources/com/wisemapping/model/Mindmap.hbm.xml b/wise-webapp/src/main/resources/com/wisemapping/model/Mindmap.hbm.xml index 31896561..ce0ad849 100644 --- a/wise-webapp/src/main/resources/com/wisemapping/model/Mindmap.hbm.xml +++ b/wise-webapp/src/main/resources/com/wisemapping/model/Mindmap.hbm.xml @@ -12,7 +12,7 @@ - + diff --git a/wise-webapp/src/test/java/com/wisemapping/test/export/ExportFreemindTest.java b/wise-webapp/src/test/java/com/wisemapping/test/export/ExportFreemindTest.java index e73852a2..1a11b4fe 100644 --- a/wise-webapp/src/test/java/com/wisemapping/test/export/ExportFreemindTest.java +++ b/wise-webapp/src/test/java/com/wisemapping/test/export/ExportFreemindTest.java @@ -47,7 +47,7 @@ public class ExportFreemindTest { private Mindmap load(@NotNull File wisemap) throws IOException { final byte[] recContent = FileUtils.readFileToByteArray(wisemap); final Mindmap result = new Mindmap(); - result.setXml(recContent); + result.setUnzipXml(recContent); return result; } diff --git a/wise-webapp/src/test/java/com/wisemapping/test/export/ExportXsltBasedTest.java b/wise-webapp/src/test/java/com/wisemapping/test/export/ExportXsltBasedTest.java index cff393dd..30c209c1 100644 --- a/wise-webapp/src/test/java/com/wisemapping/test/export/ExportXsltBasedTest.java +++ b/wise-webapp/src/test/java/com/wisemapping/test/export/ExportXsltBasedTest.java @@ -45,7 +45,7 @@ public class ExportXsltBasedTest { private Mindmap load(@NotNull File wisemap) throws IOException { final byte[] recContent = FileUtils.readFileToByteArray(wisemap); final Mindmap result = new Mindmap(); - result.setXml(recContent); + result.setUnzipXml(recContent); return result; }