Mercurial > hg > Database > jungle-network
view src/jungle/test/core/practice/LogReadCodeSegment.java @ 66:29127ac788a6
move some files
author | one |
---|---|
date | Tue, 20 Aug 2013 17:38:09 +0900 |
parents | 686057add8a4 |
children | 87ec5dd0dc27 |
line wrap: on
line source
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.impl.logger.TreeOperationLog; 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.app.bbs.JungleManager; import alice.codesegment.CodeSegment; import alice.datasegment.CommandType; import alice.datasegment.Receiver; import alice.jungle.datasegment.store.operations.DefaultTreeOperationLogContainer; public class LogReadCodeSegment extends CodeSegment { Receiver arg1 = ids.create(CommandType.TAKE); public LogReadCodeSegment() { arg1.setKey("log"); } public void run() { System.out.println("--LogReadCodeSegment--"); DefaultTreeOperationLogContainer container = arg1.asClass(DefaultTreeOperationLogContainer.class); DefaultTreeOperationLog log = null; try { log = container.convert(); } catch (IOException e) { e.printStackTrace(); } Jungle jungle = JungleManager.getJungle(); JungleTree tree = jungle.getTreeByName("tree"); JungleTreeEditor editor = tree.getTreeEditor(); Either<Error, JungleTreeEditor> either = edit(editor, log); if (either.isA()) { throw new IllegalStateException(); } editor = either.b(); editor.success(); new PrintChildrenAttribute("key1"); ods.update("key1", "key1"); } private Either<Error, JungleTreeEditor> edit(JungleTreeEditor _editor ,TreeOperationLog _log) { JungleTreeEditor editor = _editor; Either<Error, JungleTreeEditor> either = null; for (TreeOperation op : _log) { either = _edit(editor, op); if(either.isA()) { return either; } editor = either.b(); } return either; } private Either<Error, JungleTreeEditor> _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; } }