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
55
56 }
57 }