/* * 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.sec.businessobject; import java.sql.Timestamp; import org.apache.commons.lang.StringUtils; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.core.api.membership.MemberType; import org.kuali.rice.core.api.util.type.KualiInteger; import org.kuali.rice.kim.api.group.Group; import org.kuali.rice.kim.api.group.GroupService; import org.kuali.rice.kim.api.identity.Person; import org.kuali.rice.kim.api.identity.PersonService; import org.kuali.rice.kim.api.role.Role; import org.kuali.rice.kim.api.services.KimApiServiceLocator; import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; /** * Associates a member (principal, role, or group) to a model. These become the members of the model role created in KIM */ public class SecurityModelMember extends PersistableBusinessObjectBase { protected KualiInteger modelId; protected String memberId; protected String memberTypeCode; protected Timestamp activeFromDate; protected Timestamp activeToDate; protected SecurityModel securityModel; // non db protected String memberName = ""; protected ModelMember modelMember; /** * Gets the modelId attribute. * * @return Returns the modelId. */ public KualiInteger getModelId() { return modelId; } /** * Sets the modelId attribute value. * * @param modelId The modelId to set. */ public void setModelId(KualiInteger modelId) { this.modelId = modelId; } /** * Gets the memberId attribute. * * @return Returns the memberId. */ public String getMemberId() { return memberId; } /** * Sets the memberId attribute value. * * @param memberId The memberId to set. */ public void setMemberId(String memberId) { this.memberId = memberId; memberName = ""; } /** * Gets the memberTypeCode attribute. * * @return Returns the memberTypeCode. */ public String getMemberTypeCode() { return memberTypeCode; } /** * Sets the memberTypeCode attribute value. * * @param memberTypeCode The memberTypeCode to set. */ public void setMemberTypeCode(String memberTypeCode) { this.memberTypeCode = memberTypeCode; memberName = ""; } /** * Gets the activeFromDate attribute. * * @return Returns the activeFromDate. */ public Timestamp getActiveFromDate() { return activeFromDate; } /** * Sets the activeFromDate attribute value. * * @param activeFromDate The activeFromDate to set. */ public void setActiveFromDate(Timestamp activeFromDate) { this.activeFromDate = activeFromDate; } /** * Gets the activeToDate attribute. * * @return Returns the activeToDate. */ public Timestamp getActiveToDate() { return activeToDate; } /** * Sets the activeToDate attribute value. * * @param activeToDate The activeToDate to set. */ public void setActiveToDate(Timestamp activeToDate) { this.activeToDate = activeToDate; } /** * Gets the memberName attribute. * * @return Returns the memberName. */ public String getMemberName() { if ( StringUtils.isBlank(memberName) ) { if (StringUtils.isNotBlank(memberTypeCode) && StringUtils.isNotBlank(memberId)) { if (MemberType.PRINCIPAL.getCode().equals(memberTypeCode)) { Person person = SpringContext.getBean(PersonService.class).getPerson(memberId); if (person != null) { memberName = person.getName(); } } else if (MemberType.ROLE.getCode().equals(memberTypeCode)) { Role roleInfo = KimApiServiceLocator.getRoleService().getRole(memberId); if (roleInfo != null) { memberName = roleInfo.getName(); } } else if (MemberType.GROUP.getCode().equals(memberTypeCode)) { Group groupInfo = KimApiServiceLocator.getGroupService().getGroup(memberId); if (groupInfo != null) { memberName = groupInfo.getName(); } } } } return memberName; } /** * Sets the memberName attribute value. * * @param memberName The memberName to set. */ public void setMemberName(String memberName) { this.memberName = memberName; } /** * Gets the securityModel attribute. * * @return Returns the securityModel. */ public SecurityModel getSecurityModel() { return securityModel; } /** * Sets the securityModel attribute value. * * @param securityModel The securityModel to set. */ public void setSecurityModel(SecurityModel securityModel) { this.securityModel = securityModel; } /** * Gets the modelMember attribute. * * @return Returns the modelMember. */ public ModelMember getModelMember() { return modelMember; } /** * Sets the modelMember attribute value. * * @param modelMember The modelMember to set. */ public void setModelMember(ModelMember modelMember) { this.modelMember = modelMember; } /** * Builds a string representation of the model definition assignmentss * * @return String */ public String getModelDefinitionSummary() { String summary = ""; for (SecurityModelDefinition modelDefinition : securityModel.getModelDefinitions()) { summary += "Definition Name: " + modelDefinition.getSecurityDefinition().getName(); summary += ", Constraint Code: " + modelDefinition.getConstraintCode(); summary += ", Operator Code: " + modelDefinition.getOperatorCode(); summary += ", Value: " + modelDefinition.getAttributeValue(); summary += "; "; } return summary; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("SecurityModelMember ["); if (modelId != null) { builder.append("modelId="); builder.append(modelId); builder.append(", "); } if (memberId != null) { builder.append("memberId="); builder.append(memberId); builder.append(", "); } if (memberTypeCode != null) { builder.append("memberTypeCode="); builder.append(memberTypeCode); builder.append(", "); } if (activeFromDate != null) { builder.append("activeFromDate="); builder.append(activeFromDate); builder.append(", "); } if (activeToDate != null) { builder.append("activeToDate="); builder.append(activeToDate); builder.append(", "); } if (getMemberName() != null) { builder.append("getMemberName()="); builder.append(getMemberName()); builder.append(", "); } if (getModelDefinitionSummary() != null) { builder.append("getModelDefinitionSummary()="); builder.append(getModelDefinitionSummary()); } builder.append("]"); return builder.toString(); } }