View Javadoc

1   package cz.cuni.amis.pogamut.multi.communication.worldview.impl;
2   
3   import java.util.Map;
4   
5   import com.google.inject.Inject;
6   
7   import cz.cuni.amis.pogamut.base.communication.translator.event.IWorldChangeEvent;
8   import cz.cuni.amis.pogamut.base.communication.worldview.IWorldView;
9   import cz.cuni.amis.pogamut.base.communication.worldview.event.IWorldEventListener;
10  import cz.cuni.amis.pogamut.base.communication.worldview.object.IWorldObject;
11  import cz.cuni.amis.pogamut.base.communication.worldview.object.IWorldObjectEventListener;
12  import cz.cuni.amis.pogamut.base.communication.worldview.object.WorldObjectId;
13  import cz.cuni.amis.pogamut.base.component.bus.IComponentBus;
14  import cz.cuni.amis.pogamut.base.component.bus.exception.ComponentNotRunningException;
15  import cz.cuni.amis.pogamut.base.component.bus.exception.ComponentPausedException;
16  import cz.cuni.amis.pogamut.base.utils.guice.AgentScoped;
17  import cz.cuni.amis.pogamut.base3d.ILockableVisionWorldView;
18  import cz.cuni.amis.pogamut.base3d.worldview.object.IViewable;
19  import cz.cuni.amis.pogamut.multi.communication.worldview.ILocalWorldView;
20  import cz.cuni.amis.pogamut.multi.communication.worldview.object.ICompositeWorldObject;
21  import cz.cuni.amis.pogamut.multi.communication.worldview.object.ILocalWorldObject;
22  import cz.cuni.amis.utils.exception.PogamutInterruptedException;
23  import cz.cuni.amis.utils.token.IToken;
24  
25  /**
26   * This class serves as an adapter for ILocalWorldView to satisfy the IWorldView interface,
27   * all methods of this worldView only call the appropriate methods on the backing localWorldView
28   * @author srlok
29   *
30   */
31  @AgentScoped
32  public class LocalWorldViewAdapter implements IWorldView, ILockableVisionWorldView{
33  
34  	private BatchAwareLocalWorldView localWV;
35  	
36  	@Inject
37  	public LocalWorldViewAdapter( BatchAwareLocalWorldView localWV )
38  	{
39  		this.localWV = localWV;
40  	}
41  	
42  	public long getSimTime()
43  	{
44  		return localWV.getCurrentTimeKey().getTime();
45  	}
46  	
47  	@Override
48  	public void notify(IWorldChangeEvent event) throws ComponentNotRunningException, ComponentPausedException {
49  		localWV.notify(event);
50  	}
51  	
52  	@Override
53  	public void notifyAfterPropagation(IWorldChangeEvent event) throws ComponentNotRunningException, ComponentPausedException {
54  		localWV.notifyAfterPropagation(event);
55  	}
56  
57  	@Override
58  	public void notifyImmediately(IWorldChangeEvent event)
59  			throws ComponentNotRunningException, ComponentPausedException {
60  		localWV.notifyImmediately(event);
61  	}
62  
63  	@Override
64  	public IToken getComponentId() {
65  		return localWV.getComponentId();
66  	}
67  
68  	@Override
69  	public IComponentBus getEventBus() {
70  		return localWV.getEventBus();
71  	}
72  
73  	@Override
74  	public void addEventListener(Class<?> eventClass,
75  			IWorldEventListener<?> listener) {
76  		
77  		localWV.addEventListener(eventClass, listener);
78  		
79  	}
80  
81  	@Override
82  	public void addObjectListener(Class<?> objectClass,
83  			IWorldObjectEventListener<?, ?> listener) {
84  
85  		localWV.addObjectListener(objectClass,listener);
86  		
87  	}
88  
89  	@Override
90  	public void addObjectListener(Class<?> objectClass, Class<?> eventClass,
91  			IWorldObjectEventListener<?, ?> listener) {
92  		localWV.addObjectListener(objectClass, eventClass, listener);
93  		
94  	}
95  
96  	@Override
97  	public void addObjectListener(WorldObjectId objectId,
98  			IWorldObjectEventListener<?, ?> listener) {
99  		localWV.addObjectListener(objectId, listener);
100 		
101 	}
102 
103 	@Override
104 	public void addObjectListener(WorldObjectId objectId, Class<?> eventClass,
105 			IWorldObjectEventListener<?, ?> listener) {
106 		localWV.addObjectListener(objectId, eventClass, listener);
107 		
108 	}
109 
110 	@Override
111 	public void removeEventListener(Class<?> eventClass,
112 			IWorldEventListener<?> listener) {
113 		localWV.removeEventListener(eventClass, listener);
114 		
115 	}
116 
117 	@Override
118 	public void removeObjectListener(Class<?> objectClass,
119 			IWorldObjectEventListener<?, ?> listener) {
120 		
121 		localWV.removeObjectListener(objectClass, listener);
122 		
123 	}
124 
125 	@Override
126 	public void removeObjectListener(Class<?> objectClass, Class<?> eventClass,
127 			IWorldObjectEventListener<?, ?> listener) {
128 		
129 		localWV.removeObjectListener(objectClass, eventClass, listener);
130 		
131 	}
132 
133 	@Override
134 	public void removeObjectListener(WorldObjectId objectId,
135 			IWorldObjectEventListener<?, ?> listener) {
136 		
137 		localWV.removeObjectListener(objectId, listener);
138 		
139 	}
140 
141 	@Override
142 	public void removeObjectListener(WorldObjectId objectId,
143 			Class<?> eventClass, IWorldObjectEventListener<?, ?> listener) {
144 		localWV.removeObjectListener(objectId, eventClass, listener);
145 		
146 	}
147 
148 	@Override
149 	public void removeListener(IWorldEventListener<?> listener) {
150 		localWV.removeListener(listener);
151 	}
152 
153 	@Override
154 	public boolean isListening(Class<?> eventClass,
155 			IWorldEventListener<?> listener) {
156 		return localWV.isListening(eventClass, listener);
157 	}
158 
159 	@Override
160 	public boolean isListening(Class<?> objectClass,
161 			IWorldObjectEventListener<?, ?> listener) {
162 		return localWV.isListening(objectClass, listener);
163 	}
164 
165 	@Override
166 	public boolean isListening(Class<?> objectClass, Class<?> eventClass,
167 			IWorldObjectEventListener<?, ?> listener) {
168 		return localWV.isListening(objectClass, eventClass, listener);
169 	}
170 
171 	@Override
172 	public boolean isListening(WorldObjectId objectId,
173 			IWorldObjectEventListener<?, ?> listener) {
174 		return localWV.isListening(objectId, listener);
175 	}
176 
177 	@Override
178 	public boolean isListening(WorldObjectId objectId, Class<?> eventClass,
179 			IWorldObjectEventListener<?, ?> listener) {
180 		return localWV.isListening(objectId, eventClass, listener);
181 	}
182 
183 	@Override
184 	public boolean isListening(IWorldEventListener<?> listener) {
185 		return localWV.isListening(listener);
186 	}
187 
188 	@Override
189 	public Map<Class, Map<WorldObjectId, IWorldObject>> getAll() {
190 		return ( Map )localWV.getAll();
191 	}
192 
193 	@Override
194 	public <T extends IWorldObject> Map<WorldObjectId, T> getAll(Class<T> type) {
195 		return ( Map ) localWV.getAll(type);
196 	}
197 
198 	@Override
199 	public <T extends IWorldObject> T getSingle(Class<T> cls) {
200 		return localWV.getSingle(cls);
201 	}
202 
203 	@Override
204 	public Map<WorldObjectId, IWorldObject> get() {
205 		return (Map) localWV.get();
206 	}
207 
208 	@Override
209 	public IWorldObject get(WorldObjectId id) {
210 		return localWV.get(id);
211 	}
212 
213         @Override
214         public <T extends IWorldObject> T get(WorldObjectId objectId, Class<T> clazz) {
215             //cannot directly delegate to localWV.get(WorldObjectId, Class<T>), because the type constraints are not compatible
216             IWorldObject obj = get(objectId);
217             if(obj == null){
218                 return null;
219             }
220             else if(clazz.isAssignableFrom(obj.getClass())){
221                 return (T)obj;
222             } else {
223                 throw new ClassCastException("Object with id " + objectId + " is not of class " + clazz);
224             }
225         }
226                 
227 
228 	@Override
229 	public Map<Class, Map<WorldObjectId, IViewable>> getAllVisible() {
230 		return localWV.getAllVisible();
231 	}
232 
233 	@Override
234 	public <T extends IViewable> Map<WorldObjectId, T> getAllVisible(
235 			Class<T> type) {
236 		return localWV.getAllVisible(type);
237 	}
238 
239 	@Override
240 	public Map<WorldObjectId, IViewable> getVisible() {
241 		return localWV.getVisible();
242 	}
243 
244 	@Override
245 	public IViewable getVisible(WorldObjectId id) {
246 		return localWV.getVisible(id);
247 	}
248 
249 	@Override
250 	public void lock() throws PogamutInterruptedException,
251 			ComponentNotRunningException, ComponentPausedException {
252 		localWV.lock();
253 	}
254 
255 	@Override
256 	public void unlock() throws ComponentNotRunningException,
257 			ComponentPausedException {
258 		localWV.unlock();
259 	}
260 
261 	@Override
262 	public boolean isLocked() {
263 		return localWV.isLocked();
264 	}
265 
266 }