Mercurial > hg > Members > nobuyasu > jungle-network
diff src/alice/jungle/operations/NetworkNodeOperation.java @ 79:5b9708d9febc
Modified NetworkTreeOperationLog NetworkNodeOperation
author | one |
---|---|
date | Wed, 16 Oct 2013 19:25:02 +0900 |
parents | 0055d917c796 |
children | b3ccefdf2b43 |
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; + } + }