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