Mercurial > hg > Database > jungle-network
view src/test/alice/jungle/PersistentExample.java @ 83:b3ccefdf2b43
Added PersistentExample
author | one |
---|---|
date | Fri, 25 Oct 2013 18:44:29 +0900 |
parents | |
children |
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.core.NetworkDefaultJungle; import alice.jungle.operations.NetworkNodePath; import alice.jungle.persistence.NetworkJournal; /* * Hello World */ public class PersistentExample { public static void main(String[] args) throws IOException { NetworkJournal journal = new NetworkJournal( new File("./log/commit.log")); Jungle jungle = new NetworkDefaultJungle(journal, "uuid", new DefaultTreeEditor(new DefaultTraverser()), "node00"); 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(); NetworkJournal journal2 = new NetworkJournal(new File("./log/commit.log")); ChangeListReader reader = journal2.getReader(); ChangeList chList = reader.read(); for (; chList != null; chList = reader.read()) { 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 (value.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)); } } } }