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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }