diff src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java @ 92:14ce7a0dedca

Logging Node and Editor
author one
date Sat, 06 Sep 2014 05:03:10 +0900
parents fb1dc448ac8c
children ef68358ed0e8
line wrap: on
line diff
--- a/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java	Wed Sep 03 23:44:23 2014 +0900
+++ b/src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/trasnformer/PutAttribute.java	Sat Sep 06 05:03:10 2014 +0900
@@ -6,7 +6,10 @@
 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.DeleteChildAtOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
+import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
 
@@ -14,24 +17,30 @@
 {
 	private final String key;
 	private final ByteBuffer value;
+	private OperationLog log;
 	
 	public PutAttribute(String _key,ByteBuffer _value)
 	{
 		key = _key;
 		value = _value;
+		log = new DefaultOperationLog();
 	}
 
 	@Override
 	public Either<Error,TreeNode> edit(TreeNode _e)
 	{
-		TreeNodeAttributes attrs = _e.getAttributes();
-		return attrs.put(key,value);
+		NodeOperation putAttributeOperation = new PutAttributeOperation(key,value);
+		Either<Error,TreeNode> either = putAttributeOperation.invoke(_e);
+		if(either.isA()){
+			// error
+			return either;
+		}
+		log = log.add(putAttributeOperation);
+		return DefaultEither.newB(either.b());
 	}
 
 	@Override
 	public OperationLog getLog() {
-		OperationLog op = new DefaultOperationLog();
-		PutAttributeOperation putAttribute = new PutAttributeOperation(key,value);
-		return op.add(putAttribute);
+		return log;
 	}
 }