1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.syncope.core.persistence.jpa.entity.am;
20
21 import com.fasterxml.jackson.core.type.TypeReference;
22 import java.util.ArrayList;
23 import java.util.List;
24 import java.util.Optional;
25 import javax.persistence.Column;
26 import javax.persistence.EnumType;
27 import javax.persistence.Enumerated;
28 import javax.persistence.FetchType;
29 import javax.persistence.Lob;
30 import javax.persistence.ManyToOne;
31 import javax.persistence.MappedSuperclass;
32 import org.apache.syncope.common.lib.Attr;
33 import org.apache.syncope.common.lib.clientapps.UsernameAttributeProviderConf;
34 import org.apache.syncope.common.lib.types.LogoutType;
35 import org.apache.syncope.core.persistence.api.entity.Realm;
36 import org.apache.syncope.core.persistence.api.entity.am.ClientApp;
37 import org.apache.syncope.core.persistence.api.entity.policy.AccessPolicy;
38 import org.apache.syncope.core.persistence.api.entity.policy.AttrReleasePolicy;
39 import org.apache.syncope.core.persistence.api.entity.policy.AuthPolicy;
40 import org.apache.syncope.core.persistence.api.entity.policy.TicketExpirationPolicy;
41 import org.apache.syncope.core.persistence.jpa.entity.AbstractGeneratedKeyEntity;
42 import org.apache.syncope.core.persistence.jpa.entity.JPARealm;
43 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAccessPolicy;
44 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAttrReleasePolicy;
45 import org.apache.syncope.core.persistence.jpa.entity.policy.JPAAuthPolicy;
46 import org.apache.syncope.core.persistence.jpa.entity.policy.JPATicketExpirationPolicy;
47 import org.apache.syncope.core.provisioning.api.serialization.POJOHelper;
48
49 @MappedSuperclass
50 public class AbstractClientApp extends AbstractGeneratedKeyEntity implements ClientApp {
51
52 private static final long serialVersionUID = 7422422526695279794L;
53
54 protected static final TypeReference<List<Attr>> ATTR_TYPEREF = new TypeReference<List<Attr>>() {
55 };
56
57 @Column(unique = true, nullable = false)
58 private String name;
59
60 @Column(unique = true, nullable = false)
61 private Long clientAppId;
62
63 private String description;
64
65 private String logo;
66
67 @Lob
68 private String usernameAttributeProviderConf;
69
70 private String theme;
71
72 private String informationUrl;
73
74 private String privacyUrl;
75
76 @ManyToOne(fetch = FetchType.EAGER)
77 private JPARealm realm;
78
79 @ManyToOne(fetch = FetchType.EAGER)
80 private JPAAuthPolicy authPolicy;
81
82 @ManyToOne(fetch = FetchType.EAGER)
83 private JPAAccessPolicy accessPolicy;
84
85 @ManyToOne(fetch = FetchType.EAGER)
86 private JPAAttrReleasePolicy attrReleasePolicy;
87
88 @ManyToOne(fetch = FetchType.EAGER)
89 private JPATicketExpirationPolicy ticketExpirationPolicy;
90
91 @Lob
92 private String properties;
93
94 @Enumerated(EnumType.STRING)
95 private LogoutType logoutType;
96
97 @Override
98 public Long getClientAppId() {
99 return clientAppId;
100 }
101
102 @Override
103 public void setClientAppId(final Long clientAppId) {
104 this.clientAppId = clientAppId;
105 }
106
107 @Override
108 public String getName() {
109 return name;
110 }
111
112 @Override
113 public void setName(final String name) {
114 this.name = name;
115 }
116
117 @Override
118 public String getDescription() {
119 return description;
120 }
121
122 @Override
123 public void setDescription(final String description) {
124 this.description = description;
125 }
126
127 @Override
128 public String getLogo() {
129 return logo;
130 }
131
132 @Override
133 public void setLogo(final String logo) {
134 this.logo = logo;
135 }
136
137 @Override
138 public String getTheme() {
139 return theme;
140 }
141
142 @Override
143 public void setTheme(final String theme) {
144 this.theme = theme;
145 }
146
147 @Override
148 public String getInformationUrl() {
149 return informationUrl;
150 }
151
152 @Override
153 public void setInformationUrl(final String informationUrl) {
154 this.informationUrl = informationUrl;
155 }
156
157 @Override
158 public String getPrivacyUrl() {
159 return privacyUrl;
160 }
161
162 @Override
163 public void setPrivacyUrl(final String privacyUrl) {
164 this.privacyUrl = privacyUrl;
165 }
166
167 @Override
168 public UsernameAttributeProviderConf getUsernameAttributeProviderConf() {
169 return Optional.ofNullable(usernameAttributeProviderConf).
170 map(conf -> POJOHelper.deserialize(conf, UsernameAttributeProviderConf.class)).orElse(null);
171 }
172
173 @Override
174 public void setUsernameAttributeProviderConf(final UsernameAttributeProviderConf conf) {
175 this.usernameAttributeProviderConf = conf == null ? null : POJOHelper.serialize(conf);
176 }
177
178 @Override
179 public JPAAuthPolicy getAuthPolicy() {
180 return authPolicy;
181 }
182
183 @Override
184 public void setAuthPolicy(final AuthPolicy authPolicy) {
185 checkType(authPolicy, JPAAuthPolicy.class);
186 this.authPolicy = (JPAAuthPolicy) authPolicy;
187 }
188
189 @Override
190 public JPAAccessPolicy getAccessPolicy() {
191 return accessPolicy;
192 }
193
194 @Override
195 public void setAccessPolicy(final AccessPolicy accessPolicy) {
196 checkType(accessPolicy, JPAAccessPolicy.class);
197 this.accessPolicy = (JPAAccessPolicy) accessPolicy;
198 }
199
200 @Override
201 public AttrReleasePolicy getAttrReleasePolicy() {
202 return this.attrReleasePolicy;
203 }
204
205 @Override
206 public void setAttrReleasePolicy(final AttrReleasePolicy policy) {
207 checkType(policy, JPAAttrReleasePolicy.class);
208 this.attrReleasePolicy = (JPAAttrReleasePolicy) policy;
209 }
210
211 @Override
212 public TicketExpirationPolicy getTicketExpirationPolicy() {
213 return this.ticketExpirationPolicy;
214 }
215
216 @Override
217 public void setTicketExpirationPolicy(final TicketExpirationPolicy policy) {
218 checkType(policy, JPATicketExpirationPolicy.class);
219 this.ticketExpirationPolicy = (JPATicketExpirationPolicy) policy;
220 }
221
222 @Override
223 public Realm getRealm() {
224 return realm;
225 }
226
227 @Override
228 public void setRealm(final Realm realm) {
229 checkType(realm, JPARealm.class);
230 this.realm = (JPARealm) realm;
231 }
232
233 @Override
234 public List<Attr> getProperties() {
235 return properties == null
236 ? new ArrayList<>(0)
237 : POJOHelper.deserialize(properties, ATTR_TYPEREF);
238 }
239
240 @Override
241 public void setProperties(final List<Attr> properties) {
242 this.properties = POJOHelper.serialize(properties);
243 }
244
245 @Override
246 public LogoutType getLogoutType() {
247 return this.logoutType;
248 }
249
250 @Override
251 public void setLogoutType(final LogoutType logoutType) {
252 this.logoutType = logoutType;
253 }
254 }