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;
97 * @param policyParam provide parameter object
99 public Policy(PolicyParam policyParam) {
100 this(policyParam.getName(), policyParam.getActor(), policyParam.getRecipe(), policyParam.getPayload(),
101 policyParam.getTarget(), policyParam.getRetries(), policyParam.getTimeout());
102 this.id = policyParam.getId();
103 this.description = policyParam.getDescription();
109 * @param policy copy object
111 public Policy(Policy policy) {
113 this.name = policy.name;
114 this.description = policy.description;
115 this.actor = policy.actor;
116 this.recipe = policy.recipe;
117 if (policy.payload != null) {
118 this.payload = Collections.unmodifiableMap(policy.payload);
120 this.target = policy.target;
121 this.operationsAccumulateParams = policy.operationsAccumulateParams;
122 this.retry = policy.retry;
123 this.timeout = policy.timeout;
124 this.success = policy.success;
125 this.failure = policy.failure;
126 this.failureException = policy.failureException;
127 this.failureGuard = policy.failureGuard;
128 this.failureRetries = policy.failureRetries;
129 this.failureTimeout = policy.failureTimeout;
132 public String getId() {
136 public void setId(String id) {
140 public String getName() {
144 public void setName(String name) {
148 public String getDescription() {
152 public void setDescription(String description) {
153 this.description = description;
156 public String getActor() {
160 public void setActor(String actor) {
164 public String getRecipe() {
168 public void setRecipe(String recipe) {
169 this.recipe = recipe;
172 public Map<String, String> getPayload() {
176 public void setPayload(Map<String, String> payload) {
177 this.payload = payload;
180 public Target getTarget() {
184 public void setTarget(Target target) {
185 this.target = target;
188 public OperationsAccumulateParams getOperationsAccumulateParams() {
189 return operationsAccumulateParams;
192 public void setOperationsAccumulateParams(OperationsAccumulateParams operationsAccumulateParams) {
193 this.operationsAccumulateParams = operationsAccumulateParams;
196 public Integer getRetry() {
200 public void setRetry(Integer retry) {
204 public Integer getTimeout() {
208 public void setTimeout(Integer timeout) {
209 this.timeout = timeout;
212 public String getSuccess() {
216 public void setSuccess(String success) {
217 this.success = success;
220 public String getFailure() {
224 public void setFailure(String failure) {
225 this.failure = failure;
228 public String getFailure_retries() {
229 return failureRetries;
232 public void setFailure_retries(String failureRetries) {
233 this.failureRetries = failureRetries;
236 public String getFailure_timeout() {
237 return failureTimeout;
240 public void setFailure_timeout(String failureTimeout) {
241 this.failureTimeout = failureTimeout;
244 public String getFailure_exception() {
245 return failureException;
248 public void setFailure_exception(String failureException) {
249 this.failureException = failureException;
252 public String getFailure_guard() {
256 public void setFailure_guard(String failureGuard) {
257 this.failureGuard = failureGuard;
260 public boolean isValid() {
261 return id != null && name != null && actor != null && recipe != null && target != null;
265 public String toString() {
266 return "Policy [id=" + id + ", name=" + name + ", description=" + description + ", actor=" + actor + ", recipe="
267 + recipe + ", payload=" + payload + ", target=" + target + ", operationsAccumulateParams="
268 + operationsAccumulateParams + ", retry=" + retry + ", timeout=" + timeout
269 + ", success=" + success + ", failure=" + failure + ", failure_retries=" + failureRetries
270 + ", failure_timeout=" + failureTimeout + ", failure_exception=" + failureException
271 + ", failure_guard=" + failureGuard + "]";
275 public int hashCode() {
277 result = addHashCodeForField(result, actor);
278 result = addHashCodeForField(result, description);
279 result = addHashCodeForField(result, failure);
280 result = addHashCodeForField(result, failureException);
281 result = addHashCodeForField(result, failureGuard);
282 result = addHashCodeForField(result, failureRetries);
283 result = addHashCodeForField(result, failureTimeout);
284 result = addHashCodeForField(result, id);
285 result = addHashCodeForField(result, name);
286 result = addHashCodeForField(result, payload);
287 result = addHashCodeForField(result, recipe);
288 result = addHashCodeForField(result, retry);
289 result = addHashCodeForField(result, success);
290 result = addHashCodeForField(result, target);
291 result = addHashCodeForField(result, operationsAccumulateParams);
292 result = addHashCodeForField(result, timeout);
296 private int addHashCodeForField(int hashCode, Object field) {
297 final int prime = 31;
298 return prime * hashCode + ((field == null) ? 0 : field.hashCode());
302 public boolean equals(Object obj) {
309 if (getClass() != obj.getClass()) {
312 Policy other = (Policy) obj;
313 return equalsMayBeNull(actor, other.actor)
314 && equalsMayBeNull(description, other.description)
315 && equalsMayBeNull(failure, other.failure)
316 && equalsMayBeNull(failureException, other.failureException)
317 && equalsMayBeNull(failureGuard, other.failureGuard)
318 && equalsMayBeNull(failureRetries, other.failureRetries)
319 && equalsMayBeNull(id, other.id)
320 && equalsMayBeNull(name, other.name)
321 && equalsMayBeNull(payload, other.payload)
322 && equalsMayBeNull(recipe, other.recipe)
323 && equalsMayBeNull(retry, other.retry)
324 && equalsMayBeNull(success, other.success)
325 && equalsMayBeNull(operationsAccumulateParams, other.operationsAccumulateParams)
326 && equalsMayBeNull(target, other.target)
327 && equalsMayBeNull(timeout, other.timeout);
330 private boolean equalsMayBeNull(final Object obj1, final Object obj2) {
331 if ( obj1 == null ) {
334 return obj1.equals(obj2);