# HG changeset patch # User tatsuki # Date 1410757462 -32400 # Node ID 4493dd7692cead41a24d4edd7028d90926f82ba8 # Parent 2828205bdc3a47c98bf16f05bba73ee12e9b00b2 add FindMatrixTest diff -r 2828205bdc3a -r 4493dd7692ce src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java --- a/src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java Sat Sep 13 12:54:02 2014 +0900 +++ b/src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java Mon Sep 15 14:04:22 2014 +0900 @@ -1,5 +1,6 @@ package alice.jungle.datasegment.transformer; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; @@ -7,6 +8,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Logging; import org.msgpack.annotation.Message; @@ -54,7 +56,7 @@ } @Override - public TreeMap>> getIndex() { + public TreeMap>>> getIndex() { // TODO Auto-generated method stub return null; } diff -r 2828205bdc3a -r 4493dd7692ce src/main/java/alice/jungle/persistent/PersistentChangeSet.java --- a/src/main/java/alice/jungle/persistent/PersistentChangeSet.java Sat Sep 13 12:54:02 2014 +0900 +++ b/src/main/java/alice/jungle/persistent/PersistentChangeSet.java Mon Sep 15 14:04:22 2014 +0900 @@ -4,8 +4,10 @@ import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; public class PersistentChangeSet implements ChangeSet { @@ -67,7 +69,7 @@ } @Override - public TreeMap>> getIndex() { + public TreeMap>>> getIndex() { // TODO Auto-generated method stub return null; } diff -r 2828205bdc3a -r 4493dd7692ce src/main/java/alice/jungle/persistent/PersistentTransactionManager.java --- a/src/main/java/alice/jungle/persistent/PersistentTransactionManager.java Sat Sep 13 12:54:02 2014 +0900 +++ b/src/main/java/alice/jungle/persistent/PersistentTransactionManager.java Mon Sep 15 14:04:22 2014 +0900 @@ -5,6 +5,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference; @@ -16,6 +17,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; public class PersistentTransactionManager implements TransactionManager { private final AtomicReservableReference repository; @@ -35,7 +37,7 @@ } @Override - public Either commit(TreeNode _newRoot,final TreeOperationLog _log,TreeMap>> index) { + public Either commit(TreeNode _newRoot,final TreeOperationLog _log,TreeMap>>> index) { ChangeSet cs = tip.getChangeSet(); long currentRevision = cs.revision(); long nextRevision = currentRevision + 1; diff -r 2828205bdc3a -r 4493dd7692ce src/main/java/alice/jungle/transaction/NetworkTransactionManager.java --- a/src/main/java/alice/jungle/transaction/NetworkTransactionManager.java Sat Sep 13 12:54:02 2014 +0900 +++ b/src/main/java/alice/jungle/transaction/NetworkTransactionManager.java Mon Sep 15 14:04:22 2014 +0900 @@ -8,6 +8,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Result; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; @@ -21,6 +22,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; public class NetworkTransactionManager implements TransactionManager { @@ -42,7 +44,7 @@ } @Override - public Either commit(TreeNode _newRoot,final TreeOperationLog _log, TreeMap>> index) { + public Either commit(TreeNode _newRoot,final TreeOperationLog _log,TreeMap>>> index) { ChangeSet cs = tip.getChangeSet(); long currentRevision = cs.revision(); long nextRevision = currentRevision + 1; diff -r 2828205bdc3a -r 4493dd7692ce src/main/java/app/bbs/NetworkJungleBulletinBoard.java --- a/src/main/java/app/bbs/NetworkJungleBulletinBoard.java Sat Sep 13 12:54:02 2014 +0900 +++ b/src/main/java/app/bbs/NetworkJungleBulletinBoard.java Mon Sep 15 14:04:22 2014 +0900 @@ -20,6 +20,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; @@ -35,6 +36,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Logging; import junit.framework.Assert; @@ -204,7 +206,7 @@ return new LoggingNode(node, op); } @Override - public TreeMap>> getIndex() { + public TreeMap>>> getIndex() { // TODO Auto-generated method stub return null; } @@ -277,7 +279,7 @@ } @Override - public TreeMap>> getIndex() { + public TreeMap>>> getIndex() { // TODO Auto-generated method stub return null; } @@ -334,7 +336,7 @@ } @Override - public TreeMap>> getIndex() { + public TreeMap>>> getIndex() { // TODO Auto-generated method stub return null; } @@ -387,7 +389,7 @@ } @Override - public TreeMap>> getIndex() { + public TreeMap>>> getIndex() { // TODO Auto-generated method stub return null; } @@ -443,7 +445,7 @@ } @Override - public TreeMap>> getIndex() { + public TreeMap>>> getIndex() { // TODO Auto-generated method stub return null; } @@ -492,7 +494,7 @@ } @Override - public TreeMap>> getIndex() { + public TreeMap>>> getIndex() { // TODO Auto-generated method stub return null; } @@ -582,7 +584,7 @@ } @Override - public TreeMap>> getIndex() { + public TreeMap>>> getIndex() { // TODO Auto-generated method stub return null; } @@ -626,7 +628,7 @@ } @Override - public TreeMap>> getIndex() { + public TreeMap>>> getIndex() { // TODO Auto-generated method stub return null; } diff -r 2828205bdc3a -r 4493dd7692ce src/main/java/app/bbs/thinks/EditNodeName.java --- a/src/main/java/app/bbs/thinks/EditNodeName.java Sat Sep 13 12:54:02 2014 +0900 +++ b/src/main/java/app/bbs/thinks/EditNodeName.java Mon Sep 15 14:04:22 2014 +0900 @@ -6,6 +6,8 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang.StringEscapeUtils; + import app.bbs.NetworkBulletinBoard; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard; diff -r 2828205bdc3a -r 4493dd7692ce src/test/java/alice/jungle/log/example/FindMatrixTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/test/java/alice/jungle/log/example/FindMatrixTest.java Mon Sep 15 14:04:22 2014 +0900 @@ -0,0 +1,107 @@ +package alice.jungle.log.example; + +import java.io.File; +import java.io.IOException; +import java.nio.ByteBuffer; +import java.util.Iterator; + +import fj.Ord; +import fj.data.List; +import fj.data.TreeMap; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultJungleTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.query.Query; +import junit.framework.TestCase; +import alice.jungle.operations.NetworkNodePath; +import alice.jungle.persistent.PersistentJournal; +import alice.jungle.persistent.PersistentJungle; +import alice.jungle.transaction.JungleUpdater; +import app.bbs.NetworkBulletinBoard; +import app.bbs.NetworkJungleBulletinBoard; + +public class FindMatrixTest extends TestCase { + + public class SearchQuery implements Query{ + + private String key; + private String searchAttribute; + + public SearchQuery (String key, String searchAttribute){ + this.key = key; + this.searchAttribute = searchAttribute; + } + + @Override + public boolean condition(TreeNode _node) { + ByteBuffer attribute = _node.getAttributes().get(key); + if(attribute != null){ + byte[] byteAttribute = attribute.array(); + String str = new String(byteAttribute); + System.out.println(str); + return str.equals(searchAttribute); + } + return false; + } + + @Override + public List> indexCondition() { + // TODO Auto-generated method stub + return null; + } + + }; + + public static void main(String[] args) throws IOException { + PersistentJournal journal1 = new PersistentJournal(); + journal1.setInputFile(new File("./log/1410589309338.log")); + journal1.setOutputFile(new File("./log/test.log")); + Jungle jungle2 = new PersistentJungle(journal1, "uuid2", new DefaultTreeEditor(new DefaultTraverser())); + ChangeListReader reader = journal1.getReader(); + int roopCount = 0; + String treeName = null; + for (ChangeList chList : reader) { + roopCount++; + treeName = chList.getTreeName(); + JungleTree tree2 = jungle2.getTreeByName(treeName); + if(tree2 == null) { + tree2 = jungle2.createNewTree(treeName); + } + JungleTreeEditor editor2 = tree2.getTreeEditor(); + Either either2 = JungleUpdater.edit(editor2, chList); + assertFalse(either2.isA()); + editor2 = either2.b(); + editor2.success(); + } + + + JungleTree tree2 = jungle2.getTreeByName(treeName); + TreeNode root = tree2.getRootNode(); + TreeMap>>> index = TreeMap.empty(Ord.stringOrd); + DefaultTraverser traverser = new DefaultTraverser(); + DefaultTreeEditor treeEditor = new DefaultTreeEditor(traverser); + JungleTreeEditor editor = new DefaultJungleTreeEditor(root,null,treeEditor,null); + InterfaceTraverser ifTraverser = new InterfaceTraverser(root,index,editor); + String key = "mes"; + String attribute = "株式会社フタコ放送"; + + Query query = new FindMatrixTest().new SearchQuery(key, attribute); + Iterator> searchNode = ifTraverser.find(query); + TreeNode node = searchNode.next().left(); + byte[] nodeAttibute = node.getAttributes().get(key).array(); + System.out.println(new String(nodeAttibute)); + } +}