comparison src/main/java/jp/ac/u_ryukyu/ie/cr/shoshi/jungle/store/impl/DefaultTreeEditor.java @ 25:1b448f9249ee

mark
author Shoshi TAMAKI
date Sun, 13 Jan 2013 20:52:19 +0900
parents 3ef2a66a8c5d
children 5f4172d6fb8b
comparison
equal deleted inserted replaced
24:ec033569ab8f 25:1b448f9249ee
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditorError; 12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.TreeEditorError;
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.AppendChildAt; 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.AppendChildAt;
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteAttribute; 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteAttribute;
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteChildAt; 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.DeleteChildAt;
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor; 16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor;
17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.SetAttribute; 17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.PutAttribute;
18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverseEvaluator; 18 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverseEvaluator;
19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; 19 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal; 20 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traversal;
21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.TraverseResult;
22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traverser; 21 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.Traverser;
23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither; 22 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.DefaultEither;
24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; 23 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
25 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; 24 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
26 25
55 } 54 }
56 55
57 @Override 56 @Override
58 public Either<Error,TreeEditor> putAttribute(NodePath _path, String _key,ByteBuffer _value) 57 public Either<Error,TreeEditor> putAttribute(NodePath _path, String _key,ByteBuffer _value)
59 { 58 {
60 return edit(_path,new SetAttribute(_key,_value)); 59 return edit(_path,new PutAttribute(_key,_value));
61 } 60 }
62 61
63 @Override 62 @Override
64 public Either<Error,TreeEditor> deleteAttribute(NodePath _path, String _key) 63 public Either<Error,TreeEditor> deleteAttribute(NodePath _path, String _key)
65 { 64 {
73 } 72 }
74 73
75 @Override 74 @Override
76 public Either<Error,TreeEditor> edit(NodePath _path, NodeEditor _editor) 75 public Either<Error,TreeEditor> edit(NodePath _path, NodeEditor _editor)
77 { 76 {
78 Tree t = tip.getTree(); 77 Tree tree = tip.getTree();
79 Traverser traverser = new DefaultTraverser(); 78 Traverser traverser = new DefaultTraverser();
80 DefaultTraverseEvaluator te = new DefaultTraverseEvaluator(_path); 79 DefaultTraverseEvaluator te = new DefaultTraverseEvaluator(_path);
81 Iterable<Traversal> result = traverser.traverse(t,te);
82 Iterator<Traversal> itr = result.iterator();
83 80
84 if(itr.hasNext()){ 81 for(Traversal traversal : traverser.traverse(tree,te)){
85 Traversal r = itr.next(); 82 return clone(traversal);
86 cloneAndApplyToNodeEditorFromRoot(r,_editor);
87 } 83 }
88 84
89 return DefaultEither.newA(TreeEditorError.NODEPATH_NOTFOUND); 85 return DefaultEither.newA(TreeEditorError.NODEPATH_NOTFOUND);
86 }
87
88 public Either<Error,TreeEditor> clone(Traversal _traversal)
89 {
90 for(Node node : _traversal){
91 DefaultNode defNode = (DefaultNode)node;
92 }
93 return null;
90 } 94 }
91 95
92 public void cloneAndApplyToNodeEditorFromRoot(Traversal _r,NodeEditor _editor) 96 public void cloneAndApplyToNodeEditorFromRoot(Traversal _r,NodeEditor _editor)
93 { 97 {
94 LinkedList<DefaultNode> path = new LinkedList<DefaultNode>(); 98 LinkedList<DefaultNode> path = new LinkedList<DefaultNode>();