--- /dev/null
+package org.simantics.db.common;\r
+\r
+import java.io.ByteArrayInputStream;\r
+import java.io.ByteArrayOutputStream;\r
+import java.io.ObjectInputStream;\r
+import java.io.ObjectOutputStream;\r
+import java.util.Date;\r
+\r
+import org.simantics.db.Metadata;\r
+import org.simantics.db.Session;\r
+import org.simantics.db.common.utils.Logger;\r
+\r
+public class CommitMetadata implements Metadata {\r
+ final boolean DEBUG = true;\r
+ public final long opid;\r
+ public final Date date;\r
+ public CommitMetadata(long opid) {\r
+ this.opid = opid;\r
+ this.date = new Date();\r
+ }\r
+ public CommitMetadata(long opid, Date date) {\r
+ this.opid = opid;\r
+ this.date = date;\r
+ }\r
+ @Override\r
+ public byte[] serialise(Session session) {\r
+ try {\r
+ ByteArrayOutputStream os = new ByteArrayOutputStream();\r
+ ObjectOutputStream oos = new ObjectOutputStream(os);\r
+ oos.writeLong(opid);\r
+ oos.writeObject(date);\r
+ oos.close();\r
+ return os.toByteArray();\r
+ } catch (Exception e) {\r
+ Logger.defaultLogError(e.toString());\r
+ if (DEBUG)\r
+ e.printStackTrace();\r
+ }\r
+ return new byte[0];\r
+ }\r
+ public static CommitMetadata deserialise(Session session, byte[] input) {\r
+ try {\r
+ ByteArrayInputStream is = new ByteArrayInputStream(input);\r
+ ObjectInputStream ois = new ObjectInputStream(is);\r
+ long opid = ois.readLong();\r
+ Object date = ois.readObject();\r
+ ois.close();\r
+ if (date instanceof Date)\r
+ return new CommitMetadata(opid, (Date)date);\r
+ } catch (Throwable e) {\r
+ Logger.defaultLogError(e);\r
+ }\r
+ return null;\r
+ }\r
+}\r