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