001    /**
002     * Copyright 2005-2013 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.jaxb;
017    
018    import org.kuali.rice.core.util.jaxb.NameAndNamespacePair;
019    import org.kuali.rice.core.util.jaxb.NameAndNamespacePairValidatingAdapter;
020    import org.kuali.rice.core.util.jaxb.StringTrimmingAdapter;
021    import org.kuali.rice.kim.api.jaxb.NameAndNamespacePairToPermTemplateIdAdapter;
022    import org.kuali.rice.kim.api.jaxb.PermissionDetailListAdapter;
023    import org.kuali.rice.kim.api.permission.PermissionContract;
024    
025    import javax.xml.bind.annotation.XmlAccessType;
026    import javax.xml.bind.annotation.XmlAccessorType;
027    import javax.xml.bind.annotation.XmlElement;
028    import javax.xml.bind.annotation.XmlTransient;
029    import javax.xml.bind.annotation.XmlType;
030    import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
031    import java.io.Serializable;
032    import java.util.HashMap;
033    import java.util.Map;
034    
035    /**
036     * This class represents a <permission> XML element.
037     * 
038     * @author Kuali Rice Team (rice.collab@kuali.org)
039     */
040    @XmlAccessorType(XmlAccessType.FIELD)
041    @XmlType(name="PermissionType", propOrder={
042            "permissionNameAndNamespace", "permissionTemplateId", "permissionDescription", "active", "permissionDetails"
043    })
044    public class PermissionXmlDTO implements Serializable {
045        
046        private static final long serialVersionUID = 1L;
047    
048        @XmlTransient
049        private String permissionId;
050        
051        @XmlElement(name="permissionName")
052        @XmlJavaTypeAdapter(NameAndNamespacePairValidatingAdapter.class)
053        private NameAndNamespacePair permissionNameAndNamespace;
054        
055        @XmlElement(name="templateName")
056        @XmlJavaTypeAdapter(NameAndNamespacePairToPermTemplateIdAdapter.class)
057        private String permissionTemplateId;
058        
059        @XmlElement(name="description")
060        @XmlJavaTypeAdapter(StringTrimmingAdapter.class)
061        private String permissionDescription;
062        
063        @XmlElement(name="active")
064        private Boolean active;
065        
066        @XmlElement(name="permissionDetails")
067        @XmlJavaTypeAdapter(PermissionDetailListAdapter.class)
068        private Map<String, String> permissionDetails;
069        
070        public PermissionXmlDTO() {
071            this.active = Boolean.TRUE;
072        }
073        
074        public PermissionXmlDTO(PermissionContract permission) {
075            this.permissionNameAndNamespace = new NameAndNamespacePair(permission.getNamespaceCode(), permission.getName());
076            this.permissionTemplateId = permission.getTemplate().getId();
077            this.permissionDescription = permission.getDescription();
078            this.active = Boolean.valueOf(permission.isActive());
079            this.permissionDetails = (permission.getAttributes() != null) ?
080                    new HashMap<String, String>(permission.getAttributes()) : new HashMap<String, String>();
081        }
082        
083        /**
084         * @return the permissionId
085         */
086        public String getPermissionId() {
087            return this.permissionId;
088        }
089    
090        /**
091         * @param permissionId the permissionId to set
092         */
093        public void setPermissionId(String permissionId) {
094            this.permissionId = permissionId;
095        }
096    
097        /**
098         * @return the permissionNameAndNamespace
099         */
100        public NameAndNamespacePair getPermissionNameAndNamespace() {
101            return this.permissionNameAndNamespace;
102        }
103    
104        /**
105         * @param permissionNameAndNamespace the permissionNameAndNamespace to set
106         */
107        public void setPermissionNameAndNamespace(NameAndNamespacePair permissionNameAndNamespace) {
108            this.permissionNameAndNamespace = permissionNameAndNamespace;
109        }
110    
111        /**
112         * @return the permissionTemplateId
113         */
114        public String getPermissionTemplateId() {
115            return this.permissionTemplateId;
116        }
117    
118        /**
119         * @param permissionTemplateId the permissionTemplateId to set
120         */
121        public void setPermissionTemplateId(String permissionTemplateId) {
122            this.permissionTemplateId = permissionTemplateId;
123        }
124    
125        /**
126         * @return the permissionDescription
127         */
128        public String getPermissionDescription() {
129            return this.permissionDescription;
130        }
131    
132        /**
133         * @param permissionDescription the permissionDescription to set
134         */
135        public void setPermissionDescription(String permissionDescription) {
136            this.permissionDescription = permissionDescription;
137        }
138    
139        /**
140         * @return the active
141         */
142        public Boolean getActive() {
143            return this.active;
144        }
145    
146        /**
147         * @param active the active to set
148         */
149        public void setActive(Boolean active) {
150            this.active = active;
151        }
152    
153        /**
154         * @return the permissionDetails
155         */
156        public Map<String, String> getPermissionDetails() {
157            return this.permissionDetails;
158        }
159    
160        /**
161         * @param permissionDetails the permissionDetails to set
162         */
163        public void setPermissionDetails(Map<String, String> permissionDetails) {
164            this.permissionDetails = permissionDetails;
165        }
166    
167        /**
168         * Retrieves the permission's name from the permission-name-and-namespace combo.
169         * 
170         * @return The name of the permission, or null if the permission-name-and-namespace combo is null.
171         */
172        public String getPermissionName() {
173            return (permissionNameAndNamespace != null) ? permissionNameAndNamespace.getName() : null;
174        }
175    
176        /**
177         * Retrieves the permission's namespace code from the permission-name-and-namespace combo.
178         * 
179         * @return The namespace code of the permission, or null if the permission-name-and-namespace combo is null.
180         */
181        public String getNamespaceCode() {
182            return (permissionNameAndNamespace != null) ? permissionNameAndNamespace.getNamespaceCode() : null;
183        }
184    }