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.client.console.wizards.resources;
20  
21  import java.util.ArrayList;
22  import java.util.List;
23  import java.util.Optional;
24  import org.apache.syncope.client.console.panels.ToggleableTarget;
25  import org.apache.syncope.common.lib.SyncopeConstants;
26  import org.apache.syncope.common.lib.to.Item;
27  import org.apache.syncope.common.lib.to.Mapping;
28  import org.apache.syncope.common.lib.to.OrgUnit;
29  import org.apache.syncope.common.lib.to.Provision;
30  
31  public class ResourceProvision implements ToggleableTarget {
32  
33      private static final long serialVersionUID = 1103991919577739952L;
34  
35      private Provision provisionTO;
36  
37      private OrgUnit orgUnitTO;
38  
39      private List<Item> items;
40  
41      public ResourceProvision() {
42          this.items = new ArrayList<>();
43      }
44  
45      public ResourceProvision(final Provision provisionTO) {
46          setProvisionTO(provisionTO);
47      }
48  
49      public ResourceProvision(final OrgUnit orgUnitTO) {
50          setOrgUnitTO(orgUnitTO);
51      }
52  
53      public Provision getProvisionTO() {
54          return provisionTO;
55      }
56  
57      public final void setProvisionTO(final Provision provisionTO) {
58          this.provisionTO = provisionTO;
59          this.orgUnitTO = null;
60  
61          if (this.items == null) {
62              this.items = new ArrayList<>();
63          } else {
64              this.items.clear();
65          }
66          if (provisionTO.getMapping() != null) {
67              this.items.addAll(provisionTO.getMapping().getItems());
68          }
69      }
70  
71      public OrgUnit getOrgUnitTO() {
72          return orgUnitTO;
73      }
74  
75      public final void setOrgUnitTO(final OrgUnit orgUnitTO) {
76          this.orgUnitTO = orgUnitTO;
77          this.provisionTO = null;
78  
79          if (this.items == null) {
80              this.items = new ArrayList<>();
81          } else {
82              this.items.clear();
83          }
84          this.items.addAll(orgUnitTO.getItems());
85      }
86  
87      @Override
88      public String getKey() {
89          return provisionTO == null
90                  ? Optional.ofNullable(orgUnitTO).map(OrgUnit::getObjectClass).orElse(null)
91                  : provisionTO.getObjectClass();
92      }
93  
94      @Override
95      public String getAnyType() {
96          return provisionTO == null
97                  ? orgUnitTO == null
98                          ? null
99                          : SyncopeConstants.REALM_ANYTYPE : provisionTO.getAnyType();
100     }
101 
102     public void setAnyType(final String anyType) {
103         if (SyncopeConstants.REALM_ANYTYPE.equals(anyType)) {
104             setOrgUnitTO(new OrgUnit());
105         } else {
106             setProvisionTO(new Provision());
107             getProvisionTO().setAnyType(anyType);
108             getProvisionTO().setMapping(new Mapping());
109         }
110     }
111 
112     public String getObjectClass() {
113         return provisionTO == null
114                 ? Optional.ofNullable(orgUnitTO).map(OrgUnit::getObjectClass).orElse(null)
115                 : provisionTO.getObjectClass();
116     }
117 
118     public void setObjectClass(final String objectClass) {
119         if (provisionTO == null) {
120             orgUnitTO.setObjectClass(objectClass);
121         } else {
122             provisionTO.setObjectClass(objectClass);
123         }
124     }
125 
126     public List<String> getAuxClasses() {
127         return provisionTO == null ? List.of() : provisionTO.getAuxClasses();
128     }
129 
130     public boolean isIgnoreCaseMatch() {
131         return Optional.ofNullable(provisionTO).
132                 map(Provision::isIgnoreCaseMatch).orElseGet(() -> orgUnitTO.isIgnoreCaseMatch());
133     }
134 
135     public void setIgnoreCaseMatch(final boolean ignoreCaseMatch) {
136         if (provisionTO == null) {
137             orgUnitTO.setIgnoreCaseMatch(ignoreCaseMatch);
138         } else {
139             provisionTO.setIgnoreCaseMatch(ignoreCaseMatch);
140         }
141     }
142 
143     public String getConnObjectLink() {
144         return provisionTO == null
145                 ? Optional.ofNullable(orgUnitTO).map(OrgUnit::getConnObjectLink).orElse(null)
146                 : provisionTO.getMapping().getConnObjectLink();
147     }
148 
149     public void setConnObjectLink(final String connObjectLink) {
150         if (provisionTO == null) {
151             orgUnitTO.setConnObjectLink(connObjectLink);
152         } else {
153             provisionTO.getMapping().setConnObjectLink(connObjectLink);
154         }
155     }
156 
157     public List<Item> getItems() {
158         return items;
159     }
160 }