]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.common/src/org/simantics/db/common/CommitMetadata.java
Merge commit 'bf75fd9'
[simantics/platform.git] / bundles / org.simantics.db.common / src / org / simantics / db / common / CommitMetadata.java
1 package org.simantics.db.common;\r
2 \r
3 import java.io.ByteArrayInputStream;\r
4 import java.io.ByteArrayOutputStream;\r
5 import java.io.ObjectInputStream;\r
6 import java.io.ObjectOutputStream;\r
7 import java.util.Date;\r
8 \r
9 import org.simantics.db.Metadata;\r
10 import org.simantics.db.Session;\r
11 import org.simantics.db.common.utils.Logger;\r
12 \r
13 public class CommitMetadata implements Metadata {\r
14     final boolean DEBUG = true;\r
15     public final long opid;\r
16     public final Date date;\r
17     public CommitMetadata(long opid) {\r
18         this.opid = opid;\r
19         this.date = new Date();\r
20     }\r
21     public CommitMetadata(long opid, Date date) {\r
22         this.opid = opid;\r
23         this.date = date;\r
24     }\r
25     @Override\r
26     public byte[] serialise(Session session) {\r
27         try {\r
28             ByteArrayOutputStream os = new ByteArrayOutputStream();\r
29             ObjectOutputStream oos = new ObjectOutputStream(os);\r
30             oos.writeLong(opid);\r
31             oos.writeObject(date);\r
32             oos.close();\r
33             return os.toByteArray();\r
34         } catch (Exception e) {\r
35             Logger.defaultLogError(e.toString());\r
36             if (DEBUG)\r
37                 e.printStackTrace();\r
38         }\r
39         return new byte[0];\r
40     }\r
41     public static CommitMetadata deserialise(Session session, byte[] input) {\r
42         try {\r
43             ByteArrayInputStream is = new ByteArrayInputStream(input);\r
44             ObjectInputStream ois = new ObjectInputStream(is);\r
45             long opid = ois.readLong();\r
46             Object date = ois.readObject();\r
47             ois.close();\r
48             if (date instanceof Date)\r
49                 return new CommitMetadata(opid, (Date)date);\r
50         } catch (Throwable e) {\r
51             Logger.defaultLogError(e);\r
52         }\r
53         return null;\r
54     }\r
55 }\r