annotate src/treecms/proto/id/IncrementalNodeID.java @ 26:9b91329e8a04

commit for zemi , doent move
author ShoshiTAMAKI
date Tue, 02 Nov 2010 18:44:21 +0900
parents src/treecms/proto/id/NodeIDImpl.java@99346c04a3cf
children 45881237e777
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25
ShoshiTAMAKI
parents:
diff changeset
1 package treecms.proto.id;
ShoshiTAMAKI
parents:
diff changeset
2
ShoshiTAMAKI
parents:
diff changeset
3 import treecms.proto.api.NodeID;
ShoshiTAMAKI
parents:
diff changeset
4 import java.util.concurrent.atomic.AtomicLong;
ShoshiTAMAKI
parents:
diff changeset
5
26
9b91329e8a04 commit for zemi , doent move
ShoshiTAMAKI
parents: 25
diff changeset
6 public class IncrementalNodeID implements NodeID
25
ShoshiTAMAKI
parents:
diff changeset
7 {
ShoshiTAMAKI
parents:
diff changeset
8 private String m_inheritedID;
ShoshiTAMAKI
parents:
diff changeset
9 private final long m_version;
ShoshiTAMAKI
parents:
diff changeset
10
ShoshiTAMAKI
parents:
diff changeset
11 private AtomicLong m_tip;
ShoshiTAMAKI
parents:
diff changeset
12
26
9b91329e8a04 commit for zemi , doent move
ShoshiTAMAKI
parents: 25
diff changeset
13 public IncrementalNodeID(String _inheritedID,AtomicLong _version)
25
ShoshiTAMAKI
parents:
diff changeset
14 {
ShoshiTAMAKI
parents:
diff changeset
15 m_inheritedID = _inheritedID;
ShoshiTAMAKI
parents:
diff changeset
16 m_version = _version.getAndIncrement();
ShoshiTAMAKI
parents:
diff changeset
17 m_tip = _version;
ShoshiTAMAKI
parents:
diff changeset
18 }
ShoshiTAMAKI
parents:
diff changeset
19
ShoshiTAMAKI
parents:
diff changeset
20 String getInheritedID()
ShoshiTAMAKI
parents:
diff changeset
21 {
ShoshiTAMAKI
parents:
diff changeset
22 return m_inheritedID;
ShoshiTAMAKI
parents:
diff changeset
23 }
ShoshiTAMAKI
parents:
diff changeset
24
ShoshiTAMAKI
parents:
diff changeset
25 long getVersion()
ShoshiTAMAKI
parents:
diff changeset
26 {
ShoshiTAMAKI
parents:
diff changeset
27 return m_version;
ShoshiTAMAKI
parents:
diff changeset
28 }
ShoshiTAMAKI
parents:
diff changeset
29
ShoshiTAMAKI
parents:
diff changeset
30 AtomicLong getTip()
ShoshiTAMAKI
parents:
diff changeset
31 {
ShoshiTAMAKI
parents:
diff changeset
32 return m_tip;
ShoshiTAMAKI
parents:
diff changeset
33 }
ShoshiTAMAKI
parents:
diff changeset
34
ShoshiTAMAKI
parents:
diff changeset
35 @Override
ShoshiTAMAKI
parents:
diff changeset
36 public int compare(NodeID _target)
ShoshiTAMAKI
parents:
diff changeset
37 {
ShoshiTAMAKI
parents:
diff changeset
38 // TODO Auto-generated method stub
26
9b91329e8a04 commit for zemi , doent move
ShoshiTAMAKI
parents: 25
diff changeset
39 if(!(_target instanceof IncrementalNodeID)){
9b91329e8a04 commit for zemi , doent move
ShoshiTAMAKI
parents: 25
diff changeset
40 throw new IllegalArgumentException("_target is not instance of NodeIDImpl");
9b91329e8a04 commit for zemi , doent move
ShoshiTAMAKI
parents: 25
diff changeset
41 }
9b91329e8a04 commit for zemi , doent move
ShoshiTAMAKI
parents: 25
diff changeset
42
9b91329e8a04 commit for zemi , doent move
ShoshiTAMAKI
parents: 25
diff changeset
43 IncrementalNodeID target = (IncrementalNodeID)_target;
9b91329e8a04 commit for zemi , doent move
ShoshiTAMAKI
parents: 25
diff changeset
44 if(m_inheritedID.equals(target.m_inheritedID)){
9b91329e8a04 commit for zemi , doent move
ShoshiTAMAKI
parents: 25
diff changeset
45 long diff = m_version - target.m_version;
25
ShoshiTAMAKI
parents:
diff changeset
46 if(diff == 0){
ShoshiTAMAKI
parents:
diff changeset
47 return 0;
ShoshiTAMAKI
parents:
diff changeset
48 }else if(diff < 0){
ShoshiTAMAKI
parents:
diff changeset
49 return -1;
ShoshiTAMAKI
parents:
diff changeset
50 }else{
ShoshiTAMAKI
parents:
diff changeset
51 return 1;
ShoshiTAMAKI
parents:
diff changeset
52 }
ShoshiTAMAKI
parents:
diff changeset
53 }
ShoshiTAMAKI
parents:
diff changeset
54 return -2;
ShoshiTAMAKI
parents:
diff changeset
55 }
ShoshiTAMAKI
parents:
diff changeset
56
ShoshiTAMAKI
parents:
diff changeset
57 @Override
ShoshiTAMAKI
parents:
diff changeset
58 public String toString()
ShoshiTAMAKI
parents:
diff changeset
59 {
ShoshiTAMAKI
parents:
diff changeset
60 return m_inheritedID + "@" + m_version;
ShoshiTAMAKI
parents:
diff changeset
61 }
ShoshiTAMAKI
parents:
diff changeset
62 }