]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.db.common/src/org/simantics/db/common/UndoMetadata.java
More DB ListenerAdapter abstract to force isDisposed implementation
[simantics/platform.git] / bundles / org.simantics.db.common / src / org / simantics / db / common / UndoMetadata.java
index b832565ac9141fa30aafcb58949385dda172444c..f8026f59432c7701e2a134aa24dad97da447062e 100644 (file)
-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.TreeMap;\r
-\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 class UndoMetadata extends ACommentMetadata {\r
-    private boolean redo; // False if this was a undo operation.\r
-    private long begin; // Identifies first change set that was reverted.\r
-    private long end; // Identifies last change set that was reverted.\r
-    public UndoMetadata(byte[] comments, boolean redo, long begin, long end) {\r
-        super(comments);\r
-        this.redo = redo;\r
-        this.begin = begin;\r
-        this.end = end;\r
-    }\r
-    public UndoMetadata(TreeMap<String, byte[]> metadata) {\r
-        super((byte[])null);\r
-        if (null != metadata) {\r
-            byte[] data = metadata.get(UndoMetadata.class.getName());\r
-            initialize(data);\r
-        }\r
-    }\r
-    public UndoMetadata(byte[] data) {\r
-        super((byte[])null);\r
-        initialize(data);\r
-    }\r
-\r
-    private void initialize(byte[] data) {\r
-        if (null != data) {\r
-            try {\r
-                UndoMetadata um = deserialise(null, data);\r
-                comments = um.comments;\r
-                redo = um.redo;\r
-                begin = um.begin;\r
-                end = um.end;\r
-            } catch (Exception e) {\r
-                Logger.defaultLogError(e);\r
-            }\r
-        }\r
-    }\r
-\r
-    @Override\r
-    public byte[] serialise(Session session) {\r
-        try {\r
-            ByteArrayOutputStream os = new ByteArrayOutputStream();\r
-            ObjectOutputStream oos = new ObjectOutputStream(os);\r
-            byte[] bytes = Serializers.serializeStrings(comments.toArray(new String[comments.size()]));\r
-            oos.writeInt(bytes.length);\r
-            oos.write(bytes);\r
-            oos.writeBoolean(redo);\r
-            oos.writeLong(begin);\r
-            oos.writeLong(end);\r
-            oos.close();\r
-            return os.toByteArray();\r
-        } catch (Exception e) {\r
-            if (DEBUG)\r
-                e.printStackTrace();\r
-            Logger.defaultLogError(e.toString());\r
-        }\r
-        return new byte[0];\r
-    }\r
-\r
-    public static UndoMetadata deserialise(Session session, byte[] input) {\r
-        try {\r
-            if (null == input)\r
-                return new UndoMetadata(null, false, 0, 0);\r
-            ByteArrayInputStream is = new ByteArrayInputStream(input);\r
-            ObjectInputStream ois = new ObjectInputStream(is);\r
-            int len = ois.readInt();\r
-            if (len < 0)\r
-                throw new Error("Deserialisation error. Illegal string length=" + len);\r
-            byte[] bytes = new byte[len];\r
-            ois.readFully(bytes);\r
-            boolean redo = ois.readBoolean();\r
-            long begin = ois.readLong();\r
-            long end = ois.readLong();\r
-            ois.close();\r
-            return new UndoMetadata(bytes, redo, begin, end);\r
-        } catch (Throwable e) {\r
-            Logger.defaultLogError(e);\r
-        }\r
-        return new UndoMetadata(null, false, 0, 0);\r
-    }\r
-    public boolean isRedo() {\r
-        return redo;\r
-    }\r
-    public long getBeginCSId() {\r
-        return begin;\r
-    }\r
-    public long getEndCSId() {\r
-        return end;\r
-    }\r
-    public void setTypeAndRange(UndoMetadata um) {\r
-        redo = ! um.redo;\r
-        begin = um.begin;\r
-        end = um.end;\r
-    }\r
-    public void setTypeAndRange(boolean redo, long begin, long end) {\r
-        this.redo = redo;\r
-        this.begin = begin;\r
-        this.end = end;\r
-    }\r
-    public String getType() {\r
-        return redo ? "Redo" : "Undo";\r
-    }\r
-    public String getRange() {\r
-        return "[" + begin + "," + end + "]";\r
-    }\r
-    public String getHeader() {\r
-        return getType() + getRange();\r
-    }\r
-}\r
+package org.simantics.db.common;
+
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.util.TreeMap;
+
+import org.simantics.db.Session;
+import org.simantics.db.common.utils.Logger;
+import org.simantics.db.common.utils.Serializers;
+
+public class UndoMetadata extends ACommentMetadata {
+    private boolean redo; // False if this was a undo operation.
+    private long begin; // Identifies first change set that was reverted.
+    private long end; // Identifies last change set that was reverted.
+    public UndoMetadata(byte[] comments, boolean redo, long begin, long end) {
+        super(comments);
+        this.redo = redo;
+        this.begin = begin;
+        this.end = end;
+    }
+    public UndoMetadata(TreeMap<String, byte[]> metadata) {
+        super((byte[])null);
+        if (null != metadata) {
+            byte[] data = metadata.get(UndoMetadata.class.getName());
+            initialize(data);
+        }
+    }
+    public UndoMetadata(byte[] data) {
+        super((byte[])null);
+        initialize(data);
+    }
+
+    private void initialize(byte[] data) {
+        if (null != data) {
+            try {
+                UndoMetadata um = deserialise(null, data);
+                comments = um.comments;
+                redo = um.redo;
+                begin = um.begin;
+                end = um.end;
+            } catch (Exception e) {
+                Logger.defaultLogError(e);
+            }
+        }
+    }
+
+    @Override
+    public byte[] serialise(Session session) {
+        try {
+            ByteArrayOutputStream os = new ByteArrayOutputStream();
+            ObjectOutputStream oos = new ObjectOutputStream(os);
+            byte[] bytes = Serializers.serializeStrings(comments.toArray(new String[comments.size()]));
+            oos.writeInt(bytes.length);
+            oos.write(bytes);
+            oos.writeBoolean(redo);
+            oos.writeLong(begin);
+            oos.writeLong(end);
+            oos.close();
+            return os.toByteArray();
+        } catch (Exception e) {
+            if (DEBUG)
+                e.printStackTrace();
+            Logger.defaultLogError(e.toString());
+        }
+        return new byte[0];
+    }
+
+    public static UndoMetadata deserialise(Session session, byte[] input) {
+        try {
+            if (null == input)
+                return new UndoMetadata(null, false, 0, 0);
+            ByteArrayInputStream is = new ByteArrayInputStream(input);
+            ObjectInputStream ois = new ObjectInputStream(is);
+            int len = ois.readInt();
+            if (len < 0)
+                throw new Error("Deserialisation error. Illegal string length=" + len);
+            byte[] bytes = new byte[len];
+            ois.readFully(bytes);
+            boolean redo = ois.readBoolean();
+            long begin = ois.readLong();
+            long end = ois.readLong();
+            ois.close();
+            return new UndoMetadata(bytes, redo, begin, end);
+        } catch (Throwable e) {
+            Logger.defaultLogError(e);
+        }
+        return new UndoMetadata(null, false, 0, 0);
+    }
+    public boolean isRedo() {
+        return redo;
+    }
+    public long getBeginCSId() {
+        return begin;
+    }
+    public long getEndCSId() {
+        return end;
+    }
+    public void setTypeAndRange(UndoMetadata um) {
+        redo = ! um.redo;
+        begin = um.begin;
+        end = um.end;
+    }
+    public void setTypeAndRange(boolean redo, long begin, long end) {
+        this.redo = redo;
+        this.begin = begin;
+        this.end = end;
+    }
+    public String getType() {
+        return redo ? "Redo" : "Undo";
+    }
+    public String getRange() {
+        return "[" + begin + "," + end + "]";
+    }
+    public String getHeader() {
+        return getType() + getRange();
+    }
+}