001 /* 002 * Copyright 2011 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 */ 016 package org.kuali.kfs.sec.businessobject; 017 018 import java.util.LinkedHashMap; 019 import java.util.List; 020 021 import org.apache.commons.lang.StringUtils; 022 import org.kuali.kfs.sys.KFSPropertyConstants; 023 import org.kuali.kfs.sys.context.SpringContext; 024 import org.kuali.rice.kim.bo.Person; 025 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase; 026 import org.kuali.rice.kns.util.TypedArrayList; 027 028 /** 029 * Represents the assignment of one or more security definitions and one or more models to a principal 030 */ 031 public class SecurityPrincipal extends PersistableBusinessObjectBase { 032 private String principalId; 033 034 private Person securityPerson; 035 036 private List<SecurityPrincipalDefinition> principalDefinitions; 037 private List<SecurityModelMember> principalModels; 038 039 public SecurityPrincipal() { 040 super(); 041 042 principalDefinitions = new TypedArrayList(SecurityPrincipalDefinition.class); 043 principalModels = new TypedArrayList(SecurityModelMember.class); 044 } 045 046 047 /** 048 * Gets the principalId attribute. 049 * 050 * @return Returns the principalId. 051 */ 052 public String getPrincipalId() { 053 return principalId; 054 } 055 056 057 /** 058 * Sets the principalId attribute value. 059 * 060 * @param principalId The principalId to set. 061 */ 062 public void setPrincipalId(String principalId) { 063 this.principalId = principalId; 064 } 065 066 067 /** 068 * Gets the securityPerson attribute. 069 * 070 * @return Returns the securityPerson. 071 */ 072 public Person getSecurityPerson() { 073 securityPerson = SpringContext.getBean(org.kuali.rice.kim.service.PersonService.class).updatePersonIfNecessary(principalId, securityPerson); 074 return securityPerson; 075 } 076 077 078 /** 079 * Sets the securityPerson attribute value. 080 * 081 * @param securityPerson The securityPerson to set. 082 */ 083 public void setSecurityPerson(Person securityPerson) { 084 this.securityPerson = securityPerson; 085 } 086 087 088 /** 089 * Gets the principalDefinitions attribute. 090 * 091 * @return Returns the principalDefinitions. 092 */ 093 public List<SecurityPrincipalDefinition> getPrincipalDefinitions() { 094 return principalDefinitions; 095 } 096 097 098 /** 099 * Sets the principalDefinitions attribute value. 100 * 101 * @param principalDefinitions The principalDefinitions to set. 102 */ 103 public void setPrincipalDefinitions(List<SecurityPrincipalDefinition> principalDefinitions) { 104 this.principalDefinitions = principalDefinitions; 105 } 106 107 108 /** 109 * Gets the principalModels attribute. 110 * 111 * @return Returns the principalModels. 112 */ 113 public List<SecurityModelMember> getPrincipalModels() { 114 return principalModels; 115 } 116 117 118 /** 119 * Sets the principalModels attribute value. 120 * 121 * @param principalModels The principalModels to set. 122 */ 123 public void setPrincipalModels(List<SecurityModelMember> principalModels) { 124 this.principalModels = principalModels; 125 } 126 127 /** 128 * Returns String of definition names assigned to principal 129 */ 130 public String getPrincipalDefinitionNames() { 131 String definitionNames = ""; 132 133 for (SecurityPrincipalDefinition definition : principalDefinitions) { 134 if (StringUtils.isNotBlank(definitionNames)) { 135 definitionNames += ", "; 136 } 137 definitionNames += definition.getSecurityDefinition().getName(); 138 } 139 140 return definitionNames; 141 } 142 143 /** 144 * Returns String of model names assigned to principal 145 */ 146 public String getPrincipalModelNames() { 147 String modelNames = ""; 148 149 for (SecurityModelMember modelMember : principalModels) { 150 if (StringUtils.isNotBlank(modelNames)) { 151 modelNames += ", "; 152 } 153 modelNames += modelMember.getSecurityModel().getName(); 154 } 155 156 return modelNames; 157 } 158 159 /** 160 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper() 161 */ 162 @Override 163 protected LinkedHashMap toStringMapper() { 164 LinkedHashMap m = new LinkedHashMap(); 165 166 m.put(KFSPropertyConstants.PRINCIPAL_ID, this.principalId); 167 168 return m; 169 } 170 171 }