Remove use of {String,UUID}Identifier
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / main / java / org / opendaylight / controller / cluster / datastore / identifiers / TransactionIdentifier.java
index 32637a578e2d2af08c79f160bade7a9e2faf62aa..1e8620359a674357d3a9c5eaceb683dc877927d3 100644 (file)
@@ -9,17 +9,40 @@
 package org.opendaylight.controller.cluster.datastore.identifiers;
 
 import com.google.common.base.Preconditions;
+import org.opendaylight.controller.cluster.access.concepts.MemberName;
 
 public class TransactionIdentifier {
-    private static final String TX_SEPARATOR = "-txn-";
+    protected static final String TX_SEPARATOR = "-txn-";
 
-    private final String memberName;
+    private final MemberName memberName;
     private final long counter;
+    private final long timestamp;
     private String stringRepresentation;
 
-    public TransactionIdentifier(String memberName, long counter) {
+    public TransactionIdentifier(MemberName memberName, long counter) {
         this.memberName = Preconditions.checkNotNull(memberName, "memberName should not be null");
         this.counter = counter;
+        this.timestamp = System.currentTimeMillis();
+    }
+
+    public String getChainId() {
+        return "";
+    }
+
+    protected MemberName getMemberName() {
+        return memberName;
+    }
+
+    protected long getCounter() {
+        return counter;
+    }
+
+    protected long getTimestamp() {
+        return timestamp;
+    }
+
+    public static TransactionIdentifier create(MemberName memberName, long counter) {
+        return new TransactionIdentifier(memberName, counter);
     }
 
     @Override
@@ -36,6 +59,11 @@ public class TransactionIdentifier {
         if (counter != that.counter) {
             return false;
         }
+
+        if (timestamp != that.timestamp) {
+            return false;
+        }
+
         if (!memberName.equals(that.memberName)) {
             return false;
         }
@@ -47,16 +75,19 @@ public class TransactionIdentifier {
     public int hashCode() {
         int result = memberName.hashCode();
         result = 31 * result + (int) (counter ^ (counter >>> 32));
+        result = 31 * result + (int)(timestamp ^ (timestamp >>> 32));
         return result;
     }
 
+
     @Override
     public String toString() {
         if(stringRepresentation == null) {
-            stringRepresentation = new StringBuilder(memberName.length() + TX_SEPARATOR.length() + 10).
-                append(memberName).append(TX_SEPARATOR).append(counter).toString();
+            stringRepresentation = new StringBuilder(memberName.getName().length() + TX_SEPARATOR.length() + 21).
+                append(memberName.getName()).append(TX_SEPARATOR).append(counter).append('-').append(timestamp).toString();
         }
 
         return stringRepresentation;
     }
+
 }