# HG changeset patch # User one # Date 1381919102 -32400 # Node ID 5b9708d9febc829919c1f6d2830321a138e80ac9 # Parent 0055d917c796cd93f151443eea402ebdca65d370 Modified NetworkTreeOperationLog NetworkNodeOperation diff -r 0055d917c796 -r 5b9708d9febc src/alice/jungle/operations/NetworkNodeOperation.java --- a/src/alice/jungle/operations/NetworkNodeOperation.java Wed Oct 16 17:24:15 2013 +0900 +++ b/src/alice/jungle/operations/NetworkNodeOperation.java Wed Oct 16 19:25:02 2013 +0900 @@ -4,11 +4,19 @@ 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.trasnformer.DeleteAttribute; +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.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 org.msgpack.annotation.Message; +import alice.jungle.datasegment.store.transformer.NetworkAppendChildAt; + @Message -public class NetworkNodeOperation { +public class NetworkNodeOperation implements NodeOperation{ public int pos; public String key; @@ -77,4 +85,25 @@ return value; } + @Override + public > Either invoke(T _target) { + switch(getCommand(commandType)) { + case PUT_ATTRIBUTE: + PutAttribute putAttribute = new PutAttribute(key,value); + return putAttribute.edit(_target); + case APPEND_CHILD: + NetworkAppendChildAt appendChildAt = new NetworkAppendChildAt(pos); + return appendChildAt.edit(_target); + case DELETE_CHILD: + DeleteChildAt deleteChildAt = new DeleteChildAt(pos); + return deleteChildAt.edit(_target); + case DELETE_ATTRIBUTE: + DeleteAttribute deleteAttribute = new DeleteAttribute(key); + return deleteAttribute.edit(_target); + default: + break; + } + return null; + } + } diff -r 0055d917c796 -r 5b9708d9febc src/alice/jungle/operations/NetworkNodePath.java --- a/src/alice/jungle/operations/NetworkNodePath.java Wed Oct 16 17:24:15 2013 +0900 +++ b/src/alice/jungle/operations/NetworkNodePath.java Wed Oct 16 19:25:02 2013 +0900 @@ -1,12 +1,9 @@ package alice.jungle.operations; -import java.io.IOException; import java.util.Iterator; import java.util.LinkedList; -import org.msgpack.MessagePack; import org.msgpack.annotation.Message; -import org.msgpack.type.Value; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Pair; @@ -16,17 +13,6 @@ { LinkedList path; - public static void main(String[] args) throws IOException { - NetworkNodePath path = new NetworkNodePath(); - path = path.add(1).add(2).add(3); - MessagePack msgpack = new MessagePack(); - Value value = msgpack.unconvert(path); - NetworkNodePath mPath = msgpack.convert(value, NetworkNodePath.class); - for (Integer i : mPath) { - System.out.println(i); - } - } - public NetworkNodePath() { path = new LinkedList(); } diff -r 0055d917c796 -r 5b9708d9febc src/alice/jungle/operations/NetworkTreeOperation.java --- a/src/alice/jungle/operations/NetworkTreeOperation.java Wed Oct 16 17:24:15 2013 +0900 +++ b/src/alice/jungle/operations/NetworkTreeOperation.java Wed Oct 16 19:25:02 2013 +0900 @@ -22,6 +22,11 @@ operation = null; } + public NetworkTreeOperation(TreeOperation treeOp) { + path = new NetworkNodePath(treeOp.getNodePath()); + operation = new NetworkNodeOperation(treeOp.getNodeOperation()); + } + public NetworkTreeOperation(NodePath _p, NodeOperation _op) { path = new NetworkNodePath(_p); operation = new NetworkNodeOperation(_op); @@ -45,14 +50,17 @@ @Override public NodeOperation getNodeOperation() { Command c = operation.getCommand(); - if (c == Command.PUT_ATTRIBUTE) { + switch(c) { + case PUT_ATTRIBUTE: return new PutAttributeOperation(operation.getKey(), operation.getValue()); - } else if (c == Command.APPEND_CHILD) { + case APPEND_CHILD: return new AppendChildAtOperation(operation.getPosition()); - } else if (c == Command.DELETE_CHILD) { + case DELETE_CHILD: return new DeleteChildAtOperation(operation.getPosition()); - } else if (c == Command.DELETE_ATTRIBUTE){ + case DELETE_ATTRIBUTE: return new DeleteAttributeOperation(operation.getKey()); + default: + break; } return null; } diff -r 0055d917c796 -r 5b9708d9febc src/alice/jungle/operations/NetworkTreeOperationLog.java --- a/src/alice/jungle/operations/NetworkTreeOperationLog.java Wed Oct 16 17:24:15 2013 +0900 +++ b/src/alice/jungle/operations/NetworkTreeOperationLog.java Wed Oct 16 19:25:02 2013 +0900 @@ -13,7 +13,7 @@ @Message public class NetworkTreeOperationLog implements TreeOperationLog { - public Iterable list; + public LinkedList list; public int size; public NetworkTreeOperationLog() { @@ -23,7 +23,11 @@ public NetworkTreeOperationLog(Iterable _list, int _size) { - list = _list; + list = new LinkedList(); + for(TreeOperation op: _list) { + NetworkTreeOperation nOp = new NetworkTreeOperation(op); + list.add(nOp); + } size = _size; } @@ -39,28 +43,19 @@ @Override public NetworkTreeOperationLog add(NodePath _p, NodeOperation _op) { - TreeOperation op = new NetworkTreeOperation(_p, _op); - LinkedList newList = new LinkedList(); - for (Iterator iter = list.iterator(); iter.hasNext();) { - TreeOperation o = iter.next(); - newList.add(o); - } - newList.add(op); - return new NetworkTreeOperationLog(newList, size+1); + NetworkTreeOperation op = new NetworkTreeOperation(_p, _op); + list.add(op); + return new NetworkTreeOperationLog(list, size+1); } @Override public NetworkTreeOperationLog append(TreeOperationLog _log) { - LinkedList newList = new LinkedList(); - for (Iterator iter = list.iterator(); iter.hasNext();) { - TreeOperation o = iter.next(); - newList.add(o); + for (TreeOperation o : _log) { + NetworkTreeOperation op = new NetworkTreeOperation(o); + list.add(op); } - for (TreeOperation o : _log) { - newList.add(o); - } - return new NetworkTreeOperationLog(newList, size+_log.length()); + return new NetworkTreeOperationLog(list, size+_log.length()); } @Override diff -r 0055d917c796 -r 5b9708d9febc src/alice/jungle/persistence/impl/logger/TmpNetworkTreeOperationLog.java --- a/src/alice/jungle/persistence/impl/logger/TmpNetworkTreeOperationLog.java Wed Oct 16 17:24:15 2013 +0900 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -package alice.jungle.persistence.impl.logger; - -import java.util.Collection; -import java.util.Iterator; -import java.util.LinkedList; - -import org.msgpack.annotation.Message; - -import alice.jungle.operations.NetworkTreeOperation; - -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; -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.TreeOperationLog; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DefaultTreeOperation; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; -import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; - - - -@Message -public class TmpNetworkTreeOperationLog implements TreeOperationLog -{ -/* MessagePack cannnot handle final. - * - * private final Iterable list; - * private final int size; - */ - private LinkedList list; - private int size; - - public TmpNetworkTreeOperationLog() - { - list = null; - size = 0; - } -/* - public NetworkTreeOperationLog(Iterable _list,int _size) - { - list = _list; - size = _size; - } -*/ - public TmpNetworkTreeOperationLog(LinkedList _list) - { - list = _list; - size = list.size(); - } - - @Override - public Iterator iterator() - { - return list.iterator(); - } - - @Override - public TreeOperationLog add(NodePath _p, NodeOperation _op) - { - TreeOperation op = new NetworkTreeOperation(_p,_op); - list.add(op); - return new TmpNetworkTreeOperationLog(list); - } - - @Override - public TreeOperationLog append(TreeOperationLog _log) - { - for(TreeOperation treeOp: _log) { - list.add(treeOp); - } - return new TmpNetworkTreeOperationLog(list); - } - - @Override - public int length() - { - return size; - } -} diff -r 0055d917c796 -r 5b9708d9febc src/test/alice/jungle/core/operations/NetworkTreeOperationTest.java --- a/src/test/alice/jungle/core/operations/NetworkTreeOperationTest.java Wed Oct 16 17:24:15 2013 +0900 +++ b/src/test/alice/jungle/core/operations/NetworkTreeOperationTest.java Wed Oct 16 19:25:02 2013 +0900 @@ -22,8 +22,6 @@ NetworkTreeOperation mOp = msgpack.convert(v, NetworkTreeOperation.class); assertNotNull(mOp.getNodePath()); assertEquals(op.getCommand(), mOp.getNodeOperation().getCommand()); - - } }