annotate src/alice/test/dpp/codesegment/TakeForkCodeSegment.java @ 14:33727db069c2

add ScheduleCodeSegment. modified CodeSegment
author one
date Wed, 28 Nov 2012 17:41:42 +0900
parents bfaaebb50a2e
children 7e91e919a7de
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
1 package alice.test.dpp.codesegment;
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
2
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
3 import alice.codesegment.CodeSegment;
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
4 import alice.datasegment.CommandType;
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
5 import alice.datasegment.Receiver;
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
6 import alice.test.dpp.model.Fork;
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
7 import alice.test.dpp.model.Philosophy;
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
8
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
9 public class TakeForkCodeSegment extends CodeSegment {
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
10
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
11 Receiver arg1 = ids.create(CommandType.TAKE);
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
12 Receiver arg2 = ids.create(CommandType.TAKE);
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
13 Receiver arg3 = ids.create(CommandType.TAKE);
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
15 public TakeForkCodeSegment(String pName, String rFork, String lFork) {
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
16 arg1.setKey(pName);
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
17 arg2.setKey(rFork);
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
18 arg3.setKey(lFork);
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
19 }
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
20
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
21 @Override
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
22 public void run() {
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
23 Philosophy phil = arg1.asClass(Philosophy.class);
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
24 Fork rightFork = arg2.asClass(Fork.class);
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
25 Fork leftFork = arg3.asClass(Fork.class);
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
26 System.out.println(phil.getName() + " is trying to take the fork.");
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
27 if (leftFork.getFork(phil.getName()) && rightFork.getFork(phil.getName()) ) {
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
28 phil.setState(Philosophy.State.EAT);
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
29 } else {
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
30 leftFork.onTheTable(phil.getName());
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
31 rightFork.onTheTable(phil.getName());
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
32 }
14
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
33 new ScheduleCodeSegment(phil.getName());
33727db069c2 add ScheduleCodeSegment. modified CodeSegment
one
parents: 12
diff changeset
34 ods.update("local", phil.getName(), phil);
5
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
35 ods.update("local", leftFork.getForkName(), leftFork);
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
36 ods.update("local", rightFork.getForkName(), rightFork);
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
37 }
2db314b1a970 add EatCodeSegment TakeForkCodeSegment, ForkState, Table
one
parents:
diff changeset
38 }