Simulator Plug-ins: Bug fixing and enhancements.
[platform/upstream/iotivity.git] / service / simulator / java / eclipse-plugin / ServiceProviderPlugin / src / oic / simulator / serviceprovider / manager / UiListenerHandler.java
1 /*
2  * Copyright 2015 Samsung Electronics All Rights Reserved.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package oic.simulator.serviceprovider.manager;
18
19 import java.util.ArrayList;
20 import java.util.Iterator;
21 import java.util.List;
22
23 import oic.simulator.serviceprovider.listener.IAutomationUIListener;
24 import oic.simulator.serviceprovider.listener.IDeviceInfoUIListener;
25 import oic.simulator.serviceprovider.listener.IObserverListChangedUIListener;
26 import oic.simulator.serviceprovider.listener.IPropertiesChangedUIListener;
27 import oic.simulator.serviceprovider.listener.IResourceListChangedUIListener;
28 import oic.simulator.serviceprovider.listener.IResourceModelChangedUIListener;
29 import oic.simulator.serviceprovider.listener.ISelectionChangedUIListener;
30 import oic.simulator.serviceprovider.model.Device;
31 import oic.simulator.serviceprovider.model.Resource;
32 import oic.simulator.serviceprovider.model.ResourceType;
33 import oic.simulator.serviceprovider.model.SingleResource;
34
35 public class UiListenerHandler {
36
37     private static UiListenerHandler              uiHandler;
38
39     private List<IResourceListChangedUIListener>  resourceListChangedUIListeners;
40
41     private List<ISelectionChangedUIListener>     selectionChangedUIListeners;
42
43     private List<IResourceModelChangedUIListener> resourceModelChangedUIListeners;
44
45     private List<IAutomationUIListener>           automationUIListeners;
46
47     private List<IObserverListChangedUIListener>  observerUIListeners;
48
49     private List<IPropertiesChangedUIListener>    propertiesChangedUIListeners;
50
51     private List<IDeviceInfoUIListener>           deviceInfoUIListeners;
52
53     private UiListenerHandler() {
54         resourceListChangedUIListeners = new ArrayList<IResourceListChangedUIListener>();
55         selectionChangedUIListeners = new ArrayList<ISelectionChangedUIListener>();
56         resourceModelChangedUIListeners = new ArrayList<IResourceModelChangedUIListener>();
57         automationUIListeners = new ArrayList<IAutomationUIListener>();
58         observerUIListeners = new ArrayList<IObserverListChangedUIListener>();
59         propertiesChangedUIListeners = new ArrayList<IPropertiesChangedUIListener>();
60         deviceInfoUIListeners = new ArrayList<IDeviceInfoUIListener>();
61     }
62
63     public static UiListenerHandler getInstance() {
64         if (null == uiHandler) {
65             uiHandler = new UiListenerHandler();
66         }
67         return uiHandler;
68     }
69
70     public void addResourceListChangedUIListener(
71             IResourceListChangedUIListener resourceListChangedUIListener) {
72         synchronized (resourceListChangedUIListeners) {
73             resourceListChangedUIListeners.add(resourceListChangedUIListener);
74         }
75     }
76
77     public void addResourceSelectionChangedUIListener(
78             ISelectionChangedUIListener resourceSelectionChangedUIListener) {
79         synchronized (selectionChangedUIListeners) {
80             selectionChangedUIListeners.add(resourceSelectionChangedUIListener);
81         }
82     }
83
84     public void addResourceModelChangedUIListener(
85             IResourceModelChangedUIListener resourceModelChangedUIListener) {
86         synchronized (resourceModelChangedUIListeners) {
87             resourceModelChangedUIListeners.add(resourceModelChangedUIListener);
88         }
89     }
90
91     public void addAutomationUIListener(
92             IAutomationUIListener automationUIListener) {
93         synchronized (automationUIListeners) {
94             automationUIListeners.add(automationUIListener);
95         }
96     }
97
98     public void addObserverListChangedUIListener(
99             IObserverListChangedUIListener observerListChangedUIListener) {
100         synchronized (observerUIListeners) {
101             observerUIListeners.add(observerListChangedUIListener);
102         }
103     }
104
105     public void addResourcePropertiesChangedUIListener(
106             IPropertiesChangedUIListener resourcePropertiesChangedUIListener) {
107         synchronized (propertiesChangedUIListeners) {
108             propertiesChangedUIListeners
109                     .add(resourcePropertiesChangedUIListener);
110         }
111     }
112
113     public void removeResourceListChangedUIListener(
114             IResourceListChangedUIListener listener) {
115         synchronized (resourceListChangedUIListeners) {
116             if (null != listener && resourceListChangedUIListeners.size() > 0) {
117                 resourceListChangedUIListeners.remove(listener);
118             }
119         }
120     }
121
122     public void removeResourceSelectionChangedUIListener(
123             ISelectionChangedUIListener listener) {
124         synchronized (selectionChangedUIListeners) {
125             if (null != listener && selectionChangedUIListeners.size() > 0) {
126                 selectionChangedUIListeners.remove(listener);
127             }
128         }
129     }
130
131     public void removeResourceModelChangedUIListener(
132             IResourceModelChangedUIListener listener) {
133         synchronized (resourceModelChangedUIListeners) {
134             if (null != listener && resourceModelChangedUIListeners.size() > 0) {
135                 resourceModelChangedUIListeners.remove(listener);
136             }
137         }
138     }
139
140     public void removeAutomationUIListener(IAutomationUIListener listener) {
141         synchronized (automationUIListeners) {
142             if (null != listener && automationUIListeners.size() > 0) {
143                 automationUIListeners.remove(listener);
144             }
145         }
146     }
147
148     public void removeObserverListChangedUIListener(
149             IObserverListChangedUIListener listener) {
150         synchronized (observerUIListeners) {
151             if (null != listener && observerUIListeners.size() > 0) {
152                 observerUIListeners.remove(listener);
153             }
154         }
155     }
156
157     public void removeResourcePropertiesChangedUIListener(
158             IPropertiesChangedUIListener resourcePropertiesChangedUIListener) {
159         synchronized (propertiesChangedUIListeners) {
160             propertiesChangedUIListeners
161                     .remove(resourcePropertiesChangedUIListener);
162         }
163     }
164
165     public void addDeviceInfoUIListener(IDeviceInfoUIListener deviceUIListener) {
166         synchronized (deviceInfoUIListeners) {
167             deviceInfoUIListeners.add(deviceUIListener);
168         }
169     }
170
171     public void removeDeviceInfoUIListener(
172             IDeviceInfoUIListener platformUIListener) {
173         synchronized (deviceInfoUIListeners) {
174             deviceInfoUIListeners.remove(platformUIListener);
175         }
176     }
177
178     public void resourceCreatedUINotification(ResourceType type) {
179         synchronized (resourceListChangedUIListeners) {
180             if (resourceListChangedUIListeners.size() > 0) {
181                 IResourceListChangedUIListener listener;
182                 Iterator<IResourceListChangedUIListener> listenerItr = resourceListChangedUIListeners
183                         .iterator();
184                 while (listenerItr.hasNext()) {
185                     listener = listenerItr.next();
186                     if (null != listener) {
187                         listener.onResourceCreation(type);
188                     }
189                 }
190             }
191         }
192     }
193
194     public void resourceDeletedUINotification(ResourceType type) {
195         synchronized (resourceListChangedUIListeners) {
196             if (resourceListChangedUIListeners.size() > 0) {
197                 IResourceListChangedUIListener listener;
198                 Iterator<IResourceListChangedUIListener> listenerItr = resourceListChangedUIListeners
199                         .iterator();
200                 while (listenerItr.hasNext()) {
201                     listener = listenerItr.next();
202                     if (null != listener) {
203                         listener.onResourceDeletion(type);
204                     }
205                 }
206             }
207         }
208     }
209
210     public void resourceListUpdateUINotification(ResourceType type) {
211         synchronized (resourceListChangedUIListeners) {
212             if (resourceListChangedUIListeners.size() > 0) {
213                 IResourceListChangedUIListener listener;
214                 Iterator<IResourceListChangedUIListener> listenerItr = resourceListChangedUIListeners
215                         .iterator();
216                 while (listenerItr.hasNext()) {
217                     listener = listenerItr.next();
218                     if (null != listener) {
219                         listener.onResourceListUpdate(type);
220                     }
221                 }
222             }
223         }
224     }
225
226     public void resourceSelectionChangedUINotification(Resource resource) {
227         synchronized (selectionChangedUIListeners) {
228             if (selectionChangedUIListeners.size() > 0) {
229                 ISelectionChangedUIListener listener;
230                 Iterator<ISelectionChangedUIListener> listenerItr = selectionChangedUIListeners
231                         .iterator();
232                 while (listenerItr.hasNext()) {
233                     listener = listenerItr.next();
234                     if (null != listener) {
235                         listener.onResourceSelectionChange(resource);
236                     }
237                 }
238             }
239         }
240     }
241
242     public void deviceSelectionChangedUINotification(Device dev) {
243         synchronized (selectionChangedUIListeners) {
244             if (selectionChangedUIListeners.size() > 0) {
245                 ISelectionChangedUIListener listener;
246                 Iterator<ISelectionChangedUIListener> listenerItr = selectionChangedUIListeners
247                         .iterator();
248                 while (listenerItr.hasNext()) {
249                     listener = listenerItr.next();
250                     if (null != listener) {
251                         listener.onDeviceSelectionChange(dev);
252                     }
253                 }
254             }
255         }
256     }
257
258     public void resourceModelChangedUINotification(Resource resource) {
259         synchronized (resourceModelChangedUIListeners) {
260             if (resourceModelChangedUIListeners.size() > 0 && null != resource) {
261                 IResourceModelChangedUIListener listener;
262                 Iterator<IResourceModelChangedUIListener> listenerItr = resourceModelChangedUIListeners
263                         .iterator();
264                 while (listenerItr.hasNext()) {
265                     listener = listenerItr.next();
266                     if (null != listener) {
267                         listener.onResourceModelChange(resource);
268                     }
269                 }
270             }
271         }
272     }
273
274     public void resourceAutomationStartedUINotification(SingleResource resource) {
275         synchronized (automationUIListeners) {
276             if (automationUIListeners.size() > 0 && null != resource) {
277                 IAutomationUIListener listener;
278                 Iterator<IAutomationUIListener> listenerItr = automationUIListeners
279                         .iterator();
280                 while (listenerItr.hasNext()) {
281                     listener = listenerItr.next();
282                     if (null != listener) {
283                         listener.onResourceAutomationStart(resource);
284                     }
285                 }
286             }
287         }
288     }
289
290     public void automationCompleteUINotification(SingleResource resource,
291             String attName) {
292         synchronized (automationUIListeners) {
293             if (automationUIListeners.size() > 0 && null != resource) {
294                 IAutomationUIListener listener;
295                 Iterator<IAutomationUIListener> listenerItr = automationUIListeners
296                         .iterator();
297                 while (listenerItr.hasNext()) {
298                     listener = listenerItr.next();
299                     if (null != listener) {
300                         listener.onAutomationComplete(resource, attName);
301                     }
302                 }
303             }
304         }
305     }
306
307     public void observerListChangedUINotification(Resource resource) {
308         synchronized (observerUIListeners) {
309             if (observerUIListeners.size() > 0 && null != resource) {
310                 IObserverListChangedUIListener listener;
311                 Iterator<IObserverListChangedUIListener> listenerItr = observerUIListeners
312                         .iterator();
313                 while (listenerItr.hasNext()) {
314                     listener = listenerItr.next();
315                     if (null != listener) {
316                         listener.onObserverListChanged(resource);
317                     }
318                 }
319             }
320         }
321     }
322
323     public void propertiesChangedUINotification(Class<?> targetClass) {
324         synchronized (propertiesChangedUIListeners) {
325             if (propertiesChangedUIListeners.size() > 0) {
326                 IPropertiesChangedUIListener listener;
327                 Iterator<IPropertiesChangedUIListener> listenerItr = propertiesChangedUIListeners
328                         .iterator();
329                 while (listenerItr.hasNext()) {
330                     listener = listenerItr.next();
331                     if (null != listener) {
332                         if (targetClass == Resource.class) {
333                             listener.onResourcePropertyChange();
334                         } else {
335                             listener.onDevicePropertyChange();
336                         }
337                     }
338                 }
339             }
340         }
341     }
342
343     public void deviceInfoReceivedNotification() {
344         synchronized (deviceInfoUIListeners) {
345             if (deviceInfoUIListeners.size() > 0) {
346                 IDeviceInfoUIListener listener;
347                 Iterator<IDeviceInfoUIListener> listenerItr = deviceInfoUIListeners
348                         .iterator();
349                 while (listenerItr.hasNext()) {
350                     listener = listenerItr.next();
351                     if (null != listener) {
352                         listener.onDeviceInfoFound();
353                     }
354                 }
355             }
356         }
357     }
358 }