You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2006/05/25 13:40:30 UTC
svn commit: r409364 - in /db/torque:
generator/trunk/src/java/org/apache/torque/engine/platform/
runtime/trunk/src/java/org/apache/torque/adapter/ site/trunk/xdocs/
Author: tfischer
Date: Thu May 25 04:40:29 2006
New Revision: 409364
URL: http://svn.apache.org/viewvc?rev=409364&view=rev
Log:
-Added adapter class for firebird
-corrected datatype mapping and date generation in adapters for interbase and firebird
Fixes TORQUE-4. Thanks to Joerg Friedrich for the patch.
Added:
db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBFirebird.java
Modified:
db/torque/generator/trunk/src/java/org/apache/torque/engine/platform/PlatformInterbaseImpl.java
db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBFactory.java
db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBInterbase.java
db/torque/site/trunk/xdocs/changes.xml
Modified: db/torque/generator/trunk/src/java/org/apache/torque/engine/platform/PlatformInterbaseImpl.java
URL: http://svn.apache.org/viewvc/db/torque/generator/trunk/src/java/org/apache/torque/engine/platform/PlatformInterbaseImpl.java?rev=409364&r1=409363&r2=409364&view=diff
==============================================================================
--- db/torque/generator/trunk/src/java/org/apache/torque/engine/platform/PlatformInterbaseImpl.java (original)
+++ db/torque/generator/trunk/src/java/org/apache/torque/engine/platform/PlatformInterbaseImpl.java Thu May 25 04:40:29 2006
@@ -42,8 +42,8 @@
private void initialize()
{
setSchemaDomainMapping(new Domain(SchemaType.BIT, "NUMERIC", "1", "0"));
- setSchemaDomainMapping(new Domain(SchemaType.CHAR, "VARCHAR"));
- setSchemaDomainMapping(new Domain(SchemaType.BOOLEANCHAR, "VARCHAR", "1"));
+ setSchemaDomainMapping(new Domain(SchemaType.DOUBLE, "DOUBLE PRECISION"));
+ setSchemaDomainMapping(new Domain(SchemaType.BOOLEANCHAR, "CHAR", "1"));
setSchemaDomainMapping(new Domain(SchemaType.LONGVARCHAR, "VARCHAR"));
setSchemaDomainMapping(new Domain(SchemaType.VARBINARY, "BLOB"));
}
Modified: db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBFactory.java
URL: http://svn.apache.org/viewvc/db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBFactory.java?rev=409364&r1=409363&r2=409364&view=diff
==============================================================================
--- db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBFactory.java (original)
+++ db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBFactory.java Thu May 25 04:40:29 2006
@@ -47,6 +47,7 @@
adapters.put("COM.ibm.db2.jdbc.app.DB2Driver", DBDB2App.class);
adapters.put("COM.ibm.db2.jdbc.net.DB2Driver", DBDB2Net.class);
adapters.put("COM.cloudscape.core.JDBCDriver", DBCloudscape.class);
+ adapters.put("org.firebirdsql.jdbc.FBDriver",DBFirebird.class);
adapters.put("org.hsql.jdbcDriver", DBHypersonicSQL.class);
adapters.put("org.hsqldb.jdbcDriver", DBHypersonicSQL.class);
adapters.put("interbase.interclient.Driver", DBInterbase.class);
@@ -74,6 +75,7 @@
adapters.put("db2app", DBDB2App.class);
adapters.put("db2net", DBDB2Net.class);
adapters.put("cloudscape", DBCloudscape.class);
+ adapters.put("firebird", DBFirebird.class);
adapters.put("hypersonic", DBHypersonicSQL.class);
adapters.put("interbase", DBInterbase.class);
adapters.put("instantdb", DBInstantDB.class);
Added: db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBFirebird.java
URL: http://svn.apache.org/viewvc/db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBFirebird.java?rev=409364&view=auto
==============================================================================
--- db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBFirebird.java (added)
+++ db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBFirebird.java Thu May 25 04:40:29 2006
@@ -0,0 +1,149 @@
+package org.apache.torque.adapter;
+
+/*
+ * Copyright 2001-2005 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.
+ */
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.util.Date;
+import java.text.SimpleDateFormat;
+
+/**
+ * This code should be used for a Firebird database pool.
+ *
+ * @author Joerg Friedrich
+ * @version $Id: DBInterbase.java 239630 2005-08-24 12:25:32Z henning $
+ */
+public class DBFirebird extends DB
+{
+
+ private static final String DATE_FORMAT = "yyyy-MM-dd HH:MM:ss";
+
+ /**
+ * This method is used to ignore case.
+ *
+ * @param in The string to transform to upper case.
+ * @return The upper case string.
+ */
+ public String toUpperCase(String in)
+ {
+ return new StringBuffer("UPPER(").append(in).append(")").toString();
+ }
+
+ /**
+ * This method is used to ignore case.
+ *
+ * @param in The string whose case to ignore.
+ * @return The string in a case that can be ignored.
+ */
+ public String ignoreCase(String in)
+ {
+ return new StringBuffer("UPPER(").append(in).append(")").toString();
+ }
+
+ /**
+ * This method is used to ignore case in an ORDER BY clause.
+ * Usually it is the same as ignoreCase, but some databases
+ * (Interbase for example) does not use the same SQL in ORDER BY
+ * and other clauses.
+ *
+ * @param in The string whose case to ignore.
+ * @return The string in a case that can be ignored.
+ */
+ public String ignoreCaseInOrderBy(String in)
+ {
+ return in;
+ }
+
+ /**
+ * Gets the string delimiter (usually '\'').
+ *
+ * @return The delimiter.
+ */
+ public char getStringDelimiter()
+ {
+ return '\'';
+ }
+
+ /**
+ * @see org.apache.torque.adapter.DB#getIDMethodType()
+ */
+ public String getIDMethodType()
+ {
+ return NO_ID_METHOD;
+ }
+
+ /**
+ * @see org.apache.torque.adapter.DB#getIDMethodSQL(Object obj)
+ */
+ public String getIDMethodSQL(Object obj)
+ {
+ return null;
+ }
+
+ /**
+ * Locks the specified table.
+ *
+ * @param con The JDBC connection to use.
+ * @param table The name of the table to lock.
+ * @exception SQLException No Statement could be created or executed.
+ */
+ public void lockTable(Connection con, String table) throws SQLException
+ {
+ Statement statement = con.createStatement();
+
+ StringBuffer stmt = new StringBuffer();
+ stmt.append("SET TRANSACTION ")
+ .append("ISOLATION LEVEL READ COMMITTED ")
+ .append("NO RECORD_VERSION WAIT ")
+ .append("RESERVING ")
+ .append(table)
+ .append(" FOR PROTECTED WRITE");
+
+ statement.executeQuery(stmt.toString());
+ }
+
+ /**
+ * Unlocks the specified table.
+ *
+ * @param con The JDBC connection to use.
+ * @param table The name of the table to unlock.
+ * @exception SQLException No Statement could be created or executed.
+ */
+ public void unlockTable(Connection con, String table) throws SQLException
+ {
+ // Tables in Interbase are unlocked when a commit is issued.
+ // The user may have issued a commit but do it here to be
+ // sure.
+ con.commit();
+ }
+
+
+ /**
+ * This method overrides the JDBC escapes used to format dates
+ * using a <code>DateFormat</code>. As of version 2.0.11, the MM
+ * JDBC driver does not implement JDBC 3.0 escapes.
+ *
+ * @param date the date to format
+ * @return The properly formatted date String.
+ */
+ public String getDateString(Date date)
+ {
+ char delim = getStringDelimiter();
+ return (delim + new SimpleDateFormat(DATE_FORMAT).format(date) + delim);
+ }
+}
Modified: db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBInterbase.java
URL: http://svn.apache.org/viewvc/db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBInterbase.java?rev=409364&r1=409363&r2=409364&view=diff
==============================================================================
--- db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBInterbase.java (original)
+++ db/torque/runtime/trunk/src/java/org/apache/torque/adapter/DBInterbase.java Thu May 25 04:40:29 2006
@@ -19,6 +19,8 @@
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
+import java.util.Date;
+import java.text.SimpleDateFormat;
/**
* This code should be used for an Interbase database pool.
@@ -28,6 +30,9 @@
*/
public class DBInterbase extends DB
{
+
+ private static final String DATE_FORMAT = "yyyy-MM-dd HH:MM:ss";
+
/**
* This method is used to ignore case.
*
@@ -125,5 +130,20 @@
// The user may have issued a commit but do it here to be
// sure.
con.commit();
+ }
+
+
+ /**
+ * This method overrides the JDBC escapes used to format dates
+ * using a <code>DateFormat</code>. As of version 2.0.11, the MM
+ * JDBC driver does not implement JDBC 3.0 escapes.
+ *
+ * @param date the date to format
+ * @return The properly formatted date String.
+ */
+ public String getDateString(Date date)
+ {
+ char delim = getStringDelimiter();
+ return (delim + new SimpleDateFormat(DATE_FORMAT).format(date) + delim);
}
}
Modified: db/torque/site/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/db/torque/site/trunk/xdocs/changes.xml?rev=409364&r1=409363&r2=409364&view=diff
==============================================================================
--- db/torque/site/trunk/xdocs/changes.xml (original)
+++ db/torque/site/trunk/xdocs/changes.xml Thu May 25 04:40:29 2006
@@ -29,6 +29,33 @@
<release version="3.2.1-dev" date="in SVN">
+ <action type="fix" dev="tfischer" issue="TORQUE-4" due-to="Joerg Friedrich">
+ <ul>
+ <li>
+ Added new firebird database adapter.
+ </li>
+ <li>
+ Date Strings returned by the interbase and firebird adapters
+ are now escaped.
+ </li>
+ </ul>
+ </action>
+ <action type="fix" dev="tfischer" issue="TORQUE-4" due-to="Joerg Friedrich">
+ Corrected Mappings for firebird:
+ <ul>
+ <li>
+ Torque type char is now mapped to firebird type char (was varchar)
+ </li>
+ <li>
+ Torque type double is now mapped to firebird type double precision
+ (was double)
+ </li>
+ <li>
+ Torque type booleanchar is now mapped to firebird type char(1)
+ (was varchar(1))
+ </li>
+ </ul>
+ </action>
<action type="fix" dev="tfischer" issue="TRQS356">
Corrected Mapping for Type LONGVARCHAR for Derby.
</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org