Mercurial > hg > Database > jungle-network
diff src/jungle/test/bbs/NetworkJungleBulletinBoard.java @ 46:fd3643699f83
modified pom.xml. fix conflict log4j libraries
author | one |
---|---|
date | Fri, 12 Jul 2013 11:27:00 +0900 |
parents | bf3dc481cc9b |
children | 686057add8a4 |
line wrap: on
line diff
--- a/src/jungle/test/bbs/NetworkJungleBulletinBoard.java Fri Jul 12 09:47:22 2013 +0900 +++ b/src/jungle/test/bbs/NetworkJungleBulletinBoard.java Fri Jul 12 11:27:00 2013 +0900 @@ -1,9 +1,12 @@ package jungle.test.bbs; +import java.io.IOException; import java.nio.ByteBuffer; import java.util.concurrent.atomic.AtomicInteger; import alice.jungle.core.NetworkDefaultJungle; +import alice.jungle.datasegment.store.operations.DefaultTreeOperationLogContainer; +import alice.jungle.transaction.NetworkDefaultJungleTreeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.DefaultJungle; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.Jungle; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree; @@ -12,6 +15,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.core.Node; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultNodePath; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.DefaultTreeEditor; +import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.operations.TreeOperation; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.EditableNode; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.trasnformer.NodeEditor; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.traverser.DefaultTraverser; @@ -19,6 +23,7 @@ import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error; import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.IterableConverter; +import jungle.test.bbs.codesegment.NullCodeSegmentForUpdate; public class NetworkJungleBulletinBoard implements BulletinBoard { @@ -29,7 +34,7 @@ { Jungle _j = new NetworkDefaultJungle(null,"hoge",new DefaultTreeEditor(new DefaultTraverser()), _serverName); JungleManager.setJungle(_j); - jungle = jm.getJungle(); + jungle = JungleManager.getJungle(); jungle.createNewTree("boards"); } @@ -73,6 +78,12 @@ if(result.isA()){ throw new IllegalStateException(); } + /* Put DataSegment */ + try { + putTreeOperationLog((NetworkDefaultJungleTreeEditor)result.b()); + } catch (IOException e1) { + e1.printStackTrace(); + } tree = jungle.getTreeByName(_name); editor = tree.getTreeEditor(); @@ -97,6 +108,13 @@ } editor = either.b(); editor.success(); + /* Put DataSegment */ + try { + putTreeOperationLog((NetworkDefaultJungleTreeEditor)result.b()); + } catch (IOException e1) { + e1.printStackTrace(); + } + } public void createBoardMessage(final String _board,final String _author,final String _message,final String _editKey) @@ -107,13 +125,14 @@ } JungleTreeEditor editor; + Either<Error, JungleTreeEditor> either; do{ Node node = tree.getRootNode(); int size = node.getChildren().size(); DefaultNodePath path = new DefaultNodePath(); editor = tree.getTreeEditor(); - Either<Error, JungleTreeEditor> either = editor.addNewChildAt(path,size); + either = editor.addNewChildAt(path,size); if(either.isA()){ throw new IllegalStateException(); } @@ -134,12 +153,21 @@ throw new IllegalStateException(); } editor = either.b(); - }while(editor.success().isA()); + + either = editor.success(); + /* Put DataSegment */ + try { + putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor); + } catch (IOException e1) { + e1.printStackTrace(); + } + }while(either.isA()); } public void editMessage(String _board,String _uuid,final String _author,final String _message,final String _editKey) { JungleTreeEditor editor = null; + Either<Error,JungleTreeEditor> either = null; do{ DefaultNodePath path = new DefaultNodePath(); path = path.add(Integer.parseInt(_uuid)); @@ -155,12 +183,19 @@ } }; - Either<Error,JungleTreeEditor> either = editor.edit(path,e); + either = editor.edit(path,e); if(either.isA()){ throw new IllegalStateException(); } editor = either.b(); - }while(editor.success().isA()); + either = editor.success(); + /* Put DataSegment */ + try { + putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor); + } catch (IOException e1) { + e1.printStackTrace(); + } + }while(either.isA()); } public Iterable<BoardMessage> getMessages(String _boardName) @@ -183,6 +218,27 @@ return new IterableConverter<BoardMessage,Node>(chs,converter); } + private void putTreeOperationLog(NetworkDefaultJungleTreeEditor editor) throws IOException { + String uuid = editor.getID(); + String treeName = editor.getTreeName(); + String serverName = editor.getServerName(); + long revision = Long.parseLong(editor.getRevision()); + Iterable<TreeOperation> log = editor.getTreeOperationLog(); + putDataSegment(uuid, treeName, serverName, log, revision); + } + + private void putDataSegment(String _uuid, String _treeName, String _serverName, Iterable<TreeOperation> _log, long nextRevision) throws IOException { + DefaultTreeOperationLogContainer container = new DefaultTreeOperationLogContainer(); + container.setTreeName(_treeName); + container.setUUID(_uuid); + container.setServerName(_serverName); + container.setRevision(nextRevision); + container.unconvert(_log); + NullCodeSegmentForUpdate cs = new NullCodeSegmentForUpdate(); + cs.ods.put("local", "log", container); + } + + private static class BoardMessageImpl implements BoardMessage { private final String author;