view src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java @ 79:b4f145174970

change log
author one
date Sun, 31 Aug 2014 02:10:14 +0900
parents 540a27dde42f
children 715a9fbf02fc
line wrap: on
line source

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

import java.nio.ByteBuffer;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;

public class PutAttribute implements NodeEditor
{
	private final String key;
	private final ByteBuffer value;
	
	public PutAttribute(String _key,ByteBuffer _value)
	{
		key = _key;
		value = _value;
	}

	@Override
	public <T extends TreeNode<T>> Either<Error,T> edit(T _e)
	{
		TreeNodeAttributes<T> attrs = _e.getAttributes();
		return attrs.put(key,value);
	}

	@Override
	public OperationLog getLog() {
		OperationLog op = new DefaultOperationLog();
		PutAttributeOperation putAttribute = new PutAttributeOperation(key,value);
		return op.add(putAttribute);
	}
}