View Javadoc

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