KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > ivata > groupware > admin > struts > HibernateSetupForm


1 /*
2  * Copyright (c) 2001 - 2005 ivata limited.
3  * All rights reserved.
4  * ---------------------------------------------------------
5  * ivata groupware may be redistributed under the GNU General Public
6  * License as published by the Free Software Foundation;
7  * version 2 of the License.
8  *
9  * These programs are free software; you can redistribute them and/or
10  * modify them under the terms of the GNU General Public License
11  * as published by the Free Software Foundation; version 2 of the License.
12  *
13  * These programs are distributed in the hope that they will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16  *
17  * See the GNU General Public License in the file LICENSE.txt for more
18  * details.
19  *
20  * If you would like a copy of the GNU General Public License write to
21  *
22  * Free Software Foundation, Inc.
23  * 59 Temple Place - Suite 330
24  * Boston, MA 02111-1307, USA.
25  *
26  *
27  * To arrange commercial support and licensing, contact ivata at
28  * http://www.ivata.com/contact.jsp
29  * ---------------------------------------------------------
30  * $Log: HibernateSetupForm.java,v $
31  * Revision 1.1 2005/04/11 10:03:43 colinmacleod
32  * Added setup feature.
33  *
34  * ---------------------------------------------------------
35  */

36 package com.ivata.groupware.admin.struts;
37
38 import java.util.Arrays JavaDoc;
39 import java.util.List JavaDoc;
40
41 import javax.servlet.http.HttpServletRequest JavaDoc;
42 import javax.servlet.http.HttpSession JavaDoc;
43
44 import org.apache.log4j.Logger;
45 import org.apache.struts.action.ActionMapping;
46
47 import com.ivata.groupware.admin.security.server.SecuritySession;
48 import com.ivata.groupware.container.persistence.hibernate.HibernateSetupConstants;
49 import com.ivata.mask.util.StringHandling;
50 import com.ivata.mask.validation.ValidationError;
51 import com.ivata.mask.validation.ValidationErrors;
52 import com.ivata.mask.web.struts.DialogForm;
53
54 /**
55  * Contains all of the values you need to setup a basic <strong>ivata
56  * groupware</strong> installation.
57  *
58  * @since ivata groupware 0.11 (2005-03-27)
59  * @author Colin MacLeod
60  * <a HREF='mailto:colin.macleod@ivata.com'>colin.macleod@ivata.com</a>
61  * @version $Revision: 1.1 $
62  */

63 public class HibernateSetupForm extends DialogForm {
64     /**
65      * Logger for this class.
66      */

67     private static final Logger logger = Logger.getLogger(HibernateSetupForm.class);
68     /**
69      * Refer to {@link #isCreateDatabaseAutomatically}.
70      */

71     private boolean createDatabaseAutomatically;
72     /**
73      * Refer to {@link #getDatabaseDialect}.
74      */

75     private String JavaDoc databaseDialect;
76     /**
77      * Refer to {@link #getDatabaseDialects}.
78      */

79     private List JavaDoc databaseDialects;
80     /**
81      * Refer to {@link #getDatabaseDriver}.
82      */

83     private String JavaDoc databaseDriver;
84     /**
85      * Refer to {@link #getDatabaseDrivers}.
86      */

87     private List JavaDoc databaseDrivers;
88     /**
89      * Refer to {@link #getDatabasePassword}.
90      */

91     private String JavaDoc databasePassword;
92     /**
93      * Refer to {@link #getDatabaseTypes}.
94      */

95     private List JavaDoc databaseTypes;
96     /**
97      * Refer to {@link #getDatabaseURL}.
98      */

99     private String JavaDoc databaseURL;
100     /**
101      * Refer to {@link #getDatabaseURLs}.
102      */

103     private List JavaDoc databaseURLs;
104     /**
105      * Refer to {@link #getDatabaseUserName}.
106      */

107     private String JavaDoc databaseUserName;
108     /**
109      * Prepare the form.
110      *
111      * @see com.ivata.mask.web.struts.DialogForm#clear()
112      */

113     protected void clear() {
114     }
115     /**
116      * The <strong>Hibernate</strong> dialect of the database we will use.
117      *
118      * @return Returns the database dialect.
119      */

120     public String JavaDoc getDatabaseDialect() {
121         return databaseDialect;
122     }
123     /**
124      * A list of all the string names of the <strong>Hibernate</strong>
125      * dialects available.
126      * @return Returns the database dialects.
127      */

128     public List JavaDoc getDatabaseDialects() {
129         return databaseDialects;
130     }
131     /**
132      * The name of the <strong>JDBC</strong> database driver class we will use.
133      * @return Returns the database driver.
134      */

135     public String JavaDoc getDatabaseDriver() {
136         return databaseDriver;
137     }
138     /**
139      * A list of all available <strong>JDBC</strong> database driver classes.
140      *
141      * @return Returns the database drivers.
142      */

143     public List JavaDoc getDatabaseDrivers() {
144         return databaseDrivers;
145     }
146     /**
147      * Password used within the database system.
148      * @return Returns the database password.
149      */

150     public String JavaDoc getDatabasePassword() {
151         return databasePassword;
152     }
153     /**
154      * This list should correspond to {@link #getDatabaseDialects} and is a
155      * list of the database names for each dialect.
156      * @return Returns the database types.
157      */

158     public List JavaDoc getDatabaseTypes() {
159         return databaseTypes;
160     }
161     /**
162      * The <strong>JDBC</strong> URL of the database we will use.
163      *
164      * @return Returns the database URL.
165      */

166     public String JavaDoc getDatabaseURL() {
167         return databaseURL;
168     }
169     /**
170      * This list should correspond to {@link #getDatabaseDialects} and is a
171      * list of the default URLs for each dialect.
172      *
173      * @return Returns the default database URLs.
174      */

175     public List JavaDoc getDatabaseURLs() {
176         return databaseURLs;
177     }
178     /**
179      * The user name used to login to the database system.
180      * @return Returns the database user name.
181      */

182     public String JavaDoc getDatabaseUserName() {
183         return databaseUserName;
184     }
185     /**
186      * Determines whether or not setup should create a simple
187      * <strong>HSQLDB</strong> database automaticlaly.
188      *
189      * @return <code>true</code> if the database should be created
190      * automatically.
191      */

192     public boolean isCreateDatabaseAutomatically() {
193         return createDatabaseAutomatically;
194     }
195     /**
196      * Refer to {@link }.
197      * @see org.apache.struts.action.ActionForm#reset(org.apache.struts.action.ActionMapping, javax.servlet.http.HttpServletRequest)
198      * @param mappingParam
199      * @param requestParam
200      */

201     public void reset(ActionMapping mappingParam,
202             HttpServletRequest JavaDoc requestParam) {
203         SecuritySession securitySession = (SecuritySession)
204             requestParam.getSession().getAttribute("securitySession");
205         // the following are the settings we'll use to make an automatic
206
// database (constructed using hsql)
207
createDatabaseAutomatically = false;
208
209         databaseDialect = "";
210         databaseDialects = Arrays.asList(HibernateSetupConstants.DATABASE_DIALECTS);
211         databaseDriver = "";
212         databaseDrivers = Arrays.asList(HibernateSetupConstants.DATABASE_DRIVERS);
213         databaseTypes = Arrays.asList(HibernateSetupConstants.DATABASE_TYPES);
214         databaseURL = "";
215         databaseURLs = Arrays.asList(HibernateSetupConstants.DATABASE_URLS);
216     }
217     /**
218      * Refer to {@link #isCreateDatabaseAutomatically}.
219      * @param createDatabaseAutomaticallyParam Refer to
220      * {@link #isCreateDatabaseAutomatically}.
221      */

222     public void setCreateDatabaseAutomatically(
223             boolean createDatabaseAutomaticallyParam) {
224         if (logger.isDebugEnabled()) {
225             logger.debug("Setting createDatabaseAutomatically. Before '"
226                     + createDatabaseAutomatically + "', after '"
227                     + createDatabaseAutomaticallyParam + "'");
228         }
229         createDatabaseAutomatically = createDatabaseAutomaticallyParam;
230     }
231     /**
232      * Refer to {@link #getDatabaseDialect}.
233      * @param databaseDialectParam Refer to {@link #getDatabaseDialect}.
234      */

235     public void setDatabaseDialect(String JavaDoc databaseDialectParam) {
236         if (logger.isDebugEnabled()) {
237             logger.debug("Setting databaseDialect. Before '" + databaseDialect
238                     + "', after '" + databaseDialectParam + "'");
239         }
240         databaseDialect = databaseDialectParam;
241     }
242     /**
243      * Refer to {@link #getDatabaseDialects}.
244      * @param databaseDialectsParam Refer to {@link #getDatabaseDialects}.
245      */

246     public void setDatabaseDialects(List JavaDoc databaseDialectsParam) {
247         if (logger.isDebugEnabled()) {
248             logger.debug("Setting databaseDialects. Before '"
249                     + databaseDialects + "', after '" + databaseDialectsParam
250                     + "'");
251         }
252         databaseDialects = databaseDialectsParam;
253     }
254     /**
255      * Refer to {@link #getDatabaseDriver}.
256      * @param databaseDriverParam Refer to {@link #getDatabaseDriver}.
257      */

258     public void setDatabaseDriver(String JavaDoc databaseDriverParam) {
259         if (logger.isDebugEnabled()) {
260             logger.debug("Setting databaseDriver. Before '" + databaseDriver
261                     + "', after '" + databaseDriverParam + "'");
262         }
263         databaseDriver = databaseDriverParam;
264     }
265     /**
266      * Refer to {@link #getDatabaseDrivers}.
267      * @param databaseDriversParam Refer to {@link #getDatabaseDrivers}.
268      */

269     public void setDatabaseDrivers(List JavaDoc databaseDriversParam) {
270         if (logger.isDebugEnabled()) {
271             logger.debug("Setting databaseDrivers. Before '" + databaseDrivers
272                     + "', after '" + databaseDriversParam + "'");
273         }
274         databaseDrivers = databaseDriversParam;
275     }
276     /**
277      * Refer to {@link #getDatabasePassword}.
278      * @param databasePasswordParam Refer to {@link #getDatabasePassword}.
279      */

280     public void setDatabasePassword(String JavaDoc databasePasswordParam) {
281         if (logger.isDebugEnabled()) {
282             logger.debug("Setting databasePassword. Before '"
283                     + databasePassword + "', after '" + databasePasswordParam
284                     + "'");
285         }
286         databasePassword = databasePasswordParam;
287     }
288     /**
289      * Refer to {@link #getDatabaseTypes}.
290      * @param databaseTypesParam Refer to {@link #getDatabaseTypes}.
291      */

292     public void setDatabaseTypes(List JavaDoc databaseTypesParam) {
293         if (logger.isDebugEnabled()) {
294             logger.debug("Setting databaseTypes. Before '" + databaseTypes
295                     + "', after '" + databaseTypesParam + "'");
296         }
297         databaseTypes = databaseTypesParam;
298     }
299     /**
300      * Refer to {@link #getDatabaseURL}.
301      * @param databaseURLParam Refer to {@link #getDatabaseURL}.
302      */

303     public void setDatabaseURL(String JavaDoc databaseURLParam) {
304         if (logger.isDebugEnabled()) {
305             logger.debug("Setting databaseURL. Before '" + databaseURL
306                     + "', after '" + databaseURLParam + "'");
307         }
308         databaseURL = databaseURLParam;
309     }
310     /**
311      * Refer to {@link #getDatabaseURLs}.
312      * @param databaseURLsParam Refer to {@link #getDatabaseURLs}.
313      */

314     public void setDatabaseURLs(List JavaDoc databaseURLsParam) {
315         if (logger.isDebugEnabled()) {
316             logger.debug("Setting databaseURLs. Before '" + databaseURLs
317                     + "', after '" + databaseURLsParam + "'");
318         }
319         databaseURLs = databaseURLsParam;
320     }
321     /**
322      * Refer to {@link #getDatabaseUserName}.
323      * @param databaseUserNameParam Refer to {@link #getDatabaseUserName}.
324      */

325     public void setDatabaseUserName(String JavaDoc databaseUserNameParam) {
326         if (logger.isDebugEnabled()) {
327             logger.debug("Setting databaseUserName. Before '"
328                     + databaseUserName + "', after '" + databaseUserNameParam
329                     + "'");
330         }
331         databaseUserName = databaseUserNameParam;
332     }
333     /**
334      * Check all of the input is valid.
335      * @param requestParam
336      * Refer to {@link com.ivata.mask.web.struts.DialogForm#validate}.
337      * @param sessionParam
338      * Refer to {@link com.ivata.mask.web.struts.DialogForm#validate}.
339      * @return
340      * Refer to {@link com.ivata.mask.web.struts.DialogForm#validate}.
341      */

342     public ValidationErrors validate(final HttpServletRequest JavaDoc requestParam,
343             final HttpSession JavaDoc sessionParam) {
344         ValidationErrors errors = super.validate(requestParam, sessionParam);
345         // if we should create the database automatically, default the values
346
// (as the disabled fields will not be submitted)
347
if (createDatabaseAutomatically) {
348             databaseDriver = HibernateSetupConstants.AUTOMATIC_DATABASE_DRIVER;
349             databaseDialect = HibernateSetupConstants.AUTOMATIC_DATABASE_DIALECT;
350             databasePassword = HibernateSetupConstants.AUTOMATIC_DATABASE_PASSWORD;
351             databaseUserName = HibernateSetupConstants.AUTOMATIC_DATABASE_USER_NAME;
352             // check the URL starts with the hypersonic file URL
353
if (!databaseURL
354                     .startsWith(HibernateSetupConstants.AUTOMATIC_DATABASE_URL_START)) {
355                 errors.add(
356                         new ValidationError("errors.setup.automaticDatabaseURL",
357                                 Arrays.asList(new String JavaDoc[] {
358                                         HibernateSetupConstants.AUTOMATIC_DATABASE_URL_START,
359                                         databaseURL})));
360             }
361         } else {
362             // if you don't specify any of the database fields, default back
363
// to the memory database
364
if (StringHandling.isNullOrEmpty(databaseDriver)
365                         && StringHandling.isNullOrEmpty(databasePassword)
366                         && StringHandling.isNullOrEmpty(databaseUserName)
367                         && StringHandling.isNullOrEmpty(databaseURL)) {
368                 databaseDriver = HibernateSetupConstants.AUTOMATIC_DATABASE_DRIVER;
369                 databaseDialect = HibernateSetupConstants.AUTOMATIC_DATABASE_DIALECT;
370                 databasePassword = HibernateSetupConstants.AUTOMATIC_DATABASE_PASSWORD;
371                 databaseUserName = HibernateSetupConstants.AUTOMATIC_DATABASE_USER_NAME;
372                 databaseURL = HibernateSetupConstants.AUTOMATIC_DATABASE_MEMORY_URL;
373
374             // otherwise, if you specify any of the DB fields, you need at least
375
// dialect driver and URL.
376
} else if (StringHandling.isNullOrEmpty(databaseDialect)
377                             || StringHandling.isNullOrEmpty(databaseDriver)
378                             || StringHandling.isNullOrEmpty(databaseURL)) {
379                 errors.add(
380                         new ValidationError("errors.setup.database",
381                                 Arrays.asList(new String JavaDoc[] {})));
382             }
383         }
384
385         return errors;
386     }
387 }
388
Popular Tags