changeset 105:78ef456c98a0

add Query Status but has error
author one
date Fri, 12 Sep 2014 19:47:25 +0900
parents f9a0e7069811
children 3e75124550e9
files src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/JungleTree.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultChangeSet.java src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/traverser/InterfaceTraverser.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/PathNodeIterator.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/Query.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/query/SearchQuery.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/DeleteAttributeIndex.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/LoggingIndexAttributes.java src/main/java/jp/ac/u_ryukyu/ie/cr/tatsuki/jungle/store/index/PutAttributeIndex.java
diffstat 10 files changed, 87 insertions(+), 45 deletions(-) [+]
line wrap: on
line diff
--- 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<String,List<TreeNode>> getIndex() {
+	public TreeMap<String,TreeMap<String, TreeNode>> getIndex() {
 		TreeContext tc = repository.get();
 		ChangeSet cs = tc.getChangeSet();
 		return cs.getIndex();
--- 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<String,List<TreeNode>> getIndex();
+	public TreeMap<String,TreeMap<String, TreeNode>> getIndex();
 	public JungleTreeEditor getIndexTreeEditor();
 }
--- 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<String,List<TreeNode>> index;
-	
+	TreeMap<String,List<String>> index2;
 	public DefaultChangeSet(TreeNode _node,ChangeSet _prev,ChangeList _log,String _uuid, String _treeName, long _revision, TreeMap<String,List<TreeNode>> 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
--- 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<String,List<TreeNode>> index;
+	TreeMap<String,TreeMap<String, List<TreeNode>>> index;
 	JungleTreeEditor editor;
 
 	public InterfaceTraverser(TreeNode _root,
-			TreeMap<String,List<TreeNode>> index,
+	        TreeMap<String,TreeMap<String, List<TreeNode>>> 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<Pair<TreeNode, NodePath>> find(final SearchQuery query) {
-		final PathNodeIterator itNode = new PathNodeIterator(node);
-
+		final PathNodeIterator itNode = new PathNodeIterator(node, query);
+		
 		return new Iterator<Pair<TreeNode, NodePath>>() {
 
 			private Pair<TreeNode, NodePath> matchPair = nextmatch(itNode);
--- 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<TreeNode> nodeStack = new Stack<TreeNode>();
 	private Stack<Integer> searchStack = new Stack<Integer>();
-
-	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
--- 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<Pair<String,String>> indexCondition(); //attribute name ,attribute value
+	
+	
 }
--- 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<String> 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<String> getIndexidAttributesList() {
+        return indexidAttributesList;
+    }
+
+    public void setIndexidAttributesList(List<String> 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<Pair<String, String>> indexCondition() {
+        return query.indexCondition();
+    }
+
 }
--- 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<String,List<TreeNode>> index;
 	private String key;
+	
 	public DeleteAttributeIndex(String _key ,TreeMap<String,List<TreeNode>> index) {
 		super(_key);
 		this.key = key;
--- 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<String,List<TreeNode>> index;
+	private TreeMap<String,TreeMap<String, List<TreeNode>>> index;
 	
-	public LoggingIndexAttributes(TreeNode _wrap, OperationLog _log, TreeMap<String,List<TreeNode>> index) {
+	public LoggingIndexAttributes(TreeNode _wrap, OperationLog _log, TreeMap<String,TreeMap<String, List<TreeNode>>> 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<List<TreeNode>> opList = index.get(indexKey);
+		Option<TreeMap<String, TreeNode>> opAttributeIndex = index.get(key);
+        String indexKey = new String(value.array());
+		TreeMap<String, TreeNode> list = TreeMap.empty(Ord.stringOrd);
+
+	    if (opAttributeIndex.isNone()) {
+	        TreeMap<String, TreeNode> newAttributeindex = TreeMap.empty(Ord.stringOrd);
+	        list = list.set(indexKey,newNode);
+	    } else {
+	        Option<TreeNode> oplist = opAttributeIndex.some().get(indexKey);
+	        list = opAttributeIndex.some();
+	        list = list.cons(newNode);
+	    }
+
+	      
 		if (opList.isNone()) {
-			List<TreeNode> list = List.nil();
-			list.cons(newNode);
-			String str = new String(value.array());
-			index.set(str,list);
+			list = list.set(,newNode);
 		} else {
-			List<TreeNode> list = opList.some();
+			list = opList.some();
 			list = list.cons(newNode);
-			index.set(indexKey, list);
 		}
-		Logging logIndexNode = new LoggingIndexNode(newNode, newLog, index);
+		TreeMap<String,List<TreeNode>> newIndex = index.set(indexKey,list);
+		Logging logIndexNode = new LoggingIndexNode(newNode, newLog, newIndex);
 		return DefaultEither.newB(logIndexNode);
 	}
 }
--- 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<String,List<TreeNode>> index; 
+	
 	public PutAttributeIndex(String _key,ByteBuffer _value, TreeMap<String,List<TreeNode>>index)
 	{
 		super(_key, _value);
-		key = _key;
-		value = _value;
 		this.index = index;
 	}