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;