View Javadoc

1   package cz.cuni.amis.pogamut.ut2004.communication.translator.bot.state;
2   
3   import java.util.HashMap;
4   import java.util.List;
5   import java.util.Map;
6   
7   import cz.cuni.amis.fsm.FSMState;
8   import cz.cuni.amis.fsm.FSMTransition;
9   import cz.cuni.amis.fsm.IFSMState;
10  import cz.cuni.amis.pogamut.base.communication.messages.InfoMessage;
11  import cz.cuni.amis.pogamut.unreal.communication.messages.UnrealId;
12  import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.Item;
13  import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.ItemListEnd;
14  import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.ItemListStart;
15  import cz.cuni.amis.pogamut.ut2004.communication.messages.gbinfomessages.NavPoint;
16  import cz.cuni.amis.pogamut.ut2004.communication.translator.TranslatorContext;
17  import cz.cuni.amis.pogamut.ut2004.communication.translator.bot.support.BotListState;
18  
19  @FSMState(
20  			map={
21  				@FSMTransition(
22  					state=HandshakeControllerState.class, 
23  					symbol={ItemListEnd.class}, 
24  					transition={}
25  				)
26  			}
27  )
28  public class ItemListState extends BotListState<Item, TranslatorContext> {
29  
30  	public ItemListState() {
31  		super(ItemListStart.class, Item.class, ItemListEnd.class);
32  	}
33  	
34  	@Override
35  	public void stateLeaving(TranslatorContext translatorContext,
36  			IFSMState<InfoMessage, TranslatorContext> toState, InfoMessage symbol) {
37  		processNavPointsAndItems(translatorContext.getNavPoints(), getList(), translatorContext);
38  		newList();
39  	}
40  
41  	private void processNavPointsAndItems(Map<UnrealId, NavPoint> origNavPoints, List<Item> list, TranslatorContext context) {
42  		Map<UnrealId, Item> items = new HashMap<UnrealId, Item>();
43  		
44  		for (Item item : list) { 
45  			items.put(item.getId(), item);
46  		}
47  		
48  		context.setItems(items);				
49  	}
50  	
51  	@Override
52  	public void stateSymbol(TranslatorContext context, InfoMessage symbol) {
53  		super.stateSymbol(context, symbol);
54  		// DO NOT PUSH - LEAVE IT TO {@link HandshakeEndTransition} that will process it all in one step and pushes all in one step...
55  		//context.getEventQueue().pushEvent((Item)symbol);
56  	}
57  }