# HG changeset patch
# User one
# Date 1409914500 -32400
# Node ID 9225ff3e32109f927357dc24ac02ab9800bed5c9
# Parent 7058e85875a59d1951cc5eeaa049e4788ea96deb# Parent d8e7f6e13169991ebd20b198f33a3997ef7f3d4b
Merge with d8e7f6e13169991ebd20b198f33a3997ef7f3d4b
diff -r d8e7f6e13169 -r 9225ff3e3210 document/JungleMindmap.mm
diff -r d8e7f6e13169 -r 9225ff3e3210 document/XACML.mm
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/document/XACML.mm Fri Sep 05 19:55:00 2014 +0900
@@ -0,0 +1,43 @@
+
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungle.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungle.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungle.java Fri Sep 05 19:55:00 2014 +0900
@@ -2,6 +2,7 @@
import java.util.Iterator;
import java.util.concurrent.ConcurrentHashMap;
+
import fj.data.List;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.Journal;
@@ -31,7 +32,7 @@
JungleTree t = j.createNewTree("fuga");
JungleTreeEditor e1 = t.getTreeEditor();
- JungleTreeEditor e2 = t.getTreeEditor();
+ //JungleTreeEditor e2 = t.getTreeEditor();
DefaultNodePath root = new DefaultNodePath();
@@ -76,9 +77,9 @@
};
DefaultTreeNode root = new DefaultTreeNode();
- ChangeSet set = new DefaultChangeSet(root.getAsNode(),null,list,uuid,_name,0);
- DefaultTreeContext tc = new DefaultTreeContext(root,set);
- JungleTree newTree = new DefaultJungleTree(tc,uuid,journal.getWriter(),editor);
+ ChangeSet set = new DefaultChangeSet(root,null,list,uuid,_name,0);
+ DefaultTreeContext tc = new DefaultTreeContext(root,set);
+ JungleTree newTree = new DefaultJungleTree(tc,uuid,journal.getWriter(),editor);
if(trees.putIfAbsent(_name,newTree) != null){
return null;
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/DefaultJungleTree.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,6 +1,5 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListWriter;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
@@ -10,16 +9,17 @@
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTransactionManager;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.TreeContext;
-public class DefaultJungleTree> implements JungleTree
+
+public class DefaultJungleTree implements JungleTree
{
- private final AtomicReservableReference> repository;
+ private final AtomicReservableReference repository;
private final String uuid;
private final ChangeListWriter writer;
private final TreeEditor editor;
- public DefaultJungleTree(TreeContext _tc,String _uuid,ChangeListWriter _writer,TreeEditor _editor)
+ public DefaultJungleTree(TreeContext _tc,String _uuid,ChangeListWriter _writer,TreeEditor _editor)
{
- repository = new AtomicReservableReference>(_tc);
+ repository = new AtomicReservableReference(_tc);
uuid = _uuid;
writer = _writer;
editor = _editor;
@@ -28,10 +28,10 @@
@Override
public JungleTreeEditor getTreeEditor()
{
- TreeContext tc = repository.get();
- DefaultTransactionManager txManager = new DefaultTransactionManager(writer,tc,repository,uuid);
- T root = tc.getTreeNode();
- return new DefaultJungleTreeEditor(root,txManager,editor);
+ TreeContext tc = repository.get();
+ DefaultTransactionManager txManager = new DefaultTransactionManager(writer,tc,repository,uuid);
+ TreeNode root = tc.getTreeNode();
+ return new DefaultJungleTreeEditor(root,txManager,editor);
}
@Override
@@ -41,9 +41,9 @@
}
@Override
- public Node getRootNode()
+ public TreeNode getRootNode()
{
- TreeContext tc = repository.get();
+ TreeContext tc = repository.get();
ChangeSet cs = tc.getChangeSet();
return cs.getRoot();
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/Jungle.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/Jungle.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/Jungle.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,5 +1,6 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle;
+
public interface Jungle
{
public JungleTree getTreeByName(String _name);
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/JungleTree.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/JungleTree.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/JungleTree.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,10 +1,11 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
+
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
public interface JungleTree
{
public JungleTreeEditor getTreeEditor();
public JungleTreeEditor getLocalTreeEditor();
- public Node getRootNode();
+ public TreeNode getRootNode();
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/JungleTreeEditor.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/JungleTreeEditor.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/JungleTreeEditor.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,15 +1,17 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle;
import java.nio.ByteBuffer;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
+
+
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.trasnformer.NodeEditor;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
public interface JungleTreeEditor
{
- public Node getRoot();
+ public TreeNode getRoot();
public Either addNewChildAt(NodePath _path,int _pos);
public Either deleteChildAt(NodePath _path,int _pos);
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/App.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/App.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/App.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,11 +1,13 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core;
import java.nio.ByteBuffer;
+
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle;
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.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.traverser.DefaultTraverser;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
@@ -32,7 +34,7 @@
e.success();
- Node root = tree.getRootNode();
+ TreeNode root = tree.getRootNode();
ByteBuffer v = root.getAttributes().get(key);
String str = new String(v.array());
System.out.println(str);
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/Children.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/Children.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/Children.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,10 +1,11 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-public interface Children extends Iterable
+public interface Children extends Iterable
{
- public Either at(int _pos);
+ public Either at(int _pos);
public int size();
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/Node.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/Node.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/Node.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,6 +1,6 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core;
-public interface Node extends AttributesContainer , Parent
+public interface Node extends AttributesContainer
{
-}
\ No newline at end of file
+}*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/Parent.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/Parent.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/core/Parent.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,6 +1,7 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core;
public interface Parent
{
public Children getChildren();
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/persistent/DefaultChangeListWriter.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/persistent/DefaultChangeListWriter.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/persistent/DefaultChangeListWriter.java Fri Sep 05 19:55:00 2014 +0900
@@ -2,8 +2,7 @@
import java.nio.ByteBuffer;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
+
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
public class DefaultChangeListWriter implements ChangeListWriter
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/persistent/DefaultJournal.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/persistent/DefaultJournal.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/persistent/DefaultJournal.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,6 +1,5 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent;
-import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
@@ -8,7 +7,6 @@
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileChannel.MapMode;
-import java.nio.channels.WritableByteChannel;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/persistent/NullJournal.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/persistent/NullJournal.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/persistent/NullJournal.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,12 +1,9 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent;
-import java.nio.ByteBuffer;
+
import java.util.Iterator;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
+
public class NullJournal implements Journal
{
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/ChangeSet.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/ChangeSet.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/ChangeSet.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,12 +1,13 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
+
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
public interface ChangeSet
{
- public Node getRoot();
+ public TreeNode getRoot();
public ChangeSet prev();
public ChangeList getChangeList();
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/TreeEditor.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/TreeEditor.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/TreeEditor.java Fri Sep 05 19:55:00 2014 +0900
@@ -7,5 +7,5 @@
public interface TreeEditor
{
- public > Either edit(T _root,NodePath _path,NodeEditor _transformer);
+ public Either edit(TreeNode _root,NodePath _path,NodeEditor _transformer);
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultAttributes.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultAttributes.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultAttributes.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,17 +1,12 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
import java.nio.ByteBuffer;
-import fj.data.List;
import fj.data.Option;
import fj.data.TreeMap;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Attributes;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableAttributes;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
-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;
+
public class DefaultAttributes implements Attributes
{
@@ -31,7 +26,6 @@
return DefaultEither.newB(newNode);
}
- */
public TreeMap getAttributesAsRawMap()
{
@@ -55,5 +49,5 @@
{
return null;
}
- */
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultChildren.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultChildren.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultChildren.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,21 +1,20 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
import java.util.Iterator;
import fj.data.List;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditorError;
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.IterableWrapper;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-public class DefaultChildren implements Children
+public class DefaultChildren> implements Children>
{
- private final List children;
+ private final List> children;
- public DefaultChildren(List _children)
+ public DefaultChildren(List> _children)
{
children = _children;
}
@@ -35,7 +34,7 @@
DefaultNode newNode = new DefaultNode(newList,attrs);
return DefaultEither.newB(newNode);
}
- */
+
@Override
public int size()
@@ -72,28 +71,28 @@
return DefaultEither.newB(newNode);
}
- */
+
@Override
- public Either at(int _pos)
+ public Either> at(int _pos)
{
- Node target = children.index(_pos);
+ TreeNode target = children.index(_pos);
if(target == null){
return DefaultEither.newA(NodeEditorError.INDEX_OUT_OF_BOUNDS); // TODO
}
- Node ret = target;
+ TreeNode ret = target;
return DefaultEither.newB(ret);
}
- public List getChildrenAsRawList()
+ public List> getChildrenAsRawList()
{
return children;
}
@Override
- public Iterator iterator()
+ public Iterator> iterator()
{
- return children.iterator();
+ return (new IterableWrapper>(children)).iterator();
}
-}
+}*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNode.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNode.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultNode.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,4 +1,4 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
import java.nio.ByteBuffer;
import fj.Ord;
@@ -42,3 +42,4 @@
return new DefaultAttributes(attrs);
}
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java Fri Sep 05 19:55:00 2014 +0900
@@ -3,7 +3,9 @@
import fj.data.List;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction.DefaultTreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultEvaluator;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Direction;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
@@ -22,60 +24,57 @@
}
@Override
- public > Either edit(T _root,NodePath _path,NodeEditor _editor)
+ public Either edit(TreeNode _root,NodePath _path,NodeEditor _editor)
{
DefaultEvaluator e = new DefaultEvaluator(_path);
- TraversableNodeWrapper wrap = new TraversableNodeWrapper(_root);
- Either>> either = traverser.traverse(wrap,e);
+ Either either = traverser.traverse(_root,e);
if(either.isA()){
return DefaultEither.newA(either.a());
}
- Traversal> t = either.b();
- Either ret = clone(t,_editor);
+ Traversal t = either.b();
+ Either ret = clone(t,_editor);
return ret;
}
- private > Either clone(Traversal> _t,NodeEditor _editor)
+ private Either clone(Traversal _t,NodeEditor _editor)
{
// copying nodes from bottom to root
- List>> path = List.nil();
- for(Direction> direction : _t){
+ List> path = List.nil();
+ for(Direction direction : _t){
path = path.cons(direction);
}
// target
- Direction> targetDirection = path.head();
- T target = targetDirection.getTarget().getWrapped();
- EditableNodeWrapper wrapper = new EditableNodeWrapper(target);
- Either> either = _editor.edit(wrapper);
+ Direction targetDirection = path.head();
+ TreeNode target = targetDirection.getTarget();
+ Either either = _editor.edit(target);
if(either.isA()){
return DefaultEither.newA(either.a());
}
- T newNode = either.b().getWrap();
-
+ TreeNode newNode = either.b();
+ OperationLog log = newNode.getLog();
// top
int pos = targetDirection.getPosition();
- T child = newNode;
- for(Direction> parentDirection : path.tail()){
- TraversableNodeWrapper parent = parentDirection.getTarget();
- TreeNodeChildren chs = parent.getWrapped().getChildren();
-
- Either ret = chs.replaceNode(pos,child);
+ TreeNode child = newNode;
+ for(Direction parentDirection : path.tail()){
+ TreeNodeChildren chs = parentDirection.getTarget().getChildren();
+
+ Either ret = chs.replaceNode(pos,child);
if(ret.isA()){
return DefaultEither.newA(ret.a());
}
- T newParent = ret.b();
+ TreeNode newParent = ret.b();
child = newParent;
pos = parentDirection.getPosition();
}
- T newRoot = child;
+ TreeNode newRoot = new DefaultTreeNode(child,log);
return DefaultEither.newB(newRoot);
}
}
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/EditableNodeWrapper.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/EditableNodeWrapper.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/EditableNodeWrapper.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,9 +1,9 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
import java.nio.ByteBuffer;
import java.util.Iterator;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
+
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableAttributes;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableChildren;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
@@ -16,9 +16,9 @@
{
private final T wrap;
- public EditableNodeWrapper(T _wrap)
+ public EditableNodeWrapper(T target)
{
- wrap = _wrap;
+ wrap = target;
}
@Override
@@ -42,7 +42,7 @@
{
private final TreeNodeAttributes attributes;
- public EditableAttributesWrapper(T _wrap)
+ public EditableAttributesWrapper(TreeNode _wrap)
{
attributes = _wrap.getAttributes();
}
@@ -90,15 +90,15 @@
}
@Override
- public Either at(int _pos)
+ public Either> at(int _pos)
{
Either either = children.at(_pos);
if(either.isA()){
return DefaultEither.newA(either.a());
}
-
+
T target = either.b();
- Node newWrapper = new NodeWrapper(target);
+ EditableNodeWrapper newWrapper = new EditableNodeWrapper(target);
return DefaultEither.newB(newWrapper);
}
@@ -109,17 +109,17 @@
}
@Override
- public Iterator iterator()
+ public Iterator> iterator()
{
- IterableConverter.Converter converter = new IterableConverter.Converter(){
+ IterableConverter.Converter,T> converter = new IterableConverter.Converter,T>(){
@Override
- public Node conv(T _b){
- return new NodeWrapper(_b);
+ public EditableNodeWrapper conv(T _b){
+ return new EditableNodeWrapper(_b);
}
};
- return new IterableConverter(children,converter).iterator();
+ return new IterableConverter,T>(children,converter).iterator();
}
@Override
@@ -149,3 +149,4 @@
}
}
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/NodeWrapper.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/NodeWrapper.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/NodeWrapper.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,4 +1,4 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
import java.util.Iterator;
@@ -74,3 +74,4 @@
}
}
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TraversableNodeWrapper.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TraversableNodeWrapper.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TraversableNodeWrapper.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,4 +1,4 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
import java.util.Iterator;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
@@ -66,4 +66,4 @@
}
};
}
-}
+}*/
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNode.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,18 +1,19 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.AttributesContainer;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Parent;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
-public interface TreeNode> extends Parent , AttributesContainer
+public interface TreeNode extends AttributesContainer
{
- @Override
- public TreeNodeChildren getChildren();
+ public TreeNodeChildren getChildren();
@Override
- public TreeNodeAttributes getAttributes();
+ public TreeNodeAttributes getAttributes();
+
+ public TreeNode createNewNode();
- public Node getAsNode();
+ public OperationLog getLog();
- public T createNewNode();
+ public void putLog(OperationLog _log);
+
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNodeAttributes.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNodeAttributes.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNodeAttributes.java Fri Sep 05 19:55:00 2014 +0900
@@ -2,12 +2,14 @@
import java.nio.ByteBuffer;
+import fj.data.TreeMap;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Attributes;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-public interface TreeNodeAttributes> extends Attributes
+public interface TreeNodeAttributes extends Attributes
{
- public Either delete(String _key);
- public Either put(String _key,ByteBuffer _value);
+ public Either delete(String _key);
+ public Either put(String _key,ByteBuffer _value);
+ public TreeMap getAttributesAsRawMap();
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNodeChildren.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNodeChildren.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/TreeNodeChildren.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,15 +1,15 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl;
+import fj.data.List;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
-
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Parent;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-public interface TreeNodeChildren> extends Children
+public interface TreeNodeChildren extends Children
{
- public Either addNewChildAt(int _pos);
- public Either deleteChildAt(int _pos);
- public Either addNewChildAt(int _pos,T _newChild);
- public Either replaceNode(int _pos,T _replacement);
+ public Either addNewChildAt(int _pos);
+ public Either deleteChildAt(int _pos);
+ public Either addNewChildAt(int _pos,TreeNode _newChild);
+ public Either replaceNode(int _pos,TreeNode _replacement);
+ public List getChildrenAsRawList();
}
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingAttributes.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingAttributes.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingAttributes.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,4 +1,4 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
import java.nio.ByteBuffer;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation;
@@ -57,3 +57,4 @@
return edit(putAttribute);
}
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,7 +1,6 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
import java.util.Iterator;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
@@ -30,10 +29,10 @@
}
@Override
- public Iterator iterator()
+ public Iterator> iterator()
{
EditableChildren children = wrap.getChildren();
- return children.iterator();
+ return (Iterator>) children.iterator();
}
public Either> edit(NodeOperation _op)
@@ -64,15 +63,16 @@
}
@Override
- public Either at(int _pos)
+ public Either> at(int _pos)
{
EditableChildren children = wrap.getChildren();
- Either either = children.at(_pos);
+ Either either = children.at(_pos);
if(either.isA()){
return DefaultEither.newA(either.a());
}
- Node node = either.b();
- return DefaultEither.newB(node);
+ T node = either.b();
+ return DefaultEither.newB(new LoggingNode(node));
}
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNode.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNode.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNode.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,4 +1,4 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableAttributes;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableChildren;
@@ -42,3 +42,4 @@
return wrap;
}
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNodeHook.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNodeHook.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingNodeHook.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,6 +1,6 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
@@ -18,19 +18,15 @@
}
@Override
- public > Either edit(T _e)
+ public Either edit(TreeNode _e)
{
- LoggingNode loggingNode = new LoggingNode(_e);
- Either> either = editor.edit(loggingNode);
+ Either either = editor.edit(_e);
if(either.isA()){
return DefaultEither.newA(either.a());
}
+ TreeNode newLoggingNode = either.b();
- LoggingNode newLoggingNode = either.b();
- T newNode = newLoggingNode.getWrap();
- log = newLoggingNode.getOperationLog();
-
- return DefaultEither.newB(newNode);
+ return DefaultEither.newB(newLoggingNode);
}
public OperationLog getLog()
@@ -38,3 +34,4 @@
return log;
}
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/AppendChildAtOperation.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/AppendChildAtOperation.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/AppendChildAtOperation.java Fri Sep 05 19:55:00 2014 +0900
@@ -3,10 +3,7 @@
import java.nio.ByteBuffer;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.AppendChildAt;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+
public final class AppendChildAtOperation implements NodeOperation
{
@@ -22,12 +19,12 @@
return Command.APPEND_CHILD;
}
- @Override
- public > Either invoke(T _target)
+ /*@Override
+ public Either invoke(T _target)
{
AppendChildAt appendChildAt = new AppendChildAt(pos);
return appendChildAt.edit(_target);
- }
+ }*/
@Override
public int getPosition()
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteAttributeOperation.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteAttributeOperation.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteAttributeOperation.java Fri Sep 05 19:55:00 2014 +0900
@@ -3,10 +3,7 @@
import java.nio.ByteBuffer;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteAttribute;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+
public final class DeleteAttributeOperation implements NodeOperation
{
@@ -23,12 +20,12 @@
return Command.DELETE_ATTRIBUTE;
}
- @Override
- public > Either invoke(T _target)
+ /*@Override
+ public Either invoke(T _target)
{
DeleteAttribute deleteAttribute = new DeleteAttribute(key);
return deleteAttribute.edit(_target);
- }
+ }*/
@Override
public int getPosition()
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteChildAtOperation.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteChildAtOperation.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/DeleteChildAtOperation.java Fri Sep 05 19:55:00 2014 +0900
@@ -3,10 +3,7 @@
import java.nio.ByteBuffer;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteChildAt;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
+
public class DeleteChildAtOperation implements NodeOperation
{
@@ -23,12 +20,12 @@
return Command.DELETE_CHILD;
}
- @Override
- public > Either invoke(T _target)
+ /*@Override
+ public Either invoke(T _target)
{
DeleteChildAt deleteChildAt = new DeleteChildAt(pos);
return deleteChildAt.edit(_target);
- }
+ }*/
@Override
public int getPosition()
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/NodeOperation.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/NodeOperation.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/NodeOperation.java Fri Sep 05 19:55:00 2014 +0900
@@ -3,14 +3,11 @@
import java.nio.ByteBuffer;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
public interface NodeOperation
{
public Command getCommand();
- public > Either invoke(T _target);
+// public Either invoke(T _target);
public int getPosition();
public String getKey();
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/PutAttributeOperation.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/PutAttributeOperation.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/operations/PutAttributeOperation.java Fri Sep 05 19:55:00 2014 +0900
@@ -3,10 +3,7 @@
import java.nio.ByteBuffer;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode;
-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;
+
public class PutAttributeOperation implements NodeOperation
{
@@ -25,12 +22,12 @@
return Command.PUT_ATTRIBUTE;
}
- @Override
- public > Either invoke(T _target)
+ /*@Override
+ public Either invoke(T _target)
{
PutAttribute putAttribute = new PutAttribute(key,value);
return putAttribute.edit(_target);
- }
+ }*/
@Override
public int getPosition()
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/AppendChildAt.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/AppendChildAt.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/AppendChildAt.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,5 +1,6 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
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;
@@ -14,9 +15,9 @@
}
@Override
- public > Either edit(T _e)
+ public Either edit(TreeNode _e)
{
- Either either = _e.getChildren().addNewChildAt(pos);
+ Either either = _e.getChildren().addNewChildAt(pos);
if(either.isA()){
// error
return either;
@@ -24,4 +25,5 @@
return DefaultEither.newB(either.b());
}
+
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteAttribute.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteAttribute.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteAttribute.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,5 +1,6 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
@@ -13,8 +14,9 @@
}
@Override
- public > Either edit(T _e)
+ public Either edit(TreeNode _e)
{
return _e.getAttributes().delete(key);
}
+
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteChildAt.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteChildAt.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/DeleteChildAt.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,5 +1,6 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
@@ -13,8 +14,9 @@
}
@Override
- public > Either edit(T _e)
+ public Either edit(TreeNode _e)
{
return _e.getChildren().deleteChildAt(pos);
}
+
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditableAttributes.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditableAttributes.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditableAttributes.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,4 +1,4 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
import java.nio.ByteBuffer;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Attributes;
@@ -10,3 +10,4 @@
public Either delete(String _key);
public Either put(String _key,ByteBuffer _value);
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditableChildren.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditableChildren.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditableChildren.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,16 +1,16 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Children;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Parent;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultError;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
-public interface EditableChildren> extends Children
+public interface EditableChildren> extends Children
{
public Either addNewChildAt(int _pos);
public Either deleteChildAt(int _pos);
public final Error OUT_OF_RANGE = new DefaultError();
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditableNode.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditableNode.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/EditableNode.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,12 +1,12 @@
-package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
+/*package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.AttributesContainer;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Parent;
-public interface EditableNode> extends AttributesContainer , Parent
+public interface EditableNode> extends AttributesContainer , Parent
{
public EditableAttributes getAttributes();
public EditableChildren getChildren();
}
+*/
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/NodeEditor.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/NodeEditor.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/NodeEditor.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,9 +1,10 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
public interface NodeEditor
{
- public > Either edit(T _e);
+ public Either edit(TreeNode _e);
}
\ No newline at end of file
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java Fri Sep 05 19:55:00 2014 +0900
@@ -2,6 +2,8 @@
import java.nio.ByteBuffer;
+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.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
@@ -17,9 +19,10 @@
}
@Override
- public > Either edit(T _e)
+ public Either edit(TreeNode _e)
{
- EditableAttributes attrs = _e.getAttributes();
+ TreeNodeAttributes attrs = _e.getAttributes();
return attrs.put(key,value);
}
+
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/AtomicReservableReference.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/AtomicReservableReference.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/AtomicReservableReference.java Fri Sep 05 19:55:00 2014 +0900
@@ -11,7 +11,7 @@
String fuga = "fuga";
AtomicReservableReference arr = new AtomicReservableReference(hoge);
AtomicReservableReference.Reservation r1 = arr.makeReservation(hoge,fuga);
- AtomicReservableReference.Reservation r2 = arr.makeReservation(hoge,fuga);
+ //AtomicReservableReference.Reservation r2 = arr.makeReservation(hoge,fuga);
System.out.println(arr.get());
r1.confirm();
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultChangeSet.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultChangeSet.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultChangeSet.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,20 +1,20 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
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.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
public class DefaultChangeSet implements ChangeSet
{
- private final Node root;
+ private final TreeNode root;
private final ChangeSet previous;
private final ChangeList changeList;
private final String uuid;
private final String treeName;
private final long revision;
- public DefaultChangeSet(Node _node,ChangeSet _prev,ChangeList _log,String _uuid, String _treeName, long _revision)
+ public DefaultChangeSet(TreeNode _node,ChangeSet _prev,ChangeList _log,String _uuid, String _treeName, long _revision)
{
root = _node;
previous = _prev;
@@ -25,7 +25,7 @@
}
@Override
- public Node getRoot()
+ public TreeNode getRoot()
{
return root;
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultJungleTreeEditor.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultJungleTreeEditor.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultJungleTreeEditor.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,13 +1,12 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction;
import java.nio.ByteBuffer;
+
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
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.store.impl.logger.DefaultTreeOperationLog;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.LoggingNodeHook;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation;
@@ -23,21 +22,21 @@
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter;
-public class DefaultJungleTreeEditor> implements JungleTreeEditor
+public class DefaultJungleTreeEditor implements JungleTreeEditor
{
- private final TransactionManager txManager;
- private final T root;
+ private final TransactionManager txManager;
+ private final TreeNode root;
private final TreeEditor editor;
private final TreeOperationLog log;
- public DefaultJungleTreeEditor(T _root,TransactionManager _txManager,TreeEditor _editor)
+ public DefaultJungleTreeEditor(TreeNode _root,TransactionManager _txManager,TreeEditor _editor)
{
this(_root,_txManager,_editor,new DefaultTreeOperationLog());
}
- public DefaultJungleTreeEditor(T _root,TransactionManager _txManager,TreeEditor _editor,TreeOperationLog _log)
+ public DefaultJungleTreeEditor(TreeNode newNode,TransactionManager _txManager,TreeEditor _editor,TreeOperationLog _log)
{
- root = _root;
+ root = newNode;
txManager = _txManager;
editor = _editor;
log = _log;
@@ -45,14 +44,14 @@
private Either _edit(final NodePath _path,NodeEditor _e)
{
- LoggingNodeHook hook = new LoggingNodeHook(_e);
- Either either = editor.edit(root,_path,hook);
+ //LoggingNodeHook hook = new LoggingNodeHook(_e);
+ Either either = editor.edit(root,_path,_e);
if(either.isA()){
return DefaultEither.newA(either.a());
}
- T newNode = either.b();
- OperationLog newLog = hook.getLog();
+ TreeNode newNode = either.b();
+ OperationLog newLog = newNode.getLog();
IterableConverter.Converter converter = new IterableConverter.Converter(){
@Override
@@ -65,7 +64,7 @@
DefaultTreeOperationLog treeOperationLog = new DefaultTreeOperationLog(iterable,newLog.length());
TreeOperationLog newTreeOpLog = log.append(treeOperationLog);
- JungleTreeEditor newEditor = new DefaultJungleTreeEditor(newNode,txManager,editor,newTreeOpLog);
+ JungleTreeEditor newEditor = new DefaultJungleTreeEditor(newNode,txManager,editor,newTreeOpLog);
return DefaultEither.newB(newEditor);
}
@@ -106,13 +105,13 @@
@Override
public Either success()
{
- Either> either = txManager.commit(root,log);
+ Either either = txManager.commit(root,log);
if(either.isA()){
return DefaultEither.newA(either.a());
}
- TransactionManager newTxManager = either.b();
- JungleTreeEditor newTreeEditor = new DefaultJungleTreeEditor(root,newTxManager,editor);
+ TransactionManager newTxManager = either.b();
+ JungleTreeEditor newTreeEditor = new DefaultJungleTreeEditor(root,newTxManager,editor);
return DefaultEither.newB(newTreeEditor);
}
@@ -130,7 +129,7 @@
}
@Override
- public Node getRoot()
+ public TreeNode getRoot()
{
return null;
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTransactionManager.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,7 +1,6 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction;
import java.util.Iterator;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
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;
@@ -15,15 +14,15 @@
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
-public class DefaultTransactionManager> implements TransactionManager
+public class DefaultTransactionManager implements TransactionManager
{
- private final AtomicReservableReference> repository;
- private final TreeContext tip;
+ private final AtomicReservableReference repository;
+ private final TreeContext tip;
private final ChangeListWriter writer;
private final String uuid;
- public DefaultTransactionManager(ChangeListWriter _writer,TreeContext _tip,
- AtomicReservableReference> _repository,String _uuid)
+ public DefaultTransactionManager(ChangeListWriter _writer,TreeContext _tip,
+ AtomicReservableReference _repository,String _uuid)
{
repository = _repository;
tip = _tip;
@@ -32,7 +31,7 @@
}
@Override
- public Either> commit(T _newRoot,final TreeOperationLog _log)
+ public Either commit(TreeNode _newRoot,final TreeOperationLog _log)
{
ChangeSet cs = tip.getChangeSet();
long currentRevision = cs.revision();
@@ -54,9 +53,8 @@
}
};
- Node root = _newRoot.getAsNode();
- DefaultChangeSet newCs = new DefaultChangeSet(root,cs,list,uuid, _treeName, nextRevision);
- DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs);
+ DefaultChangeSet newCs = new DefaultChangeSet(_newRoot,cs,list,uuid, _treeName, nextRevision);
+ DefaultTreeContext newContext = new DefaultTreeContext(_newRoot,newCs);
@SuppressWarnings("rawtypes")
Reservation reservation = repository.makeReservation(tip,newContext);
@@ -66,7 +64,7 @@
Result r = writer.write(list);
if(r == Result.SUCCESS){
reservation.confirm();
- TransactionManager txManager = new DefaultTransactionManager(writer,newContext,repository,uuid);
+ TransactionManager txManager = new DefaultTransactionManager(writer,newContext,repository,uuid);
return DefaultEither.newB(txManager);
}
return DefaultEither.newA((Error)new DefaultError());
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeContext.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeContext.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeContext.java Fri Sep 05 19:55:00 2014 +0900
@@ -3,12 +3,12 @@
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.ChangeSet;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
-public class DefaultTreeContext> implements TreeContext
+public class DefaultTreeContext implements TreeContext
{
- private final T root;
+ private final TreeNode root;
private final ChangeSet cs;
- public DefaultTreeContext(T _newRoot,ChangeSet _cs)
+ public DefaultTreeContext(TreeNode _newRoot,ChangeSet _cs)
{
root = _newRoot;
cs = _cs;
@@ -21,7 +21,7 @@
}
@Override
- public T getTreeNode()
+ public TreeNode getTreeNode()
{
return root;
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNode.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,49 +1,90 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNode;
+import java.nio.ByteBuffer;
+
+import fj.Ord;
+import fj.data.List;
+import fj.data.TreeMap;
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.OperationLog;
-public class DefaultTreeNode implements TreeNode
+public class DefaultTreeNode implements TreeNode
{
- private final DefaultNode wrap;
+ //private final DefaultNode wrap;
+ private List children;
+ private TreeMap attrs;
+ private OperationLog log;
+
+ private static final List NIL_LIST = List.nil();
+ private static final TreeMap NIL_MAP = TreeMap.empty(Ord.stringOrd);
public DefaultTreeNode()
{
- this(new DefaultNode());
+ this(NIL_LIST,NIL_MAP,new DefaultOperationLog());
+ }
+
+ public DefaultTreeNode(List _children,TreeMap _attrs)
+ {
+ this(_children, _attrs, new DefaultOperationLog());
}
- public DefaultTreeNode(DefaultNode _wrap)
+ public DefaultTreeNode(TreeNode _node, OperationLog _log)
{
- wrap = _wrap;
+ this(_node.getChildren().getChildrenAsRawList(), _node.getAttributes().getAttributesAsRawMap(), _log);
+ }
+
+
+
+ public DefaultTreeNode(List _children,TreeMap _attrs, OperationLog _log){
+ attrs = _attrs;
+ children = _children;
+ log = _log;
}
@Override
public DefaultTreeNodeChildren getChildren()
{
- return new DefaultTreeNodeChildren(wrap);
+ return new DefaultTreeNodeChildren(children, attrs);
}
@Override
public DefaultTreeNodeAttribute getAttributes()
{
- return new DefaultTreeNodeAttribute(wrap);
+ return new DefaultTreeNodeAttribute(children, attrs,log);
}
@Override
- public DefaultTreeNode createNewNode()
- {
- return new DefaultTreeNode(new DefaultNode());
+ public DefaultTreeNode createNewNode(){
+ return new DefaultTreeNode();
}
- public DefaultNode getWrap()
+ /*public DefaultNode getWrap()
{
return wrap;
- }
+ }*/
- @Override
+ /*@Override
public Node getAsNode()
{
return getWrap();
}
+ */
+ public DefaultTreeNode clone()
+ {
+ return new DefaultTreeNode(children,attrs);
+ }
+
+ @Override
+ public OperationLog getLog() {
+ OperationLog _log = log;
+ log = new DefaultOperationLog();
+ return _log;
+ }
+
+ @Override
+ public void putLog(OperationLog _log){
+ log = _log;
+ }
+
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeAttribute.java Fri Sep 05 19:55:00 2014 +0900
@@ -1,68 +1,89 @@
package jp.ac.u_ryukyu.ie.cr.shoshi.jungle.transaction;
import java.nio.ByteBuffer;
+
+import fj.data.List;
+import fj.data.Option;
import fj.data.TreeMap;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultAttributes;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultChildren;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNode;
+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.store.impl.logger.DefaultOperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteAttributeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditorError;
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;
-public class DefaultTreeNodeAttribute implements TreeNodeAttributes
+public class DefaultTreeNodeAttribute implements TreeNodeAttributes
{
- private final DefaultNode wrap;
+ public List children;
+ public TreeMap attrs;
+ OperationLog log ;
- public DefaultTreeNodeAttribute(DefaultNode _wrap)
+ public DefaultTreeNodeAttribute(List _children,TreeMap _attrs)
{
- wrap = _wrap;
+ children = _children;
+ attrs = _attrs;
+ log = new DefaultOperationLog();
+ }
+
+ public DefaultTreeNodeAttribute(List _children,TreeMap _attrs,OperationLog _log)
+ {
+ children = _children;
+ attrs = _attrs;
+ log = _log;
}
@Override
- public Either delete(String _key)
+ public TreeMap getAttributesAsRawMap(){
+ return attrs;
+ }
+
+ @Override
+ public Either delete(String _key)
{
if(_key == null){
return DefaultEither.newA(NodeEditorError.NULL_VALUE_NOT_ALLOWED);
}
- DefaultAttributes attrs = wrap.getAttributes();
- DefaultChildren children = wrap.getChildren();
-
- TreeMap raw = attrs.getAttributesAsRawMap();
- if(!raw.contains(_key)){
+ if(!attrs.contains(_key)){
return DefaultEither.newA(NodeEditorError.DELETE_KEY_NOT_FOUND);
}
- TreeMap newMap = raw.delete(_key);
+ TreeMap newMap = attrs.delete(_key);
- DefaultNode newNode = new DefaultNode(children.getChildrenAsRawList(),newMap);
-
- return DefaultEither.newB(new DefaultTreeNode(newNode));
+ OperationLog op = new DefaultOperationLog();;
+ TreeNode newNode = new DefaultTreeNode(children,newMap,op.add(new DeleteAttributeOperation(_key)));
+ return DefaultEither.newB(newNode);
}
@Override
- public Either put(String _key, ByteBuffer _value)
+ public Either put(String _key, ByteBuffer _value)
{
if(_key == null || _value == null){
return DefaultEither.newA(NodeEditorError.NULL_VALUE_NOT_ALLOWED);
}
- DefaultAttributes attrs = wrap.getAttributes();
- DefaultChildren children = wrap.getChildren();
+ //DefaultAttributes attrs = wrap.getAttributes();
+ //DefaultChildren children = wrap.getChildren();
- TreeMap raw = attrs.getAttributesAsRawMap();
- TreeMap newMap = raw.set(_key,_value);
+ //TreeMap raw = attrs.getAttributesAsRawMap();
+ TreeMap newMap = attrs.set(_key,_value);
+ TreeNode newNode = new DefaultTreeNode(children,newMap,log.add(new PutAttributeOperation(_key,_value)));
- DefaultNode newNode = new DefaultNode(children.getChildrenAsRawList(),newMap);
-
- return DefaultEither.newB(new DefaultTreeNode(newNode));
+ return DefaultEither.newB(newNode);
}
@Override
public ByteBuffer get(String _key)
{
- return wrap.getAttributes().get(_key);
+ if(_key == null){
+ return null;
+ }
+
+ Option result = attrs.get(_key);
+ return result.isSome() ? result.some() : null;
}
}
diff -r d8e7f6e13169 -r 9225ff3e3210 src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java Wed Sep 03 15:56:40 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/transaction/DefaultTreeNodeChildren.java Fri Sep 05 19:55:00 2014 +0900
@@ -6,18 +6,19 @@
import fj.P2;
import fj.data.List;
import fj.data.TreeMap;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultAttributes;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultChildren;
-import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNode;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeChildren;
+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.OperationLog;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.AppendChildAtOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditorError;
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;
-public class DefaultTreeNodeChildren implements TreeNodeChildren
+public class DefaultTreeNodeChildren implements TreeNodeChildren
{
public static void main(String _args[])
{
@@ -28,16 +29,18 @@
}
- private final DefaultNode node;
-
- public DefaultTreeNodeChildren(DefaultNode _node)
+ public List children;
+ public TreeMap attrs;
+
+ public DefaultTreeNodeChildren(List _children,TreeMap