# HG changeset patch # User one # Date 1372674977 -32400 # Node ID 16ea4835f36ea2ade905ce36173d555bb5db5d1e # Parent e968224ad0ceb0fc56bfaa60d2c1b1b5d6a64da8 modified LogReadCodeSegment diff -r e968224ad0ce -r 16ea4835f36e src/jungle/test/core/practice/LogReadCodeSegment.java --- a/src/jungle/test/core/practice/LogReadCodeSegment.java Mon Jul 01 19:14:24 2013 +0900 +++ b/src/jungle/test/core/practice/LogReadCodeSegment.java Mon Jul 01 19:36:17 2013 +0900 @@ -1,11 +1,16 @@ package jungle.test.core.practice; import java.io.IOException; +import java.nio.ByteBuffer; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.Command; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.NodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.NodeOperation; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; import jungle.test.codesegment.operation.JungleManager; @@ -33,19 +38,53 @@ } catch (IOException e) { e.printStackTrace(); } - JungleManager jm = new JungleManager(); Jungle jungle = jm.getJungle(); JungleTree tree = jungle.getTreeByName("tree"); - NetworkDefaultJungleTreeEditor nEditor = (NetworkDefaultJungleTreeEditor) tree.getTreeEditor(); - JungleTreeEditor editor = nEditor.setNewLogAndGetEditor(log); - Either either = editor.success(); - if(either.isA()) { - throw new IllegalStateException(); + JungleTreeEditor editor = tree.getTreeEditor(); + Either either = null; + for (TreeOperation op : log) { + either = edit(editor, op); + if(either.isA()) { + throw new IllegalStateException(); + } + editor = either.b(); } + editor.success(); new PrintChildrenAttribute("key1"); ods.update("key1", "key1"); } + public Either edit(JungleTreeEditor editor, + TreeOperation op) { + NodePath path = op.getNodePath(); + NodeOperation nodeOp = op.getNodeOperation(); + Command c = nodeOp.getCommand(); + String str = ""; + String key = ""; + switch (c) { + case PUT_ATTRIBUTE: + key = nodeOp.getKey(); + ByteBuffer value = nodeOp.getValue(); + if (value.limit() < 100) { + str = String.format("key:%s,value:%s", key, + new String(value.array())); + } else { + str = String.format("key:%s,value:%d", key, value.limit()); + } + return editor.putAttribute(path, key, value); + case DELETE_ATTRIBUTE: + key = nodeOp.getKey(); + str = String.format("key:%s", nodeOp.getKey()); + return editor.deleteAttribute(path, key); + case APPEND_CHILD: + str = String.format("pos:%d", nodeOp.getPosition()); + return editor.addNewChildAt(path, 0); + case DELETE_CHILD: + str = String.format("pos:%d", nodeOp.getPosition()); + return editor.deleteChildAt(path, 0); + } + return null; + } }