1 package cz.cuni.amis.pogamut.ut2004.communication.translator.bot.transition;
2
3 import cz.cuni.amis.fsm.IFSMState;
4 import cz.cuni.amis.fsm.IFSMTransition;
5 import cz.cuni.amis.pogamut.base.communication.messages.InfoMessage;
6 import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldChangeEvent;
7 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.Item;
8 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.ItemListEnd;
9 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.ItemListStart;
10 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPoint;
11 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPointListEnd;
12 import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPointListStart;
13 import cz.cuni.amis.pogamut.ut2004.communication.translator.TranslatorContext;
14 import cz.cuni.amis.pogamut.ut2004.communication.translator.shared.events.MapPointListObtained;
15
16 public class HandshakeEndTransition implements IFSMTransition<InfoMessage, TranslatorContext> {
17
18 @Override
19 public void init(TranslatorContext context) {
20 }
21
22 @Override
23 public void restart(TranslatorContext context) {
24 }
25
26 @Override
27 public void stepped(TranslatorContext context,
28 IFSMState<InfoMessage, TranslatorContext> fromState,
29 InfoMessage bySymbol,
30 IFSMState<InfoMessage, TranslatorContext> toState) {
31
32 long simTime = (bySymbol instanceof IWorldChangeEvent ? ((IWorldChangeEvent)bySymbol).getSimTime() : 0);
33
34
35 context.processNavPointLinks();
36
37 context.processNavPointsAndItems();
38
39
40 if (context.getNavPoints() != null) {
41 context.getEventQueue().pushEvent(new NavPointListStart());
42 for (NavPoint np : context.getNavPoints().values()) {
43 context.getEventQueue().pushEvent(np);
44 }
45 context.getEventQueue().pushEvent(new NavPointListEnd());
46 }
47
48
49 if (context.getItems() != null) {
50 context.getEventQueue().pushEvent(new ItemListStart());
51 for (Item item : context.getItems().values()) {
52 context.getEventQueue().pushEvent(item);
53 }
54 context.getEventQueue().pushEvent(new ItemListEnd());
55 }
56
57
58 context.getEventQueue().pushEvent(new MapPointListObtained(context.getNavPoints(), context.getItems(), simTime));
59 }
60
61 @Override
62 public String toString() {
63 return getClass().getSimpleName();
64 }
65
66 }