Mercurial > hg > Members > tatsuki > bench > jungle-core
comparison src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/logger/LoggingChildren.java @ 31:418088ca2b30
added Generics parameters to EditableNode framework
author | Shoshi TAMAKI |
---|---|
date | Wed, 16 Jan 2013 03:23:57 +0900 |
parents | 5f4172d6fb8b |
children | cf958638a471 |
comparison
equal
deleted
inserted
replaced
30:592ee5f27ad2 | 31:418088ca2b30 |
---|---|
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; | 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; |
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; | 12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; |
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; | 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; |
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableWrapper; | 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableWrapper; |
15 | 15 |
16 public class LoggingChildren implements EditableChildren | 16 public class LoggingChildren<T extends EditableNode<T>> |
17 implements EditableChildren<LoggingNode<T>> | |
17 { | 18 { |
18 private final EditableChildren wrap; | 19 private final EditableChildren<T> wrap; |
19 private final Logger log; | 20 private final Logger log; |
20 | 21 |
21 public LoggingChildren(EditableChildren _wrap,Logger _log) | 22 public LoggingChildren(EditableChildren<T> _wrap,Logger _log) |
22 { | 23 { |
23 wrap = _wrap; | 24 wrap = _wrap; |
24 log = _log; | 25 log = _log; |
25 } | 26 } |
26 | 27 |
36 IterableWrapper<Node> wrapper = new IterableWrapper<Node>(this); | 37 IterableWrapper<Node> wrapper = new IterableWrapper<Node>(this); |
37 return wrapper.iterator(); | 38 return wrapper.iterator(); |
38 } | 39 } |
39 | 40 |
40 @Override | 41 @Override |
41 public Either<Error,EditableNode> addNewChildAt(final int _pos) | 42 public Either<Error,LoggingNode<T>> addNewChildAt(final int _pos) |
42 { | 43 { |
43 Either<Error,EditableNode> either = wrap.addNewChildAt(_pos); | 44 Either<Error,T> either = wrap.addNewChildAt(_pos); |
44 if(either.isA()){ | 45 if(either.isA()){ |
45 return either; | 46 return DefaultEither.newA(either.a()); |
46 } | 47 } |
47 | 48 |
48 Operation opAddChild = new AppendChildAtOperation(){ | 49 Operation opAddChild = new AppendChildAtOperation(){ |
49 @Override | 50 @Override |
50 public int position(){ | 51 public int position(){ |
51 return _pos; | 52 return _pos; |
52 } | 53 } |
53 }; | 54 }; |
54 | 55 |
55 Logger newLog = log.add(opAddChild); | 56 Logger newLog = log.add(opAddChild); |
56 EditableNode newWrap = either.b(); | 57 T newWrap = either.b(); |
57 EditableNode newLoggingNode = new LoggingNode(newWrap,newLog); | 58 LoggingNode<T> newLoggingNode = new LoggingNode<T>(newWrap,newLog); |
58 | 59 |
59 return DefaultEither.newB(newLoggingNode); | 60 return DefaultEither.newB(newLoggingNode); |
60 } | 61 } |
61 | 62 |
62 @Override | 63 @Override |
63 public Either<Error,EditableNode> deleteChildAt(final int _pos) | 64 public Either<Error,LoggingNode<T>> deleteChildAt(final int _pos) |
64 { | 65 { |
65 Either<Error,EditableNode> either = wrap.deleteChildAt(_pos); | 66 Either<Error,T> either = wrap.deleteChildAt(_pos); |
66 if(either.isA()){ | 67 if(either.isA()){ |
67 return either; | 68 return DefaultEither.newA(either.a()); |
68 } | 69 } |
69 | 70 |
70 Operation opDeleteChild = new DeleteChildAtOperation(){ | 71 Operation opDeleteChild = new DeleteChildAtOperation(){ |
71 @Override | 72 @Override |
72 public int position(){ | 73 public int position(){ |
73 return _pos; | 74 return _pos; |
74 } | 75 } |
75 }; | 76 }; |
76 | 77 |
77 Logger newLog = log.add(opDeleteChild); | 78 Logger newLog = log.add(opDeleteChild); |
78 EditableNode newLoggingNode = new LoggingNode(either.b(),newLog); | 79 LoggingNode<T> newLoggingNode = new LoggingNode<T>(either.b(),newLog); |
79 | 80 |
80 return DefaultEither.newB(newLoggingNode); | 81 return DefaultEither.newB(newLoggingNode); |
81 } | 82 } |
82 } | 83 } |