KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > services > dbobj > ControllerSecurity


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2002 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64
65 package com.jcorporate.expresso.services.dbobj;
66
67 import com.jcorporate.expresso.core.controller.Controller;
68 import com.jcorporate.expresso.core.db.DBException;
69 import com.jcorporate.expresso.core.dbobj.RequestContext;
70 import com.jcorporate.expresso.core.servlet.StdServlet;
71
72
73 /**
74  * Controller Security indicates which of the controllers contained in a schema
75  * can be accessed by which groups of users. This table is populated
76  * by the initialize process (DBCreate servlet) with all of the
77  * appropriate data for a given schema
78  *
79  * @author Michael Nash
80  */

81 public class ControllerSecurity
82         extends SecurityDBObject {
83
84     /**
85      * field names
86      */

87     public static final String JavaDoc CONTROLLER_CLASS = "ControllerClass";
88     public static final String JavaDoc GROUP_NAME = "GroupName";
89     public static final String JavaDoc STATES = "States";
90
91
92     /**
93      * wildcard used to indicate any state
94      */

95     public static final String JavaDoc ANY_STATE_WILDCARD = "*";
96
97     /**
98      * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject
99      */

100     public ControllerSecurity()
101             throws DBException {
102         super();
103     } /* ControllerSecurity() */
104
105
106     /**
107      * Constructor initializes the user context for this object too
108      *
109      * @param uid the user id of the owner object
110      */

111     public ControllerSecurity(int uid)
112             throws DBException {
113         super(uid);
114     }
115
116     /**
117      * For using DBObjects within Controllers. Initializes based upon the current
118      * user and the requested db. [Of course this can be modified later]
119      *
120      * @param request - The controller request handed to you by the framework.
121      */

122     public ControllerSecurity(RequestContext request)
123             throws DBException {
124         super(request);
125     }
126
127     /**
128      * Extend add to provide default values for the States field if it
129      * is left empty
130      */

131     public void add()
132             throws DBException {
133         if (getField(STATES).equals("")) {
134             setField(STATES, ANY_STATE_WILDCARD);
135         }
136
137         super.add();
138     } /* add() */
139
140
141     /**
142      * Extend the getField object to return the virtual fields
143      *
144      * @param fieldName the field name to retrieve
145      * @return java.lang.String the name of the value
146      */

147     public String JavaDoc getField(String JavaDoc fieldName)
148             throws DBException {
149         if (fieldName.equals("ControllerDescrip")) {
150             StdServlet serv;
151             Controller con;
152
153             try {
154                 Class JavaDoc c = Class.forName(getField(CONTROLLER_CLASS));
155                 Object JavaDoc o = c.newInstance();
156
157                 if (o instanceof Controller) {
158                     con = (Controller) o;
159
160                     return con.getTitle();
161                 } else if (o instanceof StdServlet) {
162                     serv = (StdServlet) o;
163
164                     return serv.getTitle();
165                 } else {
166                     return ("Unknown");
167                 }
168             } catch (ClassNotFoundException JavaDoc cn) {
169                 return ("Controller/Servlet object " +
170                         getField(CONTROLLER_CLASS) + " not found");
171             } catch (InstantiationException JavaDoc ie) {
172                 return ("Controller object " +
173                         getField(CONTROLLER_CLASS) +
174                         " cannot be instantiated");
175             } catch (IllegalAccessException JavaDoc iae) {
176                 return ("Illegal access loading Controller object");
177             }
178         } /* descrip field */
179
180
181         return super.getField(fieldName);
182     } /* getField(String) */
183
184
185     /**
186      * @see com.jcorporate.expresso.core.dbobj.SecuredDBObject#setupFields
187      */

188     public void setupFields()
189             throws DBException {
190         setTargetTable("CONTROLLERSECURITY");
191         setDescription("DBcontrollerSecurity");
192         setCharset("ISO-8859-1");
193         addField(CONTROLLER_CLASS, "char", 128, false, "controllerClass");
194         addVirtualField("ControllerDescrip", "varchar", 80,
195                 "controllerDescription");
196         addField(GROUP_NAME, "char", 10, false, "group");
197         addField(STATES, "text", 0, false, "allowedStates");
198         setStringFilter(CONTROLLER_CLASS, "stripFilter");
199         setStringFilter(GROUP_NAME, "stripFilter");
200         setStringFilter(STATES, "rawFilter");
201         addKey(CONTROLLER_CLASS);
202         addKey(GROUP_NAME);
203         setMultiValued(GROUP_NAME);
204         setLookupObject(GROUP_NAME, UserGroup.class.getName());
205     } /* setupFields() */
206
207
208     /**
209      * Extend setField to trim all field values
210      *
211      * @param fieldName The name of the field to set
212      * @param fieldValue The new value for the field
213      */

214     public void setField(String JavaDoc fieldName, String JavaDoc fieldValue)
215             throws DBException {
216         if (fieldValue != null) {
217             super.setField(fieldName, fieldValue.trim());
218         } else {
219             super.setField(fieldName, (String JavaDoc) null);
220         }
221     } /* setField(String, String) */
222
223
224 } /* ControllerSecurity */
225
Popular Tags