View Javadoc

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  		// PROCESS NAVIGATION GRAPHS
35  		context.processNavPointLinks();
36  		// PROCESS NAVPOINT<->ITEM BINDING
37  		context.processNavPointsAndItems();
38  		
39  		// EXPORT NAVIGATION GRAPH
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  		// EXPORT ITEMS
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  		// EXPORT GENERAL EVENT
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  }