001/**
002 * Copyright 2005-2015 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.bo.ui;
017
018import javax.persistence.Column;
019import javax.persistence.Entity;
020import javax.persistence.GeneratedValue;
021import javax.persistence.Id;
022import javax.persistence.IdClass;
023import javax.persistence.Table;
024import javax.persistence.Transient;
025
026import org.apache.commons.lang.StringUtils;
027import org.hibernate.annotations.GenericGenerator;
028import org.hibernate.annotations.Parameter;
029import org.kuali.rice.kim.api.KimConstants;
030import org.kuali.rice.kim.api.permission.Permission;
031import org.kuali.rice.kim.api.services.KimApiServiceLocator;
032
033import java.util.Iterator;
034
035/**
036 * @author Kuali Rice Team (rice.collab@kuali.org)
037 */
038@IdClass(KimDocumentRolePermissionId.class)
039@Entity
040@Table(name="KRIM_PND_ROLE_PERM_T")
041public class KimDocumentRolePermission extends KimDocumentBoActivatableBase {
042
043        private static final long serialVersionUID = 1L;
044        @Id
045        @GeneratedValue(generator="KRIM_ROLE_PERM_ID_S")
046        @GenericGenerator(name="KRIM_ROLE_PERM_ID_S",strategy="org.kuali.rice.core.jpa.spring.RiceNumericStringSequenceStyleGenerator",parameters={
047                        @Parameter(name="sequence_name",value="KRIM_ROLE_PERM_ID_S"),
048                        @Parameter(name="value_column",value="id")
049                })
050        @Column(name="ROLE_PERM_ID")
051        protected String rolePermissionId;
052        @Column(name="ROLE_ID")
053        protected String roleId;
054        @Column(name="PERM_ID")
055        protected String permissionId;
056        @Transient
057        protected Permission permission;
058    @Transient
059    protected String name;
060    @Transient
061    protected String namespaceCode;
062
063        
064        public String getPermissionId() {
065                return permissionId;
066        }
067
068        public String getRoleId() {
069                return roleId;
070        }
071
072        public String getRolePermissionId() {
073                return rolePermissionId;
074        }
075
076        public void setPermissionId(String permissionId) {
077                this.permissionId = permissionId;
078        }
079
080        public void setRoleId(String roleId) {
081                this.roleId = roleId;
082        }
083
084        public void setRolePermissionId(String rolePermissionId) {
085                this.rolePermissionId = rolePermissionId;
086        }
087
088        /**
089         * @return the permission
090         */
091        public Permission getPermission() {
092        if(null != permissionId){
093            if ( permission == null || !StringUtils.equals( permission.getId(), permissionId ) ) {
094                permission = KimApiServiceLocator.getPermissionService().getPermission(permissionId);
095            }
096        }
097                return permission;
098        }
099
100    public String getPermissionDetailValues() {
101        Permission perm = getPermission();
102        StringBuffer sb = new StringBuffer();
103        if ( perm.getAttributes() != null ) {
104            Iterator<String> keyIter = perm.getAttributes().keySet().iterator();
105            while ( keyIter.hasNext() ) {
106                String key = keyIter.next();
107                sb.append( key ).append( '=' ).append( perm.getAttributes().get(key) );
108                if (keyIter.hasNext()) {
109                    sb.append(KimConstants.KimUIConstants.COMMA_SEPARATOR).append(" ");
110                }
111            }
112        }
113        return sb.toString();
114    }
115
116        /**
117         * @param permission the permission to set
118         */
119        public void setPermission(Permission permission) {
120                this.permission = permission;
121        }
122
123    public String getName(){
124        if( null == permission ) {
125             getPermission();
126        }
127
128        if (null == permission) {
129             return "";
130        }
131
132        return permission.getName();
133
134    }
135
136    public String getNamespaceCode(){
137
138        if( null == permission ) {
139            getPermission();
140        }
141
142        if (null == permission) {
143            return "";
144        }
145
146        return permission.getNamespaceCode();
147    }
148        
149}