comparison src/jungle/test/bbs/JungleManager.java @ 56:ccfe9b5e8f11

bug LogUpdateCodeSegment
author one
date Sun, 14 Jul 2013 21:26:49 +0900
parents bf3dc481cc9b
children 8a532ca5df80
comparison
equal deleted inserted replaced
55:25edf76b65dc 56:ccfe9b5e8f11
7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; 7 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle;
8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; 8 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; 9 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command; 10 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command;
11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; 11 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath;
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath;
12 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; 13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor;
13 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog; 14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.TreeOperationLog;
14 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; 15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation;
15 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; 16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation;
16 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; 17 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser;
69 return editor.addNewChildAt(path, 0); 70 return editor.addNewChildAt(path, 0);
70 case DELETE_CHILD: 71 case DELETE_CHILD:
71 return editor.deleteChildAt(path, 0); 72 return editor.deleteChildAt(path, 0);
72 } 73 }
73 return null; 74 return null;
74 } 75 }
76
77
78 public static Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor ,TreeOperationLog _log, int pos) {
79 System.out.println("--path editor--");
80 JungleTreeEditor editor = _editor;
81 Either<Error, JungleTreeEditor> either = null;
82 for (TreeOperation op : _log) {
83 either = _edit(editor, op, pos);
84 if(either.isA()) {
85 return either;
86 }
87 editor = either.b();
88 }
89 return either;
90 }
91
92 private static Either<Error, JungleTreeEditor> _edit(JungleTreeEditor editor,
93 TreeOperation op, int pos) {
94 DefaultNodePath path = new DefaultNodePath();
95 NodeOperation nodeOp = op.getNodeOperation();
96 Command c = nodeOp.getCommand();
97 String key = "";
98 switch (c) {
99 case PUT_ATTRIBUTE:
100 path = path.add(pos);
101 key = nodeOp.getKey();
102 ByteBuffer value = nodeOp.getValue();
103 return editor.putAttribute(path, key, value);
104 case DELETE_ATTRIBUTE:
105 key = nodeOp.getKey();
106 return editor.deleteAttribute(path, key);
107 case APPEND_CHILD:
108 return editor.addNewChildAt(path, pos);
109 case DELETE_CHILD:
110 return editor.deleteChildAt(path, 0);
111 }
112 return null;
113 }
114
115
75 } 116 }