annotate src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/LoggingIndexAttributes.java @ 110:cf17350a2415

traverse find args change Query
author one
date Sat, 13 Sep 2014 19:23:31 +0900
parents 5b7e45464bb8
children 5df5505e1c1e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
103
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
1 package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
2
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
3 import java.nio.ByteBuffer;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
4
105
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
5 import fj.Ord;
103
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
6 import fj.data.List;
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
7 import fj.data.Option;
103
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
8 import fj.data.TreeMap;
110
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
103
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingAttributes;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
21
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
22 public class LoggingIndexAttributes extends LoggingAttributes {
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
23
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
24 private final TreeNode wrap;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
25 private final OperationLog log;
105
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
26 private TreeMap<String,TreeMap<String, List<TreeNode>>> index;
103
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
27
110
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
28 public LoggingIndexAttributes(TreeNode _wrap, OperationLog _log,TreeMap<String,TreeMap<String, List<TreeNode>>> index) {
103
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
29 super(_wrap, _log);
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
30 this.wrap = _wrap;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
31 this.log = _log;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
32 this.index = index;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
33 }
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
34
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
35 private Either<Error,Logging> edit(NodeOperation _op)
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
36 {
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
37 Either<Error,TreeNode> either = _op.invoke(wrap);
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
38 if(either.isA()){
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
39 return DefaultEither.newA(either.a());
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
40 }
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
41
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
42 TreeNode newNode = either.b();
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
43 OperationLog newLog = log.add(_op);
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
44 Logging newLogNode = new LoggingNode(newNode,newLog);
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
45
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
46 return DefaultEither.newB(newLogNode);
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
47 }
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
48
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
49 public Either<Error,Logging> delete(final String key)
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
50 {
110
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
51 DeleteAttributeOperation deleteAttribute = new DeleteAttributeOperation(key);
103
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
52 Either<Error, Logging> either = edit(deleteAttribute);
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
53
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
54 if(either.isA())
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
55 return either;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
56
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
57 Logging logNode = either.b();
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
58 TreeNode node = logNode.getWrap();
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
59 OperationLog log = logNode.getOperationLog();
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
60 index = index.delete(key);
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
61 Logging logIndexNode = new LoggingIndexNode(node, log, index);
110
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
62 return DefaultEither.newB(logIndexNode);
103
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
63 }
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
64
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
65 public Either<Error,Logging> put(final String key,final ByteBuffer value)
110
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
66 {return null;
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
67 /* PutAttributeOperation putAttribute = new PutAttributeOperation(key,value);
103
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
68 Either<Error, Logging> either = edit(putAttribute);
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
69 if(either.isA())
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
70 return either;
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
71
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
72 Logging logNode = either.b();
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
73 TreeNode newNode = logNode.getWrap();
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
74 OperationLog newLog = logNode.getOperationLog();
110
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
75
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
76
105
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
77
110
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
78 TreeMap<String, List<TreeNode>> list = TreeMap.empty(Ord.stringOrd);
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
79
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
80
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
81
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
82 Option<TreeMap<String, List<TreeNode>>> opAttributeIndex = index.get(key);
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
83 String indexKey = new String(value.array());
105
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
84 if (opAttributeIndex.isNone()) {
110
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
85 TreeMap<String, TreeNode> newNodeindex = TreeMap.empty(Ord.stringOrd);
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
86
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
87
105
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
88 } else {
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
89 Option<TreeNode> oplist = opAttributeIndex.some().get(indexKey);
110
cf17350a2415 traverse find args change Query
one
parents: 107
diff changeset
90 list = list.cons(opAttributeIndex.some());
105
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
91 list = list.cons(newNode);
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
92 }
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
93
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
94
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
95 if (opList.isNone()) {
105
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
96 list = list.set(,newNode);
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
97 } else {
105
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
98 list = opList.some();
104
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
99 list = list.cons(newNode);
f9a0e7069811 delete worning halfway
one
parents: 103
diff changeset
100 }
105
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
101 TreeMap<String,List<TreeNode>> newIndex = index.set(indexKey,list);
78ef456c98a0 add Query Status but has error
one
parents: 104
diff changeset
102 Logging logIndexNode = new LoggingIndexNode(newNode, newLog, newIndex);
107
one
parents: 105
diff changeset
103 return DefaultEither.newB(logIndexNode);*/
103
bed3afd5c2e2 add Index but Not use
one
parents:
diff changeset
104 }
107
one
parents: 105
diff changeset
105 }