001 /**
002 * Copyright 2005-2014 The Kuali Foundation
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.rice.kim.api.role;
017
018 import java.util.Collection;
019 import java.util.Collections;
020
021 import javax.xml.bind.annotation.XmlAccessType;
022 import javax.xml.bind.annotation.XmlAccessorType;
023 import javax.xml.bind.annotation.XmlAnyElement;
024 import javax.xml.bind.annotation.XmlElement;
025 import javax.xml.bind.annotation.XmlRootElement;
026 import javax.xml.bind.annotation.XmlType;
027
028 import org.apache.commons.collections.CollectionUtils;
029 import org.apache.commons.lang.StringUtils;
030 import org.apache.commons.lang.builder.EqualsBuilder;
031 import org.apache.commons.lang.builder.HashCodeBuilder;
032 import org.apache.commons.lang.builder.ToStringBuilder;
033 import org.kuali.rice.core.api.CoreConstants;
034 import org.kuali.rice.core.api.mo.AbstractDataTransferObject;
035 import org.kuali.rice.core.api.mo.ModelBuilder;
036 import org.kuali.rice.core.api.mo.ModelObjectComplete;
037 import org.kuali.rice.kim.api.KimConstants;
038 import org.w3c.dom.Element;
039
040 /**
041 * @author Kuali Rice Team (rice.collab@kuali.org)
042 */
043 @XmlRootElement(name = RoleResponsibilityAction.Constants.ROOT_ELEMENT_NAME)
044 @XmlAccessorType(XmlAccessType.NONE)
045 @XmlType(name = RoleResponsibilityAction.Constants.TYPE_NAME, propOrder = {
046 RoleResponsibilityAction.Elements.ID,
047 RoleResponsibilityAction.Elements.ROLE_RESPONSIBILITY_ID,
048 RoleResponsibilityAction.Elements.ROLE_MEMBER_ID,
049 RoleResponsibilityAction.Elements.ACTION_TYPE_CODE,
050 RoleResponsibilityAction.Elements.ACTION_POLICY_CODE,
051 RoleResponsibilityAction.Elements.FORCE_ACTION,
052 RoleResponsibilityAction.Elements.PRIORITY_NUMBER,
053 RoleResponsibilityAction.Elements.ROLE_RESPONSIBILITY,
054 CoreConstants.CommonElements.VERSION_NUMBER,
055 CoreConstants.CommonElements.FUTURE_ELEMENTS
056 })
057 public class RoleResponsibilityAction extends AbstractDataTransferObject implements RoleResponsibilityActionContract {
058 private static final long serialVersionUID = 1L;
059
060 @XmlElement(name = RoleResponsibilityAction.Elements.ID, required = false)
061 private final String id;
062
063 @XmlElement(name = RoleResponsibilityAction.Elements.ROLE_RESPONSIBILITY_ID)
064 private final String roleResponsibilityId;
065
066 @XmlElement(name = RoleResponsibilityAction.Elements.ROLE_MEMBER_ID)
067 private final String roleMemberId;
068
069 @XmlElement(name = RoleResponsibilityAction.Elements.ACTION_TYPE_CODE)
070 private final String actionTypeCode;
071
072 @XmlElement(name = RoleResponsibilityAction.Elements.ACTION_POLICY_CODE)
073 private final String actionPolicyCode;
074
075 @XmlElement(name = RoleResponsibilityAction.Elements.FORCE_ACTION)
076 private final boolean forceAction;
077
078 @XmlElement(name = RoleResponsibilityAction.Elements.PRIORITY_NUMBER)
079 private final Integer priorityNumber;
080
081 @XmlElement(name = RoleResponsibilityAction.Elements.ROLE_RESPONSIBILITY)
082 private final RoleResponsibility roleResponsibility;
083
084 @XmlElement(name = CoreConstants.CommonElements.VERSION_NUMBER)
085 private final Long versionNumber;
086
087 @SuppressWarnings("unused")
088 @XmlAnyElement
089 private final Collection<Element> _futureElements = null;
090
091 /**
092 * Private default constructor should only be called by JAXB
093 */
094 @SuppressWarnings("unused")
095 private RoleResponsibilityAction() {
096 id = null;
097 roleResponsibilityId = null;
098 roleMemberId = null;
099 actionTypeCode = null;
100 actionPolicyCode = null;
101 forceAction = false;
102 priorityNumber = null;
103 roleResponsibility = null;
104 versionNumber = null;
105 }
106
107 private RoleResponsibilityAction(Builder b) {
108 id = b.getId();
109 roleResponsibilityId = b.getRoleResponsibilityId();
110 roleMemberId = b.getRoleMemberId();
111 actionTypeCode = b.getActionTypeCode();
112 actionPolicyCode = b.getActionPolicyCode();
113 forceAction = b.isForceAction();
114 priorityNumber = b.getPriorityNumber();
115 roleResponsibility = b.getRoleResponsibility();
116 versionNumber = b.getVersionNumber();
117 }
118
119 @Override
120 public String getId() {
121 return this.id;
122 }
123
124 @Override
125 public String getRoleResponsibilityId() {
126 return this.roleResponsibilityId;
127 }
128
129 @Override
130 public String getActionTypeCode() {
131 return this.actionTypeCode;
132 }
133
134 @Override
135 public Integer getPriorityNumber() {
136 return this.priorityNumber;
137 }
138
139 @Override
140 public String getActionPolicyCode() {
141 return this.actionPolicyCode;
142 }
143
144 @Override
145 public String getRoleMemberId() {
146 return this.roleMemberId;
147 }
148
149 @Override
150 public RoleResponsibility getRoleResponsibility() {
151 return this.roleResponsibility;
152 }
153
154 @Override
155 public boolean isForceAction() {
156 return this.forceAction;
157 }
158
159 @Override
160 public Long getVersionNumber() {
161 return this.versionNumber;
162 }
163
164 public static class Builder implements RoleResponsibilityActionContract, ModelBuilder, ModelObjectComplete {
165
166 private String id;
167 private String roleResponsibilityId;
168 private String roleMemberId;
169 private String actionTypeCode;
170 private String actionPolicyCode;
171 private boolean forceAction;
172 private Integer priorityNumber;
173 private RoleResponsibility roleResponsibility;
174 private Long versionNumber;
175
176 private Builder() {
177 }
178
179 public static Builder create() {
180 return new Builder();
181 }
182
183 public static Builder create(RoleResponsibilityActionContract rra) {
184 Builder b = new Builder();
185 b.setForceAction(rra.isForceAction());
186 b.setActionPolicyCode(rra.getActionPolicyCode());
187 b.setActionTypeCode(rra.getActionTypeCode());
188 b.setPriorityNumber(rra.getPriorityNumber());
189 b.setRoleMemberId(rra.getRoleMemberId());
190 if (rra.getRoleResponsibility() != null) {
191 b.setRoleResponsibility(RoleResponsibility.Builder.create(rra.getRoleResponsibility()).build());
192 }
193 b.setId(rra.getId());
194 b.setRoleResponsibilityId(rra.getRoleResponsibilityId());
195 b.setVersionNumber(rra.getVersionNumber());
196 return b;
197 }
198
199 @Override
200 public RoleResponsibilityAction build() {
201 return new RoleResponsibilityAction(this);
202 }
203
204 @Override
205 public String getId() {
206 return id;
207 }
208
209 public void setId(String id) {
210 if (StringUtils.isWhitespace(id)) {
211 throw new IllegalArgumentException("id must be not be whitespace");
212 }
213 this.id = id;
214 }
215
216 @Override
217 public String getRoleResponsibilityId() {
218 return roleResponsibilityId;
219 }
220
221 public void setRoleResponsibilityId(String roleResponsibilityId) {
222 this.roleResponsibilityId = roleResponsibilityId;
223 }
224
225 @Override
226 public String getActionTypeCode() {
227 return actionTypeCode;
228 }
229
230 public void setActionTypeCode(String actionTypeCode) {
231 this.actionTypeCode = actionTypeCode;
232 }
233
234 @Override
235 public Integer getPriorityNumber() {
236 return priorityNumber;
237 }
238
239 public void setPriorityNumber(Integer priorityNumber) {
240 this.priorityNumber = priorityNumber;
241 }
242
243 @Override
244 public String getActionPolicyCode() {
245 return actionPolicyCode;
246 }
247
248 public void setActionPolicyCode(String actionPolicyCode) {
249 this.actionPolicyCode = actionPolicyCode;
250 }
251
252 @Override
253 public String getRoleMemberId() {
254 return roleMemberId;
255 }
256
257 public void setRoleMemberId(String roleMemberId) {
258 this.roleMemberId = roleMemberId;
259 }
260
261 @Override
262 public RoleResponsibility getRoleResponsibility() {
263 return roleResponsibility;
264 }
265
266 public void setRoleResponsibility(RoleResponsibility roleResponsibility) {
267 this.roleResponsibility = roleResponsibility;
268 }
269
270 @Override
271 public boolean isForceAction() {
272 return forceAction;
273 }
274
275 public void setForceAction(boolean forceAction) {
276 this.forceAction = forceAction;
277 }
278
279 @Override
280 public Long getVersionNumber() {
281 return versionNumber;
282 }
283
284 public void setVersionNumber(Long versionNumber) {
285 this.versionNumber = versionNumber;
286 }
287
288 @Override
289 public int hashCode() {
290 return HashCodeBuilder.reflectionHashCode(this);
291 }
292
293 @Override
294 public boolean equals(Object obj) {
295 return EqualsBuilder.reflectionEquals(obj, this);
296 }
297
298 @Override
299 public String toString() {
300 return ToStringBuilder.reflectionToString(this);
301 }
302 }
303
304 @Override
305 public boolean equals(Object obj) {
306 return equalsExcludeFields(obj, Constants.excludeFields);
307 }
308
309 @Override
310 public int hashCode() {
311 return hashCodeExcludeFields(Constants.excludeFields);
312 }
313
314 /**
315 * A private class which exposes constants which define the XML element names to use
316 * when this object is marshalled to XML.
317 */
318 static class Elements {
319 final static String ID = "id";
320 final static String ROLE_RESPONSIBILITY_ID = "roleResponsibilityId";
321 final static String ROLE_MEMBER_ID = "roleMemberId";
322 final static String ACTION_TYPE_CODE = "actionTypeCode";
323 final static String ACTION_POLICY_CODE = "actionPolicyCode";
324 final static String FORCE_ACTION = "forceAction";
325 final static String PRIORITY_NUMBER = "priorityNumber";
326 final static String ROLE_RESPONSIBILITY = "roleResponsibility";
327 }
328
329
330 /**
331 * Defines some internal constants used on this class.
332 */
333 @SuppressWarnings("unchecked")
334 static class Constants {
335 final static String ROOT_ELEMENT_NAME = "roleResponsibilityAction";
336 final static String TYPE_NAME = "RoleResponsibilityActionType";
337
338 final static Collection<String> excludeFields;
339
340 static {
341 excludeFields = Collections.unmodifiableCollection( (Collection<String>)
342 CollectionUtils.union(
343 Collections.singletonList("versionNumber"),
344 getDefaultHashCodeEqualsExcludeFields()
345 )
346 );
347 }
348 }
349
350 public static class Cache {
351 public static final String NAME = KimConstants.Namespaces.KIM_NAMESPACE_2_0 + "/" + RoleResponsibilityAction.Constants.TYPE_NAME;
352 }
353 }