view src/alice/test/dpp/codesegment/PutForkCodeSegment.java @ 14:33727db069c2

add ScheduleCodeSegment. modified CodeSegment
author one
date Wed, 28 Nov 2012 17:41:42 +0900
parents bfaaebb50a2e
children 92cde6277018
line wrap: on
line source

package alice.test.dpp.codesegment;

import alice.codesegment.CodeSegment;
import alice.datasegment.CommandType;
import alice.datasegment.Receiver;
import alice.test.dpp.model.Fork;
import alice.test.dpp.model.Philosophy;

public class PutForkCodeSegment extends CodeSegment {
	
	Receiver arg1 = ids.create(CommandType.TAKE);
	Receiver arg2 = ids.create(CommandType.TAKE);
	Receiver arg3 = ids.create(CommandType.TAKE);
	
	public PutForkCodeSegment(String pName, String rFork, String lFork) {
		arg1.setKey(pName);
		arg2.setKey(lFork);
		arg3.setKey(rFork);
	}
	
	@Override
	public void run() {
		Philosophy phil = arg1.asClass(Philosophy.class);
		Fork leftFork = arg2.asClass(Fork.class);
		Fork rightFork = arg3.asClass(Fork.class);
		System.out.println(phil.getName() +" put fork.");
		leftFork.onTheTable(phil.getName());
		rightFork.onTheTable(phil.getName());
		phil.setState(Philosophy.State.THINK);
		new ScheduleCodeSegment(phil.getName());
		ods.update("local", phil.getName(), phil);
		ods.update("local", leftFork.getForkName(), leftFork);
		ods.update("local", rightFork.getForkName(), rightFork);
	}

}