tomdz 2004/08/08 04:23:45 Modified: sql/src/java/org/apache/commons/sql/builder MckoiSqlBuilder.java OracleBuilder.java SqlBuilder.java MySqlBuilder.java AxionBuilder.java MSSqlBuilder.java PostgreSqlBuilder.java SybaseBuilder.java SapDbBuilder.java HsqlDbBuilder.java Db2Builder.java MaxDbBuilder.java sql/src/test/org/apache/commons/sql/builder TestBuilder.java Log: Fixed bug with wrong comment characters for SapDB/MaxDB Added method to get the database name from a builder Revision Changes Path 1.8 +8 -0 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/MckoiSqlBuilder.java Index: MckoiSqlBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/MckoiSqlBuilder.java,v retrieving revision 1.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- MckoiSqlBuilder.java 25 Jul 2004 15:08:28 -0000 1.7 +++ MckoiSqlBuilder.java 8 Aug 2004 11:23:44 -0000 1.8 @@ -38,6 +38,14 @@ addNativeTypeMapping(Types.BIT, "TINYINT"); } + /* (non-Javadoc) + * @see org.apache.commons.sql.builder.SqlBuilder#getDatabaseName() + */ + public String getDatabaseName() + { + return "Mckoi"; + } + public void dropTable(Table table) throws IOException { print("DROP TABLE IF EXISTS "); 1.12 +8 -0 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/OracleBuilder.java Index: OracleBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/OracleBuilder.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- OracleBuilder.java 25 Jul 2004 15:08:28 -0000 1.11 +++ OracleBuilder.java 8 Aug 2004 11:23:44 -0000 1.12 @@ -55,6 +55,14 @@ addNativeTypeMapping(Types.VARCHAR, "VARCHAR2"); } + /* (non-Javadoc) + * @see org.apache.commons.sql.builder.SqlBuilder#getDatabaseName() + */ + public String getDatabaseName() + { + return "Oracle"; + } + public void dropTable(Table table) throws IOException { print("DROP TABLE "); 1.21 +8 -1 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/SqlBuilder.java Index: SqlBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/SqlBuilder.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- SqlBuilder.java 26 Jul 2004 22:15:39 -0000 1.20 +++ SqlBuilder.java 8 Aug 2004 11:23:44 -0000 1.21 @@ -54,7 +54,7 @@ * @author <a href="mailto:[EMAIL PROTECTED]">Thomas Dudziak</a> * @version $Revision$ */ -public class SqlBuilder { +public abstract class SqlBuilder { private static final String LINE_SEPERATOR = System.getProperty("line.separator", "\n"); @@ -325,6 +325,13 @@ // public interface // + /** + * Returns the name of the database that this builder is for. + * + * @return The database name + */ + public abstract String getDatabaseName(); + /** * Outputs the DDL required to drop and recreate the database. * 1.12 +8 -0 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/MySqlBuilder.java Index: MySqlBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/MySqlBuilder.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- MySqlBuilder.java 26 Jul 2004 22:15:39 -0000 1.11 +++ MySqlBuilder.java 8 Aug 2004 11:23:44 -0000 1.12 @@ -50,6 +50,14 @@ } /* (non-Javadoc) + * @see org.apache.commons.sql.builder.SqlBuilder#getDatabaseName() + */ + public String getDatabaseName() + { + return "MySQL"; + } + + /* (non-Javadoc) * @see org.apache.commons.sql.builder.SqlBuilder#dropTable(Table) */ public void dropTable(Table table) throws IOException 1.12 +8 -0 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/AxionBuilder.java Index: AxionBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/AxionBuilder.java,v retrieving revision 1.11 retrieving revision 1.12 diff -u -r1.11 -r1.12 --- AxionBuilder.java 25 Jul 2004 15:08:28 -0000 1.11 +++ AxionBuilder.java 8 Aug 2004 11:23:44 -0000 1.12 @@ -35,6 +35,14 @@ addNativeTypeMapping(Types.DECIMAL, "FLOAT"); } + /* (non-Javadoc) + * @see org.apache.commons.sql.builder.SqlBuilder#getDatabaseName() + */ + public String getDatabaseName() + { + return "Axion"; + } + protected String getSqlType(Column column) { // Axion doesn't support text width specification return getNativeType(column); 1.9 +8 -0 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/MSSqlBuilder.java Index: MSSqlBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/MSSqlBuilder.java,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- MSSqlBuilder.java 25 Jul 2004 15:08:28 -0000 1.8 +++ MSSqlBuilder.java 8 Aug 2004 11:23:44 -0000 1.9 @@ -52,6 +52,14 @@ } /* (non-Javadoc) + * @see org.apache.commons.sql.builder.SqlBuilder#getDatabaseName() + */ + public String getDatabaseName() + { + return "MS SQL Server"; + } + + /* (non-Javadoc) * @see org.apache.commons.sql.builder.SqlBuilder#dropExternalForeignKey(org.apache.commons.sql.model.Table, org.apache.commons.sql.model.ForeignKey, int) */ protected void writeExternalForeignKeyDropStmt(Table table, ForeignKey foreignKey, int numKey) throws IOException 1.11 +10 -2 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/PostgreSqlBuilder.java Index: PostgreSqlBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/PostgreSqlBuilder.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- PostgreSqlBuilder.java 26 Jul 2004 22:15:39 -0000 1.10 +++ PostgreSqlBuilder.java 8 Aug 2004 11:23:44 -0000 1.11 @@ -23,7 +23,7 @@ import org.apache.commons.sql.model.Table; /** - * An SQL Builder for PostgresSqlL + * An SQL Builder for PostgresSql * * @author <a href="mailto:[EMAIL PROTECTED]">John Thorhauer</a> * @author <a href="mailto:[EMAIL PROTECTED]">Thomas Dudziak</a> @@ -42,6 +42,14 @@ addNativeTypeMapping(Types.LONGVARCHAR, "TEXT"); addNativeTypeMapping(Types.TINYINT, "SMALLINT"); addNativeTypeMapping(Types.VARBINARY, "BYTEA"); + } + + /* (non-Javadoc) + * @see org.apache.commons.sql.builder.SqlBuilder#getDatabaseName() + */ + public String getDatabaseName() + { + return "PostgreSql"; } protected void writeColumnAutoIncrementStmt(Table table, Column column) throws IOException 1.10 +8 -0 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/SybaseBuilder.java Index: SybaseBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/SybaseBuilder.java,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- SybaseBuilder.java 26 Jul 2004 22:15:39 -0000 1.9 +++ SybaseBuilder.java 8 Aug 2004 11:23:44 -0000 1.10 @@ -50,6 +50,14 @@ } /* (non-Javadoc) + * @see org.apache.commons.sql.builder.SqlBuilder#getDatabaseName() + */ + public String getDatabaseName() + { + return "Sybase"; + } + + /* (non-Javadoc) * @see org.apache.commons.sql.builder.SqlBuilder#dropExternalForeignKey(org.apache.commons.sql.model.Table, org.apache.commons.sql.model.ForeignKey, int) */ protected void writeExternalForeignKeyDropStmt(Table table, ForeignKey foreignKey, int numKey) throws IOException 1.6 +59 -13 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/SapDbBuilder.java Index: SapDbBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/SapDbBuilder.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- SapDbBuilder.java 25 Jul 2004 15:08:28 -0000 1.5 +++ SapDbBuilder.java 8 Aug 2004 11:23:44 -0000 1.6 @@ -29,38 +29,84 @@ */ public class SapDbBuilder extends SqlBuilder { + public static final String CHARACTER_TYPE_ASCII = "ASCII"; + public static final String CHARACTER_TYPE_UNICODE = "UNICODE"; + + /** The characater type */ + private String _characterType = ""; + public SapDbBuilder() { + setCommentPrefix("/*"); + setCommentSuffix("*/"); // CHAR and VARCHAR are handled by getSqlType addNativeTypeMapping(Types.BIGINT, "FIXED(38,0)"); addNativeTypeMapping(Types.BLOB, "LONG BYTE"); addNativeTypeMapping(Types.BIT, "FIXED(1,0)"); - addNativeTypeMapping(Types.CLOB, "LONG UNICODE"); addNativeTypeMapping(Types.DOUBLE, "DOUBLE PRECISION"); addNativeTypeMapping(Types.LONGVARBINARY, "LONG BYTE"); - addNativeTypeMapping(Types.LONGVARCHAR, "LONG UNICODE"); addNativeTypeMapping(Types.TINYINT, "SMALLINT"); addNativeTypeMapping(Types.VARBINARY, "LONG BYTE"); } /* (non-Javadoc) - * @see org.apache.commons.sql.builder.SqlBuilder#getSqlType(org.apache.commons.sql.model.Column) + * @see org.apache.commons.sql.builder.SqlBuilder#getDatabaseName() */ - protected String getSqlType(Column column) + public String getDatabaseName() { - if ((column.getSize() != null) && - ((column.getTypeCode() == Types.CHAR) || (column.getTypeCode() == Types.VARCHAR))) - { - StringBuffer sqlType = new StringBuffer(getNativeType(column)); + return "SapDB"; + } - sqlType.append(" ("); - sqlType.append(column.getSize()); - sqlType.append(") UNICODE"); - return sqlType.toString(); + /** + * Sets the character type of the database, either 'ASCII', 'UNICODE'. + * + * @param characterType The character type + */ + public void setCharacterType(String characterType) + { + if (characterType == null) + { + _characterType = ""; + } + else if (CHARACTER_TYPE_ASCII.equalsIgnoreCase(characterType)) + { + _characterType = CHARACTER_TYPE_ASCII; + } + else if (CHARACTER_TYPE_UNICODE.equalsIgnoreCase(characterType)) + { + _characterType = CHARACTER_TYPE_UNICODE; } else { - return super.getSqlType(column); + throw new IllegalArgumentException("Unknown character type "+characterType+", only "+ + CHARACTER_TYPE_ASCII+" and "+CHARACTER_TYPE_UNICODE+" or an empty string are allowed"); + } + } + + /* (non-Javadoc) + * @see org.apache.commons.sql.builder.SqlBuilder#getSqlType(org.apache.commons.sql.model.Column) + */ + protected String getSqlType(Column column) + { + switch (column.getTypeCode()) + { + case Types.CHAR: + case Types.VARCHAR: + if (column.getSize() != null) + { + StringBuffer sqlType = new StringBuffer(getNativeType(column)); + + sqlType.append(" ("); + sqlType.append(column.getSize()); + sqlType.append(") "); + sqlType.append(_characterType); + return sqlType.toString(); + } + break; + case Types.CLOB: + case Types.LONGVARCHAR: + return "LONG "+_characterType; } + return super.getSqlType(column); } } 1.7 +8 -0 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/HsqlDbBuilder.java Index: HsqlDbBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/HsqlDbBuilder.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- HsqlDbBuilder.java 25 Jul 2004 15:08:28 -0000 1.6 +++ HsqlDbBuilder.java 8 Aug 2004 11:23:44 -0000 1.7 @@ -31,6 +31,14 @@ public class HsqlDbBuilder extends SqlBuilder { /* (non-Javadoc) + * @see org.apache.commons.sql.builder.SqlBuilder#getDatabaseName() + */ + public String getDatabaseName() + { + return "HsqlDb"; + } + + /* (non-Javadoc) * @see org.apache.commons.sql.builder.SqlBuilder#dropTable(Table) */ public void dropTable(Table table) throws IOException 1.7 +8 -0 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/Db2Builder.java Index: Db2Builder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/Db2Builder.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- Db2Builder.java 25 Jul 2004 15:08:28 -0000 1.6 +++ Db2Builder.java 8 Aug 2004 11:23:44 -0000 1.7 @@ -46,6 +46,14 @@ addNativeTypeMapping(Types.VARBINARY, "VARCHAR FOR BIT DATA"); } + /* (non-Javadoc) + * @see org.apache.commons.sql.builder.SqlBuilder#getDatabaseName() + */ + public String getDatabaseName() + { + return "DB2"; + } + public void dropTable(Table table) throws IOException { super.dropTable(table); 1.2 +7 -0 jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/MaxDbBuilder.java Index: MaxDbBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/java/org/apache/commons/sql/builder/MaxDbBuilder.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- MaxDbBuilder.java 1 Aug 2004 21:43:36 -0000 1.1 +++ MaxDbBuilder.java 8 Aug 2004 11:23:44 -0000 1.2 @@ -24,4 +24,11 @@ */ public class MaxDbBuilder extends SapDbBuilder { + /* (non-Javadoc) + * @see org.apache.commons.sql.builder.SqlBuilder#getDatabaseName() + */ + public String getDatabaseName() + { + return "MaxDB"; + } } 1.7 +1 -1 jakarta-commons-sandbox/sql/src/test/org/apache/commons/sql/builder/TestBuilder.java Index: TestBuilder.java =================================================================== RCS file: /home/cvs/jakarta-commons-sandbox/sql/src/test/org/apache/commons/sql/builder/TestBuilder.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- TestBuilder.java 30 Apr 2003 11:27:31 -0000 1.6 +++ TestBuilder.java 8 Aug 2004 11:23:45 -0000 1.7 @@ -90,7 +90,7 @@ throws Exception { - SqlBuilder builder = new SqlBuilder(); + SqlBuilder builder = new HsqlDbBuilder(); StringWriter sw = new StringWriter(); builder.setWriter(sw); builder.dropDatabase(database);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]