Mercurial > hg > Members > nobuyasu > jungle-network
view src/test/alice/jungle/PersistenJournalTest.java @ 87:f142dd4abc74
Implemented getTreeName and uuid method in some classes
author | one |
---|---|
date | Tue, 05 Nov 2013 08:41:12 +0900 |
parents | bcaf28f8244d |
children | f3f89613c7e3 |
line wrap: on
line source
package test.alice.jungle; import java.io.File; 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.core.Node; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeList; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.persistent.ChangeListReader; 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.DefaultTreeEditor; 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.traverser.DefaultTraverser; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; import alice.jungle.operations.NetworkNodePath; import alice.jungle.persistence.JungleUpdater; import alice.jungle.persistence.PersistentChangeList; import alice.jungle.persistence.PersistentJournal; import alice.jungle.persistence.PersistentJungle; public class PersistenJournalTest { public static void main(String[] args) throws IOException { PersistentJournal journal = new PersistentJournal( new File("./log/commit.log")); Jungle jungle = new PersistentJungle(journal, "uuid",new DefaultTreeEditor(new DefaultTraverser())); jungle.createNewTree("hoge"); JungleTree tree = jungle.getTreeByName("hoge"); JungleTreeEditor editor = tree.getTreeEditor(); NetworkNodePath path = new NetworkNodePath(); String key = "key"; ByteBuffer value = ByteBuffer.wrap("value".getBytes()); int pos = 0; Either<Error, JungleTreeEditor> either = editor.addNewChildAt(path, pos); if(either.isA()){ System.out.println("Failed addNewChildAt"); System.exit(0); } editor = either.b(); either = editor.putAttribute(path, key, value); JungleTreeEditor e = either.b(); e.success(); journal.close(); PersistentJournal journal2 = new PersistentJournal(); journal2.setInputFile(new File("./log/commit.log")); journal2.setOutputFile(new File("./log/commit2.log")); Jungle jungle2 = new PersistentJungle(journal, "uuid2", new DefaultTreeEditor(new DefaultTraverser())); ChangeListReader reader = journal2.getReader(); PersistentChangeList chList = (PersistentChangeList) reader.read(); for (; chList != null; chList = (PersistentChangeList) reader.read()) { String treeName = chList.getTreeName(); JungleTree tree2 = jungle2.getTreeByName(treeName); if(tree2 == null) { tree2 = jungle2.createNewTree(treeName); } JungleTreeEditor editor2 = tree2.getTreeEditor(); Either<Error, JungleTreeEditor> either2 = JungleUpdater.edit(editor2, chList.getTreeOperationLog()); if (either2.isA()) { System.err.println("JungleUpdater Error"); System.exit(0); } editor2 = either2.b(); editor2.success(); printChangeList(chList); System.out.println(); } JungleTree tree2 = jungle2.getTreeByName("hoge"); Node node = tree2.getRootNode(); System.out.println("Children size : "+node.getChildren().size()); journal2.close(); } public static void printChangeList(ChangeList chList) { for (TreeOperation op : chList) { NodePath p = op.getNodePath(); NodeOperation nodeOp = op.getNodeOperation(); Command c = nodeOp.getCommand(); String str = ""; switch (c) { case PUT_ATTRIBUTE: String opKey = nodeOp.getKey(); ByteBuffer opValue = nodeOp.getValue(); if (opValue.limit() < 100) { str = String.format("key:%s,value:%s", opKey, new String(opValue.array())); } else { str = String.format("key:%s,value:%d", opKey, opValue.limit()); } break; case DELETE_ATTRIBUTE: str = String.format("key:%s", nodeOp.getKey()); break; case APPEND_CHILD: str = String.format("pos:%d", nodeOp.getPosition()); break; case DELETE_CHILD: str = String.format("pos:%d", nodeOp.getPosition()); break; } System.out.println(String.format("[%s:%s:%s]", c, p, str)); } } }