You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by to...@apache.org on 2004/08/08 13:23:45 UTC

cvs commit: jakarta-commons-sandbox/sql/src/test/org/apache/commons/sql/builder TestBuilder.java

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:tomdz@apache.org">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:john@zenplex.com">John Thorhauer</a>
    * @author <a href="mailto:tomdz@apache.org">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: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org