remove dependency of drool-application/yaml in actors
[policy/models.git] / models-interactions / model-yaml / src / main / java / org / onap / policy / controlloop / policy / Policy.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * policy-yaml
4  * ================================================================================
5  * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6  * Modifications Copyright (C) 2019 Nordix Foundation.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  * 
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  * 
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.policy.controlloop.policy;
23
24 import java.io.Serializable;
25 import java.util.Collections;
26 import java.util.Map;
27 import java.util.UUID;
28
29 public class Policy implements Serializable {
30     private static final long serialVersionUID = 1L;
31
32     private String id = UUID.randomUUID().toString();
33     private String name;
34     private String description;
35     private String actor;
36     private String recipe;
37     private Map<String, String> payload;
38     private Target target;
39     private OperationsAccumulateParams operationsAccumulateParams;
40     private Integer retry = 0;
41     private Integer timeout = 300;
42     private String success = FinalResult.FINAL_SUCCESS.toString();
43     private String failure = FinalResult.FINAL_FAILURE.toString();
44     private String failureRetries = FinalResult.FINAL_FAILURE_RETRIES.toString();
45     private String failureTimeout = FinalResult.FINAL_FAILURE_TIMEOUT.toString();
46     private String failureException = FinalResult.FINAL_FAILURE_EXCEPTION.toString();
47     private String failureGuard = FinalResult.FINAL_FAILURE_GUARD.toString();
48     
49     
50     public Policy() {
51         //Does Nothing Empty Constructor
52     }
53     
54     public Policy(String id) {
55         this.id = id;
56     }
57     
58     /**
59      * Constructor.
60      * 
61      * @param name name
62      * @param actor actor
63      * @param recipe recipe
64      * @param payload payload
65      * @param target target
66      */
67     public Policy(String name, String actor, String recipe, Map<String, String> payload, Target target) {
68         this.name = name;
69         this.actor = actor;
70         this.recipe = recipe;
71         this.target = target;
72         if (payload != null) {
73             this.payload = Collections.unmodifiableMap(payload);
74         }
75     }
76     
77     /**
78      * Constructor.
79      * 
80      * @param name name
81      * @param actor actor
82      * @param recipe recipe
83      * @param payload payload
84      * @param target target
85      * @param retries retries
86      * @param timeout timeout
87      */
88     public Policy(String name, String actor, String recipe, Map<String, String> payload, Target target,
89                   Integer retries, Integer timeout) {
90         this(name, actor, recipe, payload, target);
91         this.retry = retries;
92         this.timeout = timeout;
93     }
94     
95     /**
96      * Constructor.
97      *
98      * @param policyParam provide parameter object
99      */
100     public Policy(PolicyParam policyParam) {
101         this(policyParam.getName(), policyParam.getActor(), policyParam.getRecipe(), policyParam.getPayload(),
102                 policyParam.getTarget(), policyParam.getRetries(), policyParam.getTimeout());
103         this.id = policyParam.getId();
104         this.description = policyParam.getDescription();
105     }
106     
107     /**
108      * Constructor.
109      * 
110      * @param policy copy object
111      */
112     public Policy(Policy policy) {
113         this.id = policy.id;
114         this.name = policy.name;
115         this.description = policy.description;
116         this.actor = policy.actor;
117         this.recipe = policy.recipe;
118         if (policy.payload != null) {
119             this.payload = Collections.unmodifiableMap(policy.payload);
120         }
121         this.target = policy.target;
122         this.operationsAccumulateParams = policy.operationsAccumulateParams;
123         this.retry = policy.retry;
124         this.timeout = policy.timeout;
125         this.success = policy.success;
126         this.failure = policy.failure;
127         this.failureException = policy.failureException;
128         this.failureGuard = policy.failureGuard;
129         this.failureRetries = policy.failureRetries;
130         this.failureTimeout = policy.failureTimeout;
131     }
132
133     public String getId() {
134         return id;
135     }
136
137     public void setId(String id) {
138         this.id = id;
139     }
140
141     public String getName() {
142         return name;
143     }
144
145     public void setName(String name) {
146         this.name = name;
147     }
148
149     public String getDescription() {
150         return description;
151     }
152
153     public void setDescription(String description) {
154         this.description = description;
155     }
156
157     public String getActor() {
158         return actor;
159     }
160
161     public void setActor(String actor) {
162         this.actor = actor;
163     }
164
165     public String getRecipe() {
166         return recipe;
167     }
168
169     public void setRecipe(String recipe) {
170         this.recipe = recipe;
171     }
172
173     public Map<String, String> getPayload() {
174         return payload;
175     }
176
177     public void setPayload(Map<String, String> payload) {
178         this.payload = payload;
179     }
180
181     public Target getTarget() {
182         return target;
183     }
184
185     public void setTarget(Target target) {
186         this.target = target;
187     }
188
189     public OperationsAccumulateParams getOperationsAccumulateParams() {
190         return operationsAccumulateParams;
191     }
192
193     public void setOperationsAccumulateParams(OperationsAccumulateParams operationsAccumulateParams) {
194         this.operationsAccumulateParams = operationsAccumulateParams;
195     }
196
197     public Integer getRetry() {
198         return retry;
199     }
200
201     public void setRetry(Integer retry) {
202         this.retry = retry;
203     }
204
205     public Integer getTimeout() {
206         return timeout;
207     }
208
209     public void setTimeout(Integer timeout) {
210         this.timeout = timeout;
211     }
212
213     public String getSuccess() {
214         return success;
215     }
216
217     public void setSuccess(String success) {
218         this.success = success;
219     }
220
221     public String getFailure() {
222         return failure;
223     }
224
225     public void setFailure(String failure) {
226         this.failure = failure;
227     }
228
229     public String getFailure_retries() {
230         return failureRetries;
231     }
232
233     public void setFailure_retries(String failureRetries) {
234         this.failureRetries = failureRetries;
235     }
236
237     public String getFailure_timeout() {
238         return failureTimeout;
239     }
240
241     public void setFailure_timeout(String failureTimeout) {
242         this.failureTimeout = failureTimeout;
243     }
244
245     public String getFailure_exception() {
246         return failureException;
247     }
248
249     public void setFailure_exception(String failureException) {
250         this.failureException = failureException;
251     }
252
253     public String getFailure_guard() {
254         return failureGuard;
255     }
256
257     public void setFailure_guard(String failureGuard) {
258         this.failureGuard = failureGuard;
259     }
260
261     public boolean isValid() {
262         return id != null && name != null && actor != null && recipe != null && target != null;
263     }
264
265     @Override
266     public String toString() {
267         return "Policy [id=" + id + ", name=" + name + ", description=" + description + ", actor=" + actor + ", recipe="
268                 + recipe + ", payload=" + payload + ", target=" + target + ", operationsAccumulateParams=" 
269                 + operationsAccumulateParams + ", retry=" + retry + ", timeout=" + timeout
270                 + ", success=" + success + ", failure=" + failure + ", failure_retries=" + failureRetries
271                 + ", failure_timeout=" + failureTimeout + ", failure_exception=" + failureException
272                 + ", failure_guard=" + failureGuard + "]";
273     }
274
275     @Override
276     public int hashCode() {
277         int result = 1;
278         result = addHashCodeForField(result, actor);
279         result = addHashCodeForField(result, description);
280         result = addHashCodeForField(result, failure);
281         result = addHashCodeForField(result, failureException);
282         result = addHashCodeForField(result, failureGuard);
283         result = addHashCodeForField(result, failureRetries);
284         result = addHashCodeForField(result, failureTimeout);
285         result = addHashCodeForField(result, id);
286         result = addHashCodeForField(result, name);
287         result = addHashCodeForField(result, payload);
288         result = addHashCodeForField(result, recipe);
289         result = addHashCodeForField(result, retry);
290         result = addHashCodeForField(result, success);
291         result = addHashCodeForField(result, target);
292         result = addHashCodeForField(result, operationsAccumulateParams);
293         result = addHashCodeForField(result, timeout);
294         return result;
295     }
296     
297     private int addHashCodeForField(int hashCode, Object field) {
298         final int prime = 31;
299         return prime * hashCode + ((field == null) ? 0 : field.hashCode());
300     }
301
302     @Override
303     public boolean equals(Object obj) {
304         if (this == obj) {
305             return true;
306         }
307         if (obj == null) {
308             return false;
309         }
310         if (getClass() != obj.getClass()) {
311             return false;
312         }
313         Policy other = (Policy) obj;
314         return equalsMayBeNull(actor, other.actor)
315                 && equalsMayBeNull(description, other.description)
316                 && equalsMayBeNull(failure, other.failure)
317                 && equalsMayBeNull(failureException, other.failureException)
318                 && equalsMayBeNull(failureGuard, other.failureGuard)
319                 && equalsMayBeNull(failureRetries, other.failureRetries)
320                 && equalsMayBeNull(id, other.id)
321                 && equalsMayBeNull(name, other.name)
322                 && equalsMayBeNull(payload, other.payload)
323                 && equalsMayBeNull(recipe, other.recipe)
324                 && equalsMayBeNull(retry, other.retry)
325                 && equalsMayBeNull(success, other.success)
326                 && equalsMayBeNull(operationsAccumulateParams, other.operationsAccumulateParams)
327                 && equalsMayBeNull(target, other.target)
328                 && equalsMayBeNull(timeout, other.timeout);
329     }
330     
331     private boolean equalsMayBeNull(final Object obj1, final Object obj2) {
332         if ( obj1 == null ) {
333             return obj2 == null;
334         }
335         return obj1.equals(obj2);
336     }
337 }