View Javadoc

1   package cz.cuni.amis.pogamut.base.communication.translator.event;
2   
3   import cz.cuni.amis.pogamut.base.communication.worldview.object.IWorldObject;
4   import cz.cuni.amis.utils.NullCheck;
5   
6   /**
7    * A generic interface for updateResult returned by all IWorldObjectUpdated events
8    * (ie. ICompositeWorldObjectUpdatedEvent...) .
9    * 
10   * @author Jimmy
11   * @author srlok
12   *
13   * @param <OBJECT> Type of World object to be returned (must extend IWorldObject)
14   */
15  public interface IWorldObjectUpdateResult<OBJECT extends IWorldObject> {
16  
17  	/**
18  	 * Different result types for the updatedEvent.
19  	 * {CREATED,UPDATED,SAME,DESTROYED}
20  	 * 
21  	 * @author srlok
22  	 */
23  	public static enum Result 
24  	{
25  		CREATED,
26  		UPDATED,
27  		SAME,
28  		DESTROYED;	
29  	}
30  
31  	/**
32  	 * Returns result type.
33  	 * @return
34  	 */
35  	public Result getResult();
36  	
37  	/**
38  	 * Returns the updated object.
39  	 * @return
40  	 */
41  	public OBJECT getObject();
42  	
43  	/**
44  	 * Implementation of the IGenericObjectUpdateResult interface.
45  	 * @author srlok
46  	 *
47  	 * @param <OBJECT> must extend IWorldObject .
48  	 */
49  	public static class WorldObjectUpdateResult<OBJECT extends IWorldObject>
50  	implements IWorldObjectUpdateResult<OBJECT>
51  	{
52  
53  		private Result result;
54  		private OBJECT object;
55  
56  		public WorldObjectUpdateResult(Result result, OBJECT object) {
57  			this.result = result;
58  			NullCheck.check(this.result, "result");
59  			this.object = object;
60  			if (result != Result.DESTROYED) {
61  				NullCheck.check(this.object, "object (result != DESTROYED)");
62  			}
63  		}
64  		
65  		@Override
66  		public OBJECT getObject() {
67  			return object;
68  		}
69  
70  		@Override
71  		public Result getResult() {
72  			return result;
73  		}
74  
75  	}
76  }
77