1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.kuali.rice.kew.api.rule;
17
18 import java.io.Serializable;
19 import java.util.Collection;
20 import javax.xml.bind.annotation.XmlAccessType;
21 import javax.xml.bind.annotation.XmlAccessorType;
22 import javax.xml.bind.annotation.XmlAnyElement;
23 import javax.xml.bind.annotation.XmlElement;
24 import javax.xml.bind.annotation.XmlRootElement;
25 import javax.xml.bind.annotation.XmlType;
26
27 import org.apache.commons.lang.StringUtils;
28 import org.kuali.rice.core.api.CoreConstants;
29 import org.kuali.rice.core.api.exception.RiceIllegalArgumentException;
30 import org.kuali.rice.core.api.mo.AbstractDataTransferObject;
31 import org.kuali.rice.core.api.mo.ModelBuilder;
32 import org.w3c.dom.Element;
33
34 @XmlRootElement(name = RoleName.Constants.ROOT_ELEMENT_NAME)
35 @XmlAccessorType(XmlAccessType.NONE)
36 @XmlType(name = RoleName.Constants.TYPE_NAME, propOrder = {
37 RoleName.Elements.NAME,
38 RoleName.Elements.BASE_NAME,
39 RoleName.Elements.RETURN_URL,
40 RoleName.Elements.LABEL,
41 CoreConstants.CommonElements.FUTURE_ELEMENTS
42 })
43 public final class RoleName
44 extends AbstractDataTransferObject
45 implements RoleNameContract
46 {
47
48 @XmlElement(name = Elements.NAME, required = true)
49 private final String name;
50 @XmlElement(name = Elements.BASE_NAME, required = true)
51 private final String baseName;
52 @XmlElement(name = Elements.RETURN_URL, required = false)
53 private final String returnUrl;
54 @XmlElement(name = Elements.LABEL, required = true)
55 private final String label;
56 @SuppressWarnings("unused")
57 @XmlAnyElement
58 private final Collection<Element> _futureElements = null;
59
60
61
62
63
64 private RoleName() {
65 this.name = null;
66 this.baseName = null;
67 this.returnUrl = null;
68 this.label = null;
69 }
70
71 private RoleName(Builder builder) {
72 this.name = builder.getName();
73 this.baseName = builder.getBaseName();
74 this.returnUrl = builder.getReturnUrl();
75 this.label = builder.getLabel();
76 }
77
78 public RoleName(String attributeClassName, String baseName, String label) {
79 this(RoleName.Builder.createWithClassName(attributeClassName, baseName, label));
80 }
81
82 @Override
83 public String getName() {
84 return this.name;
85 }
86
87 @Override
88 public String getBaseName() {
89 return this.baseName;
90 }
91
92 @Override
93 public String getReturnUrl() {
94 return this.returnUrl;
95 }
96
97 @Override
98 public String getLabel() {
99 return this.label;
100 }
101
102 public static String constructRoleValue(String attributeClassName, String roleName) {
103 return attributeClassName + "!" + roleName;
104 }
105
106
107
108
109
110
111 public final static class Builder
112 implements Serializable, ModelBuilder, RoleNameContract
113 {
114
115 private String name;
116 private String baseName;
117 private String returnUrl;
118 private String label;
119
120 private Builder(String name, String baseName, String label) {
121 setName(name);
122 setBaseName(baseName);
123 setLabel(label);
124 }
125
126 public static Builder createWithClassName(String attributeClassName, String baseName, String label) {
127 return new Builder(constructRoleValue(attributeClassName, baseName), baseName, label);
128 }
129
130 public static Builder create(String name, String baseName, String label) {
131 return new Builder(name, baseName, label);
132 }
133
134 public static Builder create(RoleNameContract contract) {
135 if (contract == null) {
136 throw new IllegalArgumentException("contract was null");
137 }
138 Builder builder = create(contract.getName(), contract.getBaseName(), contract.getLabel());
139 builder.setReturnUrl(contract.getReturnUrl());
140 return builder;
141 }
142
143 public RoleName build() {
144 return new RoleName(this);
145 }
146
147 @Override
148 public String getName() {
149 return this.name;
150 }
151
152 @Override
153 public String getBaseName() {
154 return this.baseName;
155 }
156
157 @Override
158 public String getReturnUrl() {
159 return this.returnUrl;
160 }
161
162 @Override
163 public String getLabel() {
164 return this.label;
165 }
166
167 public void setName(String name) {
168 if (StringUtils.isBlank(name)) {
169 throw new RiceIllegalArgumentException("name is blank");
170 }
171 this.name = name;
172 }
173
174 public void setBaseName(String baseName) {
175 if (StringUtils.isBlank(baseName)) {
176 throw new RiceIllegalArgumentException("baseName is blank");
177 }
178 this.baseName = baseName;
179 }
180
181 public void setReturnUrl(String returnUrl) {
182 this.returnUrl = returnUrl;
183 }
184
185 public void setLabel(String label) {
186 if (StringUtils.isBlank(label)) {
187 throw new RiceIllegalArgumentException("label is blank");
188 }
189 this.label = label;
190 }
191
192 }
193
194
195
196
197
198
199 static class Constants {
200
201 final static String ROOT_ELEMENT_NAME = "roleName";
202 final static String TYPE_NAME = "RoleNameType";
203
204 }
205
206
207
208
209
210
211 static class Elements {
212
213 final static String NAME = "name";
214 final static String BASE_NAME = "baseName";
215 final static String RETURN_URL = "returnUrl";
216 final static String LABEL = "label";
217
218 }
219
220 }