View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.syncope.common.lib.to;
20  
21  import com.fasterxml.jackson.annotation.JsonIgnore;
22  import java.util.ArrayList;
23  import java.util.EnumSet;
24  import java.util.List;
25  import java.util.Optional;
26  import java.util.Set;
27  import javax.ws.rs.PathParam;
28  import org.apache.commons.lang3.builder.EqualsBuilder;
29  import org.apache.commons.lang3.builder.HashCodeBuilder;
30  import org.apache.syncope.common.lib.types.ConnConfProperty;
31  import org.apache.syncope.common.lib.types.ConnectorCapability;
32  import org.apache.syncope.common.lib.types.TraceLevel;
33  
34  public class ResourceTO implements EntityTO {
35  
36      private static final long serialVersionUID = -9193551354041698963L;
37  
38      private String key;
39  
40      /**
41       * The resource type is identified by the associated connector.
42       */
43      private String connector;
44  
45      /**
46       * Convenience information: display name for the connector id.
47       */
48      private String connectorDisplayName;
49  
50      private final List<Provision> provisions = new ArrayList<>();
51  
52      private OrgUnit orgUnit;
53  
54      private Integer propagationPriority;
55  
56      private boolean enforceMandatoryCondition;
57  
58      private TraceLevel createTraceLevel = TraceLevel.ALL;
59  
60      private TraceLevel updateTraceLevel = TraceLevel.ALL;
61  
62      private TraceLevel deleteTraceLevel = TraceLevel.ALL;
63  
64      private TraceLevel provisioningTraceLevel = TraceLevel.ALL;
65  
66      private String passwordPolicy;
67  
68      private String accountPolicy;
69  
70      private String propagationPolicy;
71  
72      private String pullPolicy;
73  
74      private String pushPolicy;
75  
76      private String provisionSorter;
77  
78      private String authPolicy;
79  
80      private String accessPolicy;
81  
82      private final List<ConnConfProperty> confOverride = new ArrayList<>();
83  
84      private boolean overrideCapabilities = false;
85  
86      private final Set<ConnectorCapability> capabilitiesOverride = EnumSet.noneOf(ConnectorCapability.class);
87  
88      private final List<String> propagationActions = new ArrayList<>();
89  
90      @Override
91      public String getKey() {
92          return key;
93      }
94  
95      @PathParam("key")
96      @Override
97      public void setKey(final String key) {
98          this.key = key;
99      }
100 
101     public boolean isEnforceMandatoryCondition() {
102         return enforceMandatoryCondition;
103     }
104 
105     public void setEnforceMandatoryCondition(final boolean enforceMandatoryCondition) {
106         this.enforceMandatoryCondition = enforceMandatoryCondition;
107     }
108 
109     public String getConnector() {
110         return connector;
111     }
112 
113     public void setConnector(final String connector) {
114         this.connector = connector;
115     }
116 
117     public String getConnectorDisplayName() {
118         return connectorDisplayName;
119     }
120 
121     public void setConnectorDisplayName(final String connectorDisplayName) {
122         this.connectorDisplayName = connectorDisplayName;
123     }
124 
125     public Integer getPropagationPriority() {
126         return propagationPriority;
127     }
128 
129     public void setPropagationPriority(final Integer propagationPriority) {
130         this.propagationPriority = propagationPriority;
131     }
132 
133     public TraceLevel getCreateTraceLevel() {
134         return createTraceLevel;
135     }
136 
137     public void setCreateTraceLevel(final TraceLevel createTraceLevel) {
138         this.createTraceLevel = createTraceLevel;
139     }
140 
141     public TraceLevel getDeleteTraceLevel() {
142         return deleteTraceLevel;
143     }
144 
145     public void setDeleteTraceLevel(final TraceLevel deleteTraceLevel) {
146         this.deleteTraceLevel = deleteTraceLevel;
147     }
148 
149     public TraceLevel getUpdateTraceLevel() {
150         return updateTraceLevel;
151     }
152 
153     public void setUpdateTraceLevel(final TraceLevel updateTraceLevel) {
154         this.updateTraceLevel = updateTraceLevel;
155     }
156 
157     public String getPasswordPolicy() {
158         return passwordPolicy;
159     }
160 
161     public void setPasswordPolicy(final String passwordPolicy) {
162         this.passwordPolicy = passwordPolicy;
163     }
164 
165     public String getAccountPolicy() {
166         return accountPolicy;
167     }
168 
169     public void setAccountPolicy(final String accountPolicy) {
170         this.accountPolicy = accountPolicy;
171     }
172 
173     public String getPropagationPolicy() {
174         return propagationPolicy;
175     }
176 
177     public void setPropagationPolicy(final String propagationPolicy) {
178         this.propagationPolicy = propagationPolicy;
179     }
180 
181     public String getPullPolicy() {
182         return pullPolicy;
183     }
184 
185     public void setPullPolicy(final String pullPolicy) {
186         this.pullPolicy = pullPolicy;
187     }
188 
189     public String getPushPolicy() {
190         return pushPolicy;
191     }
192 
193     public void setPushPolicy(final String pushPolicy) {
194         this.pushPolicy = pushPolicy;
195     }
196 
197     public String getProvisionSorter() {
198         return provisionSorter;
199     }
200 
201     public void setProvisionSorter(final String provisionSorter) {
202         this.provisionSorter = provisionSorter;
203     }
204 
205     public String getAuthPolicy() {
206         return authPolicy;
207     }
208 
209     public void setAuthPolicy(final String authPolicy) {
210         this.authPolicy = authPolicy;
211     }
212 
213     public String getAccessPolicy() {
214         return accessPolicy;
215     }
216 
217     public void setAccessPolicy(final String accessPolicy) {
218         this.accessPolicy = accessPolicy;
219     }
220 
221     @JsonIgnore
222     public Optional<Provision> getProvision(final String anyType) {
223         return provisions.stream().filter(
224                 provision -> anyType != null && anyType.equals(provision.getAnyType())).
225                 findFirst();
226     }
227 
228     public List<Provision> getProvisions() {
229         return provisions;
230     }
231 
232     public OrgUnit getOrgUnit() {
233         return orgUnit;
234     }
235 
236     public void setOrgUnit(final OrgUnit orgUnit) {
237         this.orgUnit = orgUnit;
238     }
239 
240     public List<ConnConfProperty> getConfOverride() {
241         return confOverride;
242     }
243 
244     public boolean isOverrideCapabilities() {
245         return overrideCapabilities;
246     }
247 
248     public void setOverrideCapabilities(final boolean overrideCapabilities) {
249         this.overrideCapabilities = overrideCapabilities;
250     }
251 
252     public Set<ConnectorCapability> getCapabilitiesOverride() {
253         return capabilitiesOverride;
254     }
255 
256     public TraceLevel getProvisioningTraceLevel() {
257         return provisioningTraceLevel;
258     }
259 
260     public void setProvisioningTraceLevel(final TraceLevel provisioningTraceLevel) {
261         this.provisioningTraceLevel = provisioningTraceLevel;
262     }
263 
264     public List<String> getPropagationActions() {
265         return propagationActions;
266     }
267 
268     @Override
269     public boolean equals(final Object obj) {
270         if (this == obj) {
271             return true;
272         }
273         if (obj == null) {
274             return false;
275         }
276         if (getClass() != obj.getClass()) {
277             return false;
278         }
279         ResourceTO other = (ResourceTO) obj;
280         return new EqualsBuilder().
281                 append(enforceMandatoryCondition, other.enforceMandatoryCondition).
282                 append(overrideCapabilities, other.overrideCapabilities).
283                 append(key, other.key).
284                 append(connector, other.connector).
285                 append(connectorDisplayName, other.connectorDisplayName).
286                 append(provisions, other.provisions).
287                 append(orgUnit, other.orgUnit).
288                 append(propagationPriority, other.propagationPriority).
289                 append(createTraceLevel, other.createTraceLevel).
290                 append(updateTraceLevel, other.updateTraceLevel).
291                 append(deleteTraceLevel, other.deleteTraceLevel).
292                 append(provisioningTraceLevel, other.provisioningTraceLevel).
293                 append(passwordPolicy, other.passwordPolicy).
294                 append(accountPolicy, other.accountPolicy).
295                 append(propagationPolicy, other.propagationPolicy).
296                 append(pullPolicy, other.pullPolicy).
297                 append(pushPolicy, other.pushPolicy).
298                 append(authPolicy, other.authPolicy).
299                 append(accessPolicy, other.accessPolicy).
300                 append(confOverride, other.confOverride).
301                 append(capabilitiesOverride, other.capabilitiesOverride).
302                 append(propagationActions, other.propagationActions).
303                 append(provisionSorter, other.provisionSorter).
304                 build();
305     }
306 
307     @Override
308     public int hashCode() {
309         return new HashCodeBuilder().
310                 append(key).
311                 append(connector).
312                 append(connectorDisplayName).
313                 append(provisions).
314                 append(orgUnit).
315                 append(propagationPriority).
316                 append(enforceMandatoryCondition).
317                 append(createTraceLevel).
318                 append(updateTraceLevel).
319                 append(deleteTraceLevel).
320                 append(provisioningTraceLevel).
321                 append(passwordPolicy).
322                 append(accountPolicy).
323                 append(propagationPolicy).
324                 append(pullPolicy).
325                 append(pushPolicy).
326                 append(authPolicy).
327                 append(accessPolicy).
328                 append(confOverride).
329                 append(overrideCapabilities).
330                 append(capabilitiesOverride).
331                 append(propagationActions).
332                 append(provisionSorter).
333                 build();
334     }
335 }