diff src/jungle/app/bbs/codesegment/LogUpdateCodeSegment.java @ 96:fcce7ca4adb9

Modified LogUpdateCodesegment
author one
date Mon, 18 Nov 2013 19:34:15 +0900
parents 87ec5dd0dc27
children 11ad00323206
line wrap: on
line diff
--- a/src/jungle/app/bbs/codesegment/LogUpdateCodeSegment.java	Mon Nov 18 17:08:17 2013 +0900
+++ b/src/jungle/app/bbs/codesegment/LogUpdateCodeSegment.java	Mon Nov 18 19:34:15 2013 +0900
@@ -2,6 +2,8 @@
 
 
 
+import java.util.List;
+
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Either;
 import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.util.Error;
@@ -9,44 +11,44 @@
 import alice.codesegment.CodeSegment;
 import alice.datasegment.CommandType;
 import alice.datasegment.Receiver;
-import alice.jungle.datasegment.HashSetDataSegment;
-import alice.jungle.datasegment.store.container.DefaultTreeOperationLogContainer;
+import alice.jungle.operations.NetworkTreeOperationLog;
 
 public class LogUpdateCodeSegment extends CodeSegment {
 	
-	Receiver parentLog = ids.create(CommandType.PEEK);
+	Receiver log = ids.create(CommandType.PEEK);
 	Receiver host = ids.create(CommandType.PEEK);
-	Receiver hashLog = ids.create(CommandType.PEEK);
+	Receiver clist = ids.create(CommandType.PEEK);
+	
 	
 	public LogUpdateCodeSegment() {
-		parentLog.setKey("parent", "log");
+		log.setKey("log");
 		host.setKey("host");
-		hashLog.setKey("hashLog");
+		clist.setKey("_CLIST");;
 	}
 	
 	public LogUpdateCodeSegment(int index) {
-		parentLog.setKey("parent", "log", index);
+		log.setKey("log", index);
 		host.setKey("host");
-		hashLog.setKey("hashLog");
+		clist.setKey("_CLIST");;
 	}
 	
 	public void run() {
-		int index = parentLog.index;
-//		String hostName = host.asString();
-		DefaultTreeOperationLogContainer container = parentLog.asClass(DefaultTreeOperationLogContainer.class);
-		HashSetDataSegment ds = hashLog.asClass(HashSetDataSegment.class);
-		if(ds.hash.contains(container.getHashLogString())) {
-			ods.update("hashLog", ds);		
-			new LogUpdateCodeSegment(index);
-			return;
+		int index = log.index;
+		NetworkTreeOperationLog netLog = log.asClass(NetworkTreeOperationLog.class);
+		String hostName = host.asString();
+		@SuppressWarnings("unchecked")
+		List<String> list = clist.asClass(List.class);
+		if (!hostName.equals((log.from))) {
+			Either<Error, JungleTreeEditor> either = JungleManager.update(netLog);
+			if(either.isA()) {
+				throw new IllegalStateException();				
+			}
 		}
-		Either<Error, JungleTreeEditor> either = JungleManager.update(container);
-		if(either.isA()) {
-			throw new IllegalStateException();			
+		for (String node : list) {
+			if (!node.equals(log.from)) {
+				ods.update(node, log.key, log.getVal());
+			}
 		}
-		ds.hash.add(container.getHashLogString());
-		ods.update("hashLog", ds);		
-		ods.put("log", container);
 		new LogUpdateCodeSegment(index);
 	}
 }