View Javadoc

1   package org.apache.turbine.om.security;
2   
3   /* ====================================================================
4    * The Apache Software License, Version 1.1
5    *
6    * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
7    * reserved.
8    *
9    * Redistribution and use in source and binary forms, with or without
10   * modification, are permitted provided that the following conditions
11   * are met:
12   *
13   * 1. Redistributions of source code must retain the above copyright
14   *    notice, this list of conditions and the following disclaimer.
15   *
16   * 2. Redistributions in binary form must reproduce the above copyright
17   *    notice, this list of conditions and the following disclaimer in
18   *    the documentation and/or other materials provided with the
19   *    distribution.
20   *
21   * 3. The end-user documentation included with the redistribution,
22   *    if any, must include the following acknowledgment:
23   *       "This product includes software developed by the
24   *        Apache Software Foundation (http://www.apache.org/)."
25   *    Alternately, this acknowledgment may appear in the software itself,
26   *    if and wherever such third-party acknowledgments normally appear.
27   *
28   * 4. The names "Apache" and "Apache Software Foundation" and
29   *    "Apache Turbine" must not be used to endorse or promote products
30   *    derived from this software without prior written permission. For
31   *    written permission, please contact apache@apache.org.
32   *
33   * 5. Products derived from this software may not be called "Apache",
34   *    "Apache Turbine", nor may "Apache" appear in their name, without
35   *    prior written permission of the Apache Software Foundation.
36   *
37   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
38   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
39   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
40   * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
41   * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48   * SUCH DAMAGE.
49   * ====================================================================
50   *
51   * This software consists of voluntary contributions made by many
52   * individuals on behalf of the Apache Software Foundation.  For more
53   * information on the Apache Software Foundation, please see
54   * <http://www.apache.org/>.
55   */
56  
57  import java.util.Collections;
58  import java.util.HashMap;
59  import java.util.Map;
60  
61  import org.apache.torque.om.BaseObject;
62  
63  /***
64   * This class represents a generic object used in the Access Control Lists.
65   *
66   * @author <a href="mailto:frank.kim@clearink.com">Frank Y. Kim</a>
67   * @author <a href="mailto:john.mcnally@clearink.com">John D. McNally</a>
68   * @author <a href="mailto:bmclaugh@algx.net">Brett McLaughlin</a>
69   * @author <a href="mailto:Rafal.Krzewski@e-point.pl">Rafal Krzewski</a>
70   * @version $Id: SecurityObject.java,v 1.6 2003/06/27 22:09:38 mpoeschl Exp $
71   */
72  public abstract class SecurityObject extends BaseObject implements Comparable
73  {
74      /*** The name of this object. */
75      private String name;
76  
77      /*** The id of this object */
78      private int id;
79  
80      /*** The attributes of this object. */
81      private Map attributes;
82  
83      /***
84       * Constructs a new SecurityObject
85       */
86      public SecurityObject()
87      {
88          this("");
89      }
90  
91      /***
92       * Constructs a new SecurityObject with the specified name.
93       *
94       * @param name The name of the new object.
95       */
96      public SecurityObject(String name)
97      {
98          setName(name);
99          setId(0);
100         setAttributes(Collections.synchronizedMap(new HashMap()));
101     }
102 
103     /***
104      * Returns a Map containing this object's attributes.
105      *
106      * @return the object's attributes.
107      */
108     public Map getAttributes()
109     {
110         return attributes;
111     }
112 
113     /***
114      * Replaces this object's attributes with the specified Map.
115      *
116      * @param attributes The new attributes of the object.
117      */
118     public void setAttributes(Map attributes)
119     {
120         this.attributes = attributes;
121     }
122 
123     /***
124      * Retrieves the value of specific attribute of this object.
125      *
126      * @param name the name of the attribute
127      * @return the value of the attribute
128      */
129     public Object getAttribute(String name)
130     {
131         return attributes.get(name);
132     }
133 
134     /***
135      * Sets the value of specific attribute of this object.
136      *
137      * @param name the name of the attribute
138      * @param value the value of the attribute
139      */
140     public void setAttribute(String name, Object value)
141     {
142         attributes.put(name, value);
143     }
144 
145     /***
146      * Returns the name of this object.
147      *
148      * @return The name of the object.
149      */
150     public String getName()
151     {
152         return name;
153     }
154 
155     /***
156      * Sets the name of this object.
157      *
158      * @param name The name of the object.
159      */
160     public void setName(String name)
161     {
162         this.name = name;
163     }
164 
165     /***
166      * Unused. There is an ID column in the 
167      * database scheme but it doesn't seem
168      * to be used.
169      *
170      * @return 0
171      */
172     public int getId()
173     {
174         return id;
175     }
176             
177     /***
178      * Unused. There is an ID column in the 
179      * database scheme but it doesn't seem
180      * to be used.
181      *
182      * @return null
183      */
184     public Integer getIdAsObj()
185     {
186         return new Integer(id);
187     }
188 
189     /***
190      * Unused. There is an ID column in the 
191      * database scheme but it doesn't seem
192      * to be used.
193      *
194      * @param id The id of the User.
195      */
196     public void setId(int id)
197     {
198         this.id = id;
199     }
200 
201     /***
202      * Used for ordering SecurityObjects.
203      *
204      * @param obj The Object to compare to.
205      * @return -1 if the name of the other object is lexically greater than this
206      *         group, 1 if it is lexically lesser, 0 if they are equal.
207      */
208     public int compareTo(Object obj)
209     {
210         if (this.getClass() != obj.getClass())
211         {
212             throw new ClassCastException();
213         }
214         String name1 = ((SecurityObject) obj).getName();
215         String name2 = this.getName();
216 
217         return name2.compareTo(name1);
218     }
219 
220     /***
221      * Returns a textual representation of this object, consisted by
222      * it's name and attributes.
223      *
224      * @return  a textual representation of this group.
225      */
226     public String toString()
227     {
228         return (getName() + ':' + getAttributes().toString());
229     }
230 }