2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2019 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
12 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
22 package org.onap.policy.controlloop.policy;
24 import java.io.Serializable;
25 import java.util.Collections;
27 import java.util.UUID;
29 public class Policy implements Serializable {
30 private static final long serialVersionUID = 1L;
32 private String id = UUID.randomUUID().toString();
34 private String description;
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();
51 //Does Nothing Empty Constructor
54 public Policy(String id) {
63 * @param recipe recipe
64 * @param payload payload
65 * @param target target
67 public Policy(String name, String actor, String recipe, Map<String, String> payload, Target target) {
72 if (payload != null) {
73 this.payload = Collections.unmodifiableMap(payload);
82 * @param recipe recipe
83 * @param payload payload
84 * @param target target
85 * @param retries retries
86 * @param timeout timeout
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);
92 this.timeout = timeout;
98 * @param policyParam provide parameter object
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();
110 * @param policy copy object
112 public Policy(Policy policy) {
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);
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;
133 public String getId() {
137 public void setId(String id) {
141 public String getName() {
145 public void setName(String name) {
149 public String getDescription() {
153 public void setDescription(String description) {
154 this.description = description;
157 public String getActor() {
161 public void setActor(String actor) {
165 public String getRecipe() {
169 public void setRecipe(String recipe) {
170 this.recipe = recipe;
173 public Map<String, String> getPayload() {
177 public void setPayload(Map<String, String> payload) {
178 this.payload = payload;
181 public Target getTarget() {
185 public void setTarget(Target target) {
186 this.target = target;
189 public OperationsAccumulateParams getOperationsAccumulateParams() {
190 return operationsAccumulateParams;
193 public void setOperationsAccumulateParams(OperationsAccumulateParams operationsAccumulateParams) {
194 this.operationsAccumulateParams = operationsAccumulateParams;
197 public Integer getRetry() {
201 public void setRetry(Integer retry) {
205 public Integer getTimeout() {
209 public void setTimeout(Integer timeout) {
210 this.timeout = timeout;
213 public String getSuccess() {
217 public void setSuccess(String success) {
218 this.success = success;
221 public String getFailure() {
225 public void setFailure(String failure) {
226 this.failure = failure;
229 public String getFailure_retries() {
230 return failureRetries;
233 public void setFailure_retries(String failureRetries) {
234 this.failureRetries = failureRetries;
237 public String getFailure_timeout() {
238 return failureTimeout;
241 public void setFailure_timeout(String failureTimeout) {
242 this.failureTimeout = failureTimeout;
245 public String getFailure_exception() {
246 return failureException;
249 public void setFailure_exception(String failureException) {
250 this.failureException = failureException;
253 public String getFailure_guard() {
257 public void setFailure_guard(String failureGuard) {
258 this.failureGuard = failureGuard;
261 public boolean isValid() {
262 boolean isValid = id != null && name != null && actor != null;
263 return isValid && recipe != null && target != null;
267 public String toString() {
268 return "Policy [id=" + id + ", name=" + name + ", description=" + description + ", actor=" + actor + ", recipe="
269 + recipe + ", payload=" + payload + ", target=" + target + ", operationsAccumulateParams="
270 + operationsAccumulateParams + ", retry=" + retry + ", timeout=" + timeout
271 + ", success=" + success + ", failure=" + failure + ", failure_retries=" + failureRetries
272 + ", failure_timeout=" + failureTimeout + ", failure_exception=" + failureException
273 + ", failure_guard=" + failureGuard + "]";
277 public int hashCode() {
279 result = addHashCodeForField(result, actor);
280 result = addHashCodeForField(result, description);
281 result = addHashCodeForField(result, failure);
282 result = addHashCodeForField(result, failureException);
283 result = addHashCodeForField(result, failureGuard);
284 result = addHashCodeForField(result, failureRetries);
285 result = addHashCodeForField(result, failureTimeout);
286 result = addHashCodeForField(result, id);
287 result = addHashCodeForField(result, name);
288 result = addHashCodeForField(result, payload);
289 result = addHashCodeForField(result, recipe);
290 result = addHashCodeForField(result, retry);
291 result = addHashCodeForField(result, success);
292 result = addHashCodeForField(result, target);
293 result = addHashCodeForField(result, operationsAccumulateParams);
294 result = addHashCodeForField(result, timeout);
298 private int addHashCodeForField(int hashCode, Object field) {
299 final int prime = 31;
300 return prime * hashCode + ((field == null) ? 0 : field.hashCode());
304 public boolean equals(Object obj) {
311 if (getClass() != obj.getClass()) {
314 Policy other = (Policy) obj;
315 boolean isEq = equalsMayBeNull(actor, other.actor)
316 && equalsMayBeNull(description, other.description)
317 && equalsMayBeNull(failure, other.failure);
319 && equalsMayBeNull(failureException, other.failureException)
320 && equalsMayBeNull(failureGuard, other.failureGuard);
322 && equalsMayBeNull(failureRetries, other.failureRetries)
323 && equalsMayBeNull(id, other.id);
325 && equalsMayBeNull(name, other.name)
326 && equalsMayBeNull(payload, other.payload);
328 && equalsMayBeNull(recipe, other.recipe)
329 && equalsMayBeNull(retry, other.retry);
331 && equalsMayBeNull(success, other.success)
332 && 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);