view src/main/java/jp/ac/u_ryukyu/ie/cr/jungle/store/trasnformer/AppendChildAndPutAttribute.java @ 329:2a0cb1f0ba4e

rename Error package
author kono
date Sat, 08 Jul 2017 21:05:55 +0900
parents 20fac8350822
children
line wrap: on
line source

package jp.ac.u_ryukyu.ie.cr.jungle.store.trasnformer;

import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.LoggingNode;
import jp.ac.u_ryukyu.ie.cr.jungle.store.logger.OperationLog;
import jp.ac.u_ryukyu.ie.cr.jungle.transaction.node.TreeNode;
import jp.ac.u_ryukyu.ie.cr.jungle.util.DefaultEither;
import jp.ac.u_ryukyu.ie.cr.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.jungle.util.jungleError.Error;

import java.nio.ByteBuffer;

/**
 * Created by e115731 on 2017/01/02.
 */
public class AppendChildAndPutAttribute implements NodeEditor {

    private final int pos;
    private final String key;
    private final ByteBuffer value;

    public AppendChildAndPutAttribute(String key, ByteBuffer value, int pos) {
        this.key = key;
        this.value = value;
        this.pos = pos;
    }

    public Either<Error, LoggingNode> _edit(LoggingNode _e) {
        Either<Error, LoggingNode> either = _e.getChildren().addNewChildAndPutAttribute(pos, key, value);
        if (either.isA()) {
            // error
            return either;
        }
        return DefaultEither.newB(either.b());
    }

    @Override
    public Either<Error, LoggingNode> edit(TreeNode _e) {
        LoggingNode logNode = wrap(_e);
        return _edit(logNode);
    }

    @Override
    public LoggingNode wrap(TreeNode newRoot, TreeNode editedNode, OperationLog operationLog) {
        return new LoggingNode(newRoot, editedNode, operationLog);
    }

    public LoggingNode wrap(TreeNode node) {
        return new LoggingNode(node);
    }

}