View Javadoc
1   /*
2    * The Kuali Financial System, a comprehensive financial management system for higher education.
3    * 
4    * Copyright 2005-2014 The Kuali Foundation
5    * 
6    * This program is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU Affero General Public License as
8    * published by the Free Software Foundation, either version 3 of the
9    * License, or (at your option) any later version.
10   * 
11   * This program is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   * GNU Affero General Public License for more details.
15   * 
16   * You should have received a copy of the GNU Affero General Public License
17   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
18   */
19  package org.kuali.rice.kim.impl.jaxb;
20  
21  import java.io.Serializable;
22  import java.util.HashMap;
23  import java.util.Map;
24  
25  import javax.xml.bind.annotation.XmlAccessType;
26  import javax.xml.bind.annotation.XmlAccessorType;
27  import javax.xml.bind.annotation.XmlElement;
28  import javax.xml.bind.annotation.XmlTransient;
29  import javax.xml.bind.annotation.XmlType;
30  import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
31  
32  import org.kuali.rice.core.util.jaxb.NameAndNamespacePair;
33  import org.kuali.rice.core.util.jaxb.NameAndNamespacePairValidatingAdapter;
34  import org.kuali.rice.core.util.jaxb.StringTrimmingAdapter;
35  import org.kuali.rice.kim.api.jaxb.NameAndNamespacePairToPermTemplateIdAdapter;
36  import org.kuali.rice.kim.api.jaxb.PermissionDetailListAdapter;
37  import org.kuali.rice.kim.api.permission.PermissionContract;
38  
39  /**
40   * This class represents a &lt;permission&gt; XML element.
41   * 
42   * @author Kuali Rice Team (rice.collab@kuali.org)
43   */
44  @XmlAccessorType(XmlAccessType.FIELD)
45  @XmlType(name="PermissionType", propOrder={
46          "permissionNameAndNamespace", "permissionTemplateId", "permissionDescription", "active", "permissionDetails"
47  })
48  public class PermissionXmlDTO implements Serializable {
49      
50      private static final long serialVersionUID = 1L;
51  
52      @XmlTransient
53      private String permissionId;
54      
55      @XmlElement(name="permissionName")
56      @XmlJavaTypeAdapter(NameAndNamespacePairValidatingAdapter.class)
57      private NameAndNamespacePair permissionNameAndNamespace;
58      
59      @XmlElement(name="templateName")
60      @XmlJavaTypeAdapter(NameAndNamespacePairToPermTemplateIdAdapter.class)
61      private String permissionTemplateId;
62      
63      @XmlElement(name="description")
64      @XmlJavaTypeAdapter(StringTrimmingAdapter.class)
65      private String permissionDescription;
66      
67      @XmlElement(name="active")
68      private Boolean active;
69      
70      @XmlElement(name="permissionDetails")
71      @XmlJavaTypeAdapter(PermissionDetailListAdapter.class)
72      private Map<String, String> permissionDetails;
73      
74      public PermissionXmlDTO() {
75          this.active = Boolean.TRUE;
76      }
77      
78      public PermissionXmlDTO(PermissionContract permission) {
79          this.permissionNameAndNamespace = new NameAndNamespacePair(permission.getNamespaceCode(), permission.getName());
80          this.permissionTemplateId = permission.getTemplate().getId();
81          this.permissionDescription = permission.getDescription();
82          this.active = Boolean.valueOf(permission.isActive());
83          this.permissionDetails = (permission.getAttributes() != null) ?
84                  new HashMap<String, String>(permission.getAttributes()) : new HashMap<String, String>();
85      }
86      
87      /**
88       * @return the permissionId
89       */
90      public String getPermissionId() {
91          return this.permissionId;
92      }
93  
94      /**
95       * @param permissionId the permissionId to set
96       */
97      public void setPermissionId(String permissionId) {
98          this.permissionId = permissionId;
99      }
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 }