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
27
28
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
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 }