# HG changeset patch # User tatsuki # Date 1421281403 -32400 # Node ID 5d0734fd859d55863724e1746d8edf23a76f73ee # Parent 269bada9eedc314bcbc3be948df5c9a63429d55d fix error diff -r 269bada9eedc -r 5d0734fd859d pom.xml --- a/pom.xml Fri Oct 17 15:16:56 2014 +0900 +++ b/pom.xml Thu Jan 15 09:23:23 2015 +0900 @@ -48,11 +48,6 @@ uuid 3.3.0 - - org.functionaljava - functionaljava - 3.1 - org.msgpack diff -r 269bada9eedc -r 5d0734fd859d src/main/java/alice/jungle/core/NetworkDefaultJungle.java --- a/src/main/java/alice/jungle/core/NetworkDefaultJungle.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/alice/jungle/core/NetworkDefaultJungle.java Thu Jan 15 09:23:23 2015 +0900 @@ -15,53 +15,57 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultChangeSet; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; import fj.data.List; +import fj.data.TreeMap; public class NetworkDefaultJungle implements Jungle { - private Journal journal; - private ConcurrentHashMap trees; - private String uuid; - private TreeEditor editor; - - public NetworkDefaultJungle(Journal _journal,String _uuid,TreeEditor _editor) - { - journal = _journal; - trees = new ConcurrentHashMap(); - uuid = _uuid; - editor = _editor; - } + private Journal journal; + private ConcurrentHashMap trees; + private String uuid; + private TreeEditor editor; - @Override - public JungleTree getTreeByName(String _name) - { - return trees.get(_name); - } + public NetworkDefaultJungle(Journal _journal, String _uuid, TreeEditor _editor) { + journal = _journal; + trees = new ConcurrentHashMap(); + uuid = _uuid; + editor = _editor; + } + + @Override + public JungleTree getTreeByName(String _name) { + return trees.get(_name); + } - @Override - public JungleTree createNewTree(final String _name) - { - ChangeList list = new ChangeList(){ - @Override - public Iterator iterator() { - List nil = List.nil(); - return nil.iterator(); - } - @Override - public String uuid() { - return uuid; - } - @Override - public String getTreeName() { - return _name; - } - }; - TreeNode root = new DefaultTreeNode(); - ChangeSet set = new DefaultChangeSet(root,null,list,uuid,_name, 0,null); - DefaultTreeContext tc = new DefaultTreeContext(root,set); - JungleTree newTree = new NetworkDefaultJungleTree(_name, tc,uuid,journal.getWriter(),editor); - if(trees.putIfAbsent(_name,newTree) != null){ - return null; - } - return newTree; - } + @Override + public JungleTree createNewTree(final String name) { + ChangeList list = new ChangeList() { + @Override + public Iterator iterator() { + List nil = List.nil(); + return nil.iterator(); + } + + @Override + public String uuid() { + return uuid; + } + + @Override + public String getTreeName() { + return name; + } + }; + TreeNode root = new DefaultTreeNode(); + TreeMap>> indexList = new Index().getIndex(); + TreeMap parentIndex = new ParentIndex().getParentIndex(); + ChangeSet set = new DefaultChangeSet(root, null, list, uuid, name, 0, indexList, parentIndex); + DefaultTreeContext tc = new DefaultTreeContext(root, set); + JungleTree newTree = new NetworkDefaultJungleTree(name, tc, uuid, journal.getWriter(), editor); + if (trees.putIfAbsent(name, newTree) != null) { + return null; + } + return newTree; + } } diff -r 269bada9eedc -r 5d0734fd859d src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java --- a/src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/alice/jungle/datasegment/transformer/NetworkAppendChildAt.java Thu Jan 15 09:23:23 2015 +0900 @@ -54,10 +54,4 @@ return new LoggingNode(node, op); } - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - } diff -r 269bada9eedc -r 5d0734fd859d src/main/java/alice/jungle/operations/NetworkNodePath.java --- a/src/main/java/alice/jungle/operations/NetworkNodePath.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/alice/jungle/operations/NetworkNodePath.java Thu Jan 15 09:23:23 2015 +0900 @@ -9,68 +9,73 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; @Message -public class NetworkNodePath implements NodePath -{ - LinkedList path; - - public NetworkNodePath() { - path = new LinkedList(); - path.add(-1); - } - - public NetworkNodePath(NodePath _p) { - path = new LinkedList(); - for(Integer pos: _p) { - path.add(pos); - } - } - - private NetworkNodePath(LinkedList _path) { - path = _path; - } - - @Override - public Iterator iterator() { - return path.iterator(); - } +public class NetworkNodePath implements NodePath { + LinkedList path; + + public NetworkNodePath() { + path = new LinkedList(); + path.add(-1); + } + + public NetworkNodePath(NodePath _p) { + path = new LinkedList(); + for (Integer pos : _p) { + path.add(pos); + } + } - @Override - public NetworkNodePath add(int _pos) { - LinkedList newPath = copyPath(); - newPath.add(_pos); - return new NetworkNodePath(newPath); - } + private NetworkNodePath(LinkedList _path) { + path = _path; + } + + @Override + public Iterator iterator() { + return path.iterator(); + } + + @Override + public NetworkNodePath add(int _pos) { + LinkedList newPath = copyPath(); + newPath.add(_pos); + return new NetworkNodePath(newPath); + } - @Override - public Pair pop() { - LinkedList cPath = copyPath(); - int e = cPath.getFirst(); - cPath.remove(); - return new Pair(e, new NetworkNodePath(cPath)); - } + @Override + public Pair pop() { + LinkedList cPath = copyPath(); + int e = cPath.getFirst(); + cPath.remove(); + return new Pair(e, new NetworkNodePath(cPath)); + } - @Override - public int size() { - return path.size(); - } + @Override + public int size() { + return path.size(); + } - private LinkedList copyPath() { - LinkedList newPath = new LinkedList(); - for (Integer i : path) { - newPath.add(i); - } - return newPath; - } - - @Override - public String toString() { - return path.toString(); - } + private LinkedList copyPath() { + LinkedList newPath = new LinkedList(); + for (Integer i : path) { + newPath.add(i); + } + return newPath; + } + + @Override + public String toString() { + return path.toString(); + } - @Override - public NodePath tail() { - // TODO Auto-generated method stub - return null; - } - + @Override + public NodePath tail() { + path.removeLast(); + return new NetworkNodePath(path); + } + + @Override + public Pair last() { + Integer num = path.removeLast(); + return new Pair(num, new NetworkNodePath(path)); + } + } diff -r 269bada9eedc -r 5d0734fd859d src/main/java/alice/jungle/operations/NetworkPutAttributeOperation.java --- a/src/main/java/alice/jungle/operations/NetworkPutAttributeOperation.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/alice/jungle/operations/NetworkPutAttributeOperation.java Thu Jan 15 09:23:23 2015 +0900 @@ -10,7 +10,6 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.PutAttribute; 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.tatsuki.jungle.store.index.LoggingNode; @Message public class NetworkPutAttributeOperation implements NodeOperation { diff -r 269bada9eedc -r 5d0734fd859d src/main/java/alice/jungle/persistent/PersistentChangeSet.java --- a/src/main/java/alice/jungle/persistent/PersistentChangeSet.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/alice/jungle/persistent/PersistentChangeSet.java Thu Jan 15 09:23:23 2015 +0900 @@ -1,77 +1,78 @@ package alice.jungle.persistent; -import fj.data.List; 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; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; + +public class PersistentChangeSet implements ChangeSet { + private final TreeNode root; + private final ChangeSet previous; + private final ChangeList changeList; + private final String uuid; + private final long revision; + private final String treeName; + private final TreeMap>> indexList; + private final TreeMap parentIndex; -public class PersistentChangeSet implements ChangeSet -{ - private final TreeNode root; - private final ChangeSet previous; - private final ChangeList changeList; - private final String uuid; - private final long revision; - private final String treeName; - - public PersistentChangeSet(TreeNode _node,ChangeSet _prev,ChangeList _log,String _uuid, String _treeName, long _revision) - { - root = _node; - previous = _prev; - changeList = _log; - uuid = _uuid; - revision = _revision; - treeName = _treeName; - } - - @Override - public TreeNode getRoot() - { - return root; - } + public PersistentChangeSet(TreeNode _node, ChangeSet _prev, ChangeList _log, String _uuid, String _treeName, + long _revision, TreeMap>> indexList, + TreeMap parentIndex) { + root = _node; + previous = _prev; + changeList = _log; + uuid = _uuid; + revision = _revision; + treeName = _treeName; + this.indexList = indexList; + this.parentIndex = parentIndex; + } - @Override - public ChangeSet prev() - { - return previous; - } + @Override + public TreeNode getRoot() { + return root; + } - @Override - public ChangeList getChangeList() - { - return changeList; - } + @Override + public ChangeSet prev() { + return previous; + } - @Override - public String uuid() - { - return uuid; - } + @Override + public ChangeList getChangeList() { + return changeList; + } + + @Override + public String uuid() { + return uuid; + } - @Override - public long revision() - { - return revision; - } + @Override + public long revision() { + return revision; + } + + @Override + public Iterable getOperations() { + return changeList; + } - @Override - public Iterable getOperations() - { - return changeList; - } - - public String getTreeName() { - return treeName; - } + public String getTreeName() { + return treeName; + } - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } + @Override + public Index getIndex() { + return new Index(indexList); + } + + @Override + public ParentIndex getParentIndex() { + return new ParentIndex(parentIndex); + } } diff -r 269bada9eedc -r 5d0734fd859d src/main/java/alice/jungle/persistent/PersistentJungle.java --- a/src/main/java/alice/jungle/persistent/PersistentJungle.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/alice/jungle/persistent/PersistentJungle.java Thu Jan 15 09:23:23 2015 +0900 @@ -4,6 +4,7 @@ import java.util.concurrent.ConcurrentHashMap; 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.persistent.ChangeList; @@ -13,53 +14,56 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; public class PersistentJungle implements Jungle { - private PersistentJournal journal; - private ConcurrentHashMap trees; - final private String uuid; - private TreeEditor editor; + private PersistentJournal journal; + private ConcurrentHashMap trees; + final private String uuid; + private TreeEditor editor; - public PersistentJungle(PersistentJournal _journal,String _uuid,TreeEditor _editor) - { - journal = _journal; - trees = new ConcurrentHashMap(); - uuid = _uuid; - editor = _editor; - } + public PersistentJungle(PersistentJournal _journal, String _uuid, TreeEditor _editor) { + journal = _journal; + trees = new ConcurrentHashMap(); + uuid = _uuid; + editor = _editor; + } - @Override - public JungleTree getTreeByName(String _name) - { - return trees.get(_name); - } + @Override + public JungleTree getTreeByName(String _name) { + return trees.get(_name); + } - @Override - public JungleTree createNewTree(final String _name) - { - ChangeList list = new ChangeList(){ - @Override - public Iterator iterator() { - List nil = List.nil(); - return nil.iterator(); - } - @Override - public String uuid() { - return uuid; - } - @Override - public String getTreeName() { - return _name; - } - }; - TreeNode root = new DefaultTreeNode(); - ChangeSet set = new PersistentChangeSet(root,null,list,uuid,_name,0); - DefaultTreeContext tc = new DefaultTreeContext(root,set); - JungleTree newTree = new PersistentJungleTree(_name, tc,uuid, journal.getWriter(),editor); - if(trees.putIfAbsent(_name,newTree) != null){ - return null; - } - return newTree; - } + @Override + public JungleTree createNewTree(final String name) { + ChangeList list = new ChangeList() { + @Override + public Iterator iterator() { + List nil = List.nil(); + return nil.iterator(); + } + + @Override + public String uuid() { + return uuid; + } + + @Override + public String getTreeName() { + return name; + } + }; + TreeNode root = new DefaultTreeNode(); + TreeMap>> indexList = new Index().getIndex(); + TreeMap parentIndex = new ParentIndex().getParentIndex(); + ChangeSet set = new PersistentChangeSet(root, null, list, uuid, name, 0, indexList, parentIndex); + DefaultTreeContext tc = new DefaultTreeContext(root, set); + JungleTree newTree = new PersistentJungleTree(name, tc, uuid, journal.getWriter(), editor); + if (trees.putIfAbsent(name, newTree) != null) { + return null; + } + return newTree; + } } diff -r 269bada9eedc -r 5d0734fd859d src/main/java/alice/jungle/persistent/PersistentJungleTree.java --- a/src/main/java/alice/jungle/persistent/PersistentJungleTree.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/alice/jungle/persistent/PersistentJungleTree.java Thu Jan 15 09:23:23 2015 +0900 @@ -2,6 +2,7 @@ import fj.data.List; import fj.data.TreeMap; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungleTree; 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.persistent.ChangeListWriter; @@ -11,10 +12,16 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultJungleTreeEditor; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; +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.GetOldTreeError; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; public class PersistentJungleTree implements JungleTree { private final AtomicReservableReference repository; @@ -54,24 +61,67 @@ return getTreeEditor(); } - @Override - public InterfaceTraverser getTraverser() { - TreeContext tc = repository.get(); - ChangeSet cs = tc.getChangeSet(); - return new InterfaceTraverser(getRootNode(), cs.getIndex(), getTreeEditor()); - } + @Override + public long revision() { + TreeContext tc = repository.get(); + ChangeSet cs = tc.getChangeSet(); + return cs.revision(); + } + + @Override + public Either getOldTree(long revision) { + TreeContext tc = repository.get(); + ChangeSet cs = tc.getChangeSet(); + + for (; cs.revision() != revision;) { + cs = cs.prev(); + if (cs == null) + return DefaultEither.newA(GetOldTreeError.OLD_TREE_NOT_FOUND); + } + + TreeNode root = cs.getRoot(); + + TreeContext oldTc = new DefaultTreeContext(root, cs); + String oldTreeUuid = uuid + revision; + JungleTree oldTree = new DefaultJungleTree(oldTc, oldTreeUuid, writer, editor); + return DefaultEither.newB(oldTree); + } - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } + @Override + public ParentIndex getParentIndex() { + TreeContext tc = repository.get(); + ChangeSet cs = tc.getChangeSet(); + return cs.getParentIndex(); + } + + @Override + public Index getIndex() { + TreeContext tc = repository.get(); + ChangeSet cs = tc.getChangeSet(); + return cs.getIndex(); + } - @Override - public IndexJungleTreeEditor getIndexTreeEditor() { - // TODO Auto-generated method stub - return null; - } + @Override + public InterfaceTraverser getTraverser(boolean useIndex) { + AtomicReservableReference.Reservation reservation = repository.getReservation(); + IndexManager indexManager = new IndexManager(reservation); + Index index = getIndex(); + ParentIndex parentIndex = getParentIndex(); + return new InterfaceTraverser(getRootNode(), index, parentIndex, indexManager, useIndex); + } + @Override + public Either getNodeOfPath(NodePath path) { + TreeNode node = repository.get().getTreeNode(); + for (int num : path) { + if (num == -1) + continue; + Either either = node.getChildren().at(num); + if (either.isA()) + return either; + node = either.b(); + } + return DefaultEither.newB(node); + } } diff -r 269bada9eedc -r 5d0734fd859d src/main/java/alice/jungle/persistent/PersistentTransactionManager.java --- a/src/main/java/alice/jungle/persistent/PersistentTransactionManager.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/alice/jungle/persistent/PersistentTransactionManager.java Thu Jan 15 09:23:23 2015 +0900 @@ -1,11 +1,9 @@ package alice.jungle.persistent; -import fj.data.List; -import fj.data.TreeMap; + 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; @@ -13,11 +11,14 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TransactionManager; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference.Reservation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; 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; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; public class PersistentTransactionManager implements TransactionManager { private final AtomicReservableReference repository; @@ -37,14 +38,18 @@ } @Override - public Either commit(TreeNode _newRoot,final TreeOperationLog _log,TreeMap>>> index) { + public Either commit(TreeNode _newRoot,final TreeOperationLog _log) { ChangeSet cs = tip.getChangeSet(); long currentRevision = cs.revision(); long nextRevision = currentRevision + 1; PersistentChangeList list = new PersistentChangeList(uuid, treeName, _log); - TreeNode root = _newRoot; - PersistentChangeSet newCs = new PersistentChangeSet(root, cs, list, uuid, treeName, nextRevision); + IndexManager indexManager = new IndexManager(repository.getReservation()); + InterfaceTraverser traverser = new InterfaceTraverser(_newRoot, indexManager, false); + traverser.createIndex(); + Index index = traverser.getIndex(); + ParentIndex parentIndex = traverser.getParentIndex(); + PersistentChangeSet newCs = new PersistentChangeSet(_newRoot, cs, list, uuid, treeName, nextRevision, index.getIndex(), parentIndex.getParentIndex()); DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs); @SuppressWarnings("rawtypes") diff -r 269bada9eedc -r 5d0734fd859d src/main/java/alice/jungle/transaction/NetworkDefaultJungleTree.java --- a/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTree.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTree.java Thu Jan 15 09:23:23 2015 +0900 @@ -1,7 +1,7 @@ package alice.jungle.transaction; -import fj.data.List; -import fj.data.TreeMap; + +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungleTree; 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.persistent.ChangeListWriter; @@ -10,10 +10,16 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.AtomicReservableReference; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.IndexJungleTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; +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.GetOldTreeError; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; public class NetworkDefaultJungleTree implements JungleTree { private final AtomicReservableReference repository; @@ -57,24 +63,70 @@ return cs.getRoot(); } - @Override - public InterfaceTraverser getTraverser() { - TreeContext tc = repository.get(); - ChangeSet cs = tc.getChangeSet(); - return new InterfaceTraverser(getRootNode(), cs.getIndex(), getTreeEditor()); - } + @Override + public long revision() { + TreeContext tc = repository.get(); + ChangeSet cs = tc.getChangeSet(); + return cs.revision(); + } + + @Override + public Either getOldTree(long revision) { + TreeContext tc = repository.get(); + ChangeSet cs = tc.getChangeSet(); + + for (; cs.revision() != revision;) { + cs = cs.prev(); + if (cs == null) + return DefaultEither.newA(GetOldTreeError.OLD_TREE_NOT_FOUND); + } + + TreeNode root = cs.getRoot(); + + TreeContext oldTc = new DefaultTreeContext(root, cs); + String oldTreeUuid = uuid + revision; + JungleTree oldTree = new DefaultJungleTree(oldTc, oldTreeUuid, writer, editor); + return DefaultEither.newB(oldTree); + } - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } + @Override + public ParentIndex getParentIndex() { + TreeContext tc = repository.get(); + ChangeSet cs = tc.getChangeSet(); + return cs.getParentIndex(); + } + + @Override + public Index getIndex() { + TreeContext tc = repository.get(); + ChangeSet cs = tc.getChangeSet(); + return cs.getIndex(); + } + - @Override - public IndexJungleTreeEditor getIndexTreeEditor() { - // TODO Auto-generated method stub - return null; - } + @Override + public InterfaceTraverser getTraverser(boolean useIndex) { + AtomicReservableReference.Reservation reservation = repository.getReservation(); + IndexManager indexManager = new IndexManager(reservation); + Index index = getIndex(); + ParentIndex parentIndex = getParentIndex(); + return new InterfaceTraverser(getRootNode(), index, parentIndex, indexManager, useIndex); + } + + + @Override + public Either getNodeOfPath(NodePath path) { + TreeNode node = repository.get().getTreeNode(); + for (int num : path) { + if (num == -1) + continue; + Either either = node.getChildren().at(num); + if (either.isA()) + return either; + node = either.b(); + } + return DefaultEither.newB(node); + } } diff -r 269bada9eedc -r 5d0734fd859d src/main/java/alice/jungle/transaction/NetworkDefaultJungleTreeEditor.java --- a/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTreeEditor.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/alice/jungle/transaction/NetworkDefaultJungleTreeEditor.java Thu Jan 15 09:23:23 2015 +0900 @@ -133,7 +133,7 @@ @Override public Either success() { - Either either = txManager.commit(root,log,null); + Either either = txManager.commit(root,log); if(either.isA()){ return DefaultEither.newA(either.a()); } @@ -151,24 +151,16 @@ return DefaultEither.newB(newTreeEditor); } - @Override - public String getID() + private String getID() { return txManager.getUUID(); } - @Override - public String getRevision() + private String getRevision() { return Long.toString(txManager.getRevision()); } - @Override - public TreeNode getRoot() - { - return root; - } - public String getTreeName() { return treeName; } diff -r 269bada9eedc -r 5d0734fd859d src/main/java/alice/jungle/transaction/NetworkTransactionManager.java --- a/src/main/java/alice/jungle/transaction/NetworkTransactionManager.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/alice/jungle/transaction/NetworkTransactionManager.java Thu Jan 15 09:23:23 2015 +0900 @@ -2,13 +2,10 @@ import java.util.Iterator; -import fj.data.List; -import fj.data.TreeMap; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; 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; @@ -18,80 +15,87 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeContext; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TransactionManager; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.InterfaceTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; 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; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.Index; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.IndexManager; +import jp.ac.u_ryukyu.ie.cr.tatsuki.jungle.store.index.ParentIndex; + +public class NetworkTransactionManager implements TransactionManager { + + private final AtomicReservableReference repository; + private final TreeContext tip; + private final ChangeListWriter writer; + private final String uuid; + private final String treeName; -public class NetworkTransactionManager implements TransactionManager -{ + public NetworkTransactionManager(String _treeName, ChangeListWriter _writer, TreeContext _tip, + AtomicReservableReference _repository, String _uuid) { + repository = _repository; + tip = _tip; + writer = _writer; + uuid = _uuid; + treeName = _treeName; + } + + @Override + public Either commit(TreeNode _newRoot, final TreeOperationLog _log) { + ChangeSet cs = tip.getChangeSet(); + long currentRevision = cs.revision(); + long nextRevision = currentRevision + 1; + + ChangeList list = new ChangeList() { + @Override + public Iterator iterator() { + return _log.iterator(); + } + + @Override + public String uuid() { + return uuid; + } - private final AtomicReservableReference repository; - private final TreeContext tip; - private final ChangeListWriter writer; - private final String uuid; - private final String treeName; - - public NetworkTransactionManager(String _treeName, ChangeListWriter _writer,TreeContext _tip, - AtomicReservableReference _repository,String _uuid) - { - repository = _repository; - tip = _tip; - writer = _writer; - uuid = _uuid; - treeName = _treeName; - } - - @Override - public Either commit(TreeNode _newRoot,final TreeOperationLog _log,TreeMap>>> index) { - ChangeSet cs = tip.getChangeSet(); - long currentRevision = cs.revision(); - long nextRevision = currentRevision + 1; - - ChangeList list = new ChangeList() { - @Override - public Iterator iterator(){ - return _log.iterator(); - } - @Override - public String uuid() { - return uuid; - } - @Override - public String getTreeName() { - return treeName; - } - }; - - TreeNode root = _newRoot; - DefaultChangeSet newCs = new DefaultChangeSet(root, cs, list, uuid, treeName, nextRevision, null); - DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs); - - @SuppressWarnings("rawtypes") - Reservation reservation = repository.makeReservation(tip, newContext); - if(reservation == null) { - return DefaultEither.newA((Error)new DefaultError()); - } - Result r = writer.write(list); - if(r != Result.SUCCESS) { - return DefaultEither.newA((Error)new DefaultError()); - } - reservation.confirm(); - TransactionManager txManager = new NetworkTransactionManager(treeName, writer, newContext, repository, uuid); - return DefaultEither.newB(txManager); - } + @Override + public String getTreeName() { + return treeName; + } + }; + + IndexManager indexManager = new IndexManager(repository.getReservation()); + InterfaceTraverser traverser = new InterfaceTraverser(_newRoot, indexManager, true); + traverser.createIndex(); + Index index = traverser.getIndex(); + ParentIndex parentIndex = traverser.getParentIndex(); + DefaultChangeSet newCs = new DefaultChangeSet(_newRoot, cs, list, uuid, treeName, nextRevision, index.getIndex(), parentIndex.getParentIndex()); + + DefaultTreeContext newContext = new DefaultTreeContext(_newRoot, newCs); - @Override - public long getRevision() - { - ChangeSet cs = tip.getChangeSet(); - return cs.revision(); - } + @SuppressWarnings("rawtypes") + Reservation reservation = repository.makeReservation(tip, newContext); + if (reservation == null) { + return DefaultEither.newA((Error) new DefaultError()); + } + Result r = writer.write(list); + if (r != Result.SUCCESS) { + return DefaultEither.newA((Error) new DefaultError()); + } + reservation.confirm(); + TransactionManager txManager = new NetworkTransactionManager(treeName, writer, newContext, repository, uuid); + return DefaultEither.newB(txManager); + } - @Override - public String getUUID() { - return uuid; - } + @Override + public long getRevision() { + ChangeSet cs = tip.getChangeSet(); + return cs.revision(); + } + + @Override + public String getUUID() { + return uuid; + } } diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/DistributeApp.java --- a/src/main/java/app/bbs/DistributeApp.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/app/bbs/DistributeApp.java Thu Jan 15 09:23:23 2015 +0900 @@ -1,5 +1,6 @@ package app.bbs; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.TreeMapOrd; import alice.jungle.remote.RemoteConfig; import alice.topology.node.TopologyNode; import app.bbs.codesegment.StartBBSCodeSegment; @@ -8,6 +9,7 @@ public static void main(String[] args) throws Exception { RemoteConfig conf = new RemoteConfig(args); if (conf.getManagerHostName() == null) { + System.out.println(System.getProperty("java.version")); // String localHostName ="localhost"; // HostMessage host = new HostMessage(localHostName, conf.localPort); StartBBSCodeSegment cs1 = new StartBBSCodeSegment(args, conf.bbsPort); diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/NetworkBulletinBoard.java --- a/src/main/java/app/bbs/NetworkBulletinBoard.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/app/bbs/NetworkBulletinBoard.java Thu Jan 15 09:23:23 2015 +0900 @@ -1,7 +1,6 @@ package app.bbs; -import app.bbs.thinks.getAttributeImp; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard; @@ -13,11 +12,8 @@ public Iterable getFolder(String _boardName, String nodeNum); public void createFolder(String boardName, String author, String msg,String key, String _nodeNum); public void createAttribute(String boardName, String uuid, String author, String msg, String key); - public getAttributeImp getAttribute(String _bname, String nodeNum); public void editAttribute(String boardName, String path, String id, String message); public void deleteAttribute(String _board, String _path , String id); public void deleteNode(String _board, String _path, String id); - public void editMatrixMessage(String boardName, String path, String author, - String msg, String key); - public String searchJungle(String requestName, String permmitName); + } diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/NetworkJungleBulletinBoard.java --- a/src/main/java/app/bbs/NetworkJungleBulletinBoard.java Fri Oct 17 15:16:56 2014 +0900 +++ b/src/main/java/app/bbs/NetworkJungleBulletinBoard.java Thu Jan 15 09:23:23 2015 +0900 @@ -3,17 +3,12 @@ import java.io.File; import java.io.IOException; import java.nio.ByteBuffer; -import java.util.Iterator; import java.util.concurrent.atomic.AtomicInteger; - -import fj.data.List; -import fj.data.TreeMap; import alice.jungle.core.NetworkDefaultJungle; import alice.jungle.persistent.AliceJournal; import alice.jungle.persistent.NetworkJournal; import alice.jungle.persistent.PersistentJournal; import alice.jungle.transaction.JungleUpdater; -import app.bbs.thinks.getAttributeImp; 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; @@ -21,25 +16,20 @@ 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; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog; 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; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator; 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.traverser.Traversal; 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.IterableConverter; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode; import junit.framework.Assert; public class NetworkJungleBulletinBoard implements NetworkBulletinBoard { @@ -207,12 +197,6 @@ public LoggingNode wrap(TreeNode node, OperationLog op) { return new LoggingNode(node, op); } - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - }; either = editor.edit(root.add(0), e); @@ -280,12 +264,6 @@ return new LoggingNode(node, op); } - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - }; path = path.add(size); either = editor.edit(path, e); @@ -336,13 +314,6 @@ public LoggingNode wrap(TreeNode node, OperationLog op) { return new LoggingNode(node, op); } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - }; path = path.add(size); either = editor.edit(path, e); @@ -389,13 +360,6 @@ public LoggingNode wrap(TreeNode node, OperationLog op) { return new LoggingNode(node, op); } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - }; either = editor.edit(path, e); if (either.isA()) { @@ -445,13 +409,6 @@ public LoggingNode wrap(TreeNode node, OperationLog op) { return new LoggingNode(node, op); } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - }; either = editor.edit(path, e); if (either.isA()) { @@ -494,13 +451,6 @@ public LoggingNode wrap(TreeNode node, OperationLog op) { return new LoggingNode(node, op); } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - }; either = editor.edit(path, e); if (either.isA()) { @@ -584,13 +534,6 @@ public LoggingNode wrap(TreeNode node, OperationLog op) { return new LoggingNode(node, op); } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - }; either = editor.edit(path, e); if (either.isA()) { @@ -628,12 +571,6 @@ public LoggingNode wrap(TreeNode node, OperationLog op) { return new LoggingNode(node, op); } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } }; either = editor.edit(path, e); if (either.isA()) { @@ -704,36 +641,6 @@ return new IterableConverter(chs, converter); } - public getAttributeImp getAttribute(String _boardName, String _nodeNum) { - - DefaultNodePath path = new DefaultNodePath(); - try { - for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { - if (!_nodeNum.substring(count, count + 1).equals("/")) - path = path.add(Integer.parseInt(_nodeNum.substring(count, - count + 1))); - } - } catch (Exception _e) { - } - requestCounter.incrementAndGet(); - JungleTree tree = jungle.getTreeByName(_boardName); - TreeNode node = tree.getRootNode(); - - DefaultTraverser traverser = new DefaultTraverser(); - // TraversableNodeWrapper traversable = new - // TraversableNodeWrapper(node); - DefaultEvaluator evaluator = new DefaultEvaluator(path); - Either ret = traverser.traverse(node, - evaluator); - if (ret.isA()) { - Assert.fail(); - } - - Traversal traversal = ret.b(); - TreeNode target = traversal.destination(); - return new getAttributeImp(target); - } - public boolean compare(TreeNode compareNode, String compareAttribute) { @@ -791,11 +698,4 @@ str = str.replaceAll("'", "'"); return str; } - - @Override - public String searchJungle(String requestName, String permmitName) { - // TODO Auto-generated method stub - return null; - } - } diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/codesegment/StartmaTrixBBSCodeSegment.java --- a/src/main/java/app/bbs/codesegment/StartmaTrixBBSCodeSegment.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,145 +0,0 @@ -package app.bbs.codesegment; - -import java.util.regex.Pattern; -import java.util.regex.Matcher; - -import javax.servlet.Servlet; - -import org.eclipse.jetty.server.Server; -import org.eclipse.jetty.servlet.ServletHandler; -import org.eclipse.jetty.servlet.ServletHolder; -import org.eclipse.jetty.util.thread.ThreadPool; - -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.CreateBoardMessageServlet; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.CreateBoardServlet; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.EditMessageServlet; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.EditMessageUseGetServlet; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.ShowBoardsServlet; - - - -import alice.codesegment.CodeSegment; -import alice.datasegment.CommandType; -import alice.datasegment.Receiver; -import app.bbs.NetworkBulletinBoard; -import app.bbs.NetworkJungleBulletinBoard; -import app.bbs.RequestNumCheckServlet; -import app.bbs.ShowMessageWithTimeStampServlet; -import app.bbs.thinks.CreateNode; -import app.bbs.thinks.EditAttributeServlet; -import app.bbs.thinks.EditNodeName; -import app.bbs.thinks.NetworkMatrixJungleBulletinBoard; -import app.bbs.thinks.ShowBoardsServletMatrix; -import app.bbs.thinks.ShowMatrix; -import app.bbs.thinks.ShowMessageWithTimeStampServletMatrix; -import app.bbs.thinks.createAttributeMatrix; -import app.bbs.thinks.deleteAttributeServlet; -import app.bbs.thinks.deleteNodeServlet; -import app.bbs.thinks.permission; - -public class StartmaTrixBBSCodeSegment extends CodeSegment { - - int bbsPort = 8080; - Receiver host = ids.create(CommandType.PEEK); - private Pattern pattern = Pattern.compile("^(node|cli)([0-9]+)$"); - private String[] args; - boolean persistentFlag = false; - - public StartmaTrixBBSCodeSegment(String[] _args, int p) { - args = _args; - bbsPort = p; - host.setKey("host"); - } - - public StartmaTrixBBSCodeSegment() { - args = null; - host.setKey("host"); - } - - @Override - public void run() { - String name = host.asString(); - Matcher matcher = pattern.matcher(name); - matcher.find(); - // String type = matcher.group(1); - for(String arg: args) { - if(arg.equals("-persistent")){ - persistentFlag = true; - } - } - NetworkBulletinBoard cassaBBS = null; - if(persistentFlag) { - System.out.println("log loading..."); - cassaBBS = NetworkMatrixJungleBulletinBoard.NewPersistentJungle(name); - cassaBBS.init(); - } else { - cassaBBS = new NetworkJungleBulletinBoard(name); - cassaBBS.init(); - } - - System.out.println("StartBBSCodeSegment"); - System.out.println("name : "+ name); - /* Jetty registration */ - String createBoardMessagePath = "/createBoardMessage"; - String createFolderPath = "/createFolder"; - String createBoardPath = "/createBoard"; - String editMessagePath = "/editMessage"; - String showBoardMessagePath = "/showBoardMessage"; - String showMatrixPath = "/showMatrix"; - String createAttributePath = "/createAttribute"; - String editAttributePath = "/editAttribute"; - String deleteAttributePath = "/deleteAttribute"; - String deleteNodePath = "/deleteNode"; - String editNodePath = "/editNode"; - String permissionPath = "/permission"; - Server serv = new Server(bbsPort); - ThreadPool thp = serv.getThreadPool(); - Servlet createBoardMessage = new CreateBoardMessageServlet(cassaBBS); - Servlet createFolder = new CreateNode(cassaBBS); - Servlet createBoard = new CreateBoardServlet(cassaBBS); - Servlet editNode = new EditNodeName(cassaBBS); - Servlet createAttribute = new createAttributeMatrix(cassaBBS); - Servlet editAttribute = new EditAttributeServlet(cassaBBS); - Servlet deleteAttribute = new deleteAttributeServlet(cassaBBS); - Servlet deleteNode = new deleteNodeServlet(cassaBBS); - Servlet editBoardMessage = new EditMessageServlet(cassaBBS); - Servlet index = new ShowBoardsServletMatrix(cassaBBS,createBoardPath,showMatrixPath); - // Servlet board = new ShowBoardMessageServlet(cassaBBS,createBoardMessagePath,editMessagePath); - Servlet board = new ShowMessageWithTimeStampServletMatrix(cassaBBS,createBoardMessagePath,editMessagePath,showMatrixPath, thp); - Servlet matrix = new ShowMatrix(cassaBBS,createFolderPath,editNodePath, showMatrixPath, createAttributePath, editAttributePath,deleteAttributePath,deleteNodePath,thp); - Servlet per = new permission(cassaBBS,permissionPath,thp); - ServletHandler context = new ServletHandler(); - context.addServletWithMapping(new ServletHolder(editBoardMessage),editMessagePath); - - context.addServletWithMapping(new ServletHolder(createBoardMessage),createBoardMessagePath); - context.addServletWithMapping(new ServletHolder(createFolder),createFolderPath); - context.addServletWithMapping(new ServletHolder(createBoard),createBoardPath); - context.addServletWithMapping(new ServletHolder(editNode),editNodePath); - context.addServletWithMapping(new ServletHolder(createAttribute),createAttributePath); - context.addServletWithMapping(new ServletHolder(index),"/"); - context.addServletWithMapping(new ServletHolder(deleteAttribute),deleteAttributePath); - context.addServletWithMapping(new ServletHolder(deleteNode),deleteNodePath); - context.addServletWithMapping(new ServletHolder(editAttribute),editAttributePath); - context.addServletWithMapping(new ServletHolder(board),showBoardMessagePath); - context.addServletWithMapping(new ServletHolder(matrix),showMatrixPath); - context.addServletWithMapping(new ServletHolder(per),permissionPath); - /* - * For write benchmark - */ - String editMessageUseGetPath = "/editMessageUseGet"; - Servlet editMessageUseGet = new EditMessageUseGetServlet(cassaBBS); - context.addServletWithMapping(new ServletHolder(editMessageUseGet), editMessageUseGetPath); - String requestNumCheckPath = "/requestNum"; - Servlet requestNumCheckServlet = new RequestNumCheckServlet(cassaBBS); - context.addServletWithMapping(new ServletHolder(requestNumCheckServlet), requestNumCheckPath); - - serv.setHandler(context); - try { - serv.start(); - } catch (Exception e) { - e.printStackTrace(); - } - new LogUpdateCodeSegment(); - } - -} diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/CreateNode.java --- a/src/main/java/app/bbs/thinks/CreateNode.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -package app.bbs.thinks; - -import java.io.PrintWriter; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - - -import app.bbs.NetworkBulletinBoard; - -public class CreateNode extends HttpServlet { - private final NetworkBulletinBoard bbs; - private static final String PARAM_BOARD_NAME = "bname"; - private static final String PARAM_BOARD_AUTHOR = "author"; - private static final String PARAM_NODE_NAME = "name"; - private static final String PARAM_BOARD_EDITKEY = "key"; - private static final String PARAM_BOARD_PATH = "path"; - private static final long serialVersionUID = 1L; - - public CreateNode(NetworkBulletinBoard _bbs) { - bbs = _bbs; - } - - public void doPost(HttpServletRequest _req, HttpServletResponse _res) { - String boardName = (_req.getParameter(PARAM_BOARD_NAME)); - String author = (_req.getParameter(PARAM_BOARD_AUTHOR));//not use - String nodeName = (_req.getParameter(PARAM_NODE_NAME)); - String key = (_req.getParameter(PARAM_BOARD_EDITKEY));//not use - String nodeNum = (_req.getParameter(PARAM_BOARD_PATH)); - - try { - bbs.createFolder(boardName, author, nodeName, key, nodeNum); - PrintWriter pw = _res.getWriter(); - pw.write("successfully written"); - } catch (Exception _e) { - _res.setStatus(500); - } - } -} diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/EditAttributeServlet.java --- a/src/main/java/app/bbs/thinks/EditAttributeServlet.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -package app.bbs.thinks; - -import java.io.PrintWriter; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - - -import app.bbs.NetworkBulletinBoard; - -public class EditAttributeServlet extends HttpServlet -{ - private final NetworkBulletinBoard bbs; - private static final String PARAM_BOARD_NAME = "bname"; - private static final String PARAM_NODE_PATH = "path"; - private static final String PARAM_BOARD_MESSAGE= "msg"; - //private static final String PARAM_BOARD_EDITKEY = "key"; - private static final String PARAM_NODE_ID = "id"; - private static final long serialVersionUID = 1L; - - public EditAttributeServlet(NetworkBulletinBoard _bbs) - { - bbs = _bbs; - } - - public void doGet(HttpServletRequest _req,HttpServletResponse _res) - { - String bname = (_req.getParameter(PARAM_BOARD_NAME)); - String path = (_req.getParameter(PARAM_NODE_PATH)); - String id = (_req.getParameter(PARAM_NODE_ID)); - - - try{ - _res.setCharacterEncoding("UTF-8"); - PrintWriter pw = _res.getWriter(); - pw.write("

edit message

"); - pw.write("
" + - "" + - "\n"); - pw.write("

Message

\n"); - pw.write("

\n"); - pw.write(""); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } - - public void doPost(HttpServletRequest _req,HttpServletResponse _res) - { - String boardName = (_req.getParameter(PARAM_BOARD_NAME)); - String msg = (_req.getParameter(PARAM_BOARD_MESSAGE)); - String path = (_req.getParameter(PARAM_NODE_PATH)); - String id = (_req.getParameter(PARAM_NODE_ID)); - - try{ - bbs.editAttribute(boardName, path,id, msg); - PrintWriter pw = _res.getWriter(); - pw.write("successfully written"); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } -} diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/EditNodeName.java --- a/src/main/java/app/bbs/thinks/EditNodeName.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -package app.bbs.thinks; - -import java.io.PrintWriter; - -import javax.servlet.http.HttpServlet; -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; - -public class EditNodeName extends HttpServlet -{ - private final NetworkBulletinBoard bbs; - private static final String PARAM_BOARD_NAME = "bname"; - private static final String PARAM_NODE_PATH = "path"; - private static final String PARAM_BOARD_AUTHOR = "author"; - private static final String PARAM_BOARD_MESSAGE= "msg"; - private static final String PARAM_BOARD_EDITKEY = "key"; - - private static final long serialVersionUID = 1L; - - public EditNodeName(NetworkBulletinBoard _bbs) - { - bbs = _bbs; - } - - public void doGet(HttpServletRequest _req,HttpServletResponse _res) - { - String bname = (_req.getParameter(PARAM_BOARD_NAME)); - String path = (_req.getParameter(PARAM_NODE_PATH)); - - - try{ - _res.setCharacterEncoding("UTF-8"); - PrintWriter pw = _res.getWriter(); - pw.write("

edit message

"); - pw.write("" + - "" + - "\n"); - pw.write("

Message

\n"); - pw.write("

\n"); - pw.write(""); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } - - public void doPost(HttpServletRequest _req,HttpServletResponse _res) - { - String boardName = (_req.getParameter(PARAM_BOARD_NAME)); - String author = (_req.getParameter(PARAM_BOARD_AUTHOR)); - String msg = (_req.getParameter(PARAM_BOARD_MESSAGE)); - String key = (_req.getParameter(PARAM_BOARD_EDITKEY)); - String path = (_req.getParameter(PARAM_NODE_PATH)); - - try{ - bbs.editMessage(boardName, path, author, msg, key); - PrintWriter pw = _res.getWriter(); - pw.write("successfully written"); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } -} diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/MatrixApp.java --- a/src/main/java/app/bbs/thinks/MatrixApp.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,20 +0,0 @@ -package app.bbs.thinks; - -import alice.jungle.remote.RemoteConfig; -import alice.topology.node.TopologyNode; -import app.bbs.codesegment.StartBBSCodeSegment; -import app.bbs.codesegment.StartmaTrixBBSCodeSegment; - -public class MatrixApp { - public static void main(String[] args) throws Exception { - RemoteConfig conf = new RemoteConfig(args); - if (conf.getManagerHostName() == null) { - // String localHostName ="localhost"; - // HostMessage host = new HostMessage(localHostName, conf.localPort); - StartmaTrixBBSCodeSegment cs1 = new StartmaTrixBBSCodeSegment(args, conf.bbsPort); - cs1.ods.put("host", "node0"); - } else { - new TopologyNode(conf, new StartBBSCodeSegment(args, conf.bbsPort)); - } - } -} diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/NetworkMatrixJungleBulletinBoard.java --- a/src/main/java/app/bbs/thinks/NetworkMatrixJungleBulletinBoard.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,848 +0,0 @@ -package app.bbs.thinks; - -import java.io.File; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.Iterator; -import java.util.concurrent.atomic.AtomicInteger; - -import fj.data.List; -import fj.data.TreeMap; -import alice.jungle.core.NetworkDefaultJungle; -import alice.jungle.persistent.AliceJournal; -import alice.jungle.persistent.NetworkJournal; -import alice.jungle.persistent.PersistentJournal; -import alice.jungle.transaction.JungleUpdater; -import app.bbs.BulletinBoardJungleManager; -import app.bbs.NetworkBulletinBoard; -import app.bbs.thinks.getAttributeImp; -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.bbs.BoardMessage; -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; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog; -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; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator; -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.traverser.Traversal; -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.IterableConverter; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNode; -import junit.framework.Assert; - -public class NetworkMatrixJungleBulletinBoard implements NetworkBulletinBoard { - private final Jungle jungle; - private final NetworkJournal journal; - private final String LOG_DIR; - private Boolean persistentFlag; - private AtomicInteger requestCounter; - private long renewTime; - - private NetworkMatrixJungleBulletinBoard(String _uuid, NetworkJournal _journal) { - journal = _journal; - jungle = new NetworkDefaultJungle(journal, _uuid, - new DefaultTreeEditor(new DefaultTraverser())); - BulletinBoardJungleManager.setJungle(jungle); - persistentFlag = false; - requestCounter = BulletinBoardJungleManager.getRequestCounter(); - LOG_DIR = "./log"; - renewTime = 0; - } - - public NetworkMatrixJungleBulletinBoard(String _uuid) { - this(_uuid, new AliceJournal()); - jungle.createNewTree("boards"); - } - - public static NetworkBulletinBoard NewPersistentJungle(String _uuid) { - NetworkMatrixJungleBulletinBoard board = new NetworkMatrixJungleBulletinBoard( - _uuid, new PersistentJournal()); - board.persistentFlag = true; - return board; - } - - public void init() { - if (!persistentFlag) { - return; - } - checkAndCreateLogDirectory(); - try { - commitLogRecover(); - } catch (IOException e) { - e.printStackTrace(); - } - } - - public void checkAndCreateLogDirectory() { - File logFile = new File(LOG_DIR); - if (!logFile.exists()) { - logFile.mkdir(); - return; - } - if (logFile.isFile()) { - logFile.delete(); - logFile.mkdir(); - } - } - - public void commitLogRecover() throws IOException { - File[] logFiles = new File(LOG_DIR).listFiles(); - for (File logFile : logFiles) { - commitLogRecover(logFile); - logFile.delete(); - } - if (jungle.getTreeByName("boards") == null) { - jungle.createNewTree("boards"); - } - } - - private void commitLogRecover(File logFile) throws IOException { - journal.setInputFile(logFile); - ChangeListReader reader = journal.getReader(); - if (reader == null) - return; - for (ChangeList chList : reader) { - String treeName = chList.getTreeName(); - JungleTree tree = jungle.getTreeByName(treeName); - if (tree == null) { - tree = jungle.createNewTree(treeName); - } - JungleTreeEditor editor = tree.getLocalTreeEditor(); - Either either = JungleUpdater.edit(editor, - chList); - editor = either.b(); - if (either.isA()) { - throw new IOException("Failed commit log recovery"); - } - editor.success(); - } - } - - public Iterable getBoards() { - JungleTree tree = jungle.getTreeByName("boards"); - TreeNode node = tree.getRootNode(); - Children chs = node.getChildren(); - - IterableConverter.Converter converter = new IterableConverter.Converter() { - public String conv(TreeNode _b) { - ByteBuffer e = _b.getAttributes().get("name"); - System.out.println(new String(e.array())); - return new String(e.array()); - } - }; - - return new IterableConverter(chs, converter); - } - - public long getRenewTime(String _boardName) { - return renewTime; - } - - public void createBoards(final String _name, final String _author, final String _initMessage, final String _editKey) { - requestCounter.incrementAndGet(); - if (null == jungle.createNewTree(_name)) { - throw new IllegalStateException(); - } - - JungleTree tree = jungle.getTreeByName("boards"); - JungleTreeEditor editor = tree.getTreeEditor(); - DefaultNodePath root = new DefaultNodePath(); - Either either = editor.addNewChildAt(root, 0); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - - either = editor.putAttribute(root.add(0), "name", - ByteBuffer.wrap(_name.getBytes())); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - final long timestamp = System.currentTimeMillis(); - ByteBuffer tBuffer = ByteBuffer.allocate(16); - tBuffer.putLong(timestamp); - either = editor.putAttribute(root.add(0), "timestamp", tBuffer); - if (either.isA()) { - throw new IllegalStateException(); - } - either = either.b().success(); - if (either.isA()) { - throw new IllegalStateException(); - } - - tree = jungle.getTreeByName(_name); - editor = tree.getTreeEditor(); - either = editor.addNewChildAt(root, 0); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - - NodeEditor e = new NodeEditor() { - ByteBuffer tBuffer2 = ByteBuffer.allocate(16); - - public Either edit(TreeNode node) { - LoggingNode logNode = wrap(node , new DefaultOperationLog()); - logNode = logNode.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b(); - logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_initMessage.getBytes())).b(); - logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); - tBuffer2.putLong(timestamp); - logNode = logNode.getAttributes().put("timestamp", tBuffer2).b(); - return DefaultEither.newB(logNode); - } - @Override - public LoggingNode wrap(TreeNode node, OperationLog op) { - return new LoggingNode(node, op); - } - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - - }; - - either = editor.edit(root.add(0), e); - if (either.isA()) { - throw new IllegalStateException(); - } - either.b().success(); - - } - - public void createFolder(final String _board, final String _author, final String _message, final String _editKey, String _nodeNum) { - JungleTree tree = jungle.getTreeByName(_board); - if (tree == null) { - throw new IllegalStateException(); - } - - DefaultNodePath path = new DefaultNodePath(); - try { - for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { - if (!_nodeNum.substring(count, count + 1).equals("/")) - path = path.add(Integer.parseInt(_nodeNum.substring(count, - count + 1))); - } - } catch (Exception _e) { - } - requestCounter.incrementAndGet(); - Either either; - final long timestamp = System.currentTimeMillis(); - final ByteBuffer tBuffer = ByteBuffer.allocate(16); - tBuffer.putLong(timestamp); - - do { - TreeNode node = tree.getRootNode(); - DefaultTraverser traverser = new DefaultTraverser(); - // TraversableNodeWrapper traversable = new - // TraversableNodeWrapper(node); - DefaultEvaluator evaluator = new DefaultEvaluator(path); - Either ret = traverser.traverse(node, - evaluator); - if (ret.isA()) { - Assert.fail(); - } - - Traversal traversal = ret.b(); - TreeNode target = traversal.destination(); - int size = target.getChildren().size(); - JungleTreeEditor editor = tree.getTreeEditor(); - either = editor.addNewChildAt(path, size); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - - NodeEditor e = new NodeEditor() { - - public Either edit(TreeNode node) { - LoggingNode logNode = wrap(node , new DefaultOperationLog()); - logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b(); - logNode = logNode.getAttributes().put("timestamp", tBuffer).b(); - return DefaultEither.newB(logNode); - } - - @Override - public LoggingNode wrap(TreeNode node, OperationLog op) { - return new LoggingNode(node, op); - } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - - }; - path = path.add(size); - either = editor.edit(path, e); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - either = editor.success(); - } while (either.isA()); - - } - - public void createBoardMessage(final String _board, final String _author, final String _message, final String _editKey) { - requestCounter.incrementAndGet(); - JungleTree tree = jungle.getTreeByName(_board); - if (tree == null) { - throw new IllegalStateException(); - } - - Either either; - final long timestamp = System.currentTimeMillis(); - final ByteBuffer tBuffer = ByteBuffer.allocate(16); - tBuffer.putLong(timestamp); - do { - - TreeNode node = tree.getRootNode(); - int size = node.getChildren().size(); - DefaultNodePath path = new DefaultNodePath(); - - JungleTreeEditor editor = tree.getTreeEditor(); - either = editor.addNewChildAt(path, size); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - - NodeEditor e = new NodeEditor() { - public Either edit(TreeNode node) { - LoggingNode logNode = wrap(node , new DefaultOperationLog()); - logNode = logNode.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b(); - logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b(); - logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); - logNode = logNode.getAttributes().put("timestamp", tBuffer).b(); - return DefaultEither.newB(logNode); - } - - @Override - public LoggingNode wrap(TreeNode node, OperationLog op) { - return new LoggingNode(node, op); - } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - - }; - path = path.add(size); - either = editor.edit(path, e); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - either = editor.success(); - } while (either.isA()); - - } - - public void editMessage(String _board, String _nodeNum,final String _author, final String _message, final String _editKey) { - requestCounter.incrementAndGet(); - final long timestamp = System.currentTimeMillis(); - final ByteBuffer tBuffer = ByteBuffer.allocate(16); - tBuffer.putLong(timestamp); - JungleTree tree = jungle.getTreeByName(_board); - Either either = null; - - do { - DefaultNodePath path = new DefaultNodePath(); - try { - for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { - if (!_nodeNum.substring(count, count + 1).equals("/")) - path = path.add(Integer.parseInt(_nodeNum.substring(count, count + 1))); - } - } catch (Exception _e) { - } - JungleTreeEditor editor = tree.getTreeEditor(); - NodeEditor e = new NodeEditor() { - public Either edit(TreeNode node) { - LoggingNode logNode = wrap(node , new DefaultOperationLog()); - System.out.println(new String(node.getAttributes().get("mes").array())); - logNode = logNode.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b(); - logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b(); - logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); - logNode = logNode.getAttributes().put("timestamp", tBuffer).b(); - System.out.println(new String(node.getAttributes().get("mes").array())); - return DefaultEither.newB(logNode); - } - - @Override - public LoggingNode wrap(TreeNode node, OperationLog op) { - return new LoggingNode(node, op); - } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - - }; - either = editor.edit(path, e); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - either = editor.success(); - } while (either.isA()); - renewTime = timestamp; - } - - public void createAttribute(String _board, String _uuid, final String _author, final String _message, final String _editKey) { - requestCounter.incrementAndGet(); - final long timestamp = System.currentTimeMillis(); - final ByteBuffer tBuffer = ByteBuffer.allocate(16); - tBuffer.putLong(timestamp); - JungleTree tree = jungle.getTreeByName(_board); - Either either = null; - DefaultNodePath path = new DefaultNodePath(); - do { - try { - for (int count = 0; _uuid.substring(count, count + 1) != null; count++) { - if (!_uuid.substring(count, count + 1).equals("/")) - path = path.add(Integer.parseInt(_uuid.substring(count, - count + 1))); - } - } catch (Exception _e) { - } - - JungleTreeEditor editor = tree.getTreeEditor(); - NodeEditor e = new NodeEditor() { - String str; - - public Either edit(TreeNode node) { - LoggingNode logNode = wrap(node , new DefaultOperationLog()); - str = "0"; - int count = 0; - for (; logNode.getAttributes().get("mes" + String.valueOf(count)) != null; count++) { - } - str = String.valueOf(count); - logNode = logNode.getAttributes().put("mes" + str,ByteBuffer.wrap(_message.getBytes())).b(); - logNode = logNode.getAttributes().put("timestamp" + str, tBuffer).b(); - return DefaultEither.newB(logNode); - } - - @Override - public LoggingNode wrap(TreeNode node, OperationLog op) { - return new LoggingNode(node, op); - } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - - }; - either = editor.edit(path, e); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - either = editor.success(); - } while (either.isA()); - } - - public void editAttribute(String boardName, String _path, final String id, final String _message) { - requestCounter.incrementAndGet(); - final long timestamp = System.currentTimeMillis(); - final ByteBuffer tBuffer = ByteBuffer.allocate(16); - tBuffer.putLong(timestamp); - JungleTree tree = jungle.getTreeByName(boardName); - Either either = null; - DefaultNodePath path = new DefaultNodePath(); - do { - try { - for (int count = 0; _path.substring(count, count + 1) != null; count++) { - if (!_path.substring(count, count + 1).equals("/")) - path = path.add(Integer.parseInt(_path.substring(count, - count + 1))); - } - } catch (Exception _e) { - } - - JungleTreeEditor editor = tree.getTreeEditor(); - NodeEditor e = new NodeEditor() { - public Either edit(TreeNode node) { - LoggingNode logNode = wrap(node , new DefaultOperationLog()); - // EnableNodeWrapper node = _e.getWrap(); - logNode = logNode.getAttributes().put("mes" + id,ByteBuffer.wrap(_message.getBytes())).b(); - logNode = logNode.getAttributes().put("timestamp" + id, tBuffer).b(); - return DefaultEither.newB(logNode); - } - - @Override - public LoggingNode wrap(TreeNode node, OperationLog op) { - return new LoggingNode(node, op); - } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - - }; - either = editor.edit(path, e); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - either = editor.success(); - } while (either.isA()); - } - - public void deleteNode(String _board, String _path, String _id) { - requestCounter.incrementAndGet(); - int id = Integer.parseInt(_id); - final long timestamp = System.currentTimeMillis(); - final ByteBuffer tBuffer = ByteBuffer.allocate(16); - tBuffer.putLong(timestamp); - JungleTree tree = jungle.getTreeByName(_board); - Either either = null; - DefaultNodePath path = new DefaultNodePath(); - do { - try { - for (int count = 0; _path.substring(count, count + 1) != null; count++) { - if (!_path.substring(count, count + 1).equals("/")) - path = path.add(Integer.parseInt(_path.substring(count,count + 1))); - } - } catch (Exception _e) { - } - - JungleTreeEditor editor = tree.getTreeEditor(); - - either = editor.deleteChildAt(path, id); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - either = editor.success(); - } while (either.isA()); - - } - - public void deleteAttribute(String _board, String _path, final String id) { - requestCounter.incrementAndGet(); - final long timestamp = System.currentTimeMillis(); - final ByteBuffer tBuffer = ByteBuffer.allocate(16); - tBuffer.putLong(timestamp); - JungleTree tree = jungle.getTreeByName(_board); - Either either = null; - DefaultNodePath path = new DefaultNodePath(); - do { - try { - for (int count = 0; _path.substring(count, count + 1) != null; count++) { - if (!_path.substring(count, count + 1).equals("/")) - path = path.add(Integer.parseInt(_path.substring(count, - count + 1))); - } - } catch (Exception _e) { - System.out.println("屑"); - } - - JungleTreeEditor editor = tree.getTreeEditor(); - NodeEditor e = new NodeEditor() { - public Either edit(TreeNode node) { - LoggingNode logNode = wrap(node , new DefaultOperationLog()); - logNode = logNode.getAttributes().delete("mes" + id).b(); - logNode = logNode.getAttributes().delete("timestamp" + id).b(); - int count = Integer.parseInt(id); - for (; logNode.getAttributes().get("mes" + String.valueOf(count + 1)) != null;) { - logNode = logNode.getAttributes().put("mes" + count,node.getAttributes().get("mes"+ String.valueOf(count + 1))).b(); - logNode = logNode.getAttributes().put("timestamp" + count, tBuffer).b(); - count++; - } - if (count != Integer.parseInt(id)) { - logNode = logNode.getAttributes().delete("timestamp" + count).b(); - logNode = logNode.getAttributes().delete("mes" + count).b(); - } - - return DefaultEither.newB(logNode); - } - - @Override - public LoggingNode wrap(TreeNode node, OperationLog op) { - return new LoggingNode(node, op); - } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - - }; - either = editor.edit(path, e); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - either = editor.success(); - } while (either.isA()); - } - - public void editMatrixMessage(String _board, String _uuid, - final String _author, final String _message, final String _editKey) { - requestCounter.incrementAndGet(); - final long timestamp = System.currentTimeMillis(); - final ByteBuffer tBuffer = ByteBuffer.allocate(16); - tBuffer.putLong(timestamp); - JungleTree tree = jungle.getTreeByName(_board); - Either either = null; - do { - DefaultNodePath path = new DefaultNodePath(); - path = path.add(Integer.parseInt(_uuid)); - - JungleTreeEditor editor = tree.getTreeEditor(); - NodeEditor e = new NodeEditor() { - public Either edit(TreeNode node) { - LoggingNode logNode = wrap(node , new DefaultOperationLog()); - logNode = logNode.getAttributes().put("author", ByteBuffer.wrap(_author.getBytes())).b(); - logNode = logNode.getAttributes().put("mes", ByteBuffer.wrap(_message.getBytes())).b(); - logNode = logNode.getAttributes().put("key", ByteBuffer.wrap(_editKey.getBytes())).b(); - logNode = logNode.getAttributes().put("timestamp", tBuffer).b(); - return DefaultEither.newB(logNode); - } - - @Override - public LoggingNode wrap(TreeNode node, OperationLog op) { - return new LoggingNode(node, op); - } - - @Override - public TreeMap>>> getIndex() { - // TODO Auto-generated method stub - return null; - } - }; - either = editor.edit(path, e); - if (either.isA()) { - throw new IllegalStateException(); - } - editor = either.b(); - either = editor.success(); - } while (either.isA()); - renewTime = timestamp; - } - - public Iterable getMessages(String _boardName) { - requestCounter.incrementAndGet(); - JungleTree tree = jungle.getTreeByName(_boardName); - TreeNode node = tree.getRootNode(); - Children chs = node.getChildren(); - final AtomicInteger counter = new AtomicInteger(0); - IterableConverter.Converter converter = new IterableConverter.Converter() { - public BoardMessage conv(TreeNode _b) { - String uuid = Integer.toString(counter.get()); - String author = new String(_b.getAttributes().get("author").array()); - String message = new String(_b.getAttributes().get("mes").array()); - counter.incrementAndGet(); - return new BoardMessageImpl(author, message, uuid); - } - }; - return new IterableConverter(chs, converter); - } - - public Iterable getFolder(String _boardName, String _nodeNum) { - - DefaultNodePath path = new DefaultNodePath(); - try { - for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { - if (!_nodeNum.substring(count, count + 1).equals("/")) - path = path.add(Integer.parseInt(_nodeNum.substring(count,count + 1))); - } - } catch (Exception _e) { - } - requestCounter.incrementAndGet(); - JungleTree tree = jungle.getTreeByName(_boardName); - TreeNode node = tree.getRootNode(); - - DefaultTraverser traverser = new DefaultTraverser(); - // TraversableNodeWrapper traversable = new - // TraversableNodeWrapper(node); - DefaultEvaluator evaluator = new DefaultEvaluator(path); - Either ret = traverser.traverse(node, - evaluator); - if (ret.isA()) { - Assert.fail(); - } - - Traversal traversal = ret.b(); - TreeNode target = traversal.destination(); - Children chs = target.getChildren(); - - final AtomicInteger counter = new AtomicInteger(0); - IterableConverter.Converter converter = new IterableConverter.Converter() { - public BoardMessage conv(TreeNode _b) { - String uuid = Integer.toString(counter.get()); - String message = new String(_b.getAttributes().get("mes") - .array()); - counter.incrementAndGet(); - return new BoardMessageImpl(null, message, uuid); - } - }; - return new IterableConverter(chs, converter); - } - - public getAttributeImp getAttribute(String _boardName, String _nodeNum) { - - DefaultNodePath path = new DefaultNodePath(); - try { - for (int count = 0; _nodeNum.substring(count, count + 1) != null; count++) { - if (!_nodeNum.substring(count, count + 1).equals("/")) - path = path.add(Integer.parseInt(_nodeNum.substring(count, - count + 1))); - } - } catch (Exception _e) { - } - requestCounter.incrementAndGet(); - JungleTree tree = jungle.getTreeByName(_boardName); - TreeNode node = tree.getRootNode(); - - DefaultTraverser traverser = new DefaultTraverser(); - // TraversableNodeWrapper traversable = new - // TraversableNodeWrapper(node); - DefaultEvaluator evaluator = new DefaultEvaluator(path); - Either ret = traverser.traverse(node, - evaluator); - if (ret.isA()) { - Assert.fail(); - } - - Traversal traversal = ret.b(); - TreeNode target = traversal.destination(); - return new getAttributeImp(target); - } - - public TreeNode search(JungleTree tree ,String searchAttribute,String key){ - // - InterfaceTraverser ifTraverser = tree.getTraverser(); - Iterator> searchNode = ifTraverser.find( - (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; - } - ,key,searchAttribute); - - if (!searchNode.hasNext()) - return null; - return searchNode.next().left(); - - } - - public boolean compare(TreeNode compareNode, String compareAttribute) { - String labName = compareNode.getAttributes().getString("mes"); - if (labName.equals(compareAttribute)) - return true; - - int loopCount = 0; - for (loopCount = 0 ;compareNode.getAttributes().getString("mes" + loopCount) != null; loopCount++ ) { - labName = compareNode.getAttributes().getString("mes" + loopCount); - if (labName.equals(compareAttribute)) - return true; - } - - return false; - } - public String searchJungle(String requestName , String approvalName) { - JungleTree tree = jungle.getTreeByName("人物"); - - - TreeNode searchNode = search(tree , "河野研","mes"); - - if (searchNode == null) - return "申請者がデータに無い人物です"; - - if (!compare(searchNode, "河野研")) - return "河野研以外に所属している人は、この申請をすることが出来ません"; - - - searchNode = search(tree , approvalName,"mes"); - if (searchNode == null) - return "承認者がデータに無い人物です"; - - if (!compare(searchNode, "上位申請権限")) - return "権限がありません(この申請の承認は上位申請者である必要があります"; - - String position = searchNode.getAttributes().getString("mes1"); - - JungleTree grantTree = jungle.getTreeByName("役職"); - searchNode = search(grantTree , position,"mes"); - - if (!compare(searchNode, "准教授権限") || !!compare(searchNode, "教授権限")) - return "権限がありません(この申請の承認は助教授か、教授である必要があります"; - - return "申請が受理されました"; - } - - - public int getRequestNum() { - return requestCounter.get(); - } - - private static class BoardMessageImpl implements BoardMessage { - private final String author; - private final String message; - private final String uuid; - - public BoardMessageImpl(String _author, String _message, String _uuid) { - author = _author; - message = _message; - uuid = _uuid; - } - - public String getAuthor() { - return author; - } - - public String getMessage() { - return message; - } - - public String getUUID() { - return uuid; - } - - } - - public String sanitize(String str) { - if (str == null) { - return str; - } - str = str.replaceAll("&", "&"); - str = str.replaceAll("<", "<"); - str = str.replaceAll(">", ">"); - str = str.replaceAll("\"", """); - str = str.replaceAll("'", "'"); - return str; - } - -} diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/ShowBoardsServletMatrix.java --- a/src/main/java/app/bbs/thinks/ShowBoardsServletMatrix.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -package app.bbs.thinks; - -import java.io.PrintWriter; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BulletinBoard; - -public class ShowBoardsServletMatrix extends HttpServlet -{ - /** - * - */ - private static final long serialVersionUID = 1L; - private final BulletinBoard bbs; - private final String createBoardPath; - private final String showBoardMessagePath; - - public ShowBoardsServletMatrix(BulletinBoard _bbs, String _createBoardPath,String _showBoardMessagePath) - { - bbs = _bbs; - createBoardPath = _createBoardPath; - showBoardMessagePath = _showBoardMessagePath; - } - - public void doGet(HttpServletRequest _req,HttpServletResponse _res) - { - try{ - _res.setCharacterEncoding("UTF-8"); - printBoard(_res.getWriter()); - }catch(Exception _e){ - _res.setStatus(500); - } - - } - - private void printBoard(PrintWriter _pw) throws Exception - { - _pw.write("\n"); - _pw.write("

BBS

\n"); - _pw.write("Create new board.

"); - _pw.write("

BoardName :

\n"); - _pw.write("

Author : EditKey :

\n"); - _pw.write("

Message

\n"); - _pw.write("


\n"); - - _pw.write("

list of boards

"); - for(String board : bbs.getBoards()){ - _pw.write("

"+ bbs.sanitize(board) + "

"); - } - - _pw.write(""); - _pw.flush(); - } -} diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/ShowMatrix.java --- a/src/main/java/app/bbs/thinks/ShowMatrix.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,119 +0,0 @@ -package app.bbs.thinks; - -import java.io.PrintWriter; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.eclipse.jetty.util.thread.ThreadPool; - -import app.bbs.NetworkBulletinBoard; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; - -public class ShowMatrix extends HttpServlet { - /** - * edit Node Path is rename editNodePath - **/ - private static final long serialVersionUID = 1L; - private final NetworkBulletinBoard bbs; - private final String createBoardMessagePath; - private final String editNodePath; - private final String showMatrixPath; - private final String createAttributePath; - private final String editAttributePath; - private final String deleteAttributePath; - private final String deleteNodePath; - private static final String PARAM_BOARD_NAME = "bname"; - private static final String PARAM_NODE_PATH = "uuid"; - private static final String PARAM_NODE_NAME = "nodeName"; - - public ShowMatrix(NetworkBulletinBoard _bbs, - String _createBoardMessagePath, String _editNodePath, - String _showMatrixPath, String _createAttributePath, - String _editAttributePath, String _deleteAttributePath, - String _deleteNodePath, ThreadPool thp) { - bbs = _bbs; - deleteAttributePath = _deleteAttributePath; - deleteNodePath = _deleteNodePath; - createAttributePath = _createAttributePath; - editAttributePath = _editAttributePath; - showMatrixPath = _showMatrixPath; - createBoardMessagePath = _createBoardMessagePath; - editNodePath = _editNodePath; - } - - public void doGet(HttpServletRequest _req, HttpServletResponse _res) { - - final String bname = _req.getParameter(PARAM_BOARD_NAME); - String path = _req.getParameter(PARAM_NODE_PATH); - String nodeName = _req.getParameter(PARAM_NODE_NAME); - try { - _res.setCharacterEncoding("UTF-8"); - printBoard(bname, path, nodeName, _res.getWriter()); - } catch (Exception _e) { - _res.setStatus(500); - } - } - - private void printBoard(String _bname, String path, String nodeName, - PrintWriter _pw) throws Exception { - _pw.write("\n"); - - if (nodeName == null) - nodeName = "rootNode"; - if (path == null) - path = ""; - - _pw.write("

" + bbs.sanitize(nodeName) + " Path = " + path + "

\n"); - - _pw.write("\n"); - _pw.write("

\n"); - _pw.write("

Folder Name

\n"); - _pw.write(""); - _pw.write("

\n"); - _pw.write(""); - - _pw.write("


add Attribute

"); - _pw.write("
\n"); - _pw.write("

attributeName

\n"); - _pw.write(""); - _pw.write("

\n"); - _pw.write("
"); - _pw.write("
"); - _pw.write("

Folder

"); - - for (BoardMessage msg : bbs.getFolder(_bname, path)) { - _pw.write("" + bbs.sanitize(msg.getMessage()) - + ""); - _pw.write(" "); - _pw.write("edit"); - _pw.write(" "); - _pw.write("delete

"); - } - - _pw.write("

Value

"); - getAttributeImp attribute = (bbs.getAttribute(_bname, path)); - for (int count = 0; attribute.getMessage(count) != null; count++) { - _pw.write("

" + count + " : "); - _pw.write("" - + bbs.sanitize(attribute.getMessage(count)) + ""); - _pw.write("" + " delete" - + "

"); - } - _pw.write(""); - _pw.flush(); - } -} \ No newline at end of file diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/ShowMessageWithTimeStampServletMatrix.java --- a/src/main/java/app/bbs/thinks/ShowMessageWithTimeStampServletMatrix.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -package app.bbs.thinks; - -import java.io.PrintWriter; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.eclipse.jetty.util.thread.ThreadPool; - -import app.bbs.NetworkBulletinBoard; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; - -public class ShowMessageWithTimeStampServletMatrix extends HttpServlet { - /** - * - */ - private static final long serialVersionUID = 1L; - private final NetworkBulletinBoard bbs; - private final String createBoardMessagePath; - private final String editMessagePath; - private final String showMatrixPath; - - private static final String PARAM_BOARD_NAME = "bname"; - - public ShowMessageWithTimeStampServletMatrix(NetworkBulletinBoard _bbs, - String _createBoardMessagePath, String _editMessagePath, String _showMatrixPath, - ThreadPool thp) { - bbs = _bbs; - showMatrixPath = _showMatrixPath; - createBoardMessagePath = _createBoardMessagePath; - editMessagePath = _editMessagePath; - } - - public void doGet(HttpServletRequest _req, HttpServletResponse _res) { - final String bname = (_req.getParameter(PARAM_BOARD_NAME)); - try { - _res.setCharacterEncoding("UTF-8"); - printBoard(bname, _res.getWriter()); - } catch (Exception _e) { - _res.setStatus(500); - } - } - - private void printBoard(String _bname, PrintWriter _pw) throws Exception { - _pw.write("\n"); - _pw.write("

" + bbs.sanitize(_bname) + "

\n"); - _pw.write("

Latest renew time : " + bbs.getRenewTime(_bname) - + "

\n"); - ; - - _pw.write("
Author : EditKey :

\n"); - _pw.write("

Message

\n"); - _pw.write("

\n"); - _pw.write("MatrixMode"+"
"); - - for (BoardMessage msg : bbs.getMessages(_bname)) {//フォルダの表示 - _pw.write("
"); - _pw.write("

Author " + bbs.sanitize(msg.getAuthor()) + "

"); - _pw.write(""+ bbs.sanitize(msg.getMessage()) +"
"); - } - - _pw.write(""); - _pw.flush(); - } -} diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/createAttributeMatrix.java --- a/src/main/java/app/bbs/thinks/createAttributeMatrix.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -package app.bbs.thinks; - -import java.io.PrintWriter; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import app.bbs.NetworkBulletinBoard; - -public class createAttributeMatrix extends HttpServlet -{ - private final NetworkBulletinBoard bbs; - private static final String PARAM_BOARD_NAME = "bname"; - private static final String PARAM_NODE_PATH = "path"; - private static final String PARAM_BOARD_AUTHOR = "author"; - private static final String PARAM_BOARD_MESSAGE= "msg"; - private static final String PARAM_BOARD_EDITKEY = "key"; - - private static final long serialVersionUID = 1L; - - public createAttributeMatrix(NetworkBulletinBoard _bbs) - { - bbs = _bbs; - } - - - - public void doPost(HttpServletRequest _req,HttpServletResponse _res) - { - String boardName = (_req.getParameter(PARAM_BOARD_NAME)); - String author = (_req.getParameter(PARAM_BOARD_AUTHOR));//not use - String msg = (_req.getParameter(PARAM_BOARD_MESSAGE)); - String key = (_req.getParameter(PARAM_BOARD_EDITKEY)); // not use - String uuid = (_req.getParameter(PARAM_NODE_PATH)); - try{ - bbs.createAttribute(boardName, uuid, author, msg, key); - PrintWriter pw = _res.getWriter(); - pw.write("successfully written"); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } -} diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/deleteAttributeServlet.java --- a/src/main/java/app/bbs/thinks/deleteAttributeServlet.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -package app.bbs.thinks; - -import java.io.PrintWriter; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import app.bbs.NetworkBulletinBoard; - -public class deleteAttributeServlet extends HttpServlet -{ - private final NetworkBulletinBoard bbs; - private static final String PARAM_BOARD_NAME = "bname"; - private static final String PARAM_NODE_PATH = "path"; - //private static final String PARAM_BOARD_MESSAGE= "msg"; - //private static final String PARAM_BOARD_EDITKEY = "key"; - private static final String PARAM_NODE_ID = "id"; - private static final long serialVersionUID = 1L; - - public deleteAttributeServlet(NetworkBulletinBoard _bbs) - { - bbs = _bbs; - } - - public void doGet(HttpServletRequest _req,HttpServletResponse _res) - { - String bname = (_req.getParameter(PARAM_BOARD_NAME)); - String path = (_req.getParameter(PARAM_NODE_PATH)); - String id = (_req.getParameter(PARAM_NODE_ID)); - - - try{ - _res.setCharacterEncoding("UTF-8"); - PrintWriter pw = _res.getWriter(); - pw.write("

delete Attribute ?

"); - pw.write("" + - "" + - "\n"); - pw.write("

\n"); - pw.write(""); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } - - public void doPost(HttpServletRequest _req,HttpServletResponse _res) - { - String boardName = (_req.getParameter(PARAM_BOARD_NAME)); - String path = (_req.getParameter(PARAM_NODE_PATH)); - String id = (_req.getParameter(PARAM_NODE_ID)); - - try{ - bbs.deleteAttribute(boardName, path,id); - PrintWriter pw = _res.getWriter(); - pw.write("successfully written"); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } -} diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/deleteNodeServlet.java --- a/src/main/java/app/bbs/thinks/deleteNodeServlet.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -package app.bbs.thinks; -import java.io.PrintWriter; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import app.bbs.NetworkBulletinBoard; - -public class deleteNodeServlet extends HttpServlet -{ - private final NetworkBulletinBoard bbs; - private static final String PARAM_BOARD_NAME = "bname"; - private static final String PARAM_BOARD_PATH = "path"; - private static final String PARAM_NODE_ID = "id"; - - private static final long serialVersionUID = 1L; - - public deleteNodeServlet(NetworkBulletinBoard _bbs) - { - bbs = _bbs; - } - - public void doGet(HttpServletRequest _req,HttpServletResponse _res) - { - String bname = (_req.getParameter(PARAM_BOARD_NAME)); - String path = (_req.getParameter(PARAM_BOARD_PATH )); - String id = (_req.getParameter(PARAM_NODE_ID)); - - try{ - _res.setCharacterEncoding("UTF-8"); - PrintWriter pw = _res.getWriter(); - pw.write("

delete message ?

"); - pw.write("" + - "" + - "\n"); - pw.write("

\n"); - pw.write(""); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } - - public void doPost(HttpServletRequest _req,HttpServletResponse _res) - { - String boardName = (_req.getParameter(PARAM_BOARD_NAME)); - String path = (_req.getParameter(PARAM_BOARD_PATH)); - String id = (_req.getParameter(PARAM_NODE_ID)); - try{ - bbs.deleteNode(boardName, path, id); - PrintWriter pw = _res.getWriter(); - pw.write("successfully written"); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } -} diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/getAttributeImp.java --- a/src/main/java/app/bbs/thinks/getAttributeImp.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,28 +0,0 @@ -package app.bbs.thinks; - -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; - - - - -public class getAttributeImp -{ - private final TreeNode node; - - public getAttributeImp(TreeNode _node) - { - node = _node; - } - - public String getUUID(int num) { - // TODO Auto-generated method stub - return String.valueOf(num); - } - - public String getMessage(int num) { - // TODO Auto-generated method stub - return new String(node.getAttributes().get("mes" + String.valueOf(num)).array()); - } - -} - diff -r 269bada9eedc -r 5d0734fd859d src/main/java/app/bbs/thinks/permission.java --- a/src/main/java/app/bbs/thinks/permission.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -package app.bbs.thinks; - -import java.io.PrintWriter; - -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.eclipse.jetty.util.thread.ThreadPool; - -import app.bbs.NetworkBulletinBoard; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.bbs.BoardMessage; - -import org.eclipse.jetty.util.thread.ThreadPool; - -import app.bbs.NetworkBulletinBoard; - -public class permission extends HttpServlet{ - private static final long serialVersionUID = 1L; - private final NetworkBulletinBoard bbs; - private static final String REQUEST_NAME = "name1"; - private static final String PERMMIT_NAME = "name2"; - - public permission(NetworkBulletinBoard _bbs, - String permissionPath, ThreadPool thp) { - bbs = _bbs; - - } - - public void doGet(HttpServletRequest _req, HttpServletResponse _res) { - - try { - _res.setCharacterEncoding("UTF-8"); - PrintWriter _pw = _res.getWriter(); - _pw.write("

承認フォーム

"); - _pw.write("申請者名

\n"); - _pw.write("

承認者名

\n"); - _pw.write("

\n"); - _pw.write(""); - _pw.flush(); - _res.setCharacterEncoding("UTF-8"); - } catch (Exception _e) { - _res.setStatus(500); - } - } - - public void doPost(HttpServletRequest _req,HttpServletResponse _res) - { - String requestName = _req.getParameter(REQUEST_NAME); - String permmitName = _req.getParameter(PERMMIT_NAME); - - try{ - _res.setCharacterEncoding("UTF-8"); - PrintWriter pw = _res.getWriter(); - pw.write(bbs.searchJungle(requestName,permmitName)); - pw.flush(); - }catch(Exception _e){ - _res.setStatus(500); - } - } - -} diff -r 269bada9eedc -r 5d0734fd859d src/test/java/alice/jungle/log/example/FindMatrixTest.java --- a/src/test/java/alice/jungle/log/example/FindMatrixTest.java Fri Oct 17 15:16:56 2014 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,94 +0,0 @@ -package alice.jungle.log.example; - - - -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.Iterator; - -import org.junit.Test; - -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 { - - @Test - public static void main(String[] args) throws IOException { - PersistentJournal journal = new PersistentJournal(); - journal.setOutputFile(new File("./log/1.log")); - Jungle jungle = new PersistentJungle(journal, "uuid", new DefaultTreeEditor(new DefaultTraverser())); - - String treeName = treeLoad(jungle); - - JungleTree tree = jungle.getTreeByName(treeName); - InterfaceTraverser ifTraverser = tree.getTraverser(); - - Iterator> searchNode = ifTraverser.find( - (TreeNode node) -> { - String attribute = node.getAttributes().getString("mes"); - if(attribute != null){ - System.out.println(attribute); - return attribute.equals("比嘉健太"); - } - return false; - } - ,"mes","比嘉健太"); - - TreeNode node = searchNode.next().left(); - byte[] nodeAttibute = node.getAttributes().get("mes").array(); - System.out.println(new String(nodeAttibute)); - } - - public static String treeLoad(Jungle jungle) throws FileNotFoundException { - String treeName = null; - - for (ChangeList chList : getChangeList()) { - treeName = chList.getTreeName(); - JungleTree tree = jungle.getTreeByName(treeName); - if(tree == null) { - tree = jungle.createNewTree(treeName); - } - JungleTreeEditor editor2 = tree.getTreeEditor(); - Either either2 = JungleUpdater.edit(editor2, chList); - assertFalse(either2.isA()); - editor2 = either2.b(); - editor2.success(); - } - return treeName; - } - - public static ChangeListReader getChangeList() throws FileNotFoundException { - PersistentJournal journal1 = new PersistentJournal(); - journal1.setInputFile(new File("./log/1410802370082.log")); - ChangeListReader reader = journal1.getReader(); - return reader; - } -}