# 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("
");
- _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("");
-
- _pw.write("
add Attribute
");
- _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("