1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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 }