view src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java @ 65:ebf42371454b

remove warning
author one
date Wed, 14 Aug 2013 17:44:09 +0900
parents 8a532ca5df80
children
line wrap: on
line source

package jungle.test.bbs.codesegment;



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;
import jungle.test.bbs.JungleManager;
import alice.codesegment.CodeSegment;
import alice.datasegment.CommandType;
import alice.datasegment.Receiver;
import alice.jungle.datasegment.HashSetDataSegment;
import alice.jungle.datasegment.store.operations.DefaultTreeOperationLogContainer;

public class ChildLogCheckCodeSegment extends CodeSegment {
	
	Receiver host = ids.create(CommandType.PEEK);
	Receiver childLog = ids.create(CommandType.TAKE);
	Receiver hashLog = ids.create(CommandType.PEEK);	
	
	public ChildLogCheckCodeSegment() {
		host.setKey("host");
		childLog.setKey("local","childLog");
		hashLog.setKey("hashLog");
	}

	public ChildLogCheckCodeSegment(int index) {
		host.setKey("host");
		childLog.setKey("local","childLog", index);
		hashLog.setKey("hashLog");
	}

	public void run() {
		int index = childLog.index;
		String hostName = host.asString();
		DefaultTreeOperationLogContainer container = childLog.asClass(DefaultTreeOperationLogContainer.class);		
		HashSetDataSegment ds = hashLog.asClass(HashSetDataSegment.class);
		if(ds.hash.contains(container.getHashLogString())) {
			ods.update("hashLog", ds);		
			new LogUpdateCodeSegment(index);
			return;
		}
		Either<Error, JungleTreeEditor> either = JungleManager.update(container);
		if(either.isA()) {
			throw new IllegalStateException();			
		}
		ds.hash.add(container.getHashLogString());
		ods.update("hashLog", ds);
		ods.put("log", container);
		new ChildLogCheckCodeSegment(index);
		if(!hostName.equals("node0")) {
			ods.put("parent", "childLog", container);
		}
	}
}