View Javadoc
1   /**
2    * Copyright 2005-2014 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 java.util.List;
19  
20  import javax.persistence.CascadeType;
21  import javax.persistence.Column;
22  import javax.persistence.Entity;
23  import javax.persistence.GeneratedValue;
24  import javax.persistence.Id;
25  import javax.persistence.JoinColumn;
26  import javax.persistence.JoinColumns;
27  import javax.persistence.OneToMany;
28  import javax.persistence.Table;
29  import javax.persistence.Transient;
30  
31  import org.apache.commons.lang.StringUtils;
32  import org.kuali.rice.core.api.delegation.DelegationType;
33  import org.kuali.rice.core.api.membership.MemberType;
34  import org.kuali.rice.kim.api.KimConstants;
35  import org.kuali.rice.kim.api.group.Group;
36  import org.kuali.rice.kim.api.role.Role;
37  import org.kuali.rice.kim.api.services.KimApiServiceLocator;
38  import org.kuali.rice.kim.impl.role.RoleBo;
39  import org.kuali.rice.kim.impl.type.KimTypeAttributesHelper;
40  import org.kuali.rice.kim.impl.type.KimTypeBo;
41  import org.kuali.rice.krad.data.jpa.PortableSequenceGenerator;
42  import org.springframework.util.AutoPopulatingList;
43  
44  /**
45   * 
46   * @author Kuali Rice Team (kuali-rice@googleroles.com)
47   *
48   */
49  @Entity
50  @Table(name = "KRIM_PND_DLGN_MBR_T")
51  public class RoleDocumentDelegationMember extends KimDocumentBoActivatableToFromBase {
52  
53      private static final long serialVersionUID = 1L;
54  
55      @PortableSequenceGenerator(name = "KRIM_DLGN_MBR_ID_S")
56      @GeneratedValue(generator = "KRIM_DLGN_MBR_ID_S")
57      @Id
58      @Column(name = "DLGN_MBR_ID")
59      protected String delegationMemberId;
60  
61      @Column(name = "ROLE_MBR_ID")
62      protected String roleMemberId;
63  
64      @Transient
65      protected String roleMemberMemberId;
66  
67      @Transient
68      protected String roleMemberMemberTypeCode;
69  
70      @Transient
71      protected String roleMemberName;
72  
73      @Transient
74      protected String roleMemberNamespaceCode;
75  
76      @Transient
77      private KimTypeAttributesHelper attributesHelper;
78  
79      //For Person Document UI - flattening the delegation - delegation member hierarchy                       
80      @Transient
81      protected RoleBo roleBo = new RoleBo();
82  
83      @Column(name = "DLGN_ID")
84      protected String delegationId;
85  
86      @Column(name = "MBR_ID")
87      protected String memberId;
88  
89      @Column(name = "MBR_TYP_CD")
90      protected String memberTypeCode = KimConstants.KimGroupMemberTypes.PRINCIPAL_MEMBER_TYPE.getCode();
91  
92      @Transient
93      protected String memberNamespaceCode;
94  
95      @Column(name = "MBR_NM")
96      protected String memberName;
97  
98      @OneToMany(targetEntity = RoleDocumentDelegationMemberQualifier.class, orphanRemoval = true, cascade = { CascadeType.REFRESH, CascadeType.REMOVE, CascadeType.PERSIST })
99      @JoinColumns({ 
100         @JoinColumn(name = "FDOC_NBR", referencedColumnName = "FDOC_NBR", insertable = false, updatable = false), 
101         @JoinColumn(name = "DLGN_MBR_ID", referencedColumnName = "DLGN_MBR_ID", insertable = false, updatable = false) })
102     protected List<RoleDocumentDelegationMemberQualifier> qualifiers = new AutoPopulatingList<RoleDocumentDelegationMemberQualifier>(RoleDocumentDelegationMemberQualifier.class);
103 
104     @Transient
105     protected String delegationTypeCode;
106 
107     public String getDelegationTypeCode() {
108         return this.delegationTypeCode;
109     }
110 
111     public void setDelegationTypeCode(String delegationTypeCode) {
112         this.delegationTypeCode = delegationTypeCode;
113     }
114 
115     public String getDelegationId() {
116         return this.delegationId;
117     }
118 
119     public void setDelegationId(String delegationId) {
120         this.delegationId = delegationId;
121     }
122 
123     /**
124 	 * @return the qualifiers
125 	 */
126     public List<RoleDocumentDelegationMemberQualifier> getQualifiers() {
127         return this.qualifiers;
128     }
129 
130     public RoleDocumentDelegationMemberQualifier getQualifier(String kimAttributeDefnId) {
131         for (RoleDocumentDelegationMemberQualifier qualifier : qualifiers) {
132             if (qualifier.getKimAttrDefnId().equals(kimAttributeDefnId)) {
133                 return qualifier;
134             }
135         }
136         return null;
137     }
138 
139     /**
140 	 * @param qualifiers the qualifiers to set
141 	 */
142     public void setQualifiers(List<RoleDocumentDelegationMemberQualifier> qualifiers) {
143         this.qualifiers = qualifiers;
144     }
145 
146     public int getNumberOfQualifiers() {
147         return qualifiers == null ? 0 : qualifiers.size();
148     }
149 
150     /**
151 	 * @return the memberId
152 	 */
153     public String getMemberId() {
154         return this.memberId;
155     }
156 
157     /**
158 	 * @param memberId the memberId to set
159 	 */
160     public void setMemberId(String memberId) {
161         this.memberId = memberId;
162     }
163 
164     /**
165 	 * @return the memberName
166 	 */
167     public String getMemberName() {
168         return this.memberName;
169     }
170 
171     /**
172 	 * @param memberName the memberName to set
173 	 */
174     public void setMemberName(String memberName) {
175         this.memberName = memberName;
176     }
177 
178     /**
179 	 * @return the assignedToId
180 	 */
181     public String getDelegationMemberId() {
182         return this.delegationMemberId;
183     }
184 
185     /**
186 	 * @param delegationMemberId the assignedToId to set
187 	 */
188     public void setDelegationMemberId(String delegationMemberId) {
189         this.delegationMemberId = delegationMemberId;
190     }
191 
192     /**
193 	 * @return the memberTypeCode
194 	 */
195     public String getMemberTypeCode() {
196         return this.memberTypeCode;
197     }
198 
199     /**
200 	 * @param memberTypeCode the memberTypeCode to set
201 	 */
202     public void setMemberTypeCode(String memberTypeCode) {
203         this.memberTypeCode = memberTypeCode;
204     }
205 
206     public boolean isDelegationPrimary() {
207         return DelegationType.PRIMARY.getCode().equals(getDelegationTypeCode());
208     }
209 
210     public boolean isDelegationSecondary() {
211         return DelegationType.SECONDARY.getCode().equals(getDelegationTypeCode());
212     }
213 
214     /**
215 	 * @return the memberNamespaceCode
216 	 */
217     public String getMemberNamespaceCode() {
218         if (memberNamespaceCode == null) {
219             populateDerivedValues();
220         }
221         return this.memberNamespaceCode;
222     }
223 
224     /**
225 	 * @param memberNamespaceCode the memberNamespaceCode to set
226 	 */
227     public void setMemberNamespaceCode(String memberNamespaceCode) {
228         this.memberNamespaceCode = memberNamespaceCode;
229     }
230 
231     protected void populateDerivedValues() {
232         if (!StringUtils.isEmpty(getMemberId())) {
233             if (MemberType.GROUP.getCode().equals(getMemberTypeCode())) {
234                 Group groupInfo = KimApiServiceLocator.getGroupService().getGroup(getMemberId());
235                 if (groupInfo != null) {
236                     setMemberNamespaceCode(groupInfo.getNamespaceCode());
237                 }
238             } else if (MemberType.ROLE.getCode().equals(getMemberTypeCode())) {
239                 Role roleInfo = KimApiServiceLocator.getRoleService().getRole(getMemberId());
240                 if (roleInfo != null) {
241                     setMemberNamespaceCode(roleInfo.getNamespaceCode());
242                 }
243             }
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 }