# HG changeset patch # User one # Date 1410518845 -32400 # Node ID 78ef456c98a0a8ad2ab902831715a3b1948984ff # Parent f9a0e7069811fc7b0f233f279ffe511e83480f5b add Query Status but has error diff -r f9a0e7069811 -r 78ef456c98a0 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java Fri Sep 12 16:22:22 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java Fri Sep 12 19:47:25 2014 +0900 @@ -72,7 +72,7 @@ } @Override - public TreeMap> getIndex() { + public TreeMap> getIndex() { TreeContext tc = repository.get(); ChangeSet cs = tc.getChangeSet(); return cs.getIndex(); diff -r f9a0e7069811 -r 78ef456c98a0 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/JungleTree.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/JungleTree.java Fri Sep 12 16:22:22 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/JungleTree.java Fri Sep 12 19:47:25 2014 +0900 @@ -12,6 +12,6 @@ public InterfaceTraverser getTraverser(); public JungleTreeEditor getLocalTreeEditor(); public TreeNode getRootNode(); - public TreeMap> getIndex(); + public TreeMap> getIndex(); public JungleTreeEditor getIndexTreeEditor(); } diff -r f9a0e7069811 -r 78ef456c98a0 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultChangeSet.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultChangeSet.java Fri Sep 12 16:22:22 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultChangeSet.java Fri Sep 12 19:47:25 2014 +0900 @@ -16,7 +16,7 @@ private final String treeName; private final long revision; private final TreeMap> index; - + TreeMap> index2; public DefaultChangeSet(TreeNode _node,ChangeSet _prev,ChangeList _log,String _uuid, String _treeName, long _revision, TreeMap> index) { this.root = _node; @@ -31,31 +31,31 @@ @Override public TreeNode getRoot() { - return this.root; + return root; } @Override public ChangeSet prev() { - return this.previous; + return previous; } @Override public ChangeList getChangeList() { - return this.changeList; + return changeList; } @Override public String uuid() { - return this.uuid; + return uuid; } @Override public String getTreeName() { - return this.treeName; + return treeName; } @Override diff -r f9a0e7069811 -r 78ef456c98a0 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/InterfaceTraverser.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/InterfaceTraverser.java Fri Sep 12 16:22:22 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/InterfaceTraverser.java Fri Sep 12 19:47:25 2014 +0900 @@ -19,11 +19,11 @@ InterfaceTraverser traverser; TreeNode node; - TreeMap> index; + TreeMap>> index; JungleTreeEditor editor; public InterfaceTraverser(TreeNode _root, - TreeMap> index, + TreeMap>> index, JungleTreeEditor editor) { this.node = _root; this.index = index; @@ -31,8 +31,7 @@ } public InterfaceTraverser getTraverser(JungleTree tree) { - return new InterfaceTraverser(tree.getRootNode(), tree.getIndex(), - tree.getTreeEditor()); + return new InterfaceTraverser(tree.getRootNode(), tree.getIndex(), tree.getTreeEditor()); } public void set(TreeNode root){ @@ -75,8 +74,8 @@ } public Iterator> find(final SearchQuery query) { - final PathNodeIterator itNode = new PathNodeIterator(node); - + final PathNodeIterator itNode = new PathNodeIterator(node, query); + return new Iterator>() { private Pair matchPair = nextmatch(itNode); diff -r f9a0e7069811 -r 78ef456c98a0 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/PathNodeIterator.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/PathNodeIterator.java Fri Sep 12 16:22:22 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/PathNodeIterator.java Fri Sep 12 19:47:25 2014 +0900 @@ -18,12 +18,17 @@ private TreeNodeChildren children; private Stack nodeStack = new Stack(); private Stack searchStack = new Stack(); - - public PathNodeIterator(TreeNode root) { + + /* + * get queryIndexCondition from query + * if already index exists, use index + * otherwise traverse tree and create index + * + * */ + public PathNodeIterator(TreeNode root, Query query) { this.root = root; path = new DefaultNodePath(); node = root; - } @Override diff -r f9a0e7069811 -r 78ef456c98a0 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/Query.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/Query.java Fri Sep 12 16:22:22 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/Query.java Fri Sep 12 19:47:25 2014 +0900 @@ -1,7 +1,12 @@ package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query; +import fj.data.List; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; public interface Query { boolean condition(TreeNode _node); + List> indexCondition(); //attribute name ,attribute value + + } diff -r f9a0e7069811 -r 78ef456c98a0 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/SearchQuery.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/SearchQuery.java Fri Sep 12 16:22:22 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/SearchQuery.java Fri Sep 12 19:47:25 2014 +0900 @@ -1,22 +1,47 @@ package jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query; +import fj.data.List; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; -public class SearchQuery /*implements Query*/ { +public class SearchQuery { + + private Query query; + private List indexidAttributesList = List.nil(); - private String attribute; - private String key; - public SearchQuery(String _key, String _attribute){ - key = _key; - attribute = _attribute; + public Query getQuery() { + return query; + } + + public void setQuery(Query query) { + this.query = query; + } + + public List getIndexidAttributesList() { + return indexidAttributesList; + } + + public void setIndexidAttributesList(List indexidAttributesList) { + this.indexidAttributesList = indexidAttributesList; + } + + public SearchQuery(Query query){ + this.query = query; } - //@Override - public boolean condition(TreeNode _node) { - String str = new String(_node.getAttributes().get(key).array()); - //System.out.println(str); - if(str.equals(attribute)) - return true; - return false; + + public boolean condition(TreeNode node) { + return query.condition(node); + +// for example query String +// str = new String(_node.getAttributes().get(key).array()); +// //System.out.println(str); +// if(str.equals(attribute)) +// return true; +// return false; } + public List> indexCondition() { + return query.indexCondition(); + } + } diff -r f9a0e7069811 -r 78ef456c98a0 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/DeleteAttributeIndex.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/DeleteAttributeIndex.java Fri Sep 12 16:22:22 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/DeleteAttributeIndex.java Fri Sep 12 19:47:25 2014 +0900 @@ -12,6 +12,7 @@ TreeMap> index; private String key; + public DeleteAttributeIndex(String _key ,TreeMap> index) { super(_key); this.key = key; diff -r f9a0e7069811 -r 78ef456c98a0 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/LoggingIndexAttributes.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/LoggingIndexAttributes.java Fri Sep 12 16:22:22 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/LoggingIndexAttributes.java Fri Sep 12 19:47:25 2014 +0900 @@ -2,6 +2,7 @@ import java.nio.ByteBuffer; +import fj.Ord; import fj.data.List; import fj.data.Option; import fj.data.TreeMap; @@ -21,9 +22,9 @@ private final TreeNode wrap; private final OperationLog log; - private TreeMap> index; + private TreeMap>> index; - public LoggingIndexAttributes(TreeNode _wrap, OperationLog _log, TreeMap> index) { + public LoggingIndexAttributes(TreeNode _wrap, OperationLog _log, TreeMap>> index) { super(_wrap, _log); this.wrap = _wrap; this.log = _log; @@ -70,19 +71,28 @@ Logging logNode = either.b(); TreeNode newNode = logNode.getWrap(); OperationLog newLog = logNode.getOperationLog(); - String indexKey = new String(value.array()); - Option> opList = index.get(indexKey); + Option> opAttributeIndex = index.get(key); + String indexKey = new String(value.array()); + TreeMap list = TreeMap.empty(Ord.stringOrd); + + if (opAttributeIndex.isNone()) { + TreeMap newAttributeindex = TreeMap.empty(Ord.stringOrd); + list = list.set(indexKey,newNode); + } else { + Option oplist = opAttributeIndex.some().get(indexKey); + list = opAttributeIndex.some(); + list = list.cons(newNode); + } + + if (opList.isNone()) { - List list = List.nil(); - list.cons(newNode); - String str = new String(value.array()); - index.set(str,list); + list = list.set(,newNode); } else { - List list = opList.some(); + list = opList.some(); list = list.cons(newNode); - index.set(indexKey, list); } - Logging logIndexNode = new LoggingIndexNode(newNode, newLog, index); + TreeMap> newIndex = index.set(indexKey,list); + Logging logIndexNode = new LoggingIndexNode(newNode, newLog, newIndex); return DefaultEither.newB(logIndexNode); } } diff -r f9a0e7069811 -r 78ef456c98a0 src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/PutAttributeIndex.java --- a/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/PutAttributeIndex.java Fri Sep 12 16:22:22 2014 +0900 +++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/PutAttributeIndex.java Fri Sep 12 19:47:25 2014 +0900 @@ -15,14 +15,11 @@ public class PutAttributeIndex extends PutAttribute { - private final String key; - private final ByteBuffer value; private TreeMap> index; + public PutAttributeIndex(String _key,ByteBuffer _value, TreeMap>index) { super(_key, _value); - key = _key; - value = _value; this.index = index; }