KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > ext > taglib > ExSetupTag


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.ext.taglib;
66
67 import com.jcorporate.expresso.core.db.DBException;
68 import com.jcorporate.expresso.core.misc.StringUtil;
69 import com.jcorporate.expresso.services.dbobj.Setup;
70 import org.apache.struts.taglib.bean.DefineTag;
71
72 import javax.servlet.jsp.JspException JavaDoc;
73 import javax.servlet.jsp.PageContext JavaDoc;
74
75
76 /**
77  * Define a scripting variable based on the value(s) of the specified
78  * bean property.
79  *
80  * @author Shash Chatterjee
81  */

82 public class ExSetupTag extends DefineTag {
83     /**
84      * Defines the db Context to use in the tag.
85      */

86     protected String JavaDoc db = null;
87     protected String JavaDoc dbToUse = null;
88
89     /**
90      * Boolean value to determine if the setup value is required or optional.
91      */

92     protected String JavaDoc optional = null;
93     protected String JavaDoc optionalToUse = null;
94
95     /**
96      * Defines the application schema to lookup for this setup value.
97      * (Optional) If not used, then
98      * <code>com.jcorporate.expresso.core.ExpressoSchema</code>
99      * is used.
100      */

101     protected String JavaDoc schema = null;
102     protected String JavaDoc schemaToUse = null;
103
104     // --------------------------------------------------------- Public Methods
105
/**
106      * Retrieve the required property and expose it as a scripting variable.
107      *
108      * @return int as defined by the JSP taglib spec
109      * @throws JspException if a JSP exception has occurred
110      */

111     public int doStartTag()
112             throws JspException JavaDoc {
113
114         // Set the proper dbContext
115
dbToUse = db;
116
117         if ((this.dbToUse == null) || (this.dbToUse.equals(""))) {
118             this.dbToUse = "default";
119         }
120
121
122         return (SKIP_BODY);
123     }
124
125     public String JavaDoc getDb() {
126         return (this.dbToUse);
127     }
128
129     public void setDb(String JavaDoc newDb) {
130         this.db = newDb;
131     }
132
133     public String JavaDoc getOptional() {
134         return this.optionalToUse;
135     }
136
137     public void setOptional(String JavaDoc newOptional) {
138         this.optional = newOptional;
139     }
140
141     public String JavaDoc getSchema() {
142         return this.schemaToUse;
143     }
144
145     public void setSchema(String JavaDoc newValue) {
146         this.schema = newValue;
147     }
148
149     /**
150      * Retrieve the required property and expose it as a scripting variable.
151      *
152      * @return integer as per the jsp taglib spec
153      * @throws JspException if a JSP exception has occurred
154      */

155     public int doEndTag() throws JspException JavaDoc {
156
157         // Retrieve the required property value
158
Object JavaDoc valueToUse = this.value;
159
160         optionalToUse = this.optional;
161         schemaToUse = this.schema;
162
163         if (valueToUse == null) {
164
165             // Look up the requested value from ConfigManager
166
try {
167                 if (optionalToUse == null || optionalToUse.equalsIgnoreCase("FALSE")) {
168                     if (schemaToUse != null) {
169                         valueToUse = Setup.getValueRequired(dbToUse, schemaToUse, property);
170                     } else {
171                         valueToUse = Setup.getValueRequired(dbToUse, property);
172                     }
173                 } else {
174                     if (schemaToUse != null) {
175                         valueToUse = Setup.getValue(dbToUse, schemaToUse, property);
176                     } else {
177                         valueToUse = Setup.getValue(dbToUse, property);
178                     }
179                 }
180             } catch (DBException dbe) {
181                 throw new JspException JavaDoc("Database exception trying to find property '" +
182                         StringUtil.notNull(property) +
183                         "' in configuration for DB/Context '" + dbToUse +
184                         "':" + dbe.getMessage());
185             }
186         }
187         if (valueToUse == null) {
188             throw new JspException JavaDoc("Unable to find property '" +
189                     StringUtil.notNull(property) +
190                     "' in configuration for DB/Context '" +
191                     dbToUse + "'");
192         }
193
194         // Expose this value as a scripting variable
195
int inScope = PageContext.PAGE_SCOPE;
196
197         if ("request".equals(toScope)) {
198             inScope = PageContext.REQUEST_SCOPE;
199         } else if ("session".equals(toScope)) {
200             inScope = PageContext.SESSION_SCOPE;
201         } else if ("application".equals(toScope)) {
202             inScope = PageContext.APPLICATION_SCOPE;
203         }
204
205         // Need to set the attribute `name' with setting in scripting
206
// variable `id' in order for Struts 1.1 compatibility.
207
//However, if for some reason, value is set, then we don't
208
//set it because otherwise there is an exception because we have both
209
//name and value.
210
if (this.value == null) {
211             setName(id); /*!*/
212         }
213         pageContext.setAttribute(id, valueToUse, inScope);
214
215         // Continue processing this page
216
return (EVAL_PAGE);
217     }
218
219 }
Popular Tags