001/** 002 * Copyright 2005-2016 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 */ 016package org.kuali.rice.kim.web.struts.form; 017 018import org.apache.commons.lang.StringUtils; 019import org.kuali.rice.core.api.membership.MemberType; 020import org.kuali.rice.core.web.format.DateDisplayTimestampObjectFormatter; 021import org.kuali.rice.kim.api.services.KimApiServiceLocator; 022import org.kuali.rice.kim.api.type.KimType; 023import org.kuali.rice.kim.bo.ui.KimDocumentRoleMember; 024import org.kuali.rice.kim.bo.ui.KimDocumentRolePermission; 025import org.kuali.rice.kim.bo.ui.KimDocumentRoleQualifier; 026import org.kuali.rice.kim.bo.ui.KimDocumentRoleResponsibility; 027import org.kuali.rice.kim.bo.ui.RoleDocumentDelegationMember; 028import org.kuali.rice.kim.bo.ui.RoleDocumentDelegationMemberQualifier; 029import org.kuali.rice.kim.document.IdentityManagementRoleDocument; 030import org.kuali.rice.kim.impl.group.GroupBo; 031import org.kuali.rice.kim.impl.identity.PersonImpl; 032import org.kuali.rice.kim.impl.role.RoleBo; 033import org.kuali.rice.kns.util.TableRenderUtil; 034 035import java.util.List; 036 037/** 038 * This is a description of what this class does - shyu don't forget to fill this in. 039 * 040 * @author Kuali Rice Team (rice.collab@kuali.org) 041 * 042 */ 043public class IdentityManagementRoleDocumentForm extends IdentityManagementDocumentFormBase { 044 protected static final long serialVersionUID = 7099079353241080483L; 045 { 046 requiredNonEditableProperties.add("methodToCall"); 047 requiredNonEditableProperties.add("roleCommand"); 048 } 049 050 protected String delegationMemberRoleMemberId; 051 protected String dmrmi; 052 protected boolean canAssignRole = true; 053 protected boolean canModifyAssignees = true; 054 protected KimType kimType; 055 protected String memberSearchValue; 056 057 //kim type id 058 protected String id; 059 060 protected KimDocumentRoleMember member; 061 { 062 member = new KimDocumentRoleMember(); 063 member.getQualifiers().add(new KimDocumentRoleQualifier()); 064 065 } 066 protected KimDocumentRolePermission permission = new KimDocumentRolePermission(); 067 protected KimDocumentRoleResponsibility responsibility = new KimDocumentRoleResponsibility(); 068 protected RoleDocumentDelegationMember delegationMember; 069 { 070 delegationMember = new RoleDocumentDelegationMember(); 071 delegationMember.getQualifiers().add(new RoleDocumentDelegationMemberQualifier()); 072 } 073 protected String roleId; 074 075 076 public IdentityManagementRoleDocumentForm() { 077 super(); 078 079 setFormatterType("document.members.activeFromDate", DateDisplayTimestampObjectFormatter.class); 080 setFormatterType("document.delegationMembers.activeFromDate", DateDisplayTimestampObjectFormatter.class); 081 setFormatterType("document.members.activeToDate", DateDisplayTimestampObjectFormatter.class); 082 setFormatterType("document.delegationMembers.activeToDate", DateDisplayTimestampObjectFormatter.class); 083 } 084 085 086 /** 087 * @return the delegationMember 088 */ 089 public RoleDocumentDelegationMember getDelegationMember() { 090 return this.delegationMember; 091 } 092 093 /** 094 * @param delegationMember the delegationMember to set 095 */ 096 public void setDelegationMember(RoleDocumentDelegationMember delegationMember) { 097 this.delegationMember = delegationMember; 098 } 099 100 @Override 101 public String getDefaultDocumentTypeName(){ 102 return "IdentityManagementRoleDocument"; 103 } 104 105 public IdentityManagementRoleDocument getRoleDocument() { 106 return (IdentityManagementRoleDocument) this.getDocument(); 107 } 108 109 /** 110 * @return the member 111 */ 112 public KimDocumentRoleMember getMember() { 113 return this.member; 114 } 115 116 /** 117 * @param member the member to set 118 */ 119 public void setMember(KimDocumentRoleMember member) { 120 this.member = member; 121 } 122 123 public String getId() { 124 return id; 125 } 126 127 public void setId(String id) { 128 this.id = id; 129 setKimType(KimApiServiceLocator.getKimTypeInfoService().getKimType(this.id)); 130 } 131 132 /** 133 * @return the permission 134 */ 135 public KimDocumentRolePermission getPermission() { 136 return this.permission; 137 } 138 139 /** 140 * @param permission the permission to set 141 */ 142 public void setPermission(KimDocumentRolePermission permission) { 143 this.permission = permission; 144 } 145 146 /** 147 * @return the responsibility 148 */ 149 public KimDocumentRoleResponsibility getResponsibility() { 150 return this.responsibility; 151 } 152 153 /** 154 * @param responsibility the responsibility to set 155 */ 156 public void setResponsibility(KimDocumentRoleResponsibility responsibility) { 157 this.responsibility = responsibility; 158 } 159 160 public String getMemberFieldConversions(){ 161 if(member==null) { 162 return ""; 163 } 164 return getMemberFieldConversions(member.getMemberTypeCode()); 165 } 166 167 public String getMemberBusinessObjectName(){ 168 if(member==null) { 169 return ""; 170 } 171 return getMemberBusinessObjectName(member.getMemberTypeCode()); 172 } 173 174 public String getDelegationMemberFieldConversions(){ 175 if(getDelegationMember()==null) { 176 return ""; 177 } 178 String memberTypeCode = getDelegationMember().getMemberTypeCode(); 179 if(MemberType.PRINCIPAL.getCode().equals(memberTypeCode)) { 180 return "principalId:delegationMember.memberId,principalName:delegationMember.memberName"; 181 } 182 else if(MemberType.ROLE.getCode().equals(memberTypeCode)) { 183 return "id:delegationMember.memberId,name:delegationMember.memberName,namespaceCode:delegationMember.memberNamespaceCode"; 184 } 185 else if(MemberType.GROUP.getCode().equals(memberTypeCode)) { 186 return "id:delegationMember.memberId,name:delegationMember.memberName,namespaceCode:delegationMember.memberNamespaceCode"; 187 } 188 return ""; 189 } 190 191 public String getDelegationMemberBusinessObjectName(){ 192 if(getDelegationMember()==null) { 193 return ""; 194 } 195 return getMemberBusinessObjectName(getDelegationMember().getMemberTypeCode()); 196 } 197 198 protected String getMemberFieldConversions(String memberTypeCode){ 199 if(MemberType.PRINCIPAL.getCode().equals(memberTypeCode)) { 200 return "principalId:member.memberId,principalName:member.memberName"; 201 } 202 else if(MemberType.ROLE.getCode().equals(memberTypeCode)) { 203 return "id:member.memberId,name:member.memberName,namespaceCode:member.memberNamespaceCode"; 204 } 205 else if(MemberType.GROUP.getCode().equals(memberTypeCode)) { 206 return "id:member.memberId,name:member.memberName,namespaceCode:member.memberNamespaceCode"; 207 } 208 return ""; 209 } 210 211 protected String getMemberBusinessObjectName(String memberTypeCode){ 212 if(MemberType.PRINCIPAL.getCode().equals(memberTypeCode)) { 213 return PersonImpl.class.getName(); 214 } 215 else if(MemberType.ROLE.getCode().equals(memberTypeCode)) { 216 return RoleBo.class.getName(); 217 } 218 else if(MemberType.GROUP.getCode().equals(memberTypeCode)) { 219 return GroupBo.class.getName(); 220 } 221 return ""; 222 } 223 224 /** 225 * @return the kimType 226 */ 227 public KimType getKimType() { 228 return this.kimType; 229 } 230 231 /** 232 * @param kimType the kimType to set 233 */ 234 public void setKimType(KimType kimType) { 235 this.kimType = kimType; 236 if ( kimType != null && getRoleDocument() != null ) { 237 getRoleDocument().setKimType(kimType); 238 } 239 } 240 241 /** 242 * @return the canAssignRole 243 */ 244 public boolean isCanAssignRole() { 245 return this.canAssignRole; 246 } 247 248 /** 249 * @param canAssignRole the canAssignRole to set 250 */ 251 public void setCanAssignRole(boolean canAssignRole) { 252 this.canAssignRole = canAssignRole; 253 } 254 255 /** 256 * @return the canModifyAssignees 257 */ 258 public boolean isCanModifyAssignees() { 259 return this.canModifyAssignees; 260 } 261 262 /** 263 * @param canModifyAssignees the canModifyAssignees to set 264 */ 265 public void setCanModifyAssignees(boolean canModifyAssignees) { 266 this.canModifyAssignees = canModifyAssignees; 267 } 268 269 public List<KimDocumentRoleMember> getMemberRows() { 270 return getRoleDocument().getMembers(); 271 } 272 273 public int getIndexOfRoleMemberFromMemberRows(String roleMemberId){ 274 int index = 0; 275 for(KimDocumentRoleMember roleMember: getMemberRows()){ 276 if(StringUtils.equals(roleMember.getRoleMemberId(), roleMemberId)){ 277 break; 278 } 279 index++; 280 } 281 return index; 282 } 283 284 public int getPageNumberOfRoleMemberId(String roleMemberId){ 285 if(StringUtils.isEmpty(roleMemberId)) {return 1;} 286 int index = getIndexOfRoleMemberFromMemberRows(roleMemberId); 287 return TableRenderUtil.computeTotalNumberOfPages(index + 1, getRecordsPerPage())-1; 288 } 289 290 /** 291 * @return the roleId 292 */ 293 public String getRoleId() { 294 return this.roleId; 295 } 296 297 /** 298 * @param roleId the roleId to set 299 */ 300 public void setRoleId(String roleId) { 301 this.roleId = roleId; 302 } 303 304 /** 305 * @return the delegationMemberRoleMemberId 306 */ 307 public String getDelegationMemberRoleMemberId() { 308 return this.delegationMemberRoleMemberId; 309 } 310 311 /** 312 * @param delegationMemberRoleMemberId the delegationMemberRoleMemberId to set 313 */ 314 public void setDelegationMemberRoleMemberId(String delegationMemberRoleMemberId) { 315 this.delegationMemberRoleMemberId = delegationMemberRoleMemberId; 316 getDelegationMember().setRoleMemberId(delegationMemberRoleMemberId); 317 KimDocumentRoleMember roleMember = getRoleDocument().getMember(delegationMemberRoleMemberId); 318 if(roleMember!=null){ 319 delegationMember.setRoleMemberId(roleMember.getRoleMemberId()); 320 delegationMember.setRoleMemberName(roleMember.getMemberName()); 321 delegationMember.setRoleMemberNamespaceCode(roleMember.getMemberNamespaceCode()); 322 RoleDocumentDelegationMemberQualifier delegationMemberQualifier; 323 for(KimDocumentRoleQualifier roleQualifier: roleMember.getQualifiers()){ 324 delegationMemberQualifier = getDelegationMember().getQualifier(roleQualifier.getKimAttrDefnId()); 325 delegationMemberQualifier.setAttrVal(roleQualifier.getAttrVal()); 326 } 327 } 328 } 329 330 /** 331 * @return the dmrmi 332 */ 333 public String getDmrmi() { 334 return this.dmrmi; 335 } 336 337 /** 338 * @param dmrmi the dmrmi to set 339 */ 340 public void setDmrmi(String dmrmi) { 341 this.dmrmi = dmrmi; 342 } 343 344 /** 345 * @return the memberSearchValue 346 */ 347 public String getMemberSearchValue() { 348 return this.memberSearchValue; 349 } 350 351 /** 352 * @param memberSearchValue the memberSearchValue to set 353 */ 354 public void setMemberSearchValue(String memberSearchValue) { 355 this.memberSearchValue = memberSearchValue; 356 } 357 358}