]> gerrit.simantics Code Review - simantics/platform.git/blob - 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
1 package org.simantics.db.common;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.Iterator;\r
5 import java.util.TreeMap;\r
6 \r
7 import org.simantics.db.Metadata;\r
8 import org.simantics.db.Session;\r
9 import org.simantics.db.common.utils.Logger;\r
10 import org.simantics.db.common.utils.Serializers;\r
11 \r
12 public abstract class ACommentMetadata implements Metadata {\r
13     final boolean DEBUG = true;\r
14     protected ArrayList<String> comments = new ArrayList<String>();\r
15     public ACommentMetadata(TreeMap<String, byte[]> metadata) {\r
16         if (null != metadata) {\r
17             byte[] data = metadata.get(ACommentMetadata.class.getName());\r
18             initialize(data);\r
19         }\r
20     }\r
21 \r
22     public ACommentMetadata(byte[] data) {\r
23         initialize(data);\r
24     }\r
25 \r
26     private void initialize(byte[] data) {\r
27         if (null != data) {\r
28             try {\r
29                 String[] strings = Serializers.deserializeStrings(data);\r
30                 for (String s : strings)\r
31                     comments.add(s);\r
32             } catch (Exception e) {\r
33                 Logger.defaultLogError(e);\r
34             }\r
35         }\r
36     }\r
37 \r
38     public ACommentMetadata add(String string) {\r
39         comments.add(string);\r
40         return this;\r
41     }\r
42     \r
43     public int size() {\r
44         return comments.size();\r
45     }\r
46 \r
47     public ACommentMetadata add(ACommentMetadata cm) {\r
48         if (null == cm)\r
49             return this;\r
50         comments.addAll(cm.comments);\r
51         return this;\r
52     }\r
53 \r
54     @Override\r
55     public String toString() {\r
56         String t = "";\r
57         int size = comments.size();\r
58         Iterator<String> it = comments.iterator();\r
59         for (int i=0; i<size; ++i)\r
60             t += it.next() + "\n";\r
61         return t;\r
62     }\r
63     \r
64     @Override\r
65     public byte[] serialise(Session session) {\r
66         try {\r
67             return Serializers.serializeStrings(comments.toArray(new String[comments.size()]));\r
68         } catch (Exception e) {\r
69             if (DEBUG)\r
70                 e.printStackTrace();\r
71             Logger.defaultLogError(e.toString());\r
72         }\r
73         return new byte[0];\r
74     }\r
75 }\r