2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 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=========================================================
20 package org.onap.policy.xacml.std.pap;
22 import java.util.Collections;
23 import java.util.HashSet;
26 import com.att.research.xacml.api.pap.PDP;
27 import com.att.research.xacml.api.pap.PDPGroupStatus;
28 import com.att.research.xacml.api.pap.PDPPIPConfig;
29 import com.att.research.xacml.api.pap.PDPPolicy;
30 import com.fasterxml.jackson.annotation.JsonIgnore;
32 public class StdPDPGroupStatus implements PDPGroupStatus {
34 private Status status = Status.UNKNOWN;
36 private Set<String> loadErrors = new HashSet<>();
38 private Set<String> loadWarnings = new HashSet<>();
40 private Set<PDPPolicy> loadedPolicies = new HashSet<>();
42 private Set<PDPPolicy> failedPolicies = new HashSet<>();
44 private Set<PDPPIPConfig> loadedPIPConfigs = new HashSet<>();
46 private Set<PDPPIPConfig> failedPIPConfigs = new HashSet<>();
48 private Set<PDP> inSynchPDPs = new HashSet<>();
50 private Set<PDP> outOfSynchPDPs = new HashSet<>();
52 private Set<PDP> failedPDPs = new HashSet<>();
54 private Set<PDP> updatingPDPs = new HashSet<>();
56 private Set<PDP> lastUpdateFailedPDPs = new HashSet<>();
58 private Set<PDP> unknownPDPs = new HashSet<>();
61 // Constructor needed for JSON deserialization
62 public StdPDPGroupStatus() {
66 public StdPDPGroupStatus(Status status) {
70 public StdPDPGroupStatus(PDPGroupStatus stat) {
71 this.status = stat.getStatus();
72 this.failedPDPs.clear(); this.failedPDPs.addAll(stat.getFailedPDPs());
73 this.failedPIPConfigs.clear(); this.failedPIPConfigs.addAll(stat.getFailedPipConfigs());
74 this.failedPolicies.clear(); this.failedPolicies.addAll(stat.getFailedPolicies());
75 this.inSynchPDPs.clear(); this.inSynchPDPs.addAll(stat.getInSynchPDPs());
76 this.lastUpdateFailedPDPs.clear(); this.lastUpdateFailedPDPs.addAll(stat.getLastUpdateFailedPDPs());
77 this.loadedPIPConfigs.clear(); this.loadedPIPConfigs.addAll(stat.getLoadedPipConfigs());
78 this.loadedPolicies.clear(); this.loadedPolicies.addAll(stat.getLoadedPolicies());
79 this.loadErrors.clear(); this.loadErrors.addAll(stat.getLoadErrors());
80 this.loadWarnings.clear(); this.loadWarnings.addAll(stat.getLoadWarnings());
81 this.outOfSynchPDPs.clear(); this.outOfSynchPDPs.addAll(stat.getOutOfSynchPDPs());
82 this.unknownPDPs.clear(); this.unknownPDPs.addAll(stat.getUpdatingPDPs());
83 this.updatingPDPs.clear(); this.updatingPDPs.addAll(stat.getUpdatingPDPs());
86 public Set<PDPPIPConfig> getLoadedPIPConfigs() {
87 return loadedPIPConfigs;
89 public void setLoadedPIPConfigs(Set<PDPPIPConfig> loadedPIPConfigs) {
90 this.loadedPIPConfigs = loadedPIPConfigs;
92 public Set<PDPPIPConfig> getFailedPIPConfigs() {
93 return failedPIPConfigs;
95 public void setFailedPIPConfigs(Set<PDPPIPConfig> failedPIPConfigs) {
96 this.failedPIPConfigs = failedPIPConfigs;
98 public Set<PDP> getUnknownPDPs() {
101 public void setUnknownPDPs(Set<PDP> unknownPDPs) {
102 this.unknownPDPs = unknownPDPs;
104 public void setLoadErrors(Set<String> loadErrors) {
105 this.loadErrors = loadErrors;
107 public void setLoadWarnings(Set<String> loadWarnings) {
108 this.loadWarnings = loadWarnings;
110 public void setLoadedPolicies(Set<PDPPolicy> loadedPolicies) {
111 this.loadedPolicies = loadedPolicies;
113 public void setFailedPolicies(Set<PDPPolicy> failedPolicies) {
114 this.failedPolicies = failedPolicies;
116 public void setInSynchPDPs(Set<PDP> inSynchPDPs) {
117 this.inSynchPDPs = inSynchPDPs;
119 public void setOutOfSynchPDPs(Set<PDP> outOfSynchPDPs) {
120 this.outOfSynchPDPs = outOfSynchPDPs;
122 public void setFailedPDPs(Set<PDP> failedPDPs) {
123 this.failedPDPs = failedPDPs;
125 public void setUpdatingPDPs(Set<PDP> updatingPDPs) {
126 this.updatingPDPs = updatingPDPs;
128 public void setLastUpdateFailedPDPs(Set<PDP> lastUpdateFailedPDPs) {
129 this.lastUpdateFailedPDPs = lastUpdateFailedPDPs;
134 public Status getStatus() {
138 public void setStatus(Status status) {
139 this.status = status;
143 public Set<String> getLoadErrors() {
144 return Collections.unmodifiableSet(this.loadErrors);
147 public void addLoadError(String error) {
148 this.loadErrors.add(error);
152 public Set<String> getLoadWarnings() {
153 return Collections.unmodifiableSet(this.loadWarnings);
156 public void addLoadWarning(String warning) {
157 this.loadWarnings.add(warning);
161 public Set<PDPPolicy> getLoadedPolicies() {
162 return Collections.unmodifiableSet(this.loadedPolicies);
165 public void addLoadedPolicy(PDPPolicy policy) {
166 this.loadedPolicies.add(policy);
170 public Set<PDPPolicy> getFailedPolicies() {
171 return Collections.unmodifiableSet(this.failedPolicies);
174 public void addFailedPolicy(PDPPolicy policy) {
175 this.failedPolicies.add(policy);
179 public boolean policiesOK() {
180 if (this.failedPolicies.size() > 0) {
187 public Set<PDPPIPConfig> getLoadedPipConfigs() {
188 return Collections.unmodifiableSet(this.loadedPIPConfigs);
191 public void addLoadedPipConfig(PDPPIPConfig config) {
192 this.loadedPIPConfigs.add(config);
196 public Set<PDPPIPConfig> getFailedPipConfigs() {
197 return Collections.unmodifiableSet(this.failedPIPConfigs);
200 public void addFailedPipConfig(PDPPIPConfig config) {
201 this.failedPIPConfigs.add(config);
205 public boolean pipConfigOK() {
206 if (this.failedPIPConfigs.size() > 0) {
213 public Set<PDP> getInSynchPDPs() {
214 return Collections.unmodifiableSet(this.inSynchPDPs);
217 public void addInSynchPDP(PDP pdp) {
218 this.inSynchPDPs.add(pdp);
222 public Set<PDP> getOutOfSynchPDPs() {
223 return Collections.unmodifiableSet(this.outOfSynchPDPs);
226 public void addOutOfSynchPDP(PDP pdp) {
227 this.outOfSynchPDPs.add(pdp);
231 public Set<PDP> getFailedPDPs() {
232 return Collections.unmodifiableSet(this.failedPDPs);
235 public void addFailedPDP(PDP pdp) {
236 this.failedPDPs.add(pdp);
240 public Set<PDP> getUpdatingPDPs() {
241 return Collections.unmodifiableSet(this.updatingPDPs);
244 public void addUpdatingPDP(PDP pdp) {
245 this.updatingPDPs.add(pdp);
249 public Set<PDP> getLastUpdateFailedPDPs() {
250 return Collections.unmodifiableSet(this.lastUpdateFailedPDPs);
253 public void addLastUpdateFailedPDP(PDP pdp) {
254 this.lastUpdateFailedPDPs.add(pdp);
259 public Set<PDP> getUnknownStatusPDPs() {
260 return Collections.unmodifiableSet(this.unknownPDPs);
263 public void addUnknownPDP(PDP pdp) {
264 this.unknownPDPs.add(pdp);
268 public boolean pdpsOK() {
269 if (this.outOfSynchPDPs.size() > 0) {
272 if (this.failedPDPs.size() > 0) {
275 if (this.lastUpdateFailedPDPs.size() > 0) {
278 if (this.unknownPDPs.size() > 0) {
286 public boolean isGroupOk() {
287 if (this.policiesOK() == false) {
290 if (this.pipConfigOK() == false) {
293 if (this.pdpsOK() == false) {
296 if (this.loadErrors.isEmpty() == false) {
299 return (this.status == Status.OK);
302 public void reset() {
303 this.status = Status.OK;
305 this.loadErrors.clear();
306 this.loadWarnings.clear();
307 this.loadedPolicies.clear();
308 this.failedPolicies.clear();
309 this.loadedPIPConfigs.clear();
310 this.failedPIPConfigs.clear();
311 this.inSynchPDPs.clear();
312 this.outOfSynchPDPs.clear();
313 this.failedPDPs.clear();
314 this.updatingPDPs.clear();
315 this.lastUpdateFailedPDPs.clear();
316 this.unknownPDPs.clear();
320 public int hashCode() {
321 final int prime = 31;
323 result = prime * result
324 + (failedPDPs.hashCode());
327 + (failedPIPConfigs.hashCode());
328 result = prime * result
329 + (failedPolicies.hashCode());
330 result = prime * result
331 + (inSynchPDPs.hashCode());
334 + (lastUpdateFailedPDPs.hashCode());
335 result = prime * result
336 + (loadErrors.hashCode());
337 result = prime * result
338 + (loadWarnings.hashCode());
341 + (loadedPIPConfigs.hashCode());
342 result = prime * result
343 + (loadedPolicies.hashCode());
344 result = prime * result
345 + (outOfSynchPDPs.hashCode());
346 result = prime * result + (status.hashCode());
347 result = prime * result
348 + (unknownPDPs.hashCode());
349 result = prime * result
350 + (updatingPDPs.hashCode());
355 public boolean equals(Object obj) {
360 if (getClass() != obj.getClass())
362 StdPDPGroupStatus other = (StdPDPGroupStatus) obj;
363 if (!failedPDPs.equals(other.failedPDPs))
365 if (!failedPIPConfigs.equals(other.failedPIPConfigs))
367 if (!failedPolicies.equals(other.failedPolicies))
369 if (!inSynchPDPs.equals(other.inSynchPDPs))
371 if (!lastUpdateFailedPDPs.equals(other.lastUpdateFailedPDPs))
373 if (!loadErrors.equals(other.loadErrors))
375 if (!loadWarnings.equals(other.loadWarnings))
377 if (!loadedPIPConfigs.equals(other.loadedPIPConfigs))
379 if (!loadedPolicies.equals(other.loadedPolicies))
381 if (!outOfSynchPDPs.equals(other.outOfSynchPDPs))
383 if (status != other.status)
385 if (!unknownPDPs.equals(other.unknownPDPs))
387 if (!updatingPDPs.equals(other.updatingPDPs))
393 public String toString() {
394 return "StdPDPGroupStatus [status=" + status + ", loadErrors="
395 + loadErrors + ", loadWarnings=" + loadWarnings
396 + ", loadedPolicies=" + loadedPolicies + ", failedPolicies="
397 + failedPolicies + ", loadedPIPConfigs=" + loadedPIPConfigs
398 + ", failedPIPConfigs=" + failedPIPConfigs + ", inSynchPDPs="
399 + inSynchPDPs + ", outOfSynchPDPs=" + outOfSynchPDPs
400 + ", failedPDPs=" + failedPDPs + ", updatingPDPs="
401 + updatingPDPs + ", lastUpdateFailedPDPs="
402 + lastUpdateFailedPDPs + ", unknownPDPs=" + unknownPDPs + "]";