annotate src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/PutIndexEditor.java @ 143:afbe19c98f53

change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>> bag
author one
date Sat, 15 Nov 2014 17:48:07 +0900
parents 99bda30ea72c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
118
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index;
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
2
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
3
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
4
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
5 import fj.Ord;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
6 import fj.data.List;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
7 import fj.data.Option;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
8 import fj.data.TreeMap;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
118
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor;
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TransactionManager;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
118
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
18
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
19 import java.nio.ByteBuffer;
118
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
20
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
21 public class PutIndexEditor implements IndexEditor {
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
22
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
23 String key;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
24 String attribute;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
25 NodePath path;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
26 TransactionManager txManager;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
27 TreeNode root;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
28 TreeEditor editor;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
29 TreeOperationLog log;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
30
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
31 public PutIndexEditor(String key, ByteBuffer attribute,NodePath path) {
137
7334f78a92c3 name changed find to findInSubTree
one
parents: 135
diff changeset
32 this.key = key;
7334f78a92c3 name changed find to findInSubTree
one
parents: 135
diff changeset
33 this.attribute = new String(attribute.array());
7334f78a92c3 name changed find to findInSubTree
one
parents: 135
diff changeset
34 this.path = path;
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
35 }
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
36
118
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
37 @Override
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
38 public Either<Error, IndexJungleTreeEditor> edit(TreeNode root,TransactionManager txManager,TreeEditor editor,TreeOperationLog log,TreeMap<String, TreeMap<String, List<NodePath>>> index) {
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
39 TreeMap<String, TreeMap<String, List<NodePath>>> newIndex = editIndex(path, key, attribute,index);
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
40 IndexJungleTreeEditor newEditor = new IndexJungleTreeEditor(root,txManager,editor,log, newIndex);
130
bb53330364f1 add putIndexEditor and deleteIndexEditor
one
parents: 128
diff changeset
41 Either<Error, IndexJungleTreeEditor> either = DefaultEither.newB(newEditor);
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
42 return either;
118
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
43 }
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
44
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
45 public TreeMap<String, TreeMap<String, List<NodePath>>> editIndex(NodePath path, String key, String attribute,TreeMap<String, TreeMap<String, List<NodePath>>> index){
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
46
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
47 Option<TreeMap<String, List<NodePath>>> innerIndexOp = index.get(key);
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
48
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
49 if (attribute != null) {
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
50 if (innerIndexOp.isNone()) {
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
51
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
52 TreeMap<String, List<NodePath>> innerIndex = TreeMap.empty(Ord.stringOrd);
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
53 List<NodePath> list = List.nil();
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
54 list = list.cons(path);
137
7334f78a92c3 name changed find to findInSubTree
one
parents: 135
diff changeset
55 innerIndex = innerIndex.set(attribute, list);
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
56 TreeMap<String, TreeMap<String, List<NodePath>>> newIndex = index.set(key, innerIndex);
139
ec166c8ff079 add findAll and findInSubTreeAll
one
parents: 137
diff changeset
57 return newIndex;
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
58 } else {
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
59
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
60 TreeMap<String, List<NodePath>> innerIndex = innerIndexOp.some();
140
99bda30ea72c temporarily stored
one
parents: 139
diff changeset
61
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
62 Option<List<NodePath>> opList = innerIndex.get(attribute);
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
63
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
64 if (opList.isNone()) {
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
65
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
66 List<NodePath> list = List.nil();
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
67 list = list.cons(path);
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
68 innerIndex = innerIndex.set(attribute, list);
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
69
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
70 } else {
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
71
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
72 List<NodePath> list = opList.some();
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
73 list = list.cons(path);
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
74 innerIndex = innerIndex.set(attribute, list);
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
75
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
76 }
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
77 TreeMap<String, TreeMap<String, List<NodePath>>> newIndex = index.set(key, innerIndex);
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
78 return newIndex;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
79 }
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
80 }
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
81 return index;
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
82 }
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
83
143
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
84 // public TreeNode getTarget(TreeNode node , NodePath path){
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
85 // Pair<Integer, NodePath> path = path.pop();
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
86 // Either<Error, TreeNode> either = node.getChildren().at(path.left());
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
87 // if (either.isA())
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
88 // return node;
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
89 //
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
90 // TreeNode child = either.b();
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
91 // if (path.right().size() == 0)
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
92 // return child;
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
93 //
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
94 // TreeNode target = getTarget(child,path.right());
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
95 // return target;
afbe19c98f53 change Index form TreeMap<String,TreeMap<String<List<Pair<TreeNode,NodePath>>>> → TreeMap<String,TreeMap<String<List<NodePath>>>
one
parents: 140
diff changeset
96 // }
128
9c46e5c2ffac edit PutIndexEditor
one
parents: 118
diff changeset
97
118
baa1e2e7c503 add IndexEditor
one
parents:
diff changeset
98 }