001 /**
002 * Copyright 2005-2013 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.bo.ui;
017
018 import org.kuali.rice.core.api.delegation.DelegationType;
019 import org.kuali.rice.core.api.membership.MemberType;
020 import org.kuali.rice.kim.api.KimConstants;
021 import org.kuali.rice.kim.api.group.Group;
022 import org.kuali.rice.kim.api.role.Role;
023 import org.kuali.rice.kim.api.services.KimApiServiceLocator;
024 import org.kuali.rice.kim.impl.role.RoleBo;
025 import org.kuali.rice.kim.impl.type.KimTypeAttributesHelper;
026 import org.kuali.rice.kim.impl.type.KimTypeBo;
027 import org.springframework.util.AutoPopulatingList;
028
029 import javax.persistence.CascadeType;
030 import javax.persistence.Column;
031 import javax.persistence.Entity;
032 import javax.persistence.FetchType;
033 import javax.persistence.GeneratedValue;
034 import javax.persistence.Id;
035 import javax.persistence.IdClass;
036 import javax.persistence.JoinColumn;
037 import javax.persistence.JoinColumns;
038 import javax.persistence.OneToMany;
039 import javax.persistence.Table;
040 import javax.persistence.Transient;
041 import java.util.List;
042
043 /**
044 * This is a description of what this class does - kellerj don't forget to fill this in.
045 *
046 * @author Kuali Rice Team (kuali-rice@googleroles.com)
047 *
048 */
049 @IdClass(RoleDocumentDelegationMemberId.class)
050 @Entity
051 @Table(name="KRIM_PND_DLGN_MBR_T")
052 public class RoleDocumentDelegationMember extends KimDocumentBoActivatableToFromBase {
053
054 private static final long serialVersionUID = 1L;
055
056 @Id
057 @GeneratedValue(generator="KRIM_DLGN_MBR_ID_S")
058 @Column(name="DLGN_MBR_ID")
059 protected String delegationMemberId;
060
061 @Column(name="ROLE_MBR_ID")
062 protected String roleMemberId;
063 @Transient
064 protected String roleMemberMemberId;
065 @Transient
066 protected String roleMemberMemberTypeCode;
067 @Transient
068 protected String roleMemberName;
069 @Transient
070 protected String roleMemberNamespaceCode;
071
072 @Transient
073 private KimTypeAttributesHelper attributesHelper;
074 //For Person Document UI - flattening the delegation - delegation member hierarchy
075 @Transient
076 protected RoleBo roleBo = new RoleBo();
077
078 @Column(name="DLGN_ID")
079 protected String delegationId;
080
081 @Column(name="MBR_ID")
082 protected String memberId;
083
084 @Column(name="MBR_TYP_CD")
085 protected String memberTypeCode = KimConstants.KimGroupMemberTypes.PRINCIPAL_MEMBER_TYPE.getCode();
086
087 @Transient
088 protected String memberNamespaceCode;
089
090 @Column(name="MBR_NM")
091 protected String memberName;
092 @OneToMany(targetEntity=RoleDocumentDelegationMemberQualifier.class, fetch=FetchType.EAGER, cascade={CascadeType.ALL})
093 @JoinColumns({
094 @JoinColumn(name="dlgn_id",insertable=false,updatable=false),
095 @JoinColumn(name="fdoc_nbr", insertable=false, updatable=false)
096 })
097 protected List <RoleDocumentDelegationMemberQualifier> qualifiers = new AutoPopulatingList(RoleDocumentDelegationMemberQualifier.class);
098
099 @Transient
100 protected String delegationTypeCode;
101
102 /**
103 * @return the delegationTypeCode
104 */
105 public String getDelegationTypeCode() {
106 return this.delegationTypeCode;
107 }
108
109 /**
110 * @param delegationTypeCode the delegationTypeCode to set
111 */
112 public void setDelegationTypeCode(String delegationTypeCode) {
113 this.delegationTypeCode = delegationTypeCode;
114 }
115
116 public String getDelegationId() {
117 return this.delegationId;
118 }
119
120 public void setDelegationId(String delegationId) {
121 this.delegationId = delegationId;
122 }
123
124 /**
125 * @return the qualifiers
126 */
127 public List<RoleDocumentDelegationMemberQualifier> getQualifiers() {
128 return this.qualifiers;
129 }
130
131 public RoleDocumentDelegationMemberQualifier getQualifier(String kimAttributeDefnId) {
132 for(RoleDocumentDelegationMemberQualifier qualifier:qualifiers){
133 if(qualifier.getKimAttrDefnId().equals(kimAttributeDefnId)) {
134 return qualifier;
135 }
136 }
137 return null;
138 }
139
140 /**
141 * @param qualifiers the qualifiers to set
142 */
143 public void setQualifiers(List<RoleDocumentDelegationMemberQualifier> qualifiers) {
144 this.qualifiers = qualifiers;
145 }
146
147 public int getNumberOfQualifiers(){
148 return qualifiers==null?0:qualifiers.size();
149 }
150
151 /**
152 * @return the memberId
153 */
154 public String getMemberId() {
155 return this.memberId;
156 }
157
158 /**
159 * @param memberId the memberId to set
160 */
161 public void setMemberId(String memberId) {
162 this.memberId = memberId;
163 }
164
165 /**
166 * @return the memberName
167 */
168 public String getMemberName() {
169 return this.memberName;
170 }
171
172 /**
173 * @param memberName the memberName to set
174 */
175 public void setMemberName(String memberName) {
176 this.memberName = memberName;
177 }
178
179 /**
180 * @return the assignedToId
181 */
182 public String getDelegationMemberId() {
183 return this.delegationMemberId;
184 }
185
186 /**
187 * @param delegationMemberId the assignedToId to set
188 */
189 public void setDelegationMemberId(String delegationMemberId) {
190 this.delegationMemberId = delegationMemberId;
191 }
192
193 /**
194 * @return the memberTypeCode
195 */
196 public String getMemberTypeCode() {
197 return this.memberTypeCode;
198 }
199
200 /**
201 * @param memberTypeCode the memberTypeCode to set
202 */
203 public void setMemberTypeCode(String memberTypeCode) {
204 this.memberTypeCode = memberTypeCode;
205 }
206
207
208 public boolean isDelegationPrimary(){
209 return DelegationType.PRIMARY.getCode().equals(getDelegationTypeCode());
210 }
211
212 public boolean isDelegationSecondary(){
213 return DelegationType.SECONDARY.getCode().equals(getDelegationTypeCode());
214 }
215
216 /**
217 * @return the memberNamespaceCode
218 */
219 public String getMemberNamespaceCode() {
220 if ( memberNamespaceCode == null ) {
221 populateDerivedValues();
222 }
223 return this.memberNamespaceCode;
224 }
225
226 /**
227 * @param memberNamespaceCode the memberNamespaceCode to set
228 */
229 public void setMemberNamespaceCode(String memberNamespaceCode) {
230 this.memberNamespaceCode = memberNamespaceCode;
231 }
232
233 protected void populateDerivedValues() {
234 if(MemberType.GROUP.getCode().equals(getMemberTypeCode())){
235 Group groupInfo = null;
236 groupInfo = KimApiServiceLocator.getGroupService().getGroup(getMemberId());
237 if (groupInfo != null) {
238 setMemberNamespaceCode(groupInfo.getNamespaceCode());
239 }
240 } else if(MemberType.ROLE.getCode().equals(getMemberTypeCode())){
241 Role role;
242 role = KimApiServiceLocator.getRoleService().getRole(getMemberId());
243 setMemberNamespaceCode(role.getNamespaceCode());
244 }
245 }
246
247 /**
248 * @return the roleMemberId
249 */
250 public String getRoleMemberId() {
251 return this.roleMemberId;
252 }
253
254 /**
255 * @param roleMemberId the roleMemberId to set
256 */
257 public void setRoleMemberId(String roleMemberId) {
258 this.roleMemberId = roleMemberId;
259 }
260
261 public boolean isRole(){
262 return getMemberTypeCode()!=null && getMemberTypeCode().equals(MemberType.ROLE.getCode());
263 }
264
265 public boolean isGroup(){
266 return getMemberTypeCode()!=null && getMemberTypeCode().equals(MemberType.GROUP.getCode());
267 }
268
269 public boolean isPrincipal(){
270 return getMemberTypeCode()!=null && getMemberTypeCode().equals(MemberType.PRINCIPAL.getCode());
271 }
272
273 /**
274 * @return the roleMemberName
275 */
276 public String getRoleMemberName() {
277 return this.roleMemberName;
278 }
279
280 /**
281 * @param roleMemberName the roleMemberName to set
282 */
283 public void setRoleMemberName(String roleMemberName) {
284 this.roleMemberName = roleMemberName;
285 }
286
287 /**
288 * @return the roleMemberNamespaceCode
289 */
290 public String getRoleMemberNamespaceCode() {
291 return this.roleMemberNamespaceCode;
292 }
293
294 /**
295 * @param roleMemberNamespaceCode the roleMemberNamespaceCode to set
296 */
297 public void setRoleMemberNamespaceCode(String roleMemberNamespaceCode) {
298 this.roleMemberNamespaceCode = roleMemberNamespaceCode;
299 }
300
301 /**
302 * @return the roleBo
303 */
304 public RoleBo getRoleBo() {
305 return this.roleBo;
306 }
307
308 /**
309 * @param roleBo the roleBo to set
310 */
311 public void setRoleBo(RoleBo roleBo) {
312 this.roleBo = roleBo;
313 setAttributesHelper(new KimTypeAttributesHelper(KimTypeBo.to(roleBo.getKimRoleType())));
314 }
315
316 /**
317 * @return the attributesHelper
318 */
319 public KimTypeAttributesHelper getAttributesHelper() {
320 return this.attributesHelper;
321 }
322
323 /**
324 * @param attributesHelper the attributesHelper to set
325 */
326 public void setAttributesHelper(KimTypeAttributesHelper attributesHelper) {
327 this.attributesHelper = attributesHelper;
328 }
329
330 /**
331 * @return the roleMemberMemberId
332 */
333 public String getRoleMemberMemberId() {
334 return this.roleMemberMemberId;
335 }
336
337 /**
338 * @param roleMemberMemberId the roleMemberMemberId to set
339 */
340 public void setRoleMemberMemberId(String roleMemberMemberId) {
341 this.roleMemberMemberId = roleMemberMemberId;
342 }
343
344 /**
345 * @return the roleMemberMemberTypeCode
346 */
347 public String getRoleMemberMemberTypeCode() {
348 return this.roleMemberMemberTypeCode;
349 }
350
351 /**
352 * @param roleMemberMemberTypeCode the roleMemberMemberTypeCode to set
353 */
354 public void setRoleMemberMemberTypeCode(String roleMemberMemberTypeCode) {
355 this.roleMemberMemberTypeCode = roleMemberMemberTypeCode;
356 }
357 }