1 package cz.cuni.amis.pogamut.ut2004.communication.translator.observer.state;
2
3 import cz.cuni.amis.fsm.FSMState;
4 import cz.cuni.amis.fsm.FSMTransition;
5 import cz.cuni.amis.fsm.IFSMState;
6 import cz.cuni.amis.pogamut.base.communication.messages.InfoMessage;
7 import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldChangeEvent;
8 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.Mutator;
9 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.MutatorListEnd;
10 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.MutatorListStart;
11 import cz.cuni.amis.pogamut.ut2004.communication.translator.TranslatorContext;
12 import cz.cuni.amis.pogamut.ut2004.communication.translator.observer.support.ObserverListState;
13 import cz.cuni.amis.pogamut.ut2004.communication.translator.shared.events.MutatorListObtained;
14
15
16
17
18
19
20
21 @FSMState(map={
22 @FSMTransition(
23 state=ObserverRunningState.class,
24 symbol={MutatorListEnd.class},
25 transition={})
26 }
27 )
28 public class MutatorListState extends ObserverListState<Mutator, TranslatorContext>{
29
30 public MutatorListState() {
31 super(MutatorListStart.class, Mutator.class, MutatorListEnd.class);
32 }
33
34 @Override
35 public void stateEntering(TranslatorContext context, IFSMState<InfoMessage, TranslatorContext> fromState, InfoMessage symbol) {
36 super.restart(context);
37 super.stateEntering(context, fromState, symbol);
38 }
39
40 @Override
41 public void stateLeaving(TranslatorContext context, IFSMState<InfoMessage, TranslatorContext> toState, InfoMessage symbol) {
42 super.stateLeaving(context, toState, symbol);
43 long simTime =
44 (symbol instanceof IWorldChangeEvent ? ((IWorldChangeEvent)symbol).getSimTime() : 0);
45 context.getEventQueue().pushEvent(new MutatorListObtained(getList(), simTime));
46 newList();
47 }
48
49 @Override
50 protected void innerStateSymbol(TranslatorContext context,
51 InfoMessage symbol) {
52 super.innerStateSymbol(context, symbol);
53 if (symbol instanceof Mutator) {
54 context.getEventQueue().pushEvent((Mutator)symbol);
55 }
56 }
57
58 }