view Main/jungle-main/store/impl/logger/LoggingAttributes.cs @ 20:1f99e150f336

fix folder and add Object Mapper.
author Kazuma Takeda
date Thu, 15 Dec 2016 22:52:48 +0900
parents
children 1466993c104c
line wrap: on
line source


namespace JungleDB {
	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()){
				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);
		}
	}
}