comparison 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
comparison
equal deleted inserted replaced
86:fb1dc448ac8c 92:14ce7a0dedca
4 4
5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode; 5 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNode;
6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes; 6 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.TreeNodeAttributes;
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog; 7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultOperationLog;
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog; 8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.OperationLog;
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.DeleteChildAtOperation;
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation; 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.PutAttributeOperation;
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
12 15
13 public class PutAttribute implements NodeEditor 16 public class PutAttribute implements NodeEditor
14 { 17 {
15 private final String key; 18 private final String key;
16 private final ByteBuffer value; 19 private final ByteBuffer value;
20 private OperationLog log;
17 21
18 public PutAttribute(String _key,ByteBuffer _value) 22 public PutAttribute(String _key,ByteBuffer _value)
19 { 23 {
20 key = _key; 24 key = _key;
21 value = _value; 25 value = _value;
26 log = new DefaultOperationLog();
22 } 27 }
23 28
24 @Override 29 @Override
25 public Either<Error,TreeNode> edit(TreeNode _e) 30 public Either<Error,TreeNode> edit(TreeNode _e)
26 { 31 {
27 TreeNodeAttributes attrs = _e.getAttributes(); 32 NodeOperation putAttributeOperation = new PutAttributeOperation(key,value);
28 return attrs.put(key,value); 33 Either<Error,TreeNode> either = putAttributeOperation.invoke(_e);
34 if(either.isA()){
35 // error
36 return either;
37 }
38 log = log.add(putAttributeOperation);
39 return DefaultEither.newB(either.b());
29 } 40 }
30 41
31 @Override 42 @Override
32 public OperationLog getLog() { 43 public OperationLog getLog() {
33 OperationLog op = new DefaultOperationLog(); 44 return log;
34 PutAttributeOperation putAttribute = new PutAttributeOperation(key,value);
35 return op.add(putAttribute);
36 } 45 }
37 } 46 }