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.sql.Date;
019 import java.sql.Timestamp;
020 import java.util.LinkedHashMap;
021
022 import org.apache.commons.lang.StringUtils;
023 import org.kuali.kfs.sec.SecPropertyConstants;
024 import org.kuali.kfs.sys.context.SpringContext;
025 import org.kuali.rice.kim.bo.Person;
026 import org.kuali.rice.kim.bo.group.dto.GroupInfo;
027 import org.kuali.rice.kim.bo.role.dto.KimRoleInfo;
028 import org.kuali.rice.kim.service.GroupService;
029 import org.kuali.rice.kim.service.PersonService;
030 import org.kuali.rice.kim.service.RoleManagementService;
031 import org.kuali.rice.kim.util.KimConstants;
032 import org.kuali.rice.kns.bo.PersistableBusinessObjectBase;
033 import org.kuali.rice.kns.util.KualiInteger;
034
035
036 /**
037 * Associates a member (principal, role, or group) to a model. These become the members of the model role created in KIM
038 */
039 public class SecurityModelMember extends PersistableBusinessObjectBase {
040 private KualiInteger modelId;
041 private String memberId;
042 private String memberTypeCode;
043 private Timestamp activeFromDate;
044 private Timestamp activeToDate;
045
046 private SecurityModel securityModel;
047
048 // non db
049 private String memberName;
050
051 private ModelMember modelMember;
052
053 public SecurityModelMember() {
054 super();
055 }
056
057
058 /**
059 * Gets the modelId attribute.
060 *
061 * @return Returns the modelId.
062 */
063 public KualiInteger getModelId() {
064 return modelId;
065 }
066
067
068 /**
069 * Sets the modelId attribute value.
070 *
071 * @param modelId The modelId to set.
072 */
073 public void setModelId(KualiInteger modelId) {
074 this.modelId = modelId;
075 }
076
077
078 /**
079 * Gets the memberId attribute.
080 *
081 * @return Returns the memberId.
082 */
083 public String getMemberId() {
084 return memberId;
085 }
086
087
088 /**
089 * Sets the memberId attribute value.
090 *
091 * @param memberId The memberId to set.
092 */
093 public void setMemberId(String memberId) {
094 this.memberId = memberId;
095 }
096
097
098 /**
099 * Gets the memberTypeCode attribute.
100 *
101 * @return Returns the memberTypeCode.
102 */
103 public String getMemberTypeCode() {
104 return memberTypeCode;
105 }
106
107
108 /**
109 * Sets the memberTypeCode attribute value.
110 *
111 * @param memberTypeCode The memberTypeCode to set.
112 */
113 public void setMemberTypeCode(String memberTypeCode) {
114 this.memberTypeCode = memberTypeCode;
115 }
116
117
118 /**
119 * Gets the activeFromDate attribute.
120 *
121 * @return Returns the activeFromDate.
122 */
123 public Timestamp getActiveFromDate() {
124 return activeFromDate;
125 }
126
127
128 /**
129 * Sets the activeFromDate attribute value.
130 *
131 * @param activeFromDate The activeFromDate to set.
132 */
133 public void setActiveFromDate(Timestamp activeFromDate) {
134 this.activeFromDate = activeFromDate;
135 }
136
137
138 /**
139 * Gets the activeToDate attribute.
140 *
141 * @return Returns the activeToDate.
142 */
143 public Timestamp getActiveToDate() {
144 return activeToDate;
145 }
146
147
148 /**
149 * Sets the activeToDate attribute value.
150 *
151 * @param activeToDate The activeToDate to set.
152 */
153 public void setActiveToDate(Timestamp activeToDate) {
154 this.activeToDate = activeToDate;
155 }
156
157
158 /**
159 * Gets the memberName attribute.
160 *
161 * @return Returns the memberName.
162 */
163 public String getMemberName() {
164 if (StringUtils.isNotBlank(memberName)) {
165 return memberName;
166 }
167
168 if (StringUtils.isNotBlank(memberTypeCode) && StringUtils.isNotBlank(memberId)) {
169 if (KimConstants.KimUIConstants.MEMBER_TYPE_PRINCIPAL_CODE.equals(memberTypeCode)) {
170 Person person = SpringContext.getBean(PersonService.class).getPerson(memberId);
171 if (person != null) {
172 return person.getName();
173 }
174 }
175 else if (KimConstants.KimUIConstants.MEMBER_TYPE_ROLE_CODE.equals(memberTypeCode)) {
176 KimRoleInfo roleInfo = SpringContext.getBean(RoleManagementService.class).getRole(memberId);
177 if (roleInfo != null) {
178 return roleInfo.getRoleName();
179 }
180 }
181 else if (KimConstants.KimUIConstants.MEMBER_TYPE_GROUP_CODE.equals(memberTypeCode)) {
182 GroupInfo groupInfo = SpringContext.getBean(GroupService.class).getGroupInfo(memberId);
183 if (groupInfo != null) {
184 return groupInfo.getGroupName();
185 }
186 }
187 }
188
189 return "";
190 }
191
192
193 /**
194 * Sets the memberName attribute value.
195 *
196 * @param memberName The memberName to set.
197 */
198 public void setMemberName(String memberName) {
199 this.memberName = memberName;
200 }
201
202
203 /**
204 * Gets the securityModel attribute.
205 *
206 * @return Returns the securityModel.
207 */
208 public SecurityModel getSecurityModel() {
209 return securityModel;
210 }
211
212
213 /**
214 * Sets the securityModel attribute value.
215 *
216 * @param securityModel The securityModel to set.
217 */
218 public void setSecurityModel(SecurityModel securityModel) {
219 this.securityModel = securityModel;
220 }
221
222
223 /**
224 * Gets the modelMember attribute.
225 *
226 * @return Returns the modelMember.
227 */
228 public ModelMember getModelMember() {
229 return modelMember;
230 }
231
232
233 /**
234 * Sets the modelMember attribute value.
235 *
236 * @param modelMember The modelMember to set.
237 */
238 public void setModelMember(ModelMember modelMember) {
239 this.modelMember = modelMember;
240 }
241
242 /**
243 * Builds a string representation of the model definition assignmentss
244 *
245 * @return String
246 */
247 public String getModelDefinitionSummary() {
248 String summary = "";
249
250 for (SecurityModelDefinition modelDefinition : securityModel.getModelDefinitions()) {
251 summary += "Definition Name: " + modelDefinition.getSecurityDefinition().getName();
252 summary += ", Constraint Code: " + modelDefinition.getConstraintCode();
253 summary += ", Operator Code: " + modelDefinition.getOperatorCode();
254 summary += ", Value: " + modelDefinition.getAttributeValue();
255 summary += "; ";
256 }
257
258 return summary;
259 }
260
261
262 /**
263 * @see org.kuali.rice.kns.bo.BusinessObjectBase#toStringMapper()
264 */
265 @Override
266 protected LinkedHashMap toStringMapper() {
267 LinkedHashMap m = new LinkedHashMap();
268
269 m.put(SecPropertyConstants.MODEL_ID, this.modelId);
270 m.put(SecPropertyConstants.MEMBER_ID, this.memberId);
271
272 return m;
273 }
274
275 }