001 //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/ogcwebservices/wass/saml/Statement.java $
002 /*---------------- FILE HEADER ------------------------------------------
003
004 This file is part of deegree.
005 Copyright (C) 2001-2008 by:
006 EXSE, Department of Geography, University of Bonn
007 http://www.giub.uni-bonn.de/deegree/
008 lat/lon GmbH
009 http://www.lat-lon.de
010
011 This library is free software; you can redistribute it and/or
012 modify it under the terms of the GNU Lesser General Public
013 License as published by the Free Software Foundation; either
014 version 2.1 of the License, or (at your option) any later version.
015
016 This library is distributed in the hope that it will be useful,
017 but WITHOUT ANY WARRANTY; without even the implied warranty of
018 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
019 Lesser General Public License for more details.
020
021 You should have received a copy of the GNU Lesser General Public
022 License along with this library; if not, write to the Free Software
023 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
024
025 Contact:
026
027 Andreas Poth
028 lat/lon GmbH
029 Aennchenstr. 19
030 53115 Bonn
031 Germany
032 E-Mail: poth@lat-lon.de
033
034 Prof. Dr. Klaus Greve
035 Department of Geography
036 University of Bonn
037 Meckenheimer Allee 166
038 53115 Bonn
039 Germany
040 E-Mail: greve@giub.uni-bonn.de
041
042
043 ---------------------------------------------------------------------------*/
044
045 package org.deegree.ogcwebservices.wass.saml;
046
047 import java.net.URI;
048 import java.util.ArrayList;
049 import java.util.Date;
050
051 import org.deegree.datatypes.QualifiedName;
052
053 /**
054 * Encapsulated data: Statement elements
055 *
056 * Namespace: http://urn:oasis:names:tc.SAML:1.0:assertion
057 *
058 * @author <a href="mailto:bezema@lat-lon.de">Rutger Bezema</a>
059 * @author last edited by: $Author: apoth $
060 *
061 * @version 2.0, $Revision: 9345 $, $Date: 2007-12-27 17:22:25 +0100 (Do, 27 Dez 2007) $
062 *
063 * @since 2.0
064 */
065 public class Statement {
066
067 private Subject subject = null;
068
069 private URI authenticationMethod = null;
070
071 private Date authenticationInstant = null;
072
073 private String ip = null;
074
075 private String dns = null;
076
077 private QualifiedName kind = null;
078
079 private URI location = null;
080
081 private URI binding = null;
082
083 private ArrayList<String> actions = null;
084
085 private ArrayList<URI> actionNamespaces = null;
086
087 private ArrayList<Assertion> assertions = null;
088
089 private String[] assertionIDs = null;
090
091 private URI resource = null;
092
093 private String decision = null;
094
095 private ArrayList<String> attributeNames = null;
096
097 private ArrayList<URI> attributeNamespaces = null;
098
099 private ArrayList<String[]> attributeValues = null;
100
101 /**
102 * @param subject
103 * @param authenticationMethod
104 * @param authenticationInstant
105 */
106 public Statement( Subject subject, URI authenticationMethod, Date authenticationInstant ) {
107 this.subject = subject;
108 this.authenticationMethod = authenticationMethod;
109 this.authenticationInstant = authenticationInstant;
110 }
111
112 /**
113 * @param subject
114 * @param actions
115 * @param actionNamespaces
116 * @param assertions
117 * @param assertionIDs
118 * @param resource
119 * @param decision
120 */
121 public Statement( Subject subject, ArrayList<String> actions, ArrayList<URI> actionNamespaces,
122 ArrayList<Assertion> assertions, String[] assertionIDs, URI resource,
123 String decision ) {
124 this.subject = subject;
125 this.actions = actions;
126 this.actionNamespaces = actionNamespaces;
127 this.assertions = assertions;
128 this.assertionIDs = assertionIDs;
129 this.resource = resource;
130 this.decision = decision;
131 }
132
133 /**
134 * @param subject
135 * @param attributeNames
136 * @param attributeNamespaces
137 * @param attributeValues
138 */
139 public Statement( Subject subject, ArrayList<String> attributeNames,
140 ArrayList<URI> attributeNamespaces, ArrayList<String[]> attributeValues ) {
141 this.subject = subject;
142 this.attributeNames = attributeNames;
143 this.attributeNamespaces = attributeNamespaces;
144 this.attributeValues = attributeValues;
145 }
146
147 /**
148 * @return true, if the encapsulated data is an AuthenticationStatement
149 */
150 public boolean isAuthenticationStatement() {
151 return ( authenticationMethod != null ) && ( authenticationInstant != null );
152 }
153
154 /**
155 * @return true, if the encapsulated data is an AuthorizationDecisionStatement
156 */
157 public boolean isAuthorizationDecisionStatement() {
158 return ( actions != null ) && ( actionNamespaces != null ) && ( assertions != null )
159 && ( assertionIDs != null ) && ( resource != null ) && ( decision != null );
160 }
161
162 /**
163 * @return true, if the encapsulated data is an AttributeStatement
164 */
165 public boolean isAttributeStatement() {
166 return ( attributeNames != null ) && ( attributeNamespaces != null )
167 && ( attributeValues != null );
168 }
169
170 /**
171 * @param ip
172 */
173 public void setIP( String ip ) {
174 this.ip = ip;
175 }
176
177 /**
178 * @param dns
179 */
180 public void setDNS( String dns ) {
181 this.dns = dns;
182 }
183
184 /**
185 * @param kind
186 * @param location
187 * @param binding
188 */
189 public void setAuthorityBinding( QualifiedName kind, URI location, URI binding ) {
190 this.kind = kind;
191 this.location = location;
192 this.binding = binding;
193 }
194
195 /**
196 * @return Returns the actionNamespaces.
197 */
198 public ArrayList<URI> getActionNamespaces() {
199 return actionNamespaces;
200 }
201
202 /**
203 * @return Returns the actions.
204 */
205 public ArrayList<String> getActions() {
206 return actions;
207 }
208
209 /**
210 * @return Returns the assertionIDs.
211 */
212 public String[] getAssertionIDs() {
213 return assertionIDs;
214 }
215
216 /**
217 * @return Returns the assertions.
218 */
219 public ArrayList<Assertion> getAssertions() {
220 return assertions;
221 }
222
223 /**
224 * @return Returns the attributeNames.
225 */
226 public ArrayList<String> getAttributeNames() {
227 return attributeNames;
228 }
229
230 /**
231 * @return Returns the attributeNamespaces.
232 */
233 public ArrayList<URI> getAttributeNamespaces() {
234 return attributeNamespaces;
235 }
236
237 /**
238 * @return Returns the attributeValues.
239 */
240 public ArrayList<String[]> getAttributeValues() {
241 return attributeValues;
242 }
243
244 /**
245 * @return Returns the authenticationInstant.
246 */
247 public Date getAuthenticationInstant() {
248 return authenticationInstant;
249 }
250
251 /**
252 * @return Returns the authenticationMethod.
253 */
254 public URI getAuthenticationMethod() {
255 return authenticationMethod;
256 }
257
258 /**
259 * @return Returns the binding.
260 */
261 public URI getBinding() {
262 return binding;
263 }
264
265 /**
266 * @return Returns the decision.
267 */
268 public String getDecision() {
269 return decision;
270 }
271
272 /**
273 * @return Returns the dns.
274 */
275 public String getDns() {
276 return dns;
277 }
278
279 /**
280 * @return Returns the ip.
281 */
282 public String getIp() {
283 return ip;
284 }
285
286 /**
287 * @return Returns the kind.
288 */
289 public QualifiedName getKind() {
290 return kind;
291 }
292
293 /**
294 * @return Returns the location.
295 */
296 public URI getLocation() {
297 return location;
298 }
299
300 /**
301 * @return Returns the resource.
302 */
303 public URI getResource() {
304 return resource;
305 }
306
307 /**
308 * @return Returns the subject.
309 */
310 public Subject getSubject() {
311 return subject;
312 }
313
314 }