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