[POLICY-73] replace openecomp for policy-engine
[policy/engine.git] / POLICY-SDK-APP / src / main / java / org / onap / policy / utils / PolicyItemSetChangeNotifier.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP Policy Engine
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.utils;
22
23
24 import java.io.Serializable;
25 import java.util.Collection;
26 import java.util.EventObject;
27 import java.util.LinkedList;
28
29 import org.onap.policy.utils.PolicyContainer.ItemSetChangeEvent;
30 import org.onap.policy.utils.PolicyContainer.ItemSetChangeListener;
31
32
33
34 public class PolicyItemSetChangeNotifier implements PolicyContainer.ItemSetChangeNotifier {
35         private static final long serialVersionUID = 1L;
36     private Collection<PolicyContainer.ItemSetChangeListener> itemSetChangeListeners = null;
37     private PolicyContainer container = null;
38     
39     public PolicyItemSetChangeNotifier() {
40     }
41     
42     protected void setContainer(PolicyContainer c) {
43         this.container = c;
44     }
45
46         @Override
47         public void addItemSetChangeListener(ItemSetChangeListener listener) {
48         if (getItemSetChangeListeners() == null) {
49             setItemSetChangeListeners(new LinkedList<PolicyContainer.ItemSetChangeListener>());
50         }
51         getItemSetChangeListeners().add(listener);      }
52
53         @Override
54         public void removeItemSetChangeListener(ItemSetChangeListener listener) {
55         if (getItemSetChangeListeners() != null) {
56             getItemSetChangeListeners().remove(listener);
57         }
58     }
59         
60         protected static class BaseItemSetChangeEvent extends EventObject implements
61             PolicyContainer.ItemSetChangeEvent, Serializable {
62                 private static final long serialVersionUID = 1L;
63
64                 protected BaseItemSetChangeEvent(PolicyContainer source) {
65                     super(source);
66                 }
67                 
68                 @Override
69                 public PolicyContainer getContainer() {
70                     return (PolicyContainer) getSource();
71                 }
72         }
73
74     protected void setItemSetChangeListeners(
75             Collection<PolicyContainer.ItemSetChangeListener> itemSetChangeListeners) {
76         this.itemSetChangeListeners = itemSetChangeListeners;
77     }
78     protected Collection<PolicyContainer.ItemSetChangeListener> getItemSetChangeListeners() {
79         return itemSetChangeListeners;
80     }
81   
82     protected void fireItemSetChange() {
83         fireItemSetChange(new BaseItemSetChangeEvent(this.container));
84     }
85
86     protected void fireItemSetChange(ItemSetChangeEvent event) {
87         if (getItemSetChangeListeners() != null) {
88             final Object[] l = getItemSetChangeListeners().toArray();
89             for (int i = 0; i < l.length; i++) {
90                 ((PolicyContainer.ItemSetChangeListener) l[i])
91                         .containerItemSetChange(event);
92             }
93         }
94     }
95 }