]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.common/src/org/simantics/db/common/ACommentMetadata.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.common / src / org / simantics / db / common / ACommentMetadata.java
diff --git a/bundles/org.simantics.db.common/src/org/simantics/db/common/ACommentMetadata.java b/bundles/org.simantics.db.common/src/org/simantics/db/common/ACommentMetadata.java
new file mode 100644 (file)
index 0000000..57ee0b2
--- /dev/null
@@ -0,0 +1,75 @@
+package org.simantics.db.common;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Iterator;\r
+import java.util.TreeMap;\r
+\r
+import org.simantics.db.Metadata;\r
+import org.simantics.db.Session;\r
+import org.simantics.db.common.utils.Logger;\r
+import org.simantics.db.common.utils.Serializers;\r
+\r
+public abstract class ACommentMetadata implements Metadata {\r
+    final boolean DEBUG = true;\r
+    protected ArrayList<String> comments = new ArrayList<String>();\r
+    public ACommentMetadata(TreeMap<String, byte[]> metadata) {\r
+        if (null != metadata) {\r
+            byte[] data = metadata.get(ACommentMetadata.class.getName());\r
+            initialize(data);\r
+        }\r
+    }\r
+\r
+    public ACommentMetadata(byte[] data) {\r
+        initialize(data);\r
+    }\r
+\r
+    private void initialize(byte[] data) {\r
+        if (null != data) {\r
+            try {\r
+                String[] strings = Serializers.deserializeStrings(data);\r
+                for (String s : strings)\r
+                    comments.add(s);\r
+            } catch (Exception e) {\r
+                Logger.defaultLogError(e);\r
+            }\r
+        }\r
+    }\r
+\r
+    public ACommentMetadata add(String string) {\r
+        comments.add(string);\r
+        return this;\r
+    }\r
+    \r
+    public int size() {\r
+       return comments.size();\r
+    }\r
+\r
+    public ACommentMetadata add(ACommentMetadata cm) {\r
+        if (null == cm)\r
+            return this;\r
+        comments.addAll(cm.comments);\r
+        return this;\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        String t = "";\r
+        int size = comments.size();\r
+        Iterator<String> it = comments.iterator();\r
+        for (int i=0; i<size; ++i)\r
+            t += it.next() + "\n";\r
+        return t;\r
+    }\r
+    \r
+    @Override\r
+    public byte[] serialise(Session session) {\r
+        try {\r
+            return Serializers.serializeStrings(comments.toArray(new String[comments.size()]));\r
+        } catch (Exception e) {\r
+            if (DEBUG)\r
+                e.printStackTrace();\r
+            Logger.defaultLogError(e.toString());\r
+        }\r
+        return new byte[0];\r
+    }\r
+}\r