8c891bf690cc9bb4248123add5244642fb7727d3
[policy/engine.git] / ONAP-PAP-REST / src / main / java / org / onap / policy / pap / xacml / rest / model / RemoveGroupPolicy.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP-PAP-REST
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
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.pap.xacml.rest.model;
22
23 import java.util.Collection;
24 import java.util.HashSet;
25 import java.util.Set;
26
27 import org.onap.policy.rest.util.PDPPolicyContainer;
28 import org.onap.policy.xacml.api.pap.OnapPDPGroup;
29 import org.onap.policy.xacml.std.pap.StdPDPGroup;
30
31 import com.att.research.xacml.api.pap.PDPPolicy;
32
33 public class RemoveGroupPolicy {
34
35         
36         //Container from where we are fetching the policies
37         private static PDPPolicyContainer policyContainer;
38                 
39         private RemoveGroupPolicy self = this;
40         private StdPDPGroup updatedObject;
41         private final StdPDPGroup group;
42         private boolean isSaved = false;
43         
44         public RemoveGroupPolicy(StdPDPGroup group) {
45                 
46                 this.group = group;
47                 
48         }
49         
50         public void prepareToRemove(PDPPolicy policy) {
51                 
52                 if (this.group == null) {
53                         return;
54                 }
55                 setRemoveGroupPolicy(new PDPPolicyContainer(group));
56
57                 RemoveGroupPolicy.policyContainer.removeItem(policy);
58                                                                         
59                 self.doSave();
60                 
61                 self.isSaved = true;
62                 
63         }
64         
65         private static void setRemoveGroupPolicy(PDPPolicyContainer pdpPolicyContainer) {
66         RemoveGroupPolicy.policyContainer = pdpPolicyContainer;
67     }
68
69     @SuppressWarnings("unchecked")
70         protected void doSave() {
71                 if (this.group == null) {
72                         return;
73                 }
74                 
75                 StdPDPGroup updatedGroupObject = new StdPDPGroup(
76                                 group.getId(), 
77                                 group.isDefaultGroup(), 
78                                 group.getName(), 
79                                 group.getDescription(), 
80                                 null);
81                 
82                 // replace the original set of Policies with the set from the container (possibly modified by the user)
83                 Set<PDPPolicy> changedPolicies = new HashSet<>();
84                 changedPolicies.addAll((Collection<PDPPolicy>) RemoveGroupPolicy.policyContainer.getItemIds());
85                 updatedGroupObject.setPolicies(changedPolicies);
86                 updatedGroupObject.setOnapPdps(this.group.getOnapPdps());
87                 
88                 // replace the original set of PIP Configs with the set from the container
89                 updatedGroupObject.setPipConfigs(this.group.getPipConfigs());
90                 
91                 // copy those things that the user cannot change from the original to the new object
92                 updatedGroupObject.setStatus(this.group.getStatus());
93                 
94                 this.updatedObject = updatedGroupObject;                        
95         }
96         
97         public boolean isRemoved() {
98                 return this.isSaved;
99         }
100                 
101         public OnapPDPGroup getUpdatedObject() {
102                 return this.updatedObject;
103         }
104
105 }