Mercurial > hg > Database > jungle-sharp
annotate src/main/csharp/jp.ac.u-ryukyu.ie.cr/jungle-network/transaction/NetworkDefaultJungleTree.cs @ 12:b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
author | Kazuma |
---|---|
date | Sun, 23 Oct 2016 12:25:57 +0900 |
parents | abe0c247f5a5 |
children |
rev | line source |
---|---|
12
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
1 using UnityEngine; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
2 using System.Collections; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
3 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
4 public class NetworkDefaultJungleTree : JungleTree { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
5 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
6 private readonly AtomicReference<TreeContext> Repository; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
7 private readonly string Uuid; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
8 private readonly string TreeName; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
9 private readonly ChangeListWriter Writer; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
10 private readonly TreeEditor Editor; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
11 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
12 public NetworkDefaultJungleTree(string name, TreeContext tc, string uid, ChangeListWriter writer, TreeEditor edit) { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
13 this.TreeName = name; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
14 this.Repository = new AtomicReference<TreeContext>(tc); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
15 this.Uuid = uid; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
16 this.Writer = writer; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
17 this.Editor = edit; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
18 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
19 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
20 public JungleTreeEditor getTreeEditor() { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
21 TreeContext tc = Repository.Get(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
22 NetworkTransactionManager txManager = new NetworkTransactionManager(this.TreeName, this.Writer, tc, this.Repository, this.Uuid); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
23 TreeNode root = tc.getRoot(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
24 return new NetworkDefaultJungleTreeEditor(this.TreeName, root, txManager, this.Editor); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
25 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
26 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
27 public JungleTreeEditor getLocalTreeEditor () { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
28 TreeContext tc = this.Repository.Get(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
29 NetworkTransactionManager txManager = new NetworkTransactionManager(this.TreeName, this.Writer, tc, this.Repository, this.Uuid); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
30 TreeNode root = tc.getRoot(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
31 return NetworkDefaultJungleTreeEditor.NewLocalTreeEditor(this.TreeName, root, txManager, this.Editor); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
32 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
33 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
34 public TreeNode getRootNode () { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
35 TreeContext tc = this.Repository.Get(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
36 return tc.getRoot(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
37 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
38 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
39 public long revision () { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
40 return 0; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
41 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
42 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
43 public Either<Error, JungleTree> getOldTree (long rev) { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
44 TreeContext tc = this.Repository.Get(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
45 while(tc.getRevision() != rev) { // If I mistake this code, change this code. |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
46 tc = tc.prev(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
47 if (tc == null) { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
48 return DefaultEither<Error, JungleTree>.newA(GetOldTreeError.OLD_TREE_NOT_FOUND); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
49 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
50 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
51 string oldTreeUuid = this.Uuid + revision().ToString(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
52 JungleTree oldTree = new DefaultJungleTree(tc, oldTreeUuid, this.Writer, this.Editor); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
53 return DefaultEither<Error, JungleTree>.newB(oldTree); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
54 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
55 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
56 public TreeMap<string, TreeMap<string, List<TreeNode>>> getIndex () { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
57 TreeContext tc = this.Repository.Get(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
58 return tc.getIndex(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
59 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
60 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
61 public Either<Error, TreeNode> getNodeOfPath (NodePath path) { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
62 TreeNode node = this.Repository.Get().getRoot(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
63 foreach(var num in path) { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
64 if (num == -1) { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
65 continue; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
66 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
67 Either<Error, TreeNode> either = node.getChildren().at(num); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
68 if (either.isA()){ |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
69 return either; |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
70 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
71 node = either.b(); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
72 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
73 return DefaultEither<Error, TreeNode>.newB(node); |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
74 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
75 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
76 public void setBufferSize (int num) { |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
77 |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
78 } |
b71d9ea6bd8e
Add Network Operation Class. this codes can not test yet.
Kazuma
parents:
10
diff
changeset
|
79 } |