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