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 2012/01/30 18:51:39 UTC
svn commit: r1237843 - in
/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter:
AbstractDBAdapter.java DB.java DBDerby.java DBHsqldb.java DBMM.java
DBMSSQL.java DBNone.java DBOracle.java DBPostgres.java
Author: tfischer
Date: Mon Jan 30 17:51:39 2012
New Revision: 1237843
URL: http://svn.apache.org/viewvc?rev=1237843&view=rev
Log:
- removed unused methods from the adapter
- added @Override annotations
- TORQUE-16 fix lockTables methods in MSSQL and Oracle
Modified:
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/AbstractDBAdapter.java
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DB.java
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBDerby.java
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBHsqldb.java
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBMM.java
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBMSSQL.java
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBNone.java
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBOracle.java
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBPostgres.java
Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/AbstractDBAdapter.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/AbstractDBAdapter.java?rev=1237843&r1=1237842&r2=1237843&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/AbstractDBAdapter.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/AbstractDBAdapter.java Mon Jan 30 17:51:39 2012
@@ -21,8 +21,6 @@ package org.apache.torque.adapter;
import java.sql.Connection;
import java.sql.SQLException;
-import java.sql.Timestamp;
-import java.util.Date;
import java.util.Hashtable;
import java.util.Map;
@@ -215,7 +213,7 @@ public abstract class AbstractDBAdapter
*
* @throws TorqueException if any error occurs when building the query
*/
- public void generateLimits(Query query, int offset, int limit)
+ public void generateLimits(Query query, long offset, int limit)
throws TorqueException
{
if (supportsNativeLimit())
@@ -238,51 +236,6 @@ public abstract class AbstractDBAdapter
}
/**
- * This method is used to check whether the database supports
- * limiting the size of the resultset.
- *
- * @return The limit style for the database.
- * @deprecated This should not be exposed to the outside
- */
- public int getLimitStyle()
- {
- return LIMIT_STYLE_NONE;
- }
-
- /**
- * This method is used to format any date string.
- * Database can use different default date formats.
- *
- * @param date the Date to format
- * @return The proper date formatted String.
- */
- public String getDateString(Date date)
- {
- Timestamp ts = null;
- if (date instanceof Timestamp)
- {
- ts = (Timestamp) date;
- }
- else
- {
- ts = new Timestamp(date.getTime());
- }
-
- return ("{ts '" + ts + "'}");
- }
-
- /**
- * This method is used to format a boolean string.
- *
- * @param b the Boolean to format
- * @return The proper date formatted String.
- */
- public String getBooleanString(Boolean b)
- {
- return (Boolean.TRUE.equals(b) ? "1" : "0");
- }
-
- /**
* Whether ILIKE should be used for case insensitive like clauses.
*
* As most databases do not use ILIKE, this implementation returns false.
Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DB.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DB.java?rev=1237843&r1=1237842&r2=1237843&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DB.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DB.java Mon Jan 30 17:51:39 2012
@@ -22,7 +22,6 @@ package org.apache.torque.adapter;
import java.io.Serializable;
import java.sql.Connection;
import java.sql.SQLException;
-import java.util.Date;
import org.apache.torque.TorqueException;
import org.apache.torque.sql.Query;
@@ -68,36 +67,6 @@ import org.apache.torque.util.functions.
*/
public interface DB extends Serializable, IDMethod
{
- /** Database does not support limiting result sets.
- * @deprecated This should not be exposed to the outside
- */
- int LIMIT_STYLE_NONE = 0;
-
- /** <code>SELECT ... LIMIT <limit>, [<offset>]</code>
- * @deprecated This should not be exposed to the outside
- */
- int LIMIT_STYLE_POSTGRES = 1;
-
- /** <code>SELECT ... LIMIT [<offset>, ] <offset></code>
- * @deprecated This should not be exposed to the outside
- */
- int LIMIT_STYLE_MYSQL = 2;
-
- /** <code>SET ROWCOUNT <offset> SELECT ... SET ROWCOUNT 0</code>
- * @deprecated This should not be exposed to the outside
- */
- int LIMIT_STYLE_SYBASE = 3;
-
- /** <code><pre>SELECT ... WHERE ... AND ROWNUM < <limit></pre></code>
- * @deprecated This should not be exposed to the outside
- */
- int LIMIT_STYLE_ORACLE = 4;
-
- /** <code><pre>SELECT ... WHERE ... AND ROW_NUMBER() OVER() < <limit></pre></code>
- * @deprecated This should not be exposed to the outside
- */
- int LIMIT_STYLE_DB2 = 5;
-
/**
* Key for the configuration which contains database adapters.
*/
@@ -220,7 +189,7 @@ public interface DB extends Serializable
*
* @throws TorqueException if any error occurs when building the query
*/
- void generateLimits(Query query, int offset, int limit)
+ void generateLimits(Query query, long offset, int limit)
throws TorqueException;
/**
@@ -235,32 +204,6 @@ public interface DB extends Serializable
boolean escapeText();
/**
- * This method is used to check whether the database supports
- * limiting the size of the resultset.
- *
- * @return The limit style for the database.
- * @deprecated This should not be exposed to the outside
- */
- int getLimitStyle();
-
- /**
- * This method is used to format any date string.
- * Database can use different default date formats.
- *
- * @param date the Date to format
- * @return The proper date formatted String.
- */
- String getDateString(Date date);
-
- /**
- * This method is used to format a boolean string.
- *
- * @param b the Boolean to format
- * @return The proper date formatted String.
- */
- String getBooleanString(Boolean b);
-
- /**
* Whether ILIKE should be used for case insensitive like clauses.
*
* @return true if ilike should be used for case insensitive likes,
Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBDerby.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBDerby.java?rev=1237843&r1=1237842&r2=1237843&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBDerby.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBDerby.java Mon Jan 30 17:51:39 2012
@@ -50,6 +50,7 @@ public class DBDerby extends AbstractDBA
* @param str The string to transform to upper case.
* @return The upper case string.
*/
+ @Override
public String toUpperCase(String str)
{
return new StringBuffer("UPPER(")
@@ -64,6 +65,7 @@ public class DBDerby extends AbstractDBA
* @param str The string whose case to ignore.
* @return The string in a case that can be ignored.
*/
+ @Override
public String ignoreCase(String str)
{
return toUpperCase(str);
@@ -72,6 +74,7 @@ public class DBDerby extends AbstractDBA
/**
* @see org.apache.torque.adapter.DB#getIDMethodType()
*/
+ @Override
public String getIDMethodType()
{
return AUTO_INCREMENT;
@@ -84,6 +87,7 @@ public class DBDerby extends AbstractDBA
*
* @see org.apache.torque.adapter.DB#getIDMethodSQL(Object obj)
*/
+ @Override
public String getIDMethodSQL(Object obj)
{
return "VALUES IDENTITY_VAL_LOCAL()";
@@ -96,6 +100,7 @@ public class DBDerby extends AbstractDBA
* @param table The name of the table to lock.
* @exception SQLException No Statement could be created or executed.
*/
+ @Override
public void lockTable(Connection con, String table)
throws SQLException
{
@@ -113,6 +118,7 @@ public class DBDerby extends AbstractDBA
* @param table The name of the table to unlock.
* @exception SQLException No Statement could be created or executed.
*/
+ @Override
public void unlockTable(Connection con, String table)
throws SQLException
{
@@ -129,7 +135,7 @@ public class DBDerby extends AbstractDBA
* @return true if the database needs to escape backslashes
* in SqlExpressions.
*/
-
+ @Override
public boolean escapeText()
{
return false;
@@ -144,6 +150,7 @@ public class DBDerby extends AbstractDBA
*
* @return whether the escape clause should be appended or not.
*/
+ @Override
public boolean useEscapeClauseForLike()
{
return true;
Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBHsqldb.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBHsqldb.java?rev=1237843&r1=1237842&r2=1237843&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBHsqldb.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBHsqldb.java Mon Jan 30 17:51:39 2012
@@ -50,6 +50,7 @@ public class DBHsqldb extends AbstractDB
* @param in The string to transform to upper case.
* @return The upper case string.
*/
+ @Override
public String toUpperCase(String in)
{
String s = new StringBuffer("UPPER(").append(in).append(")").toString();
@@ -62,6 +63,7 @@ public class DBHsqldb extends AbstractDB
* @param in The string whose case to ignore.
* @return The string in a case that can be ignored.
*/
+ @Override
public String ignoreCase(String in)
{
return toUpperCase(in);
@@ -70,6 +72,7 @@ public class DBHsqldb extends AbstractDB
/**
* @see org.apache.torque.adapter.DB#getIDMethodType()
*/
+ @Override
public String getIDMethodType()
{
return AUTO_INCREMENT;
@@ -78,6 +81,7 @@ public class DBHsqldb extends AbstractDB
/**
* @see org.apache.torque.adapter.DB#ignoreCaseInOrderBy(String)
*/
+ @Override
public String ignoreCaseInOrderBy(String in)
{
return "CAST(" + in + " AS VARCHAR_IGNORECASE(10000))";
@@ -86,6 +90,7 @@ public class DBHsqldb extends AbstractDB
/**
* @see org.apache.torque.adapter.DB#getIDMethodSQL(Object obj)
*/
+ @Override
public String getIDMethodSQL(Object obj)
{
StringBuffer command = new StringBuffer("select IDENTITY() from ");
@@ -101,6 +106,7 @@ public class DBHsqldb extends AbstractDB
* @param table The name of the table to lock.
* @exception SQLException No Statement could be created or executed.
*/
+ @Override
public void lockTable(Connection con, String table) throws SQLException
{
}
@@ -112,6 +118,7 @@ public class DBHsqldb extends AbstractDB
* @param table The name of the table to unlock.
* @exception SQLException No Statement could be created or executed.
*/
+ @Override
public void unlockTable(Connection con, String table) throws SQLException
{
}
@@ -123,6 +130,7 @@ public class DBHsqldb extends AbstractDB
*
* @return false.
*/
+ @Override
public boolean escapeText()
{
return false;
@@ -137,6 +145,7 @@ public class DBHsqldb extends AbstractDB
*
* @return whether the escape clause should be appended or not.
*/
+ @Override
public boolean useEscapeClauseForLike()
{
return true;
Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBMM.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBMM.java?rev=1237843&r1=1237842&r2=1237843&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBMM.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBMM.java Mon Jan 30 17:51:39 2012
@@ -22,8 +22,6 @@ package org.apache.torque.adapter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
-import java.util.Date;
-import java.text.SimpleDateFormat;
import org.apache.torque.sql.Query;
@@ -49,9 +47,6 @@ public class DBMM extends AbstractDBAdap
*/
private static final long serialVersionUID = 7547291410802807010L;
- /** A specialized date format for MySQL. */
- private static final String DATE_FORMAT = "yyyyMMddHHmmss";
-
/**
* Empty protected constructor.
*/
@@ -65,6 +60,7 @@ public class DBMM extends AbstractDBAdap
* @param in The string to transform to upper case.
* @return The upper case string.
*/
+ @Override
public String toUpperCase(String in)
{
return in;
@@ -76,6 +72,7 @@ public class DBMM extends AbstractDBAdap
* @param in The string whose case to ignore.
* @return The string in a case that can be ignored.
*/
+ @Override
public String ignoreCase(String in)
{
return in;
@@ -84,6 +81,7 @@ public class DBMM extends AbstractDBAdap
/**
* @see org.apache.torque.adapter.DB#getIDMethodType()
*/
+ @Override
public String getIDMethodType()
{
return AUTO_INCREMENT;
@@ -96,6 +94,7 @@ public class DBMM extends AbstractDBAdap
*
* @see org.apache.torque.adapter.DB#getIDMethodSQL(Object obj)
*/
+ @Override
public String getIDMethodSQL(Object obj)
{
return "SELECT LAST_INSERT_ID()";
@@ -109,6 +108,7 @@ public class DBMM extends AbstractDBAdap
* @exception SQLException No Statement could be created or
* executed.
*/
+ @Override
public void lockTable(Connection con, String table) throws SQLException
{
Statement statement = con.createStatement();
@@ -125,6 +125,7 @@ public class DBMM extends AbstractDBAdap
* @exception SQLException No Statement could be created or
* executed.
*/
+ @Override
public void unlockTable(Connection con, String table) throws SQLException
{
Statement statement = con.createStatement();
@@ -140,7 +141,8 @@ public class DBMM extends AbstractDBAdap
* @param offset the offset Value
* @param limit the limit Value
*/
- public void generateLimits(Query query, int offset, int limit)
+ @Override
+ public void generateLimits(Query query, long offset, int limit)
{
if (offset > 0)
{
@@ -153,7 +155,7 @@ public class DBMM extends AbstractDBAdap
// Limit must always be set in mysql if offset is set
query.setLimit("18446744073709551615");
}
- query.setOffset(Integer.toString(offset));
+ query.setOffset(Long.toString(offset));
}
else
{
@@ -168,21 +170,10 @@ public class DBMM extends AbstractDBAdap
}
/**
- * This method is used to chek whether the database supports
- * limiting the size of the resultset.
- *
- * @return LIMIT_STYLE_MYSQL.
- * @deprecated This should not be exposed to the outside
- */
- public int getLimitStyle()
- {
- return DB.LIMIT_STYLE_MYSQL;
- }
-
- /**
* Return true for MySQL
* @see org.apache.torque.adapter.AbstractDBAdapter#supportsNativeLimit()
*/
+ @Override
public boolean supportsNativeLimit()
{
return true;
@@ -192,22 +183,9 @@ public class DBMM extends AbstractDBAdap
* Return true for MySQL
* @see org.apache.torque.adapter.AbstractDBAdapter#supportsNativeOffset()
*/
+ @Override
public boolean supportsNativeOffset()
{
return true;
}
-
- /**
- * 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/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBMSSQL.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBMSSQL.java?rev=1237843&r1=1237842&r2=1237843&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBMSSQL.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBMSSQL.java Mon Jan 30 17:51:39 2012
@@ -22,9 +22,9 @@ package org.apache.torque.adapter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
-import java.text.SimpleDateFormat;
-import java.util.Date;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.torque.TorqueException;
import org.apache.torque.sql.Query;
@@ -42,8 +42,8 @@ public class DBMSSQL extends AbstractDBA
*/
private static final long serialVersionUID = -2924485528975497044L;
- /** date format */
- private static final String DATE_FORMAT = "yyyyMMdd HH:mm:ss";
+ /** The class logger. */
+ private static final Log log = LogFactory.getLog(DBMSSQL.class);
/**
* Empty constructor.
@@ -58,6 +58,7 @@ public class DBMSSQL extends AbstractDBA
* @param in The string to transform to upper case.
* @return The upper case string.
*/
+ @Override
public String toUpperCase(String in)
{
return new StringBuffer("UPPER(").append(in).append(")").toString();
@@ -69,6 +70,7 @@ public class DBMSSQL extends AbstractDBA
* @param in The string whose case to ignore.
* @return The string in a case that can be ignored.
*/
+ @Override
public String ignoreCase(String in)
{
return new StringBuffer("UPPER(").append(in).append(")").toString();
@@ -77,6 +79,7 @@ public class DBMSSQL extends AbstractDBA
/**
* @see org.apache.torque.adapter.DB#getIDMethodType()
*/
+ @Override
public String getIDMethodType()
{
return AUTO_INCREMENT;
@@ -89,6 +92,7 @@ public class DBMSSQL extends AbstractDBA
*
* @see org.apache.torque.adapter.DB#getIDMethodSQL(Object obj)
*/
+ @Override
public String getIDMethodSQL(Object unused)
{
return "select @@identity";
@@ -99,18 +103,31 @@ public class DBMSSQL extends AbstractDBA
*
* @param con The JDBC connection to use.
* @param table The name of the table to lock.
- * @throws SQLException No Statement could be created or executed.
+ * @exception SQLException No Statement could be created or executed.
*/
+ @Override
public void lockTable(Connection con, String table) throws SQLException
{
- Statement statement = con.createStatement();
-
- StringBuffer stmt = new StringBuffer();
- stmt.append("SELECT next_id FROM ")
- .append(table)
- .append(" FOR UPDATE");
-
- statement.executeQuery(stmt.toString());
+ Statement statement = null;
+ try
+ {
+ statement = con.createStatement();
+ statement.execute("SELECT * FROM " + table + " WITH (TABLOCKX)");
+ }
+ finally
+ {
+ if (statement != null)
+ {
+ try
+ {
+ statement.close();
+ }
+ catch (Exception e)
+ {
+ log.warn("Colud not close lock statement", e);
+ }
+ }
+ }
}
/**
@@ -120,6 +137,7 @@ public class DBMSSQL extends AbstractDBA
* @param table The name of the table to unlock.
* @throws SQLException No Statement could be created or executed.
*/
+ @Override
public void unlockTable(Connection con, String table) throws SQLException
{
// Tables in Sybase are unlocked when a commit is issued. The
@@ -128,21 +146,10 @@ public class DBMSSQL extends AbstractDBA
}
/**
- * This method is used to chek whether the database supports
- * limiting the size of the resultset.
- *
- * @return LIMIT_STYLE_SYBASE.
- * @deprecated This should not be exposed to the outside
- */
- public int getLimitStyle()
- {
- return DB.LIMIT_STYLE_SYBASE;
- }
-
- /**
* Return true for Sybase
* @see org.apache.torque.adapter.AbstractDBAdapter#supportsNativeLimit()
*/
+ @Override
public boolean supportsNativeLimit()
{
return true;
@@ -157,7 +164,8 @@ public class DBMSSQL extends AbstractDBA
*
* @throws TorqueException if any error occurs when building the query
*/
- public void generateLimits(Query query, int offset, int limit)
+ @Override
+ public void generateLimits(Query query, long offset, int limit)
throws TorqueException
{
if (limit < 0 && offset >= 0) // Offset only test
@@ -176,20 +184,6 @@ public class DBMSSQL extends AbstractDBA
}
/**
- * This method overrides the JDBC escapes used to format dates
- * using a <code>DateFormat</code>. As of version 11, the Sybase
- * 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);
- }
-
- /**
* Determines whether backslashes (\) should be escaped in explicit SQL
* strings. If true is returned, a BACKSLASH will be changed to "\\".
* If false is returned, a BACKSLASH will be left as "\".
@@ -200,6 +194,7 @@ public class DBMSSQL extends AbstractDBA
* @return false
* @see org.apache.torque.adapter.DB#escapeText()
*/
+ @Override
public boolean escapeText()
{
return false;
@@ -214,6 +209,7 @@ public class DBMSSQL extends AbstractDBA
*
* @return whether the escape clause should be appended or not.
*/
+ @Override
public boolean useEscapeClauseForLike()
{
return true;
Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBNone.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBNone.java?rev=1237843&r1=1237842&r2=1237843&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBNone.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBNone.java Mon Jan 30 17:51:39 2012
@@ -45,19 +45,12 @@ public class DBNone extends AbstractDBAd
}
/**
- * @return null
- */
- public Connection getConnection()
- {
- return null;
- }
-
- /**
* This method is used to ignore case.
*
* @param in The string to transform to upper case.
* @return The upper case string.
*/
+ @Override
public String toUpperCase(String in)
{
return in;
@@ -69,6 +62,7 @@ public class DBNone extends AbstractDBAd
* @param in The string whose case to ignore.
* @return The string in a case that can be ignored.
*/
+ @Override
public String ignoreCase(String in)
{
return in;
@@ -77,6 +71,7 @@ public class DBNone extends AbstractDBAd
/**
* @see org.apache.torque.adapter.DB#getIDMethodType()
*/
+ @Override
public String getIDMethodType()
{
return NO_ID_METHOD;
@@ -85,6 +80,7 @@ public class DBNone extends AbstractDBAd
/**
* @see org.apache.torque.adapter.DB#getIDMethodSQL(Object obj)
*/
+ @Override
public String getIDMethodSQL(Object obj)
{
return null;
@@ -97,6 +93,7 @@ public class DBNone extends AbstractDBAd
* @param table The name of the table to lock.
* @exception SQLException No Statement could be created or executed.
*/
+ @Override
public void lockTable(Connection con, String table) throws SQLException
{
}
@@ -108,6 +105,7 @@ public class DBNone extends AbstractDBAd
* @param table The name of the table to unlock.
* @exception SQLException No Statement could be created or executed.
*/
+ @Override
public void unlockTable(Connection con, String table) throws SQLException
{
}
Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBOracle.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBOracle.java?rev=1237843&r1=1237842&r2=1237843&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBOracle.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBOracle.java Mon Jan 30 17:51:39 2012
@@ -22,12 +22,12 @@ package org.apache.torque.adapter;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;
-import java.text.SimpleDateFormat;
-import java.util.Date;
import java.util.HashSet;
import java.util.ListIterator;
import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.apache.torque.sql.Query;
import org.apache.torque.util.UniqueList;
@@ -47,8 +47,8 @@ public class DBOracle extends AbstractDB
*/
private static final long serialVersionUID = 8966976210230241194L;
- /** date format used in getDateString() */
- private static final String DATE_FORMAT = "dd-MM-yyyy HH:mm:ss";
+ /** The class logger. */
+ private static final Log log = LogFactory.getLog(DBOracle.class);
/**
* Empty constructor.
@@ -63,6 +63,7 @@ public class DBOracle extends AbstractDB
* @param in The string to transform to upper case.
* @return The upper case string.
*/
+ @Override
public String toUpperCase(String in)
{
return new StringBuffer("UPPER(").append(in).append(")").toString();
@@ -74,26 +75,16 @@ public class DBOracle extends AbstractDB
* @param in The string whose case to ignore.
* @return The string in a case that can be ignored.
*/
+ @Override
public String ignoreCase(String in)
{
return new StringBuffer("UPPER(").append(in).append(")").toString();
}
/**
- * This method is used to format any date string.
- *
- * @param date the Date to format
- * @return The date formatted String for Oracle.
- */
- public String getDateString(Date date)
- {
- return "TO_DATE('" + new SimpleDateFormat(DATE_FORMAT).format(date)
- + "', 'DD-MM-YYYY HH24:MI:SS')";
- }
-
- /**
* @see org.apache.torque.adapter.DB#getIDMethodType()
*/
+ @Override
public String getIDMethodType()
{
return SEQUENCE;
@@ -112,6 +103,7 @@ public class DBOracle extends AbstractDB
* @return SQL to retreive the next database key.
* @see org.apache.torque.adapter.DB#getIDMethodSQL(Object)
*/
+ @Override
public String getIDMethodSQL(Object sequenceName)
{
return ("select " + sequenceName + ".nextval from dual");
@@ -124,16 +116,29 @@ public class DBOracle extends AbstractDB
* @param table The name of the table to lock.
* @exception SQLException No Statement could be created or executed.
*/
+ @Override
public void lockTable(Connection con, String table) throws SQLException
{
- Statement statement = con.createStatement();
-
- StringBuffer stmt = new StringBuffer();
- stmt.append("SELECT next_id FROM ")
- .append(table)
- .append(" FOR UPDATE");
-
- statement.executeQuery(stmt.toString());
+ Statement statement = null;
+ try
+ {
+ statement = con.createStatement();
+ statement.execute("SELECT * FROM " + table + " FOR UPDATE");
+ }
+ finally
+ {
+ if (statement != null)
+ {
+ try
+ {
+ statement.close();
+ }
+ catch (Exception e)
+ {
+ log.warn("Colud not close lock statement", e);
+ }
+ }
+ }
}
/**
@@ -143,6 +148,7 @@ public class DBOracle extends AbstractDB
* @param table The name of the table to unlock.
* @exception SQLException No Statement could be created or executed.
*/
+ @Override
public void unlockTable(Connection con, String table) throws SQLException
{
// Tables in Oracle are unlocked when a commit is issued. The
@@ -151,21 +157,10 @@ public class DBOracle extends AbstractDB
}
/**
- * This method is used to check whether the database supports
- * limiting the size of the resultset.
- *
- * @return LIMIT_STYLE_ORACLE.
- * @deprecated This should not be exposed to the outside
- */
- public int getLimitStyle()
- {
- return DB.LIMIT_STYLE_ORACLE;
- }
-
- /**
* Return true for Oracle
* @see org.apache.torque.adapter.AbstractDBAdapter#supportsNativeLimit()
*/
+ @Override
public boolean supportsNativeLimit()
{
return true;
@@ -175,6 +170,7 @@ public class DBOracle extends AbstractDB
* Return true for Oracle
* @see org.apache.torque.adapter.AbstractDBAdapter#supportsNativeOffset()
*/
+ @Override
public boolean supportsNativeOffset()
{
return true;
@@ -197,7 +193,8 @@ public class DBOracle extends AbstractDB
* @param offset the offset Value
* @param limit the limit Value
*/
- public void generateLimits(Query query, int offset, int limit)
+ @Override
+ public void generateLimits(Query query, long offset, int limit)
{
StringBuffer preLimit = new StringBuffer()
.append("SELECT B.* FROM ( ")
@@ -328,6 +325,7 @@ public class DBOracle extends AbstractDB
*
* @return false.
*/
+ @Override
public boolean escapeText()
{
return false;
@@ -342,6 +340,7 @@ public class DBOracle extends AbstractDB
*
* @return whether the escape clause should be appended or not.
*/
+ @Override
public boolean useEscapeClauseForLike()
{
return true;
Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBPostgres.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBPostgres.java?rev=1237843&r1=1237842&r2=1237843&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBPostgres.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/adapter/DBPostgres.java Mon Jan 30 17:51:39 2012
@@ -21,9 +21,6 @@ package org.apache.torque.adapter;
import java.sql.Connection;
import java.sql.SQLException;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
import org.apache.torque.sql.Query;
@@ -43,9 +40,6 @@ public class DBPostgres extends Abstract
*/
private static final long serialVersionUID = 7643304924262475272L;
- /** A specialized date format for PostgreSQL. */
- private static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
-
/**
* Empty constructor.
*/
@@ -59,6 +53,7 @@ public class DBPostgres extends Abstract
* @param in The string to transform to upper case.
* @return The upper case string.
*/
+ @Override
public String toUpperCase(String in)
{
String s = new StringBuffer("UPPER(").append(in).append(")").toString();
@@ -71,6 +66,7 @@ public class DBPostgres extends Abstract
* @param in The string whose case to ignore.
* @return The string in a case that can be ignored.
*/
+ @Override
public String ignoreCase(String in)
{
String s = new StringBuffer("UPPER(").append(in).append(")").toString();
@@ -80,6 +76,7 @@ public class DBPostgres extends Abstract
/**
* @see org.apache.torque.adapter.DB#getIDMethodType()
*/
+ @Override
public String getIDMethodType()
{
return SEQUENCE;
@@ -91,6 +88,7 @@ public class DBPostgres extends Abstract
* @return SQL to retreive the next database key.
* @see org.apache.torque.adapter.DB#getIDMethodSQL(Object)
*/
+ @Override
public String getIDMethodSQL(Object name)
{
return ("select nextval('" + name + "')");
@@ -103,6 +101,7 @@ public class DBPostgres extends Abstract
* @param table The name of the table to lock.
* @exception SQLException No Statement could be created or executed.
*/
+ @Override
public void lockTable(Connection con, String table) throws SQLException
{
}
@@ -114,26 +113,16 @@ public class DBPostgres extends Abstract
* @param table The name of the table to unlock.
* @exception SQLException No Statement could be created or executed.
*/
+ @Override
public void unlockTable(Connection con, String table) throws SQLException
{
}
/**
- * This method is used to chek whether the database supports
- * limiting the size of the resultset.
- *
- * @return LIMIT_STYLE_POSTGRES.
- * @deprecated This should not be exposed to the outside
- */
- public int getLimitStyle()
- {
- return DB.LIMIT_STYLE_POSTGRES;
- }
-
- /**
* Return true for PostgreSQL
* @see org.apache.torque.adapter.AbstractDBAdapter#supportsNativeLimit()
*/
+ @Override
public boolean supportsNativeLimit()
{
return true;
@@ -143,6 +132,7 @@ public class DBPostgres extends Abstract
* Return true for PostgreSQL
* @see org.apache.torque.adapter.AbstractDBAdapter#supportsNativeOffset()
*/
+ @Override
public boolean supportsNativeOffset()
{
return true;
@@ -157,11 +147,12 @@ public class DBPostgres extends Abstract
* @param offset the offset Value
* @param limit the limit Value
*/
- public void generateLimits(Query query, int offset, int limit)
+ @Override
+ public void generateLimits(Query query, long offset, int limit)
{
if (offset > 0)
{
- query.setOffset(Integer.toString(offset));
+ query.setOffset(Long.toString(offset));
}
if (limit >= 0)
{
@@ -173,37 +164,6 @@ public class DBPostgres extends Abstract
}
/**
- * Override the default behavior to associate b with null?
- *
- * @see DB#getBooleanString(Boolean)
- */
- public String getBooleanString(Boolean b)
- {
- return (b == null) ? "FALSE" : (Boolean.TRUE.equals(b) ? "TRUE" : "FALSE");
- }
-
- /**
- * This method overrides the JDBC escapes used to format dates
- * using a <code>DateFormat</code>.
- *
- * This generates the timedate format defined in
- * http://www.postgresql.org/docs/7.3/static/datatype-datetime.html
- * which defined PostgreSQL dates as YYYY-MM-DD hh:mm:ss
- * @param date the date to format
- * @return The properly formatted date String.
- */
- public String getDateString(Date date)
- {
- DateFormat df = new SimpleDateFormat(DATE_FORMAT);
- StringBuffer dateBuf = new StringBuffer();
- char delim = getStringDelimiter();
- dateBuf.append(delim);
- dateBuf.append(df.format(date));
- dateBuf.append(delim);
- return dateBuf.toString();
- }
-
- /**
* Whether ILIKE should be used for case insensitive like clauses.
*
* As postgres uses ILIKE, this mimplementation returns true.
@@ -211,6 +171,7 @@ public class DBPostgres extends Abstract
* @return true if ilike should be used for case insensitive likes,
* false if ignoreCase should be applied to the compared strings.
*/
+ @Override
public boolean useIlike()
{
return true;
---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org