diff src/alice/jungle/codesegment/LogUpdateCodeSegment.java @ 52:61b2de3f7730

add HashSetDataSegment and HashLogUpdateCodeSegment. fix bugs
author one
date Sat, 13 Jul 2013 17:10:14 +0900
parents 9e782b4eb06e
children ccfe9b5e8f11
line wrap: on
line diff
--- a/src/alice/jungle/codesegment/LogUpdateCodeSegment.java	Sat Jul 13 15:59:47 2013 +0900
+++ b/src/alice/jungle/codesegment/LogUpdateCodeSegment.java	Sat Jul 13 17:10:14 2013 +0900
@@ -11,30 +11,37 @@
 import alice.codesegment.CodeSegment;
 import alice.datasegment.CommandType;
 import alice.datasegment.Receiver;
+import alice.jungle.datasegment.HashSetDataSegment;
 import alice.jungle.datasegment.store.operations.DefaultTreeOperationLogContainer;
 import alice.jungle.transaction.NetworkDefaultJungleTreeEditor;
 
 public class LogUpdateCodeSegment extends CodeSegment {
 	
-	public Receiver arg1 = ids.create(CommandType.PEEK);
-	public Receiver host = ids.create(CommandType.PEEK);
+	Receiver parentLog = ids.create(CommandType.PEEK);
+	Receiver host = ids.create(CommandType.PEEK);
+	Receiver hashLog = ids.create(CommandType.PEEK);
 	
 	public LogUpdateCodeSegment() {
-		arg1.setKey("parent", "log");
+		parentLog.setKey("parent", "log");
 		host.setKey("host");
+		hashLog.setKey("hashLog");
 	}
 	
 	public LogUpdateCodeSegment(int index) {
-		arg1.setKey("parent", "log", index);
+		parentLog.setKey("parent", "log", index);
 		host.setKey("host");
+		hashLog.setKey("hashLog");		
 	}
 	
 	public void run() {
 		System.out.println("--LogUpdateCodeSegment--");
-		int index = arg1.index;
+		int index = parentLog.index;
 		String h = host.asString();
-		DefaultTreeOperationLogContainer container = arg1.asClass(DefaultTreeOperationLogContainer.class);
-		if(updaterIsMe(h, container)) {
+		DefaultTreeOperationLogContainer container = parentLog.asClass(DefaultTreeOperationLogContainer.class);
+		HashSetDataSegment ds = hashLog.asClass(HashSetDataSegment.class);
+		System.out.println(container.getHashLogString());
+		if(ds.hash.contains(container.getHashLogString())) {
+			ods.update("hashLog", ds);		
 			new LogUpdateCodeSegment(index);
 			return;
 		}
@@ -61,6 +68,9 @@
 		if(either.isA()) {
 			throw new IllegalStateException();			
 		}
+		ds.hash.add(container.getHashLogString());
+		ods.update("hashLog", ds);		
+		System.out.println("ods.put log container");
 		ods.put("log", container);
 		new LogUpdateCodeSegment(index);
 	}