changeset 51:9e782b4eb06e

add HashSetConvertDataSegment
author one
date Sat, 13 Jul 2013 15:59:47 +0900
parents 459b50f1a6ee
children 61b2de3f7730
files src/alice/jungle/codesegment/LogUpdateCodeSegment.java src/jungle/test/bbs/NetworkJungleBulletinBoard.java src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java src/jungle/test/codesegment/persistence/AliceJournal.java src/test/alice/jungle/codesegment/HashSetConvertTest.java
diffstat 5 files changed, 72 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/src/alice/jungle/codesegment/LogUpdateCodeSegment.java	Fri Jul 12 20:39:02 2013 +0900
+++ b/src/alice/jungle/codesegment/LogUpdateCodeSegment.java	Sat Jul 13 15:59:47 2013 +0900
@@ -30,11 +30,12 @@
 	}
 	
 	public void run() {
+		System.out.println("--LogUpdateCodeSegment--");
 		int index = arg1.index;
 		String h = host.asString();
 		DefaultTreeOperationLogContainer container = arg1.asClass(DefaultTreeOperationLogContainer.class);
 		if(updaterIsMe(h, container)) {
-			new LogUpdateCodeSegment(index+1);
+			new LogUpdateCodeSegment(index);
 			return;
 		}
 		DefaultTreeOperationLog log = null;
@@ -43,7 +44,13 @@
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
-		JungleTree tree = JungleManager.getJungle().getTreeByName("boards");
+		String treeName = container.getTreeName();
+		if (JungleManager.getJungle().getTreeByName(treeName) == null) {
+			if(null == JungleManager.getJungle().createNewTree(treeName)){
+				throw new IllegalStateException();
+			}
+		}
+		JungleTree tree = JungleManager.getJungle().getTreeByName(treeName);
 		JungleTreeEditor editor = tree.getTreeEditor();
 		Either<Error, JungleTreeEditor> either = JungleManager.edit(editor, log);
 		if(either.isA()) {
@@ -55,7 +62,7 @@
 			throw new IllegalStateException();			
 		}
 		ods.put("log", container);
-		new LogUpdateCodeSegment(index+1);
+		new LogUpdateCodeSegment(index);
 	}
 	
 	private boolean updaterIsMe(String host, DefaultTreeOperationLogContainer container) {
--- a/src/jungle/test/bbs/NetworkJungleBulletinBoard.java	Fri Jul 12 20:39:02 2013 +0900
+++ b/src/jungle/test/bbs/NetworkJungleBulletinBoard.java	Sat Jul 13 15:59:47 2013 +0900
@@ -27,15 +27,13 @@
 
 public class NetworkJungleBulletinBoard implements BulletinBoard
 {
-	private JungleManager jm;
 	private final Jungle jungle;
 	
 	public NetworkJungleBulletinBoard(String _serverName)
 	{
-		Jungle _j = new NetworkDefaultJungle(null,"hoge",new DefaultTreeEditor(new DefaultTraverser()), _serverName);	
-		JungleManager.setJungle(_j);
-		jungle = JungleManager.getJungle();
+		jungle = new NetworkDefaultJungle(null,"hoge",new DefaultTreeEditor(new DefaultTraverser()), _serverName);	
 		jungle.createNewTree("boards");
+		JungleManager.setJungle(jungle);
 	}
 
 	public Iterable<String> getBoards()
@@ -137,7 +135,6 @@
 				throw new IllegalStateException();
 			}
 			editor = either.b();
-		
 			NodeEditor e = new NodeEditor(){
 				public <T extends EditableNode<T>> Either<Error, T> edit(T _e){
 					_e = _e.getAttributes().put("author",ByteBuffer.wrap(_author.getBytes())).b();
@@ -146,28 +143,26 @@
 					return DefaultEither.newB(_e);
 				}
 			};
-		
 			path = path.add(size);
 			either = editor.edit(path,e);
 			if(either.isA()){
 				throw new IllegalStateException();
 			}
 			editor = either.b();
-
 			either = editor.success();
-			/* Put DataSegment */
 			try {
 				putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor);
 			} catch (IOException e1) {
 				e1.printStackTrace();
 			}
 		}while(either.isA());
+		/* Put DataSegment */
 	}
 
 	public void editMessage(String _board,String _uuid,final String _author,final String _message,final String _editKey)
 	{
 		JungleTreeEditor editor = null;
-		Either<Error,JungleTreeEditor>  either = null;
+		Either<Error,JungleTreeEditor> either = null;
 		do{
 			DefaultNodePath path = new DefaultNodePath();
 			path = path.add(Integer.parseInt(_uuid));
@@ -189,7 +184,6 @@
 			}
 			editor = either.b();
 			either = editor.success();
-			/* Put DataSegment */
 			try {
 				putTreeOperationLog((NetworkDefaultJungleTreeEditor)editor);
 			} catch (IOException e1) {
@@ -238,7 +232,7 @@
 		cs.ods.put("log", container);
 		/* If this node isn't Root node, push log to parent node's DS */
 		if(!_updaterName.equals("node0")) {
-			cs.ods.put("parent", "childLog");
+			cs.ods.put("parent", "childLog", container);
 		}
 	}
 
--- a/src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java	Fri Jul 12 20:39:02 2013 +0900
+++ b/src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java	Sat Jul 13 15:59:47 2013 +0900
@@ -16,12 +16,16 @@
 public class ChildLogCheckCodeSegment extends CodeSegment {
 	
 	Receiver childLog = ids.create(CommandType.TAKE);
+	Receiver host = ids.create(CommandType.PEEK);
 	
 	public ChildLogCheckCodeSegment() {
-		childLog.setKey("childLog");
+		host.setKey("host");
+		childLog.setKey("local","childLog");
 	}
 	
 	public void run() {
+		System.out.println("--ChildLogCheckCodeSegment--");
+		String hostName = host.asString();
 		DefaultTreeOperationLogContainer container = childLog.asClass(DefaultTreeOperationLogContainer.class);		
 		DefaultTreeOperationLog log = null;
 		try {
@@ -29,7 +33,13 @@
 		} catch (IOException e) {
 			e.printStackTrace();
 		}
-		JungleTree tree = JungleManager.getJungle().getTreeByName("boards");
+		String treeName = container.getTreeName();
+		if (JungleManager.getJungle().getTreeByName(treeName) == null) {
+			if(null == JungleManager.getJungle().createNewTree(treeName)){
+				throw new IllegalStateException();
+			}
+		}
+		JungleTree tree = JungleManager.getJungle().getTreeByName(treeName);
 		JungleTreeEditor editor = tree.getTreeEditor();
 		Either<Error, JungleTreeEditor> either = JungleManager.edit(editor, log);
 		if(either.isA()) {
@@ -42,6 +52,10 @@
 		}		
 		ods.put("log", container);
 		new ChildLogCheckCodeSegment();
+		if(!hostName.equals("node0")) {
+			
+			ods.put("parent", "childLog", container);
+		}
 	}
 	
 
--- a/src/jungle/test/codesegment/persistence/AliceJournal.java	Fri Jul 12 20:39:02 2013 +0900
+++ b/src/jungle/test/codesegment/persistence/AliceJournal.java	Sat Jul 13 15:59:47 2013 +0900
@@ -33,7 +33,6 @@
 		@Override
 		public Result write(ChangeList _operations)
 		{
-/*
 			for(TreeOperation op : _operations){
 				NodePath p = op.getNodePath();
 				NodeOperation nodeOp = op.getNodeOperation();
@@ -61,7 +60,6 @@
 				}
 				System.out.println(String.format("[%s:%s:%s]",c,p,args));
 			}
-*/
 			return Result.SUCCESS;
 		}
 	}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/test/alice/jungle/codesegment/HashSetConvertTest.java	Sat Jul 13 15:59:47 2013 +0900
@@ -0,0 +1,41 @@
+package test.alice.jungle.codesegment;
+
+import java.util.HashSet;
+
+import org.msgpack.annotation.Message;
+
+import alice.codesegment.CodeSegment;
+import alice.datasegment.CommandType;
+import alice.datasegment.Receiver;
+
+public class HashSetConvertTest extends CodeSegment {
+	
+	Receiver hash = ids.create(CommandType.TAKE);
+
+	public HashSetConvertTest() {
+		hash.setKey("hash");
+	}
+	
+	public static void main(String[] args) {
+		HashSetDataSegment h = new HashSetDataSegment();
+		h.hash.add("test1");
+		h.hash.add("test2");
+		
+		HashSetConvertTest cs = new HashSetConvertTest();
+		cs.ods.put("hash", h);
+	}
+	
+	public void run() {
+		HashSetDataSegment h = hash.asClass(HashSetDataSegment.class);
+		for(String s : h.hash ) {
+			System.out.println("s : "+s);
+		}
+		System.exit(0);
+	}
+	
+	@Message
+	private static class HashSetDataSegment {
+		public HashSet<String> hash = new HashSet<String>();		
+		public HashSetDataSegment() {}
+	}
+}