--- /dev/null
+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