View Javadoc

1   /*
2    * Copyright 2007-2009 The Kuali Foundation
3    *
4    * Licensed under the Educational Community License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    * http://www.opensource.org/licenses/ecl2.php
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.kuali.rice.kim.bo.ui;
17  
18  import org.hibernate.annotations.Fetch;
19  import org.hibernate.annotations.FetchMode;
20  import org.hibernate.annotations.GenericGenerator;
21  import org.hibernate.annotations.Parameter;
22  import org.kuali.rice.kew.util.KEWConstants;
23  import org.kuali.rice.kim.api.group.Group;
24  import org.kuali.rice.kim.api.services.KimApiServiceLocator;
25  import org.kuali.rice.kim.bo.impl.RoleImpl;
26  import org.kuali.rice.kim.bo.role.dto.KimRoleInfo;
27  import org.kuali.rice.kim.document.KimTypeAttributesHelper;
28  import org.kuali.rice.kim.impl.type.KimTypeBo;
29  import org.kuali.rice.kim.util.KimConstants;
30  import org.springframework.util.AutoPopulatingList;
31  
32  import javax.persistence.CascadeType;
33  import javax.persistence.Column;
34  import javax.persistence.Entity;
35  import javax.persistence.FetchType;
36  import javax.persistence.GeneratedValue;
37  import javax.persistence.Id;
38  import javax.persistence.IdClass;
39  import javax.persistence.JoinColumn;
40  import javax.persistence.JoinColumns;
41  import javax.persistence.OneToMany;
42  import javax.persistence.Table;
43  import javax.persistence.Transient;
44  import java.util.List;
45  
46  /**
47   * This is a description of what this class does - kellerj don't forget to fill this in. 
48   * 
49   * @author Kuali Rice Team (kuali-rice@googleroles.com)
50   *
51   */
52  @IdClass(RoleDocumentDelegationMemberId.class)
53  @Entity
54  @Table(name="KRIM_PND_DLGN_MBR_T")
55  public class RoleDocumentDelegationMember extends KimDocumentBoActivatableToFromBase {
56  
57  	private static final long serialVersionUID = 1L;
58  	
59  	@Id
60  	@GeneratedValue(generator="KRIM_DLGN_MBR_ID_S")
61  	@GenericGenerator(name="KRIM_DLGN_MBR_ID_S",strategy="org.kuali.rice.core.jpa.spring.RiceNumericStringSequenceStyleGenerator",parameters={
62  			@Parameter(name="sequence_name",value="KRIM_DLGN_MBR_ID_S"),
63  			@Parameter(name="value_column",value="id")
64  		})
65  	@Column(name="DLGN_MBR_ID")
66  	protected String delegationMemberId;
67  	
68  	@Column(name="ROLE_MBR_ID")
69  	protected String roleMemberId;
70  	@Transient
71  	protected String roleMemberMemberId;
72  	@Transient
73  	protected String roleMemberMemberTypeCode;
74  	@Transient
75  	protected String roleMemberName;
76  	@Transient
77  	protected String roleMemberNamespaceCode;
78  
79  	@Transient
80  	private KimTypeAttributesHelper attributesHelper;
81  	//For Person Document UI - flattening the delegation - delegation member hierarchy
82  	@Transient
83  	protected RoleImpl roleImpl = new RoleImpl();
84  	
85  	@Column(name="DLGN_ID")
86  	protected String delegationId;
87  	
88  	@Column(name="MBR_ID")
89  	protected String memberId;
90  
91  	@Column(name="MBR_TYP_CD")
92  	protected String memberTypeCode = KimConstants.KimGroupMemberTypes.PRINCIPAL_MEMBER_TYPE;
93  	
94  	@Transient
95  	protected String memberNamespaceCode;
96  	
97  	@Column(name="MBR_NM")
98  	protected String memberName;
99  	@OneToMany(targetEntity=RoleDocumentDelegationMemberQualifier.class, fetch=FetchType.EAGER, cascade={CascadeType.ALL})
100     @Fetch(value = FetchMode.SELECT)
101 	@JoinColumns({
102 		@JoinColumn(name="dlgn_id",insertable=false,updatable=false),
103 		@JoinColumn(name="fdoc_nbr", insertable=false, updatable=false)
104 	})
105 	protected List <RoleDocumentDelegationMemberQualifier> qualifiers = new AutoPopulatingList(RoleDocumentDelegationMemberQualifier.class);
106 	
107 	@Transient
108 	protected String delegationTypeCode;
109 	
110 	/**
111 	 * @return the delegationTypeCode
112 	 */
113 	public String getDelegationTypeCode() {
114 		return this.delegationTypeCode;
115 	}
116 
117 	/**
118 	 * @param delegationTypeCode the delegationTypeCode to set
119 	 */
120 	public void setDelegationTypeCode(String delegationTypeCode) {
121 		this.delegationTypeCode = delegationTypeCode;
122 	}
123 
124 	public String getDelegationId() {
125 		return this.delegationId;
126 	}
127 
128 	public void setDelegationId(String delegationId) {
129 		this.delegationId = delegationId;
130 	}
131 
132 	/**
133 	 * @return the qualifiers
134 	 */
135 	public List<RoleDocumentDelegationMemberQualifier> getQualifiers() {
136 		return this.qualifiers;
137 	}
138 
139 	public RoleDocumentDelegationMemberQualifier getQualifier(String kimAttributeDefnId) {
140 		for(RoleDocumentDelegationMemberQualifier qualifier:qualifiers){
141 			if(qualifier.getKimAttrDefnId().equals(kimAttributeDefnId))
142 				return qualifier;
143 		}
144 		return null;
145 	}
146 
147 	/**
148 	 * @param qualifiers the qualifiers to set
149 	 */
150 	public void setQualifiers(List<RoleDocumentDelegationMemberQualifier> qualifiers) {
151 		this.qualifiers = qualifiers;
152 	}
153 
154 	public int getNumberOfQualifiers(){
155 		return qualifiers==null?0:qualifiers.size();
156 	}
157 
158 	/**
159 	 * @return the memberId
160 	 */
161 	public String getMemberId() {
162 		return this.memberId;
163 	}
164 
165 	/**
166 	 * @param memberId the memberId to set
167 	 */
168 	public void setMemberId(String memberId) {
169 		this.memberId = memberId;
170 	}
171 
172 	/**
173 	 * @return the memberName
174 	 */
175 	public String getMemberName() {
176 		return this.memberName;
177 	}
178 
179 	/**
180 	 * @param memberName the memberName to set
181 	 */
182 	public void setMemberName(String memberName) {
183 		this.memberName = memberName;
184 	}
185 
186 	/**
187 	 * @return the delegationMemberId
188 	 */
189 	public String getDelegationMemberId() {
190 		return this.delegationMemberId;
191 	}
192 
193 	/**
194 	 * @param delegationMemberId the delegationMemberId to set
195 	 */
196 	public void setDelegationMemberId(String delegationMemberId) {
197 		this.delegationMemberId = delegationMemberId;
198 	}
199 
200 	/**
201 	 * @return the memberTypeCode
202 	 */
203 	public String getMemberTypeCode() {
204 		return this.memberTypeCode;
205 	}
206 
207 	/**
208 	 * @param memberTypeCode the memberTypeCode to set
209 	 */
210 	public void setMemberTypeCode(String memberTypeCode) {
211 		this.memberTypeCode = memberTypeCode;
212 	}
213 
214 
215 	public boolean isDelegationPrimary(){
216 		return KEWConstants.DELEGATION_PRIMARY.equals(getDelegationTypeCode());
217 	}
218 
219 	public boolean isDelegationSecondary(){
220 		return KEWConstants.DELEGATION_SECONDARY.equals(getDelegationTypeCode());
221 	}
222 
223 	/**
224 	 * @return the memberNamespaceCode
225 	 */
226 	public String getMemberNamespaceCode() {
227 		if ( memberNamespaceCode == null ) {
228 			populateDerivedValues();
229 		}
230 		return this.memberNamespaceCode;
231 	}
232 
233 	/**
234 	 * @param memberNamespaceCode the memberNamespaceCode to set
235 	 */
236 	public void setMemberNamespaceCode(String memberNamespaceCode) {
237 		this.memberNamespaceCode = memberNamespaceCode;
238 	}
239 
240 	protected void populateDerivedValues() {
241 		if(KimConstants.KimUIConstants.MEMBER_TYPE_GROUP_CODE.equals(getMemberTypeCode())){
242         	Group groupInfo = null;
243         	groupInfo = KimApiServiceLocator.getIdentityManagementService().getGroup(getMemberId());
244         	if (groupInfo != null) {
245         		setMemberNamespaceCode(groupInfo.getNamespaceCode());
246         	}        	
247         } else if(KimConstants.KimUIConstants.MEMBER_TYPE_ROLE_CODE.equals(getMemberTypeCode())){
248         	KimRoleInfo roleInfo = null;
249         	roleInfo = KimApiServiceLocator.getRoleService().getRole(getMemberId());
250         	setMemberNamespaceCode(roleInfo.getNamespaceCode());
251         }
252 	}
253 	
254 	/**
255 	 * @return the roleMemberId
256 	 */
257 	public String getRoleMemberId() {
258 		return this.roleMemberId;
259 	}
260 
261 	/**
262 	 * @param roleMemberId the roleMemberId to set
263 	 */
264 	public void setRoleMemberId(String roleMemberId) {
265 		this.roleMemberId = roleMemberId;
266 	}
267 
268 	public boolean isRole(){
269 		return getMemberTypeCode()!=null && getMemberTypeCode().equals(KimConstants.KimUIConstants.MEMBER_TYPE_ROLE_CODE);
270 	}
271 	
272 	public boolean isGroup(){
273 		return getMemberTypeCode()!=null && getMemberTypeCode().equals(KimConstants.KimUIConstants.MEMBER_TYPE_GROUP_CODE);
274 	}
275 
276 	public boolean isPrincipal(){
277 		return getMemberTypeCode()!=null && getMemberTypeCode().equals(KimConstants.KimUIConstants.MEMBER_TYPE_PRINCIPAL_CODE);
278 	}
279 
280 	/**
281 	 * @return the roleMemberName
282 	 */
283 	public String getRoleMemberName() {
284 		return this.roleMemberName;
285 	}
286 
287 	/**
288 	 * @param roleMemberName the roleMemberName to set
289 	 */
290 	public void setRoleMemberName(String roleMemberName) {
291 		this.roleMemberName = roleMemberName;
292 	}
293 
294 	/**
295 	 * @return the roleMemberNamespaceCode
296 	 */
297 	public String getRoleMemberNamespaceCode() {
298 		return this.roleMemberNamespaceCode;
299 	}
300 
301 	/**
302 	 * @param roleMemberNamespaceCode the roleMemberNamespaceCode to set
303 	 */
304 	public void setRoleMemberNamespaceCode(String roleMemberNamespaceCode) {
305 		this.roleMemberNamespaceCode = roleMemberNamespaceCode;
306 	}
307 
308 	/**
309 	 * @return the roleImpl
310 	 */
311 	public RoleImpl getRoleImpl() {
312 		return this.roleImpl;
313 	}
314 
315 	/**
316 	 * @param roleImpl the roleImpl to set
317 	 */
318 	public void setRoleImpl(RoleImpl roleImpl) {
319 		this.roleImpl = roleImpl;
320 		setAttributesHelper(new KimTypeAttributesHelper(KimTypeBo.to(roleImpl.getKimRoleType())));
321 	}
322 
323 	/**
324 	 * @return the attributesHelper
325 	 */
326 	public KimTypeAttributesHelper getAttributesHelper() {
327 		return this.attributesHelper;
328 	}
329 
330 	/**
331 	 * @param attributesHelper the attributesHelper to set
332 	 */
333 	public void setAttributesHelper(KimTypeAttributesHelper attributesHelper) {
334 		this.attributesHelper = attributesHelper;
335 	}
336 
337 	/**
338 	 * @return the roleMemberMemberId
339 	 */
340 	public String getRoleMemberMemberId() {
341 		return this.roleMemberMemberId;
342 	}
343 
344 	/**
345 	 * @param roleMemberMemberId the roleMemberMemberId to set
346 	 */
347 	public void setRoleMemberMemberId(String roleMemberMemberId) {
348 		this.roleMemberMemberId = roleMemberMemberId;
349 	}
350 
351 	/**
352 	 * @return the roleMemberMemberTypeCode
353 	 */
354 	public String getRoleMemberMemberTypeCode() {
355 		return this.roleMemberMemberTypeCode;
356 	}
357 
358 	/**
359 	 * @param roleMemberMemberTypeCode the roleMemberMemberTypeCode to set
360 	 */
361 	public void setRoleMemberMemberTypeCode(String roleMemberMemberTypeCode) {
362 		this.roleMemberMemberTypeCode = roleMemberMemberTypeCode;
363 	}
364 }