Mercurial > hg > Members > nobuyasu > jungle-network
changeset 79:5b9708d9febc
Modified NetworkTreeOperationLog NetworkNodeOperation
author | one |
---|---|
date | Wed, 16 Oct 2013 19:25:02 +0900 |
parents | 0055d917c796 |
children | 3f8ec40d536a |
files | src/alice/jungle/operations/NetworkNodeOperation.java src/alice/jungle/operations/NetworkNodePath.java src/alice/jungle/operations/NetworkTreeOperation.java src/alice/jungle/operations/NetworkTreeOperationLog.java src/alice/jungle/persistence/impl/logger/TmpNetworkTreeOperationLog.java src/test/alice/jungle/core/operations/NetworkTreeOperationTest.java |
diffstat | 6 files changed, 55 insertions(+), 116 deletions(-) [+] |
line wrap: on
line diff
--- 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 <T extends EditableNode<T>> Either<Error, T> 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; + } + }
--- 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<Integer> 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<Integer>(); }
--- 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; }
--- 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<TreeOperation> list; + public LinkedList<TreeOperation> list; public int size; public NetworkTreeOperationLog() { @@ -23,7 +23,11 @@ public NetworkTreeOperationLog(Iterable<TreeOperation> _list, int _size) { - list = _list; + list = new LinkedList<TreeOperation>(); + 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<TreeOperation> newList = new LinkedList<TreeOperation>(); - for (Iterator<TreeOperation> 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<TreeOperation> newList = new LinkedList<TreeOperation>(); - for (Iterator<TreeOperation> 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
--- 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<TreeOperation> list; - * private final int size; - */ - private LinkedList<TreeOperation> list; - private int size; - - public TmpNetworkTreeOperationLog() - { - list = null; - size = 0; - } -/* - public NetworkTreeOperationLog(Iterable<TreeOperation> _list,int _size) - { - list = _list; - size = _size; - } -*/ - public TmpNetworkTreeOperationLog(LinkedList<TreeOperation> _list) - { - list = _list; - size = list.size(); - } - - @Override - public Iterator<TreeOperation> 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; - } -}
--- 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()); - - } }