2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
21 package org.onap.policy.controlloop.policy;
23 import java.io.Serializable;
24 import java.util.Collections;
26 import java.util.UUID;
28 public class Policy implements Serializable {
29 private static final long serialVersionUID = 1L;
31 private String id = UUID.randomUUID().toString();
33 private String description;
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();
50 //Does Nothing Empty Constructor
53 public Policy(String id) {
62 * @param recipe recipe
63 * @param payload payload
64 * @param target target
66 public Policy(String name, String actor, String recipe, Map<String, String> payload, Target target) {
71 if (payload != null) {
72 this.payload = Collections.unmodifiableMap(payload);
81 * @param recipe recipe
82 * @param payload payload
83 * @param target target
84 * @param retries retries
85 * @param timeout timeout
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);
91 this.timeout = timeout;
99 * @param description description
101 * @param payload payload
102 * @param target target
103 * @param recipe recipe
104 * @param retries retries
105 * @param timeout timeout
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);
111 this.description = description;
117 * @param policy copy object
119 public Policy(Policy policy) {
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);
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;
140 public String getId() {
144 public void setId(String id) {
148 public String getName() {
152 public void setName(String name) {
156 public String getDescription() {
160 public void setDescription(String description) {
161 this.description = description;
164 public String getActor() {
168 public void setActor(String actor) {
172 public String getRecipe() {
176 public void setRecipe(String recipe) {
177 this.recipe = recipe;
180 public Map<String, String> getPayload() {
184 public void setPayload(Map<String, String> payload) {
185 this.payload = payload;
188 public Target getTarget() {
192 public void setTarget(Target target) {
193 this.target = target;
196 public OperationsAccumulateParams getOperationsAccumulateParams() {
197 return operationsAccumulateParams;
200 public void setOperationsAccumulateParams(OperationsAccumulateParams operationsAccumulateParams) {
201 this.operationsAccumulateParams = operationsAccumulateParams;
204 public Integer getRetry() {
208 public void setRetry(Integer retry) {
212 public Integer getTimeout() {
216 public void setTimeout(Integer timeout) {
217 this.timeout = timeout;
220 public String getSuccess() {
224 public void setSuccess(String success) {
225 this.success = success;
228 public String getFailure() {
232 public void setFailure(String failure) {
233 this.failure = failure;
236 public String getFailure_retries() {
237 return failureRetries;
240 public void setFailure_retries(String failureRetries) {
241 this.failureRetries = failureRetries;
244 public String getFailure_timeout() {
245 return failureTimeout;
248 public void setFailure_timeout(String failureTimeout) {
249 this.failureTimeout = failureTimeout;
252 public String getFailure_exception() {
253 return failureException;
256 public void setFailure_exception(String failureException) {
257 this.failureException = failureException;
260 public String getFailure_guard() {
264 public void setFailure_guard(String failureGuard) {
265 this.failureGuard = failureGuard;
268 public boolean isValid() {
269 return id != null && name != null && actor != null && recipe != null && target != null;
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 + "]";
283 public int hashCode() {
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);
304 private int addHashCodeForField(int hashCode, Object field) {
305 final int prime = 31;
306 return prime * hashCode + ((field == null) ? 0 : field.hashCode());
310 public boolean equals(Object obj) {
317 if (getClass() != obj.getClass()) {
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);
338 private boolean equalsMayBeNull(final Object obj1, final Object obj2) {
339 if ( obj1 == null ) {
342 return obj1.equals(obj2);