/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.coa.identity; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.collections.CollectionUtils; import org.joda.time.DateTime; import org.kuali.rice.core.api.membership.MemberType; import org.kuali.rice.core.api.mo.common.active.InactivatableFromToUtils; import org.kuali.rice.kim.api.group.Group; import org.kuali.rice.kim.api.identity.principal.Principal; import org.kuali.rice.kim.api.role.Role; import org.kuali.rice.kim.api.role.RoleMemberContract; import org.kuali.rice.kim.api.role.RoleResponsibilityActionContract; import org.kuali.rice.kim.api.services.KimApiServiceLocator; import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; public class KfsKimDocRoleMember extends PersistableBusinessObjectBase implements RoleMemberContract { protected String id; protected String memberId; protected String memberName; protected String memberNamespaceCode; protected String roleId; protected MemberType type; protected Map<String,String> attributes = new HashMap<String, String>(); protected boolean active = true; protected DateTime activeFromDate; protected DateTime activeToDate; protected List<KfsKimRoleResponsibilityAction> roleRspActions = new ArrayList<KfsKimRoleResponsibilityAction>(); public KfsKimDocRoleMember() {} public KfsKimDocRoleMember( RoleMemberContract b ) { id = b.getId(); roleId = b.getRoleId(); attributes = b.getAttributes(); if (!CollectionUtils.isEmpty(b.getRoleRspActions())) { for (RoleResponsibilityActionContract rra : b.getRoleRspActions()) { roleRspActions.add( new KfsKimRoleResponsibilityAction(rra) ); } } memberId = b.getMemberId(); type = b.getType(); activeFromDate = b.getActiveFromDate(); activeToDate = b.getActiveToDate(); versionNumber = b.getVersionNumber(); } public KfsKimDocRoleMember( String roleId, MemberType type) { this(); this.roleId = roleId; this.type = type; } public KfsKimDocRoleMember(String roleId, MemberType type, String memberId) { this( roleId, type ); this.memberId = memberId; } @Override public String getId() { return id; } public void setId(String id) { this.id = id; } @Override public String getMemberId() { return memberId; } public void setMemberId(String memberId) { memberName = null; memberNamespaceCode = null; this.memberId = memberId; } protected void loadMemberInfo() { if ( MemberType.ROLE.equals( type ) ) { Role role = KimApiServiceLocator.getRoleService().getRole(memberId); if ( role != null ) { memberName = role.getName(); memberNamespaceCode = role.getNamespaceCode(); } } else if ( MemberType.GROUP.equals( type ) ) { Group group = KimApiServiceLocator.getGroupService().getGroup(memberId); if ( group != null ) { memberName = group.getName(); memberNamespaceCode = group.getNamespaceCode(); } } else { Principal principal = KimApiServiceLocator.getIdentityService().getPrincipal(memberId); if ( principal != null ) { memberName = principal.getPrincipalName(); memberNamespaceCode = ""; } } } @Override public String getMemberName() { if ( memberName == null && memberId != null ) { loadMemberInfo(); } return memberName; } public void setMemberName(String memberName) { this.memberName = memberName; } @Override public String getMemberNamespaceCode() { if ( memberNamespaceCode == null && memberId != null ) { loadMemberInfo(); } return memberNamespaceCode; } public void setMemberNamespaceCode(String memberNamespaceCode) { this.memberNamespaceCode = memberNamespaceCode; } @Override public String getRoleId() { return roleId; } public void setRoleId(String roleId) { this.roleId = roleId; } @Override public Map<String, String> getAttributes() { return attributes; } public void setAttributes(Map<String, String> attributes) { this.attributes = attributes; } @Override public boolean isActive() { return active; } public void setActive(boolean active) { this.active = active; } @Override public DateTime getActiveFromDate() { return activeFromDate; } public void setActiveFromDate(DateTime activeFromDate) { this.activeFromDate = activeFromDate; } @Override public DateTime getActiveToDate() { return activeToDate; } public void setActiveToDate(DateTime activeToDate) { this.activeToDate = activeToDate; } @Override public List<KfsKimRoleResponsibilityAction> getRoleRspActions() { return roleRspActions; } public void setRoleRspActions(List<KfsKimRoleResponsibilityAction> roleRspActions) { this.roleRspActions = roleRspActions; } @Override public MemberType getType() { return type; } public void setType(MemberType type) { this.type = type; } @Override public boolean isActive(DateTime activeAsOfDate) { return InactivatableFromToUtils.isActive(activeFromDate, activeToDate, null); } }