View Javadoc

1   package cz.cuni.amis.pogamut.udk.communication.translator.observer.state;
2   
3   
4   import cz.cuni.amis.fsm.FSMState;
5   import cz.cuni.amis.fsm.FSMTransition;
6   import cz.cuni.amis.fsm.IFSMState;
7   import cz.cuni.amis.pogamut.base.communication.messages.InfoMessage;
8   import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldChangeEvent;
9   import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.HandShakeEnd;
10  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.ItemCategoryStart;
11  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.ItemListStart;
12  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.MapListStart;
13  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.MutatorListStart;
14  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.NavPointListStart;
15  import cz.cuni.amis.pogamut.udk.communication.messages.gbinfomessages.PlayerListStart;
16  import cz.cuni.amis.pogamut.udk.communication.translator.TranslatorContext;
17  import cz.cuni.amis.pogamut.udk.communication.translator.TranslatorMessages;
18  import cz.cuni.amis.pogamut.udk.communication.translator.UnexpectedMessageException;
19  import cz.cuni.amis.pogamut.udk.communication.translator.observer.support.AbstractObserverFSMState;
20  import cz.cuni.amis.pogamut.udk.communication.translator.shared.events.MapPointListObtained;
21  
22  /**
23   * This class implements a batch handling logic.
24   * @author Jimmy
25   */
26  @FSMState(map = { 
27  					@FSMTransition(
28  						state=ItemCategoryState.class, 
29  						symbol={ItemCategoryStart.class}, 
30  						transition={}
31  					),				
32  					@FSMTransition(
33  						state=MutatorListState.class, 
34  						symbol={MutatorListStart.class}, 
35  						transition={}),
36  					@FSMTransition(
37  						state = NavPointListState.class, 
38  						symbol = { NavPointListStart.class }, 
39  						transition = {}
40  					),
41  					@FSMTransition(
42  						state = ItemListState.class,
43  						symbol = { ItemListStart.class },
44  						transition = {}
45  					),
46  					@FSMTransition(
47  							state = PlayerListState.class, 
48  							symbol = { PlayerListStart.class }, 
49  							transition = {}
50  					),
51                      @FSMTransition(
52  							state = MapListState.class,
53  							symbol = { MapListStart.class },
54  							transition = {}
55  					)
56  				}
57  )
58  public class ObserverRunningState extends AbstractObserverFSMState<InfoMessage, TranslatorContext> {
59  
60      @Override
61      public void stateEntering(TranslatorContext context, IFSMState<InfoMessage, TranslatorContext> arg1, InfoMessage arg2) {
62      }
63  
64      @Override
65      protected void innerStateSymbol(TranslatorContext context, InfoMessage obj) {
66          if (obj instanceof IWorldChangeEvent) {
67          	if (obj instanceof HandShakeEnd) {
68          		context.getEventQueue().pushEvent(new MapPointListObtained(context.getNavPoints(), context.getItems()));
69          	} else {
70          		context.getEventQueue().pushEvent((IWorldChangeEvent) obj);
71          	}
72          } else {
73          	throw new UnexpectedMessageException(TranslatorMessages.messageNotWorldEvent(this, obj), context.getLogger(), this);
74          }
75  
76      }
77  
78      @Override
79      public void stateLeaving(TranslatorContext context, IFSMState<InfoMessage, TranslatorContext> arg1, InfoMessage symbol) {
80      }
81  
82      @Override
83      public void init(TranslatorContext arg0) {        
84      }
85  
86      @Override
87      public void restart(TranslatorContext arg0) {
88      }
89      
90  }