001/* 002 * The Kuali Financial System, a comprehensive financial management system for higher education. 003 * 004 * Copyright 2005-2014 The Kuali Foundation 005 * 006 * This program is free software: you can redistribute it and/or modify 007 * it under the terms of the GNU Affero General Public License as 008 * published by the Free Software Foundation, either version 3 of the 009 * License, or (at your option) any later version. 010 * 011 * This program is distributed in the hope that it will be useful, 012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 014 * GNU Affero General Public License for more details. 015 * 016 * You should have received a copy of the GNU Affero General Public License 017 * along with this program. If not, see <http://www.gnu.org/licenses/>. 018 */ 019package org.kuali.rice.kim.impl.jaxb; 020 021import java.io.Serializable; 022import java.util.HashMap; 023import java.util.Map; 024 025import javax.xml.bind.annotation.XmlAccessType; 026import javax.xml.bind.annotation.XmlAccessorType; 027import javax.xml.bind.annotation.XmlElement; 028import javax.xml.bind.annotation.XmlTransient; 029import javax.xml.bind.annotation.XmlType; 030import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; 031 032import org.kuali.rice.core.util.jaxb.NameAndNamespacePair; 033import org.kuali.rice.core.util.jaxb.NameAndNamespacePairValidatingAdapter; 034import org.kuali.rice.core.util.jaxb.StringTrimmingAdapter; 035import org.kuali.rice.kim.api.jaxb.NameAndNamespacePairToPermTemplateIdAdapter; 036import org.kuali.rice.kim.api.jaxb.PermissionDetailListAdapter; 037import org.kuali.rice.kim.api.permission.PermissionContract; 038 039/** 040 * This class represents a <permission> XML element. 041 * 042 * @author Kuali Rice Team (rice.collab@kuali.org) 043 */ 044@XmlAccessorType(XmlAccessType.FIELD) 045@XmlType(name="PermissionType", propOrder={ 046 "permissionNameAndNamespace", "permissionTemplateId", "permissionDescription", "active", "permissionDetails" 047}) 048public class PermissionXmlDTO implements Serializable { 049 050 private static final long serialVersionUID = 1L; 051 052 @XmlTransient 053 private String permissionId; 054 055 @XmlElement(name="permissionName") 056 @XmlJavaTypeAdapter(NameAndNamespacePairValidatingAdapter.class) 057 private NameAndNamespacePair permissionNameAndNamespace; 058 059 @XmlElement(name="templateName") 060 @XmlJavaTypeAdapter(NameAndNamespacePairToPermTemplateIdAdapter.class) 061 private String permissionTemplateId; 062 063 @XmlElement(name="description") 064 @XmlJavaTypeAdapter(StringTrimmingAdapter.class) 065 private String permissionDescription; 066 067 @XmlElement(name="active") 068 private Boolean active; 069 070 @XmlElement(name="permissionDetails") 071 @XmlJavaTypeAdapter(PermissionDetailListAdapter.class) 072 private Map<String, String> permissionDetails; 073 074 public PermissionXmlDTO() { 075 this.active = Boolean.TRUE; 076 } 077 078 public PermissionXmlDTO(PermissionContract permission) { 079 this.permissionNameAndNamespace = new NameAndNamespacePair(permission.getNamespaceCode(), permission.getName()); 080 this.permissionTemplateId = permission.getTemplate().getId(); 081 this.permissionDescription = permission.getDescription(); 082 this.active = Boolean.valueOf(permission.isActive()); 083 this.permissionDetails = (permission.getAttributes() != null) ? 084 new HashMap<String, String>(permission.getAttributes()) : new HashMap<String, String>(); 085 } 086 087 /** 088 * @return the permissionId 089 */ 090 public String getPermissionId() { 091 return this.permissionId; 092 } 093 094 /** 095 * @param permissionId the permissionId to set 096 */ 097 public void setPermissionId(String permissionId) { 098 this.permissionId = permissionId; 099 } 100 101 /** 102 * @return the permissionNameAndNamespace 103 */ 104 public NameAndNamespacePair getPermissionNameAndNamespace() { 105 return this.permissionNameAndNamespace; 106 } 107 108 /** 109 * @param permissionNameAndNamespace the permissionNameAndNamespace to set 110 */ 111 public void setPermissionNameAndNamespace(NameAndNamespacePair permissionNameAndNamespace) { 112 this.permissionNameAndNamespace = permissionNameAndNamespace; 113 } 114 115 /** 116 * @return the permissionTemplateId 117 */ 118 public String getPermissionTemplateId() { 119 return this.permissionTemplateId; 120 } 121 122 /** 123 * @param permissionTemplateId the permissionTemplateId to set 124 */ 125 public void setPermissionTemplateId(String permissionTemplateId) { 126 this.permissionTemplateId = permissionTemplateId; 127 } 128 129 /** 130 * @return the permissionDescription 131 */ 132 public String getPermissionDescription() { 133 return this.permissionDescription; 134 } 135 136 /** 137 * @param permissionDescription the permissionDescription to set 138 */ 139 public void setPermissionDescription(String permissionDescription) { 140 this.permissionDescription = permissionDescription; 141 } 142 143 /** 144 * @return the active 145 */ 146 public Boolean getActive() { 147 return this.active; 148 } 149 150 /** 151 * @param active the active to set 152 */ 153 public void setActive(Boolean active) { 154 this.active = active; 155 } 156 157 /** 158 * @return the permissionDetails 159 */ 160 public Map<String, String> getPermissionDetails() { 161 return this.permissionDetails; 162 } 163 164 /** 165 * @param permissionDetails the permissionDetails to set 166 */ 167 public void setPermissionDetails(Map<String, String> permissionDetails) { 168 this.permissionDetails = permissionDetails; 169 } 170 171 /** 172 * Retrieves the permission's name from the permission-name-and-namespace combo. 173 * 174 * @return The name of the permission, or null if the permission-name-and-namespace combo is null. 175 */ 176 public String getPermissionName() { 177 return (permissionNameAndNamespace != null) ? permissionNameAndNamespace.getName() : null; 178 } 179 180 /** 181 * Retrieves the permission's namespace code from the permission-name-and-namespace combo. 182 * 183 * @return The namespace code of the permission, or null if the permission-name-and-namespace combo is null. 184 */ 185 public String getNamespaceCode() { 186 return (permissionNameAndNamespace != null) ? permissionNameAndNamespace.getNamespaceCode() : null; 187 } 188}