view src/jungle/test/bbs/codesegment/ChildLogCheckCodeSegment.java @ 50:459b50f1a6ee

add ChildLogCheckCodeSegment.
author one
date Fri, 12 Jul 2013 20:39:02 +0900
parents
children 9e782b4eb06e
line wrap: on
line source

package jungle.test.bbs.codesegment;

import java.io.IOException;

import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTree;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.JungleTreeEditor;
import jp.ac.u_ryukyu.ie.cr.shoshi.jungle.store.impl.logger.DefaultTreeOperationLog;
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.store.operations.DefaultTreeOperationLogContainer;

public class ChildLogCheckCodeSegment extends CodeSegment {
	
	Receiver childLog = ids.create(CommandType.TAKE);
	
	public ChildLogCheckCodeSegment() {
		childLog.setKey("childLog");
	}
	
	public void run() {
		DefaultTreeOperationLogContainer container = childLog.asClass(DefaultTreeOperationLogContainer.class);		
		DefaultTreeOperationLog log = null;
		try {
			log = container.convert();
		} catch (IOException e) {
			e.printStackTrace();
		}
		JungleTree tree = JungleManager.getJungle().getTreeByName("boards");
		JungleTreeEditor editor = tree.getTreeEditor();
		Either<Error, JungleTreeEditor> either = JungleManager.edit(editor, log);
		if(either.isA()) {
			throw new IllegalStateException();
		}
		editor = either.b();
		either = editor.success();
		if(either.isA()) {
			throw new IllegalStateException();			
		}		
		ods.put("log", container);
		new ChildLogCheckCodeSegment();
	}
	

}