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.impl.permission; 017 018import java.util.HashMap; 019import java.util.Iterator; 020import java.util.List; 021import java.util.Map; 022 023import javax.persistence.Column; 024import javax.persistence.Entity; 025import javax.persistence.Id; 026import javax.persistence.Table; 027import javax.persistence.Transient; 028import javax.persistence.Convert; 029 030import org.apache.commons.lang.StringUtils; 031import org.kuali.rice.krad.bo.PersistableBusinessObjectBase; 032import org.kuali.rice.krad.data.jpa.converters.BooleanYNConverter; 033 034@Entity 035@Table(name = "KRIM_PERM_T") 036public class GenericPermissionBo extends PersistableBusinessObjectBase { 037 038 private static final long serialVersionUID = 1L; 039 040 @Id 041 @Column(name = "PERM_ID") 042 protected String id; 043 044 @Column(name = "NMSPC_CD") 045 protected String namespaceCode; 046 047 @Column(name = "NM") 048 protected String name; 049 050 @Column(name = "DESC_TXT") 051 protected String description; 052 053 @Column(name = "ACTV_IND") 054 @Convert(converter = BooleanYNConverter.class) 055 protected boolean active; 056 057 @Column(name = "PERM_TMPL_ID") 058 protected String templateId; 059 060 protected String detailValues; 061 062 protected Map<String, String> details; 063 064 protected PermissionTemplateBo template = new PermissionTemplateBo(); 065 066 protected List<PermissionAttributeBo> attributeDetails; 067 068 /** 069 * This constructs a ... 070 * 071 */ 072 public GenericPermissionBo() { 073 } 074 075 public GenericPermissionBo(PermissionBo perm) { 076 loadFromPermission(perm); 077 } 078 079 public void loadFromPermission(PermissionBo perm) { 080 setId(perm.getId()); 081 setNamespaceCode(perm.getNamespaceCode()); 082 setTemplate(perm.getTemplate()); 083 setAttributeDetails(perm.getAttributeDetails()); 084 setDetailValues(perm.getDetailObjectsValues()); 085 setName(perm.getName()); 086 setTemplateId(perm.getTemplateId()); 087 setDescription(perm.getDescription()); 088 setActive(perm.isActive()); 089 setDetails(perm.getAttributes()); 090 setVersionNumber(perm.getVersionNumber()); 091 setObjectId(perm.getObjectId()); 092 } 093 094 public String getDetailValues() { 095 /*StringBuffer sb = new StringBuffer(); 096 if ( details != null ) { 097 Iterator<String> keyIter = details.keySet().iterator(); 098 while ( keyIter.hasNext() ) { 099 String key = keyIter.next(); 100 sb.append( key ).append( '=' ).append( details.get( key ) ); 101 if ( keyIter.hasNext() ) { 102 sb.append( '\n' ); 103 } 104 } 105 } 106 return sb.toString();*/ 107 return detailValues; 108 } 109 110 public void setDetailValues(String detailValues) { 111 this.detailValues = detailValues; 112 } 113 114 public void setDetailValues(Map<String, String> detailsAttribs) { 115 StringBuffer sb = new StringBuffer(); 116 if (detailsAttribs != null) { 117 Iterator<String> keyIter = detailsAttribs.keySet().iterator(); 118 while (keyIter.hasNext()) { 119 String key = keyIter.next(); 120 sb.append(key).append('=').append(detailsAttribs.get(key)); 121 if (keyIter.hasNext()) { 122 sb.append('\n'); 123 } 124 } 125 } 126 detailValues = sb.toString(); 127 } 128 129 public boolean isActive() { 130 return active; 131 } 132 133 public void setActive(boolean active) { 134 this.active = active; 135 } 136 137 public String getDescription() { 138 return description; 139 } 140 141 public String getId() { 142 return id; 143 } 144 145 public String getName() { 146 return name; 147 } 148 149 public PermissionTemplateBo getTemplate() { 150 return template; 151 } 152 153 public void setDescription(String permissionDescription) { 154 this.description = permissionDescription; 155 } 156 157 public void setName(String permissionName) { 158 this.name = permissionName; 159 } 160 161 public void setDetails(Map<String, String> details) { 162 this.details = details; 163 setDetailValues(details); 164 } 165 166 public String getTemplateId() { 167 return this.templateId; 168 } 169 170 public void setTemplateId(String templateId) { 171 this.templateId = templateId; 172 } 173 174 public void setTemplate(PermissionTemplateBo template) { 175 this.template = template; 176 } 177 178 public Map<String, String> getDetails() { 179 String detailValuesTemp = this.detailValues; 180 Map<String, String> detailsTemp = new HashMap<String, String>(); 181 if (detailValuesTemp != null) { 182 // ensure that all line delimiters are single linefeeds 183 detailValuesTemp = detailValuesTemp.replace("\r\n", "\n"); 184 detailValuesTemp = detailValuesTemp.replace('\r', '\n'); 185 if (StringUtils.isNotBlank(detailValuesTemp)) { 186 String[] values = detailValuesTemp.split("\n"); 187 for (String attrib : values) { 188 if (attrib.indexOf('=') != -1) { 189 String[] keyValueArray = attrib.split("=", 2); 190 detailsTemp.put(keyValueArray[0].trim(), keyValueArray[1].trim()); 191 } 192 } 193 } 194 } 195 this.details = detailsTemp; 196 return details; 197 } 198 199 public String getNamespaceCode() { 200 return this.namespaceCode; 201 } 202 203 public void setNamespaceCode(String namespaceCode) { 204 this.namespaceCode = namespaceCode; 205 } 206 207 public void setId(String id) { 208 this.id = id; 209 } 210 211 public List<PermissionAttributeBo> getAttributeDetails() { 212 return attributeDetails; 213 } 214 215 public void setAttributeDetails(List<PermissionAttributeBo> attributeDetails) { 216 this.attributeDetails = attributeDetails; 217 } 218 219 @Override 220 public void refreshNonUpdateableReferences() { 221 } 222 223 @Override 224 public void refreshReferenceObject(String referenceObjectName) { 225 } 226 227 @Override 228 protected void prePersist() { 229 throw new UnsupportedOperationException("This object should never be persisted."); 230 } 231 232 @Override 233 protected void preUpdate() { 234 throw new UnsupportedOperationException("This object should never be persisted."); 235 } 236 237 @Override 238 protected void preRemove() { 239 throw new UnsupportedOperationException("This object should never be persisted."); 240 } 241 242 public static PermissionBo toPermissionBo(GenericPermissionBo bo) { 243 PermissionBo permission = new PermissionBo(); 244 permission.setTemplateId(bo.getTemplateId()); 245 permission.setId(bo.getId()); 246 permission.setTemplate(bo.getTemplate()); 247 permission.setActive(bo.isActive()); 248 permission.setDescription(bo.getDescription()); 249 permission.setName(bo.getName()); 250 permission.setNamespaceCode(bo.namespaceCode); 251 permission.setAttributeDetails(bo.getAttributeDetails()); 252 permission.setAttributes(bo.getDetails()); 253 permission.setVersionNumber(bo.versionNumber); 254 permission.setObjectId(bo.getObjectId()); 255 return permission; 256 } 257}