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