tomdz 2004/08/01 14:43:36 Modified: sql/src/java/org/apache/commons/sql/builder SqlBuilderFactory.java Added: sql/src/java/org/apache/commons/sql/builder MaxDbBuilder.java Log: Added support for MaxDB, and fixed SapDb handling Revision Changes Path 1.9 +44 -33 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/SqlBuilderFactory.java Index: SqlBuilderFactory.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/SqlBuilderFactory.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- SqlBuilderFactory.java 28 Feb 2004 03:35:47 -0000 1.8 +++ SqlBuilderFactory.java 1 Aug 2004 21:43:36 -0000 1.9 @@ -1,3 +1,5 @@ +package org.apache.commons.sql.builder; + /* * Copyright 1999-2002,2004 The Apache Software Foundation. * @@ -13,16 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.commons.sql.builder; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - /** * A factory of SqlBuilder instances based on a case insensitive database name. * @@ -30,64 +28,77 @@ * new databases on the classpath. * * @author <a href="mailto:[EMAIL PROTECTED]">James Strachan</a> + * @author <a href="mailto:[EMAIL PROTECTED]">Thomas Dudziak</a> * @version $Revision$ */ -public class SqlBuilderFactory { - - /** The Log to which logging calls will be made. */ - private static final Log log = LogFactory.getLog(SqlBuilderFactory.class); - +public class SqlBuilderFactory +{ private static Map databases = new HashMap(); - - static { + + static + { registerDatabases(); } /** * Creates a new SqlBuilder for the given (case insensitive) database name * or returns null if the database is not recognized. + * + * @param databaseName The name of the database (case is not important) + * @return The builder or <code>null</code> if the database is not supported */ - public static synchronized SqlBuilder newSqlBuilder(String databaseName) - throws IllegalAccessException, InstantiationException { - - Class theClass = (Class) databases.get(databaseName.toLowerCase()); - if (theClass != null) { - return (SqlBuilder) theClass.newInstance(); + public static synchronized SqlBuilder newSqlBuilder(String databaseName) throws IllegalAccessException, InstantiationException + { + Class builderClass = (Class) databases.get(databaseName.toLowerCase()); + + if (builderClass != null) + { + return (SqlBuilder)builderClass.newInstance(); } return null; } /** - * @return a List of currently registered database types for which there is a - * specific SqlBuilder. + * Returns a list of all supported databases. + * + * @return The currently registered database types */ - public static synchronized List getDatabaseTypes() { + public static synchronized List getDatabaseTypes() + { // return a copy to prevent modification List answer = new ArrayList(); - answer.addAll( databases.keySet()); + + answer.addAll(databases.keySet()); return answer; } /** - * Register the common builders + * Registers a builder. + * + * @param databaseName The database name + * @param sqlBuilderClass The builder class */ - public static synchronized void registerDatabase(String databaseName, Class sqlBuilderClass) { + public static synchronized void registerDatabase(String databaseName, Class sqlBuilderClass) + { databases.put(databaseName.toLowerCase(), sqlBuilderClass); } /** - * Register the common builders + * Registers the predefined builders. */ - protected static void registerDatabases() { - registerDatabase("axion", AxionBuilder.class); - registerDatabase("db2", Db2Builder.class); - registerDatabase("hsqldb", HsqlDbBuilder.class); - registerDatabase("mckoi", MckoiSqlBuilder.class); - registerDatabase("mssql", MSSqlBuilder.class); - registerDatabase("mysql", MySqlBuilder.class); - registerDatabase("oracle", OracleBuilder.class); + protected static void registerDatabases() + { + registerDatabase("axion", AxionBuilder.class); + registerDatabase("db2", Db2Builder.class); + registerDatabase("hsqldb", HsqlDbBuilder.class); + registerDatabase("maxdb", MaxDbBuilder.class); + registerDatabase("mckoi", MckoiSqlBuilder.class); + registerDatabase("mssql", MSSqlBuilder.class); + registerDatabase("mysql", MySqlBuilder.class); + registerDatabase("oracle", OracleBuilder.class); registerDatabase("postgresql", PostgreSqlBuilder.class); - registerDatabase("sybase", SybaseBuilder.class); + registerDatabase("sapdb", SapDbBuilder.class); + registerDatabase("sybase", SybaseBuilder.class); } } 1.1 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/MaxDbBuilder.java Index: MaxDbBuilder.java =================================================================== package org.apache.commons.sql.builder; /* * Copyright 1999-2002,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * A SQL Builder for MaxDB. Is currently identical to the SapDB builder * as there is no difference in the SQL we're using. * * @author <a href="mailto:[EMAIL PROTECTED]">Thomas Dudziak</a> */ public class MaxDbBuilder extends SapDbBuilder { }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]