view src/main/csharp/jp.ac.u-ryukyu.ie.cr/jungle/store/impl/logger/LoggingAttributes.cs @ 6:4d08270a61c8

fix
author Kazuma
date Tue, 19 Jul 2016 16:47:43 +0900
parents dec15de2c6ff
children
line wrap: on
line source

using UnityEngine;

public class LoggingAttributes {

	private TreeNode wrap;
	private OperationLog log;

	public LoggingAttributes(TreeNode _wrap,OperationLog _log)
	{
		wrap = _wrap;
		log = _log;
	}	

	public byte get(string _key)
	{
		TreeNodeAttributes attributes = wrap.getAttributes();
		return attributes.get(_key);
	}

	private Either<Error,LoggingNode> edit(NodeOperation _op)
	{
		Either<Error,TreeNode> either = _op.invoke(wrap);
		if(either.isA()){
			Debug.Log ("faild put");
			return DefaultEither<Error,LoggingNode>.newA(either.a());
		}

		TreeNode newNode = either.b();
		OperationLog newLog = log.add(_op); 
		LoggingNode newLogNode = new LoggingNode(newNode,newLog);

		return DefaultEither<Error,LoggingNode>.newB(newLogNode);
	}

	public Either<Error,LoggingNode> delete(string _key)
	{

		DeleteAttributeOperation deleteAttribute = new DeleteAttributeOperation(_key);
		return edit(deleteAttribute);
	}

	public Either<Error,LoggingNode> put(string _key, byte _value)
	{
		PutAttributeOperation putAttribute = new PutAttributeOperation(_key,_value);
		return edit(putAttribute);
	}

}