Mercurial > hg > Members > shoshi > jungle > jungle-core
view src/main/java/jp/ac/u_ryukyu/ie/cr/jungleNetwork/operations/NetworkNodeOperation.java @ 329:2a0cb1f0ba4e
rename Error package
author | kono |
---|---|
date | Sat, 08 Jul 2017 21:05:55 +0900 |
parents | d6b81870216b |
children |
line wrap: on
line source
package jp.ac.u_ryukyu.ie.cr.jungleNetwork.operations; import jp.ac.u_ryukyu.ie.cr.jungle.store.Command; import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode; import jp.ac.u_ryukyu.ie.cr.jungle.store.operations.NodeOperation; import jp.ac.u_ryukyu.ie.cr.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error; import org.msgpack.annotation.Message; import java.nio.ByteBuffer; @Message public class NetworkNodeOperation implements NodeOperation { public int pos; public String key; public ByteBuffer value; public int commandType; private final static int NUM_PUT_ATTRIBUTE = 1; private final static int NUM_APPEND_CHILD = 2; private final static int NUM_DELETE_CHILD = 3; private final static int NUM_DELETE_ATTRIBUTE = 4; public NetworkNodeOperation() { pos = -2; key = null; value = null; commandType = 0; } public NetworkNodeOperation(NodeOperation _op) { pos = _op.getPosition(); key = _op.getKey(); value = _op.getValue(); commandType = getCommandType(_op.getCommand()); } private static int getCommandType(Command c) { switch (c) { case PUT_ATTRIBUTE: return NUM_PUT_ATTRIBUTE; case APPEND_CHILD: return NUM_APPEND_CHILD; case DELETE_CHILD: return NUM_DELETE_CHILD; case DELETE_ATTRIBUTE: return NUM_DELETE_ATTRIBUTE; default: break; } return 0; } public static Command getCommand(int num) { switch (num) { case NUM_PUT_ATTRIBUTE: return Command.PUT_ATTRIBUTE; case NUM_APPEND_CHILD: return Command.APPEND_CHILD; case NUM_DELETE_CHILD: return Command.DELETE_CHILD; case NUM_DELETE_ATTRIBUTE: return Command.DELETE_ATTRIBUTE; default: break; } return null; } public Command getCommand() { return getCommand(commandType); } public int getPosition() { return pos; } public String getKey() { return key; } public ByteBuffer getValue() { return value; } @Override public Either<Error, TreeNode> invoke(TreeNode _target) { switch (getCommand(commandType)) { case PUT_ATTRIBUTE: return _target.getAttributes().put(key, value); case APPEND_CHILD: return _target.getChildren().addNewChildAt(pos); case DELETE_CHILD: return _target.getChildren().deleteChildAt(pos); case DELETE_ATTRIBUTE: return _target.getAttributes().delete(key); default: break; } return null; } }