You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2008/11/18 07:34:32 UTC
svn commit: r718498 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/access/
main/java/org/apache/cayenne/access/jdbc/
main/java/org/apache/cayenne/access/trans/
test/java/org/apache/cayenne/access/trans/
Author: aadamchik
Date: Mon Nov 17 22:34:32 2008
New Revision: 718498
URL: http://svn.apache.org/viewvc?rev=718498&view=rev
Log:
refactoring of the translator hierarchy
deprecating QueryTranslator, and moving its functions into subclasses
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/QueryTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/UpdateAction.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/DeleteTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/ProcedureTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/TstQueryAssembler.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/QueryTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/QueryTranslator.java?rev=718498&r1=718497&r2=718498&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/QueryTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/QueryTranslator.java Mon Nov 17 22:34:32 2008
@@ -32,38 +32,23 @@
/**
* Defines API for translation Cayenne queries to JDBC PreparedStatements.
*
+ * @deprecated since 3.0, as a part of translator inheritance hierarchy reorganization.
+ * This class is no longer in use as a common superclass.
*/
public abstract class QueryTranslator {
- /**
- * Query being translated.
- */
protected Query query;
-
- /**
- * JDBC database connection needed to create PreparedStatement. Prior to 1.2 this
- * property was called "con".
- */
protected Connection connection;
-
- /** Adapter helping to do SQL literal conversions, etc. */
protected DbAdapter adapter;
-
- /**
- * Provides access to Cayenne mapping info.
- *
- * @since 1.2
- */
protected EntityResolver entityResolver;
/**
- * Creates PreparedStatement. <code>logLevel</code> parameter is supplied to allow
- * control of logging of produced SQL.
+ * Creates and binds a PreparedStatement to execute query SQL via JDBC.
*/
public abstract PreparedStatement createStatement() throws Exception;
- /**
- * Returns query object being processed.
+ /**
+ * Returns query object being processed.
*/
public Query getQuery() {
return query;
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/UpdateAction.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/UpdateAction.java?rev=718498&r1=718497&r2=718498&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/UpdateAction.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/UpdateAction.java Mon Nov 17 22:34:32 2008
@@ -26,8 +26,8 @@
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.OperationObserver;
import org.apache.cayenne.access.QueryLogger;
-import org.apache.cayenne.access.QueryTranslator;
import org.apache.cayenne.access.trans.DeleteTranslator;
+import org.apache.cayenne.access.trans.QueryAssembler;
import org.apache.cayenne.access.trans.UpdateTranslator;
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.map.EntityResolver;
@@ -48,8 +48,8 @@
this.query = query;
}
- protected QueryTranslator createTranslator(Connection connection) {
- QueryTranslator translator;
+ protected QueryAssembler createTranslator(Connection connection) {
+ QueryAssembler translator;
if (query instanceof UpdateQuery) {
translator = new UpdateTranslator();
@@ -73,7 +73,7 @@
public void performAction(Connection connection, OperationObserver observer)
throws SQLException, Exception {
- QueryTranslator translator = createTranslator(connection);
+ QueryAssembler translator = createTranslator(connection);
PreparedStatement statement = translator.createStatement();
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/DeleteTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/DeleteTranslator.java?rev=718498&r1=718497&r2=718498&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/DeleteTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/DeleteTranslator.java Mon Nov 17 22:34:32 2008
@@ -59,7 +59,7 @@
StringBuilder queryBuf = new StringBuilder("DELETE FROM ");
// 1. append table name
- DbEntity dbEnt = getRootDbEntity();
+ DbEntity dbEnt = getRootEntity().getDbEntity();
queryBuf.append(dbEnt.getFullyQualifiedName());
// 2. build qualifier
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/ProcedureTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/ProcedureTranslator.java?rev=718498&r1=718497&r2=718498&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/ProcedureTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/ProcedureTranslator.java Mon Nov 17 22:34:32 2008
@@ -20,13 +20,15 @@
package org.apache.cayenne.access.trans;
import java.sql.CallableStatement;
+import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.cayenne.access.QueryLogger;
-import org.apache.cayenne.access.QueryTranslator;
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.map.EntityResolver;
import org.apache.cayenne.map.Procedure;
import org.apache.cayenne.map.ProcedureParameter;
import org.apache.cayenne.query.ProcedureQuery;
@@ -34,7 +36,7 @@
/**
* Stored procedure query translator.
*/
-public class ProcedureTranslator extends QueryTranslator {
+public class ProcedureTranslator {
/**
* Helper class to make OUT and VOID parameters logger-friendly.
@@ -55,9 +57,32 @@
private static NotInParam OUT_PARAM = new NotInParam("[OUT]");
+ protected ProcedureQuery query;
+ protected Connection connection;
+ protected DbAdapter adapter;
+ protected EntityResolver entityResolver;
protected List<ProcedureParameter> callParams;
protected List<Object> values;
+ public void setQuery(ProcedureQuery query) {
+ this.query = query;
+ }
+
+ public void setConnection(Connection connection) {
+ this.connection = connection;
+ }
+
+ public void setAdapter(DbAdapter adapter) {
+ this.adapter = adapter;
+ }
+
+ /**
+ * @since 1.2
+ */
+ public void setEntityResolver(EntityResolver entityResolver) {
+ this.entityResolver = entityResolver;
+ }
+
/**
* Creates an SQL String for the stored procedure call.
*/
@@ -94,7 +119,9 @@
return buf.toString();
}
- @Override
+ /**
+ * Creates and binds a PreparedStatement to execute query SQL via JDBC.
+ */
public PreparedStatement createStatement() throws Exception {
long t1 = System.currentTimeMillis();
@@ -125,11 +152,11 @@
}
public Procedure getProcedure() {
- return getEntityResolver().lookupProcedure(query);
+ return entityResolver.lookupProcedure(query);
}
public ProcedureQuery getProcedureQuery() {
- return (ProcedureQuery) query;
+ return query;
}
/**
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java?rev=718498&r1=718497&r2=718498&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssembler.java Mon Nov 17 22:34:32 2008
@@ -19,21 +19,32 @@
package org.apache.cayenne.access.trans;
+import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.cayenne.access.QueryLogger;
-import org.apache.cayenne.access.QueryTranslator;
+import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbRelationship;
+import org.apache.cayenne.map.EntityInheritanceTree;
+import org.apache.cayenne.map.EntityResolver;
import org.apache.cayenne.map.JoinType;
+import org.apache.cayenne.map.ObjEntity;
+import org.apache.cayenne.query.Query;
/**
* Abstract superclass of Query translators.
*/
-public abstract class QueryAssembler extends QueryTranslator {
+public abstract class QueryAssembler {
+
+ protected Query query;
+ protected Connection connection;
+ protected DbAdapter adapter;
+ protected EntityResolver entityResolver;
/**
* Holds PreparedStatement values.
@@ -51,7 +62,55 @@
* @since 3.0
*/
protected Map<String, String> getPathAliases() {
- return query.getMetaData(getEntityResolver()).getPathSplitAliases();
+ return query.getMetaData(entityResolver).getPathSplitAliases();
+ }
+
+ public EntityResolver getEntityResolver() {
+ return entityResolver;
+ }
+
+ public DbAdapter getAdapter() {
+ return adapter;
+ }
+
+ /**
+ * Returns an EntityInheritanceTree for the root entity.
+ *
+ * @since 1.1
+ */
+ public EntityInheritanceTree getRootInheritanceTree() {
+ return getEntityResolver().lookupInheritanceTree(getRootEntity());
+ }
+
+ /**
+ * Returns query object being processed.
+ */
+ public Query getQuery() {
+ return query;
+ }
+
+ public void setQuery(Query query) {
+ this.query = query;
+ }
+
+ public void setConnection(Connection connection) {
+ this.connection = connection;
+ }
+
+ public void setAdapter(DbAdapter adapter) {
+ this.adapter = adapter;
+ }
+
+ public void setEntityResolver(EntityResolver entityResolver) {
+ this.entityResolver = entityResolver;
+ }
+
+ public ObjEntity getRootEntity() {
+ return query.getMetaData(entityResolver).getObjEntity();
+ }
+
+ public DbEntity getRootDbEntity() {
+ return query.getMetaData(entityResolver).getDbEntity();
}
/**
@@ -108,7 +167,6 @@
/**
* Translates internal query into PreparedStatement.
*/
- @Override
public PreparedStatement createStatement() throws Exception {
long t1 = System.currentTimeMillis();
String sqlStr = createSqlString();
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java?rev=718498&r1=718497&r2=718498&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java Mon Nov 17 22:34:32 2008
@@ -283,7 +283,7 @@
// * joined prefetch PK
ClassDescriptor descriptor = query
- .getMetaData(getEntityResolver())
+ .getMetaData(entityResolver)
.getClassDescriptor();
ObjEntity oe = descriptor.getEntity();
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/TstQueryAssembler.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/TstQueryAssembler.java?rev=718498&r1=718497&r2=718498&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/TstQueryAssembler.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/TstQueryAssembler.java Mon Nov 17 22:34:32 2008
@@ -48,7 +48,7 @@
}
public void dispose() throws SQLException {
- super.getConnection().close();
+ connection.close();
}
@Override