Fix more sonar issues
[policy/drools-applications.git] / controlloop / common / policy-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  * ================================================================================
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.controlloop.policy;
22
23 import java.io.Serializable;
24 import java.util.Collections;
25 import java.util.Map;
26 import java.util.UUID;
27
28 public class Policy implements Serializable {
29     private static final long serialVersionUID = 1L;
30
31     private String id = UUID.randomUUID().toString();
32     private String name;
33     private String description;
34     private String actor;
35     private String recipe;
36     private Map<String, String> payload;
37     private Target target;
38     private OperationsAccumulateParams operationsAccumulateParams;
39     private Integer retry = 0;
40     private Integer timeout = 300;
41     private String success = FinalResult.FINAL_SUCCESS.toString();
42     private String failure = FinalResult.FINAL_FAILURE.toString();
43     private String failureRetries = FinalResult.FINAL_FAILURE_RETRIES.toString();
44     private String failureTimeout = FinalResult.FINAL_FAILURE_TIMEOUT.toString();
45     private String failureException = FinalResult.FINAL_FAILURE_EXCEPTION.toString();
46     private String failureGuard = FinalResult.FINAL_FAILURE_GUARD.toString();
47     
48     
49     public Policy() {
50         //Does Nothing Empty Constructor
51     }
52     
53     public Policy(String id) {
54         this.id = id;
55     }
56     
57     /**
58      * Constructor.
59      * 
60      * @param name name
61      * @param actor actor
62      * @param recipe recipe
63      * @param payload payload
64      * @param target target
65      */
66     public Policy(String name, String actor, String recipe, Map<String, String> payload, Target target) {
67         this.name = name;
68         this.actor = actor;
69         this.recipe = recipe;
70         this.target = target;
71         if (payload != null) {
72             this.payload = Collections.unmodifiableMap(payload);
73         }
74     }
75     
76     /**
77      * Constructor.
78      * 
79      * @param name name
80      * @param actor actor
81      * @param recipe recipe
82      * @param payload payload
83      * @param target target
84      * @param retries retries
85      * @param timeout timeout
86      */
87     public Policy(String name, String actor, String recipe, Map<String, String> payload, Target target, 
88                     Integer retries, Integer timeout) {
89         this(name, actor, recipe, payload, target);
90         this.retry = retries;
91         this.timeout = timeout;
92     }
93     
94     /**
95      * Constructor.
96      * 
97      * @param id id
98      * @param name name
99      * @param description description
100      * @param actor actor
101      * @param payload payload
102      * @param target target
103      * @param recipe recipe
104      * @param retries retries
105      * @param timeout timeout
106      */
107     public Policy(String id, String name, String description, String actor, Map<String, String> payload, 
108                     Target target, String recipe, Integer retries, Integer timeout) {
109         this(name, actor, recipe, payload, target, retries, timeout);
110         this.id = id;
111         this.description = description;
112     }
113     
114     /**
115      * Constructor.
116      * 
117      * @param policy copy object
118      */
119     public Policy(Policy policy) {
120         this.id = policy.id;
121         this.name = policy.name;
122         this.description = policy.description;
123         this.actor = policy.actor;
124         this.recipe = policy.recipe;
125         if (policy.payload != null) {
126             this.payload = Collections.unmodifiableMap(policy.payload);
127         }
128         this.target = policy.target;
129         this.operationsAccumulateParams = policy.operationsAccumulateParams;
130         this.retry = policy.retry;
131         this.timeout = policy.timeout;
132         this.success = policy.success;
133         this.failure = policy.failure;
134         this.failureException = policy.failureException;
135         this.failureGuard = policy.failureGuard;
136         this.failureRetries = policy.failureRetries;
137         this.failureTimeout = policy.failureTimeout;
138     }
139
140     public String getId() {
141         return id;
142     }
143
144     public void setId(String id) {
145         this.id = id;
146     }
147
148     public String getName() {
149         return name;
150     }
151
152     public void setName(String name) {
153         this.name = name;
154     }
155
156     public String getDescription() {
157         return description;
158     }
159
160     public void setDescription(String description) {
161         this.description = description;
162     }
163
164     public String getActor() {
165         return actor;
166     }
167
168     public void setActor(String actor) {
169         this.actor = actor;
170     }
171
172     public String getRecipe() {
173         return recipe;
174     }
175
176     public void setRecipe(String recipe) {
177         this.recipe = recipe;
178     }
179
180     public Map<String, String> getPayload() {
181         return payload;
182     }
183
184     public void setPayload(Map<String, String> payload) {
185         this.payload = payload;
186     }
187
188     public Target getTarget() {
189         return target;
190     }
191
192     public void setTarget(Target target) {
193         this.target = target;
194     }
195
196     public OperationsAccumulateParams getOperationsAccumulateParams() {
197         return operationsAccumulateParams;
198     }
199
200     public void setOperationsAccumulateParams(OperationsAccumulateParams operationsAccumulateParams) {
201         this.operationsAccumulateParams = operationsAccumulateParams;
202     }
203
204     public Integer getRetry() {
205         return retry;
206     }
207
208     public void setRetry(Integer retry) {
209         this.retry = retry;
210     }
211
212     public Integer getTimeout() {
213         return timeout;
214     }
215
216     public void setTimeout(Integer timeout) {
217         this.timeout = timeout;
218     }
219
220     public String getSuccess() {
221         return success;
222     }
223
224     public void setSuccess(String success) {
225         this.success = success;
226     }
227
228     public String getFailure() {
229         return failure;
230     }
231
232     public void setFailure(String failure) {
233         this.failure = failure;
234     }
235
236     public String getFailure_retries() {
237         return failureRetries;
238     }
239
240     public void setFailure_retries(String failureRetries) {
241         this.failureRetries = failureRetries;
242     }
243
244     public String getFailure_timeout() {
245         return failureTimeout;
246     }
247
248     public void setFailure_timeout(String failureTimeout) {
249         this.failureTimeout = failureTimeout;
250     }
251
252     public String getFailure_exception() {
253         return failureException;
254     }
255
256     public void setFailure_exception(String failureException) {
257         this.failureException = failureException;
258     }
259
260     public String getFailure_guard() {
261         return failureGuard;
262     }
263
264     public void setFailure_guard(String failureGuard) {
265         this.failureGuard = failureGuard;
266     }
267
268     public boolean isValid() {
269         return id != null && name != null && actor != null && recipe != null && target != null;
270     }
271
272     @Override
273     public String toString() {
274         return "Policy [id=" + id + ", name=" + name + ", description=" + description + ", actor=" + actor + ", recipe="
275                 + recipe + ", payload=" + payload + ", target=" + target + ", operationsAccumulateParams=" 
276                 + operationsAccumulateParams + ", retry=" + retry + ", timeout=" + timeout
277                 + ", success=" + success + ", failure=" + failure + ", failure_retries=" + failureRetries
278                 + ", failure_timeout=" + failureTimeout + ", failure_exception=" + failureException
279                 + ", failure_guard=" + failureGuard + "]";
280     }
281
282     @Override
283     public int hashCode() {
284         int result = 1;
285         result = addHashCodeForField(result, actor);
286         result = addHashCodeForField(result, description);
287         result = addHashCodeForField(result, failure);
288         result = addHashCodeForField(result, failureException);
289         result = addHashCodeForField(result, failureGuard);
290         result = addHashCodeForField(result, failureRetries);
291         result = addHashCodeForField(result, failureTimeout);
292         result = addHashCodeForField(result, id);
293         result = addHashCodeForField(result, name);
294         result = addHashCodeForField(result, payload);
295         result = addHashCodeForField(result, recipe);
296         result = addHashCodeForField(result, retry);
297         result = addHashCodeForField(result, success);
298         result = addHashCodeForField(result, target);
299         result = addHashCodeForField(result, operationsAccumulateParams);
300         result = addHashCodeForField(result, timeout);
301         return result;
302     }
303     
304     private int addHashCodeForField(int hashCode, Object field) {
305         final int prime = 31;
306         return prime * hashCode + ((field == null) ? 0 : field.hashCode());
307     }
308
309     @Override
310     public boolean equals(Object obj) {
311         if (this == obj) {
312             return true;
313         }
314         if (obj == null) {
315             return false;
316         }
317         if (getClass() != obj.getClass()) {
318             return false;
319         }
320         Policy other = (Policy) obj;
321         return equalsMayBeNull(actor, other.actor)
322                 && equalsMayBeNull(description, other.description)
323                 && equalsMayBeNull(failure, other.failure)
324                 && equalsMayBeNull(failureException, other.failureException)
325                 && equalsMayBeNull(failureGuard, other.failureGuard)
326                 && equalsMayBeNull(failureRetries, other.failureRetries)
327                 && equalsMayBeNull(id, other.id)
328                 && equalsMayBeNull(name, other.name)
329                 && equalsMayBeNull(payload, other.payload)
330                 && equalsMayBeNull(recipe, other.recipe)
331                 && equalsMayBeNull(retry, other.retry)
332                 && equalsMayBeNull(success, other.success)
333                 && equalsMayBeNull(operationsAccumulateParams, other.operationsAccumulateParams)
334                 && equalsMayBeNull(target, other.target)
335                 && equalsMayBeNull(timeout, other.timeout);
336     }
337     
338     private boolean equalsMayBeNull(final Object obj1, final Object obj2) {
339         if ( obj1 == null ) {
340             return obj2 == null;
341         }
342         return obj1.equals(obj2);
343     }
344     
345 }