From 405f0d9998e1de97980abedfd2b1361e17a5b399 Mon Sep 17 00:00:00 2001 From: Pablo Luna Date: Fri, 15 Apr 2011 16:18:59 +0100 Subject: [PATCH] changing default shapes to be all lines, and fixing text centering bug --- .../importer/ImporterException.java | 6 +- .../wisemapping/importer/VersionNumber.java | 104 ++++++++++++++++++ .../importer/freemind/FreemindImporter.java | 13 +++ wise-webapp/src/test/data/freemind/fonts.mm | 2 +- wise-webapp/src/test/data/freemind/i18n.mm | 11 ++ wise-webapp/src/test/data/freemind/i18n.mmr | 1 + wise-webapp/src/test/data/freemind/i18n.wxml | 1 + wise-webapp/src/test/data/freemind/links.mm | 23 ++-- .../src/test/data/freemind/longnodes.mm | 42 +++++++ .../src/test/data/freemind/longnodes.mmr | 1 + .../src/test/data/freemind/longnodes.wxml | 1 + 11 files changed, 192 insertions(+), 13 deletions(-) create mode 100644 wise-webapp/src/main/java/com/wisemapping/importer/VersionNumber.java create mode 100644 wise-webapp/src/test/data/freemind/i18n.mm create mode 100644 wise-webapp/src/test/data/freemind/i18n.mmr create mode 100644 wise-webapp/src/test/data/freemind/i18n.wxml create mode 100644 wise-webapp/src/test/data/freemind/longnodes.mm create mode 100644 wise-webapp/src/test/data/freemind/longnodes.mmr create mode 100644 wise-webapp/src/test/data/freemind/longnodes.wxml diff --git a/wise-webapp/src/main/java/com/wisemapping/importer/ImporterException.java b/wise-webapp/src/main/java/com/wisemapping/importer/ImporterException.java index ced37391..02d800e1 100755 --- a/wise-webapp/src/main/java/com/wisemapping/importer/ImporterException.java +++ b/wise-webapp/src/main/java/com/wisemapping/importer/ImporterException.java @@ -18,14 +18,16 @@ package com.wisemapping.importer; +import com.sun.istack.internal.NotNull; + public class ImporterException extends Exception { - public ImporterException(String str) + public ImporterException(@NotNull String str) { super(str); } - public ImporterException(Throwable exc) + public ImporterException(@NotNull Throwable exc) { super(exc); } diff --git a/wise-webapp/src/main/java/com/wisemapping/importer/VersionNumber.java b/wise-webapp/src/main/java/com/wisemapping/importer/VersionNumber.java new file mode 100644 index 00000000..cc6c8d93 --- /dev/null +++ b/wise-webapp/src/main/java/com/wisemapping/importer/VersionNumber.java @@ -0,0 +1,104 @@ +package com.wisemapping.importer; + +import java.util.*; + +public class VersionNumber + implements Comparable { + + protected String version_d; + + //~ Constructors ......................................................................................... + + public VersionNumber(final String version) { + version_d = version; + } + + //~ Methods .............................................................................................. + + /** + * Answers whether the receiver is greater then the given version number. + * + * @param versionNumber the version number to compare to + * @return true if the receiver has a greater version number, false otherwise + */ + public boolean isGreaterThan(final VersionNumber versionNumber) { + return this.compareTo(versionNumber) > 0; + } + + /** + * Answers whether the receiver is smaller then the given version number. + * + * @param versionNumber the version number to compare to + * @return true if the receiver has a smaller version number, false otherwise + */ + public boolean isSmallerThan(final VersionNumber versionNumber) { + return this.compareTo(versionNumber) < 0; + } + + public String getVersion() { + return version_d; + } + + + public int compareTo(final Object otherObject) { + if (this.equals(otherObject)) { + return 0; + } + + final StringTokenizer ownTokenizer = this.getTokenizer(); + final StringTokenizer otherTokenizer = ((VersionNumber) otherObject).getTokenizer(); + + while (ownTokenizer.hasMoreTokens()) { + final int ownNumber; + final int otherNumber; + + try { + ownNumber = Integer.parseInt(ownTokenizer.nextToken()); + otherNumber = Integer.parseInt(otherTokenizer.nextToken()); + } catch (NoSuchElementException nseex) { + // only possible if we have more tokens than the other version - + // if we get to this point then we are always greater + return 1; + } + + if (ownNumber > otherNumber) { + return 1; + } else if (ownNumber < otherNumber) { + return -1; + } + } + + // if other version still has tokens then it is greater than me! + otherTokenizer.nextToken(); + return -1; + } + + + public boolean equals(final Object o) { + if (this == o) { + return true; + } + + if (!(o instanceof VersionNumber)) { + return false; + } + + final VersionNumber versionNumber = (VersionNumber) o; + + if (version_d != null ? !version_d.equals(versionNumber.version_d) + : versionNumber.version_d != null) { + return false; + } + + return true; + } + + public int hashCode() { + return (version_d != null ? version_d.hashCode() : 0); + } + + + protected StringTokenizer getTokenizer() { + return new StringTokenizer(this.getVersion(), "."); + } +} diff --git a/wise-webapp/src/main/java/com/wisemapping/importer/freemind/FreemindImporter.java b/wise-webapp/src/main/java/com/wisemapping/importer/freemind/FreemindImporter.java index a0c375f2..59d81bcb 100755 --- a/wise-webapp/src/main/java/com/wisemapping/importer/freemind/FreemindImporter.java +++ b/wise-webapp/src/main/java/com/wisemapping/importer/freemind/FreemindImporter.java @@ -21,6 +21,7 @@ package com.wisemapping.importer.freemind; import com.sun.org.apache.xerces.internal.dom.TextImpl; import com.wisemapping.importer.Importer; import com.wisemapping.importer.ImporterException; +import com.wisemapping.importer.VersionNumber; import com.wisemapping.model.MindMap; import com.wisemapping.model.ShapeStyle; import com.wisemapping.util.JAXBUtils; @@ -57,6 +58,8 @@ public class FreemindImporter private static final String EMPTY_FONT_STYLE = ";;;;;"; private final static Charset UTF_8_CHARSET = Charset.forName("UTF-8"); private final static int ORDER_SEPARATION_FACTOR = 2; + private static final VersionNumber SUPPORTED_FREEMIND_VERSION = new VersionNumber("0.9.0"); + private int currentId; @@ -98,6 +101,16 @@ public class FreemindImporter try { String wiseXml; final Map freemindMap = (Map) JAXBUtils.getMapObject(input, "com.wisemapping.xml.freemind"); + + final String version = freemindMap.getVersion(); + if (version != null) { + final VersionNumber mapVersion = new VersionNumber(version); + if (SUPPORTED_FREEMIND_VERSION.isGreaterThan(mapVersion)) { + throw new ImporterException("FreeMind map has been created with '" + mapVersion.getVersion() + "'. Supported FreeMind version is '" + SUPPORTED_FREEMIND_VERSION.getVersion() + "' or greater."); + } + } + + final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final com.wisemapping.xml.mindmap.Map mindmapMap = mindmapObjectFactory.createMap(); diff --git a/wise-webapp/src/test/data/freemind/fonts.mm b/wise-webapp/src/test/data/freemind/fonts.mm index 25e29b73..c22274f3 100644 --- a/wise-webapp/src/test/data/freemind/fonts.mm +++ b/wise-webapp/src/test/data/freemind/fonts.mm @@ -1,4 +1,4 @@ - + diff --git a/wise-webapp/src/test/data/freemind/i18n.mm b/wise-webapp/src/test/data/freemind/i18n.mm new file mode 100644 index 00000000..2c176fc8 --- /dev/null +++ b/wise-webapp/src/test/data/freemind/i18n.mm @@ -0,0 +1,11 @@ + + + + + + + + diff --git a/wise-webapp/src/test/data/freemind/i18n.mmr b/wise-webapp/src/test/data/freemind/i18n.mmr new file mode 100644 index 00000000..23494d78 --- /dev/null +++ b/wise-webapp/src/test/data/freemind/i18n.mmr @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wise-webapp/src/test/data/freemind/i18n.wxml b/wise-webapp/src/test/data/freemind/i18n.wxml new file mode 100644 index 00000000..df9551b1 --- /dev/null +++ b/wise-webapp/src/test/data/freemind/i18n.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wise-webapp/src/test/data/freemind/links.mm b/wise-webapp/src/test/data/freemind/links.mm index 3f3feb32..fe66a75b 100644 --- a/wise-webapp/src/test/data/freemind/links.mm +++ b/wise-webapp/src/test/data/freemind/links.mm @@ -1,12 +1,15 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/wise-webapp/src/test/data/freemind/longnodes.mm b/wise-webapp/src/test/data/freemind/longnodes.mm new file mode 100644 index 00000000..7ba5f070 --- /dev/null +++ b/wise-webapp/src/test/data/freemind/longnodes.mm @@ -0,0 +1,42 @@ + + + + + + + + + + +

+ Here is somefonts  +

+

+ +

+

+ Add color + changes ... +

+

+ +

+
    +
  • + Add some bullets: +
  • +
+
    +
  1. + Different Bullets +
  2. +
+

+ And all aligned !!!!s +

+ + +
+
+
+
diff --git a/wise-webapp/src/test/data/freemind/longnodes.mmr b/wise-webapp/src/test/data/freemind/longnodes.mmr new file mode 100644 index 00000000..dd987d0b --- /dev/null +++ b/wise-webapp/src/test/data/freemind/longnodes.mmr @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/wise-webapp/src/test/data/freemind/longnodes.wxml b/wise-webapp/src/test/data/freemind/longnodes.wxml new file mode 100644 index 00000000..152ccb15 --- /dev/null +++ b/wise-webapp/src/test/data/freemind/longnodes.wxml @@ -0,0 +1 @@ + \ No newline at end of file