1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kim.api.role;
17
18 import org.apache.commons.lang.StringUtils;
19 import org.apache.commons.lang.builder.EqualsBuilder;
20 import org.apache.commons.lang.builder.HashCodeBuilder;
21 import org.apache.commons.lang.builder.ToStringBuilder;
22 import org.kuali.rice.core.api.CoreConstants;
23 import org.kuali.rice.core.api.mo.AbstractDataTransferObject;
24 import org.kuali.rice.core.api.mo.ModelBuilder;
25 import org.kuali.rice.core.api.mo.ModelObjectComplete;
26 import org.kuali.rice.kim.api.KimConstants;
27 import org.w3c.dom.Element;
28
29 import javax.xml.bind.annotation.XmlAccessType;
30 import javax.xml.bind.annotation.XmlAccessorType;
31 import javax.xml.bind.annotation.XmlAnyElement;
32 import javax.xml.bind.annotation.XmlElement;
33 import javax.xml.bind.annotation.XmlRootElement;
34 import javax.xml.bind.annotation.XmlType;
35 import java.util.Collection;
36
37
38
39
40
41
42
43 @XmlRootElement(name = Role.Constants.ROOT_ELEMENT_NAME)
44 @XmlAccessorType(XmlAccessType.NONE)
45 @XmlType(name = Role.Constants.TYPE_NAME, propOrder = {
46 Role.Elements.ID,
47 Role.Elements.NAME,
48 Role.Elements.NAMESPACE_CODE,
49 Role.Elements.DESCRIPTION,
50 Role.Elements.KIM_TYPE_ID,
51 Role.Elements.ACTIVE,
52 CoreConstants.CommonElements.VERSION_NUMBER,
53 CoreConstants.CommonElements.OBJECT_ID,
54 CoreConstants.CommonElements.FUTURE_ELEMENTS
55 })
56 public final class Role extends AbstractDataTransferObject implements RoleContract {
57 private static final long serialVersionUID = 1L;
58
59 @XmlElement(name = Role.Elements.ID, required = true)
60 private final String id;
61
62 @XmlElement(name = Role.Elements.NAME, required = true)
63 private final String name;
64
65 @XmlElement(name = Role.Elements.NAMESPACE_CODE, required = true)
66 private final String namespaceCode;
67
68 @XmlElement(name = Role.Elements.DESCRIPTION)
69 private final String description;
70
71 @XmlElement(name = Role.Elements.KIM_TYPE_ID, required = true)
72 private final String kimTypeId;
73
74 @XmlElement(name = CoreConstants.CommonElements.ACTIVE, required = true)
75 private final boolean active;
76
77 @XmlElement(name = CoreConstants.CommonElements.VERSION_NUMBER)
78 private final Long versionNumber;
79
80 @XmlElement(name = CoreConstants.CommonElements.OBJECT_ID, required = false)
81 private final String objectId;
82
83 @SuppressWarnings("unused")
84 @XmlAnyElement
85 private final Collection<Element> _futureElements = null;
86
87
88
89
90
91 @SuppressWarnings("unused")
92 private Role() {
93 id = null;
94 name = null;
95 namespaceCode = null;
96 description = null;
97 kimTypeId = null;
98 active = false;
99 objectId = null;
100 versionNumber = null;
101 }
102
103 private Role(Builder builder) {
104 id = builder.getId();
105 name = builder.getName();
106 namespaceCode = builder.getNamespaceCode();
107 description = builder.getDescription();
108 kimTypeId = builder.getKimTypeId();
109 active = builder.isActive();
110 versionNumber = builder.getVersionNumber();
111 objectId = builder.getObjectId();
112 }
113
114
115
116
117
118 @Override
119 public String getId() {
120 return id;
121 }
122
123
124
125
126 @Override
127 public String getNamespaceCode() {
128 return namespaceCode;
129 }
130
131
132
133
134 @Override
135 public String getName() {
136 return name;
137 }
138
139
140
141
142 @Override
143 public String getDescription() {
144 return description;
145 }
146
147
148
149
150 @Override
151 public String getKimTypeId() {
152 return kimTypeId;
153 }
154
155 @Override
156 public Long getVersionNumber() {
157 return versionNumber;
158 }
159
160 @Override
161 public String getObjectId() {
162 return objectId;
163 }
164
165 @Override
166 public boolean isActive() {
167 return active;
168 }
169
170 public static final class Builder implements RoleContract, ModelBuilder, ModelObjectComplete {
171
172 private String id;
173 private String name;
174 private String namespaceCode;
175 private String description;
176 private String kimTypeId;
177 private boolean active;
178 private Long versionNumber;
179 private String objectId;
180
181 private Builder() {
182 }
183
184 public static Builder create() {
185 return new Builder();
186 }
187
188 public static Builder create(String id, String name, String namespaceCode, String description, String kimTypeId) {
189 Builder b = new Builder();
190 b.setId(id);
191 b.setName(name);
192 b.setNamespaceCode(namespaceCode);
193 b.setDescription(description);
194 b.setKimTypeId(kimTypeId);
195 b.setActive(true);
196
197 return b;
198 }
199
200 public static Builder create(RoleContract roleContract) {
201 Builder b = new Builder();
202 b.setId(roleContract.getId());
203 b.setName(roleContract.getName());
204 b.setNamespaceCode(roleContract.getNamespaceCode());
205 b.setDescription(roleContract.getDescription());
206 b.setKimTypeId(roleContract.getKimTypeId());
207 b.setActive(roleContract.isActive());
208 b.setVersionNumber(roleContract.getVersionNumber());
209 b.setObjectId(roleContract.getObjectId());
210 return b;
211 }
212
213 @Override
214 public Role build() {
215 return new Role(this);
216 }
217
218 public void setId(String id) {
219 if (StringUtils.isWhitespace(id)) {
220 throw new IllegalArgumentException("id cannot be blank");
221 }
222 this.id = id;
223 }
224
225 @Override
226 public String getId() {
227 return id;
228 }
229
230 public void setNamespaceCode(String namespaceCode) {
231 if (StringUtils.isBlank(namespaceCode)) {
232 throw new IllegalArgumentException("namespaceCode cannot be blank or null");
233 }
234 this.namespaceCode = namespaceCode;
235 }
236
237 @Override
238 public String getNamespaceCode() {
239 return namespaceCode;
240 }
241
242 public void setName(String name) {
243 if (StringUtils.isBlank(name)) {
244 throw new IllegalArgumentException("name cannot be blank or null");
245 }
246 this.name = name;
247 }
248
249 @Override
250 public String getName() {
251 return name;
252 }
253
254 public void setDescription(String description) {
255 this.description = description;
256 }
257
258 @Override
259 public String getDescription() {
260 return description;
261 }
262
263 public void setKimTypeId(String kimTypeId) {
264 if (StringUtils.isBlank(kimTypeId)) {
265 throw new IllegalArgumentException("kimTypeId cannot be blank or null");
266 }
267 this.kimTypeId = kimTypeId;
268 }
269
270 @Override
271 public String getKimTypeId() {
272 return kimTypeId;
273 }
274
275 public void setActive(boolean active) {
276 this.active = active;
277 }
278
279 @Override
280 public boolean isActive() {
281 return active;
282 }
283
284 public void setVersionNumber(Long versionNumber) {
285 this.versionNumber = versionNumber;
286 }
287
288 @Override
289 public Long getVersionNumber() {
290 return versionNumber;
291 }
292
293 public void setObjectId(String objectId) {
294 this.objectId = objectId;
295 }
296
297 @Override
298 public String getObjectId() {
299 return objectId;
300 }
301
302 @Override
303 public int hashCode() {
304 return HashCodeBuilder.reflectionHashCode(this);
305 }
306
307 @Override
308 public boolean equals(Object obj) {
309 return EqualsBuilder.reflectionEquals(obj, this);
310 }
311
312 @Override
313 public String toString() {
314 return ToStringBuilder.reflectionToString(this);
315 }
316 }
317
318
319
320
321
322 static class Elements {
323 final static String ID = "id";
324 final static String NAME = "name";
325 final static String DESCRIPTION = "description";
326 final static String KIM_TYPE_ID = "kimTypeId";
327 final static String NAMESPACE_CODE = "namespaceCode";
328 final static String ACTIVE = "active";
329 }
330
331
332
333
334 static class Constants {
335 final static String ROOT_ELEMENT_NAME = "role";
336 final static String TYPE_NAME = "RoleType";
337 }
338
339 public static class Cache {
340 public static final String NAME = KimConstants.Namespaces.KIM_NAMESPACE_2_0 + "/" + Role.Constants.TYPE_NAME;
341 }
342 }