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 2009/02/04 11:19:20 UTC
svn commit: r740672 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/access/jdbc/
main/java/org/apache/cayenne/access/trans/
main/java/org/apache/cayenne/dba/ main/java/org/apache/cayenne/dba/db2/
main/jav...
Author: aadamchik
Date: Wed Feb 4 10:19:19 2009
New Revision: 740672
URL: http://svn.apache.org/viewvc?rev=740672&view=rev
Log:
CAY-289 Implement Quoting of identifiers
patch by Olga Tkachova for insert/delete/update queries; also some rework of select
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ColumnDescriptor.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/BatchQueryBuilder.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilder.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/InsertBatchQueryBuilder.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinStack.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssemblerHelper.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/main/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilder.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/DbAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/BatchQueryBuilderTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilderTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilderTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/MockDbAdapter.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ColumnDescriptor.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ColumnDescriptor.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ColumnDescriptor.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/ColumnDescriptor.java Wed Feb 4 10:19:19 2009
@@ -23,6 +23,7 @@
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
+import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.dba.TypesMapping;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.ObjAttribute;
@@ -198,9 +199,9 @@
return (namePrefix != null) ? namePrefix + '.' + name : name;
}
- public String getQualifiedColumnNameWithQuoteSqlIdentifiers(String charStart, String charEnd) {
- String nameWithQuoteSqlIdentifiers = charStart + name + charEnd;
- return (namePrefix != null) ? charStart + namePrefix + charEnd + '.' +
+ public String getQualifiedColumnNameWithQuoteSqlIdentifiers(QuotingStrategy strategy) {
+ String nameWithQuoteSqlIdentifiers = strategy.quoteString( name );
+ return (namePrefix != null) ? strategy.quoteString( namePrefix ) + '.' +
nameWithQuoteSqlIdentifiers: nameWithQuoteSqlIdentifiers;
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/BatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/BatchQueryBuilder.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/BatchQueryBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/BatchQueryBuilder.java Wed Feb 4 10:19:19 2009
@@ -19,6 +19,7 @@
package org.apache.cayenne.access.trans;
+import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.sql.Types;
@@ -26,12 +27,12 @@
import java.util.List;
import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.query.BatchQuery;
/**
* Superclass of batch query translators.
- *
*/
public abstract class BatchQueryBuilder {
@@ -48,8 +49,10 @@
/**
* Translates BatchQuery into an SQL string formatted to use in a PreparedStatement.
+ *
+ * @throws IOException
*/
- public abstract String createSqlString(BatchQuery batch);
+ public abstract String createSqlString(BatchQuery batch) throws IOException;
/**
* Appends the name of the column to the query buffer. Subclasses use this method to
@@ -63,8 +66,17 @@
if (trim) {
buf.append(trimFunction).append('(');
}
+ boolean status;
+ if (dbAttribute.getEntity().getDataMap() != null
+ && dbAttribute.getEntity().getDataMap().isQuotingSQLIdentifiers()) {
+ status = true;
+ }
+ else {
+ status = false;
+ }
+ QuotingStrategy strategy = getAdapter().getQuotingStrategy(status);
- buf.append(dbAttribute.getName());
+ buf.append(strategy.quoteString(dbAttribute.getName()));
if (trim) {
buf.append(')');
@@ -121,4 +133,5 @@
}
return values;
}
+
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilder.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilder.java Wed Feb 4 10:19:19 2009
@@ -19,18 +19,19 @@
package org.apache.cayenne.access.trans;
+import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;
import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.query.BatchQuery;
import org.apache.cayenne.query.DeleteBatchQuery;
/**
* Translator for delete BatchQueries. Creates parametrized DELETE SQL statements.
- *
*/
public class DeleteBatchQueryBuilder extends BatchQueryBuilder {
@@ -40,12 +41,21 @@
}
@Override
- public String createSqlString(BatchQuery batch) {
+ public String createSqlString(BatchQuery batch) throws IOException {
+
DeleteBatchQuery deleteBatch = (DeleteBatchQuery) batch;
- String table = batch.getDbEntity().getFullyQualifiedName();
+ boolean status;
+ if(batch.getDbEntity().getDataMap()!=null && batch.getDbEntity().getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy strategy = getAdapter().getQuotingStrategy(status);
+
StringBuffer query = new StringBuffer("DELETE FROM ");
- query.append(table).append(" WHERE ");
+ query.append(strategy.quoteFullyQualifiedName(batch.getDbEntity()));
+ query.append(" WHERE ");
Iterator<DbAttribute> i = deleteBatch.getQualifierAttributes().iterator();
while (i.hasNext()) {
@@ -89,4 +99,5 @@
attribute.getScale());
}
}
+
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/InsertBatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/InsertBatchQueryBuilder.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/InsertBatchQueryBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/InsertBatchQueryBuilder.java Wed Feb 4 10:19:19 2009
@@ -17,21 +17,21 @@
* under the License.
****************************************************************/
-
package org.apache.cayenne.access.trans;
+import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.query.BatchQuery;
/**
* Translator of InsertBatchQueries.
- *
*/
public class InsertBatchQueryBuilder extends BatchQueryBuilder {
@@ -85,12 +85,20 @@
}
@Override
- public String createSqlString(BatchQuery batch) {
- String table = batch.getDbEntity().getFullyQualifiedName();
+ public String createSqlString(BatchQuery batch) throws IOException {
+
List<DbAttribute> dbAttributes = batch.getDbAttributes();
+ boolean status;
+ if(batch.getDbEntity().getDataMap()!=null && batch.getDbEntity().getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy strategy = getAdapter().getQuotingStrategy(status);
StringBuilder query = new StringBuilder("INSERT INTO ");
- query.append(table).append(" (");
+ query.append(strategy.quoteFullyQualifiedName(batch.getDbEntity()));
+ query.append(" (");
int columnCount = 0;
for (DbAttribute attribute : dbAttributes) {
@@ -105,7 +113,7 @@
if (columnCount > 0) {
query.append(", ");
}
- query.append(attribute.getName());
+ query.append(strategy.quoteString(attribute.getName()));
columnCount++;
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinStack.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinStack.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinStack.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinStack.java Wed Feb 4 10:19:19 2009
@@ -22,6 +22,7 @@
import java.util.List;
import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbJoin;
@@ -38,9 +39,8 @@
public class JoinStack {
protected JoinTreeNode rootNode;
- protected JoinTreeNode topNode;
- private String identifiersStartQuote;
- private String identifiersEndQuote;
+ protected JoinTreeNode topNode;
+ private QuotingStrategy strategy;
private int aliasCounter;
@@ -57,14 +57,14 @@
protected JoinStack(DbAdapter dbAdapter, DataMap dataMap) {
this.rootNode = new JoinTreeNode(this);
this.rootNode.setTargetTableAlias(newAlias());
-
- if(dataMap.isQuotingSQLIdentifiers()){
- this.identifiersStartQuote = dbAdapter.getIdentifiersStartQuote();
- this.identifiersEndQuote = dbAdapter.getIdentifiersEndQuote();
+ boolean status;
+ if(dataMap!=null && dataMap.isQuotingSQLIdentifiers()){
+ status= true;
} else {
- this.identifiersStartQuote = "";
- this.identifiersEndQuote = "";
+ status = false;
}
+ strategy = dbAdapter.getQuotingStrategy(status);
+
resetStack();
}
@@ -87,13 +87,14 @@
}
void appendRootWithQuoteSqlIdentifiers(Appendable out, DbEntity rootEntity) throws IOException {
+
if(rootEntity.getSchema() != null) {
- nameWithQuoteSqlIdentifiers(rootEntity.getSchema(),out);
+ out.append(strategy.quoteString(rootEntity.getSchema()));
out.append(".");
}
- nameWithQuoteSqlIdentifiers(rootEntity.getName(),out);
+ out.append(strategy.quoteString(rootEntity.getName()));
out.append(' ');
- nameWithQuoteSqlIdentifiers(rootNode.getTargetTableAlias(),out);
+ out.append(strategy.quoteString(rootNode.getTargetTableAlias()));
}
/**
@@ -131,13 +132,13 @@
if(targetEntity.getSchema()!= null){
- nameWithQuoteSqlIdentifiers(targetEntity.getSchema(),out);
+ out.append(strategy.quoteString(targetEntity.getSchema()));
out.append(".");
}
- nameWithQuoteSqlIdentifiers(targetEntity.getName(), out);
+ out.append(strategy.quoteString(targetEntity.getName()));
out.append(' ');
- nameWithQuoteSqlIdentifiers(targetAlias, out);
+ out.append(strategy.quoteString(targetAlias));
out.append(" ON (");
List<DbJoin> joins = relationship.getJoins();
@@ -148,13 +149,13 @@
out.append(" AND ");
}
- nameWithQuoteSqlIdentifiers(srcAlias, out);
+ out.append(strategy.quoteString(srcAlias));
out.append('.');
- nameWithQuoteSqlIdentifiers(join.getSourceName(), out);
+ out.append(strategy.quoteString(join.getSourceName()));
out.append(" = ");
- nameWithQuoteSqlIdentifiers(targetAlias, out);
+ out.append(strategy.quoteString(targetAlias));
out.append('.');
- nameWithQuoteSqlIdentifiers(join.getTargetName(), out);
+ out.append(strategy.quoteString(join.getTargetName()));
}
out.append(')');
@@ -191,7 +192,4 @@
return "t" + aliasCounter++;
}
- protected void nameWithQuoteSqlIdentifiers(String name, Appendable out) throws IOException{
- out.append(identifiersStartQuote).append(name).append(identifiersEndQuote);
- }
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssemblerHelper.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssemblerHelper.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssemblerHelper.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssemblerHelper.java Wed Feb 4 10:19:19 2009
@@ -28,6 +28,7 @@
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.ObjectId;
import org.apache.cayenne.Persistent;
+import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.exp.Expression;
import org.apache.cayenne.exp.parser.SimpleNode;
import org.apache.cayenne.map.DbAttribute;
@@ -48,8 +49,7 @@
protected QueryAssembler queryAssembler;
protected Appendable out;
- private String identifiersStartQuote;
- private String identifiersEndQuote;
+ protected QuotingStrategy strategy;
/**
* Creates QueryAssemblerHelper initializing with parent {@link QueryAssembler} and
@@ -57,14 +57,13 @@
*/
public QueryAssemblerHelper(QueryAssembler queryAssembler) {
this.queryAssembler = queryAssembler;
-
- if(queryAssembler.getQueryMetadata().getDataMap()!=null && queryAssembler.getQueryMetadata().getDataMap().isQuotingSQLIdentifiers()){
- identifiersStartQuote = queryAssembler.getAdapter().getIdentifiersStartQuote();
- identifiersEndQuote = queryAssembler.getAdapter().getIdentifiersEndQuote();
+ boolean status;
+ if(queryAssembler.getQueryMetadata().getDataMap()!=null && queryAssembler.getQueryMetadata().getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
} else {
- identifiersStartQuote = "";
- identifiersEndQuote = "";
+ status = false;
}
+ strategy = queryAssembler.getAdapter().getQuotingStrategy(status);
}
public ObjEntity getObjEntity() {
@@ -249,11 +248,12 @@
String alias = (queryAssembler.supportsTableAliases()) ? queryAssembler
.getCurrentAlias() : null;
- if(alias != null){
- out.append(identifiersStartQuote).append(alias).append(identifiersEndQuote);
+ if(alias != null){
+
+ out.append(strategy.quoteString(alias));
out.append(".");
}
- out.append(identifiersStartQuote).append(dbAttr.getName()).append(identifiersEndQuote);
+ out.append(strategy.quoteString(dbAttr.getName()));
}
/**
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=740672&r1=740671&r2=740672&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 Wed Feb 4 10:19:19 2009
@@ -31,6 +31,7 @@
import org.apache.cayenne.CayenneRuntimeException;
import org.apache.cayenne.access.jdbc.ColumnDescriptor;
+import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.exp.Expression;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
@@ -59,9 +60,6 @@
*/
public class SelectTranslator extends QueryAssembler {
- private String identifiersStartQuote;
- private String identifiersEndQuote;
-
protected static final int[] UNSUPPORTED_DISTINCT_TYPES = new int[] {
Types.BLOB, Types.CLOB, Types.LONGVARBINARY, Types.LONGVARCHAR
};
@@ -102,14 +100,14 @@
public String createSqlString() throws Exception {
joinStack = createJoinStack();
-
- if(queryMetadata.getDataMap().isQuotingSQLIdentifiers()){
- this.identifiersStartQuote = getAdapter().getIdentifiersStartQuote();
- this.identifiersEndQuote = getAdapter().getIdentifiersEndQuote();
+ boolean status;
+ if(queryMetadata.getDataMap()!=null && queryMetadata.getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
} else {
- this.identifiersStartQuote = "";
- this.identifiersEndQuote = "";
+ status = false;
}
+
+ QuotingStrategy strategy = getAdapter().getQuotingStrategy(status);
forcingDistinct = false;
// build column list
@@ -148,7 +146,7 @@
List<String> selectColumnExpList = new ArrayList<String>();
for (ColumnDescriptor column : resultColumns) {
selectColumnExpList.add(
- column.getQualifiedColumnNameWithQuoteSqlIdentifiers(identifiersStartQuote, identifiersEndQuote));
+ column.getQualifiedColumnNameWithQuoteSqlIdentifiers(strategy));
}
// append any column expressions used in the order by if this query
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilder.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilder.java Wed Feb 4 10:19:19 2009
@@ -17,22 +17,22 @@
* under the License.
****************************************************************/
-
package org.apache.cayenne.access.trans;
+import java.io.IOException;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Iterator;
import java.util.List;
import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.QuotingStrategy;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.query.BatchQuery;
import org.apache.cayenne.query.UpdateBatchQuery;
/**
* A translator for UpdateBatchQueries that produces parameterized SQL.
- *
*/
public class UpdateBatchQueryBuilder extends BatchQueryBuilder {
@@ -42,14 +42,23 @@
}
@Override
- public String createSqlString(BatchQuery batch) {
+ public String createSqlString(BatchQuery batch) throws IOException {
UpdateBatchQuery updateBatch = (UpdateBatchQuery) batch;
- String table = batch.getDbEntity().getFullyQualifiedName();
+ boolean status;
+ if(batch.getDbEntity().getDataMap()!=null && batch.getDbEntity().getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+
+ QuotingStrategy strategy = getAdapter().getQuotingStrategy(status);
+
List<DbAttribute> qualifierAttributes = updateBatch.getQualifierAttributes();
List<DbAttribute> updatedDbAttributes = updateBatch.getUpdatedAttributes();
StringBuffer query = new StringBuffer("UPDATE ");
- query.append(table).append(" SET ");
+ query.append(strategy.quoteFullyQualifiedName(batch.getDbEntity()));
+ query.append(" SET ");
int len = updatedDbAttributes.size();
for (int i = 0; i < len; i++) {
@@ -58,7 +67,8 @@
}
DbAttribute attribute = updatedDbAttributes.get(i);
- query.append(attribute.getName()).append(" = ?");
+ query.append(strategy.quoteString(attribute.getName()));
+ query.append(" = ?");
}
query.append(" WHERE ");
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/AutoAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/AutoAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/AutoAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/AutoAdapter.java Wed Feb 4 10:19:19 2009
@@ -331,4 +331,8 @@
return DEFAULT_QUOTE_SQL_IDENTIFIERS_CHAR_END;
}
+ public QuotingStrategy getQuotingStrategy(boolean isQuoteStrategy) {
+ return getAdapter().getQuotingStrategy(isQuoteStrategy);
+ }
+
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/DbAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/DbAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/DbAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/DbAdapter.java Wed Feb 4 10:19:19 2009
@@ -203,11 +203,5 @@
/**
* @since 3.0
*/
- String getIdentifiersStartQuote();
-
- /**
- * @since 3.0
- */
- String getIdentifiersEndQuote();
-
+ public QuotingStrategy getQuotingStrategy(boolean needQuotes);
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/JdbcAdapter.java Wed Feb 4 10:19:19 2009
@@ -43,7 +43,6 @@
import org.apache.cayenne.access.types.ExtendedTypeMap;
import org.apache.cayenne.access.types.UtilDateType;
import org.apache.cayenne.conf.ClasspathResourceFinder;
-import org.apache.cayenne.map.DataMap;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.map.DbJoin;
@@ -267,7 +266,7 @@
* @since 3.0
*/
public Collection<String> dropTableStatements(DbEntity table) {
- QuotingStrategy context = getContextQuoteStrategy(table.getDataMap());
+ QuotingStrategy context = getQuotingStrategy(table.getDataMap().isQuotingSQLIdentifiers());
StringBuffer buf = new StringBuffer("DROP TABLE ");
buf.append(context.quoteFullyQualifiedName(table));
@@ -280,7 +279,13 @@
* <code>ent</code> parameter.
*/
public String createTable(DbEntity entity) {
- QuotingStrategy context = getContextQuoteStrategy(entity.getDataMap());
+ boolean status;
+ if(entity.getDataMap()!=null && entity.getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
StringBuffer sqlBuffer = new StringBuffer();
sqlBuffer.append("CREATE TABLE ");
sqlBuffer.append(context.quoteFullyQualifiedName(entity));
@@ -323,7 +328,13 @@
* @since 1.2
*/
protected void createTableAppendPKClause(StringBuffer sqlBuffer, DbEntity entity) {
- QuotingStrategy context = getContextQuoteStrategy(entity.getDataMap());
+ boolean status;
+ if(entity.getDataMap()!=null && entity.getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
Iterator<DbAttribute> pkit = entity.getPrimaryKeys().iterator();
if (pkit.hasNext()) {
sqlBuffer.append(", PRIMARY KEY (");
@@ -348,8 +359,14 @@
* @since 1.2
*/
public void createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column) {
- QuotingStrategy context = getContextQuoteStrategy(((DbEntity) column.getEntity())
- .getDataMap());
+ boolean status;
+ if(((DbEntity) column.getEntity()).getDataMap()!=null && ((DbEntity) column.getEntity())
+ .getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
String[] types = externalTypesForJdbcType(column.getType());
if (types == null || types.length == 0) {
String entityName = column.getEntity() != null ? ((DbEntity) column
@@ -396,7 +413,13 @@
* @since 1.1
*/
public String createUniqueConstraint(DbEntity source, Collection<DbAttribute> columns) {
- QuotingStrategy context = getContextQuoteStrategy(source.getDataMap());
+ boolean status;
+ if(source.getDataMap()!=null && source.getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
if (columns == null || columns.isEmpty()) {
throw new CayenneRuntimeException(
@@ -431,7 +454,13 @@
public String createFkConstraint(DbRelationship rel) {
DbEntity source = (DbEntity) rel.getSourceEntity();
- QuotingStrategy context = getContextQuoteStrategy(source.getDataMap());
+ boolean status;
+ if(source.getDataMap()!=null && source.getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
StringBuilder buf = new StringBuilder();
StringBuilder refBuf = new StringBuilder();
@@ -599,8 +628,8 @@
/**
* @since 3.0
*/
- protected QuotingStrategy getContextQuoteStrategy(DataMap dm) {
- if (dm != null && dm.isQuotingSQLIdentifiers()) {
+ public QuotingStrategy getQuotingStrategy(boolean needQuotes) {
+ if (needQuotes) {
return new QuoteStrategy(
getIdentifiersStartQuote(),
getIdentifiersEndQuote());
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java Wed Feb 4 10:19:19 2009
@@ -81,7 +81,13 @@
*/
@Override
public String createTable(DbEntity ent) {
- QuotingStrategy context = getContextQuoteStrategy(ent.getDataMap());
+ boolean status;
+ if(ent.getDataMap()!=null && ent.getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
StringBuilder buf = new StringBuilder();
buf.append("CREATE TABLE ");
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/derby/DerbyAdapter.java Wed Feb 4 10:19:19 2009
@@ -97,8 +97,14 @@
*/
@Override
public void createTableAppendColumn(StringBuffer sqlBuffer, DbAttribute column) {
- QuotingStrategy context = getContextQuoteStrategy(((DbEntity) column
- .getEntity()).getDataMap());
+
+ boolean status;
+ if(((DbEntity) column.getEntity()).getDataMap()!=null && ((DbEntity) column.getEntity()).getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
String[] types = externalTypesForJdbcType(column.getType());
if (types == null || types.length == 0) {
String entityName = column.getEntity() != null ? ((DbEntity) column
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/frontbase/FrontBaseAdapter.java Wed Feb 4 10:19:19 2009
@@ -90,7 +90,13 @@
*/
@Override
public String createTable(DbEntity ent) {
- QuotingStrategy context = getContextQuoteStrategy(ent.getDataMap());
+ boolean status;
+ if(ent.getDataMap()!=null && ent.getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
StringBuilder buf = new StringBuilder();
buf.append("CREATE TABLE ");
buf.append(context.quoteFullyQualifiedName(ent));
@@ -200,7 +206,13 @@
*/
@Override
public Collection<String> dropTableStatements(DbEntity table) {
- QuotingStrategy context = getContextQuoteStrategy(table.getDataMap());
+ boolean status;
+ if(table.getDataMap()!=null && table.getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
StringBuffer buf = new StringBuffer("DROP TABLE ");
buf.append(context.quoteFullyQualifiedName(table));
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/hsqldb/HSQLDBAdapter.java Wed Feb 4 10:19:19 2009
@@ -67,7 +67,7 @@
* @since 1.2
*/
protected String getTableName(DbEntity entity) {
- QuotingStrategy context = getContextQuoteStrategy(entity.getDataMap());
+ QuotingStrategy context = getQuotingStrategy(entity.getDataMap().isQuotingSQLIdentifiers());
return context.quoteFullyQualifiedName(entity);
}
@@ -78,7 +78,7 @@
*/
protected String getSchemaName(DbEntity entity) {
if (entity.getSchema() != null && entity.getSchema().length() > 0) {
- QuotingStrategy context = getContextQuoteStrategy(entity.getDataMap());
+ QuotingStrategy context = getQuotingStrategy(entity.getDataMap().isQuotingSQLIdentifiers());
return context.quoteString(entity.getSchema()) + ".";
}
@@ -103,7 +103,13 @@
*/
@Override
public String createUniqueConstraint(DbEntity source, Collection<DbAttribute> columns) {
- QuotingStrategy context = getContextQuoteStrategy(source.getDataMap());
+ boolean status;
+ if(source.getDataMap()!=null && source.getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
if (columns == null || columns.isEmpty()) {
throw new CayenneRuntimeException(
"Can't create UNIQUE constraint - no columns specified.");
@@ -144,7 +150,13 @@
*/
@Override
public String createFkConstraint(DbRelationship rel) {
- QuotingStrategy context = getContextQuoteStrategy(((DbEntity)rel.getSourceEntity()).getDataMap());
+ boolean status;
+ if(((DbEntity)rel.getSourceEntity()).getDataMap()!=null && ((DbEntity)rel.getSourceEntity()).getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
StringBuilder buf = new StringBuilder();
StringBuilder refBuf = new StringBuilder();
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/ingres/IngresAdapter.java Wed Feb 4 10:19:19 2009
@@ -59,8 +59,8 @@
* <code>ent</code> parameter.
*/
@Override
- public String createTable(DbEntity ent) {
- QuotingStrategy context = getContextQuoteStrategy(ent.getDataMap());
+ public String createTable(DbEntity ent) {
+ QuotingStrategy context = getQuotingStrategy(ent.getDataMap().isQuotingSQLIdentifiers());
StringBuilder buf = new StringBuilder();
buf.append("CREATE TABLE ");
buf.append(context.quoteFullyQualifiedName(ent));
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/mysql/MySQLAdapter.java Wed Feb 4 10:19:19 2009
@@ -105,7 +105,7 @@
*/
@Override
public String dropTable(DbEntity table) {
- QuotingStrategy context = getContextQuoteStrategy(table.getDataMap());
+ QuotingStrategy context = getQuotingStrategy(table.getDataMap().isQuotingSQLIdentifiers());
StringBuffer buf = new StringBuffer("DROP TABLE IF EXISTS ");
buf.append(context.quoteFullyQualifiedName(table));
buf.append(" CASCADE");
@@ -120,7 +120,7 @@
// note that CASCADE is a noop as of MySQL 5.0, so we have to use FK checks
// statement
StringBuffer buf = new StringBuffer();
- QuotingStrategy context = getContextQuoteStrategy(table.getDataMap());
+ QuotingStrategy context = getQuotingStrategy(table.getDataMap().isQuotingSQLIdentifiers());
buf.append(context.quoteFullyQualifiedName(table));
return Arrays.asList("SET FOREIGN_KEY_CHECKS=0", "DROP TABLE IF EXISTS "
@@ -243,7 +243,13 @@
// See CAY-358 for details of the InnoDB problem
@Override
protected void createTableAppendPKClause(StringBuffer sqlBuffer, DbEntity entity) {
- QuotingStrategy context = getContextQuoteStrategy(entity.getDataMap());
+ boolean status;
+ if(entity.getDataMap()!=null && entity.getDataMap().isQuotingSQLIdentifiers()){
+ status= true;
+ } else {
+ status = false;
+ }
+ QuotingStrategy context = getQuotingStrategy(status);
// must move generated to the front...
List<DbAttribute> pkList = new ArrayList<DbAttribute>(entity.getPrimaryKeys());
Collections.sort(pkList, new PKComparator());
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseAdapter.java Wed Feb 4 10:19:19 2009
@@ -146,7 +146,7 @@
*/
@Override
public String createTable(DbEntity ent) {
- QuotingStrategy context = getContextQuoteStrategy(ent.getDataMap());
+ QuotingStrategy context = getQuotingStrategy(ent.getDataMap().isQuotingSQLIdentifiers());
StringBuilder buf = new StringBuilder();
buf.append("CREATE TABLE ");
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java Wed Feb 4 10:19:19 2009
@@ -240,7 +240,7 @@
*/
@Override
public Collection<String> dropTableStatements(DbEntity table) {
- QuotingStrategy context = getContextQuoteStrategy(table.getDataMap());
+ QuotingStrategy context = getQuotingStrategy(table.getDataMap().isQuotingSQLIdentifiers());
StringBuffer buf = new StringBuffer("DROP TABLE ");
buf.append(context.quoteFullyQualifiedName(table));
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/postgres/PostgresAdapter.java Wed Feb 4 10:19:19 2009
@@ -122,7 +122,7 @@
@Override
public String createTable(DbEntity ent) {
- QuotingStrategy context = getContextQuoteStrategy(ent.getDataMap());
+ QuotingStrategy context = getQuotingStrategy(ent.getDataMap().isQuotingSQLIdentifiers());
StringBuilder buf = new StringBuilder();
buf.append("CREATE TABLE ");
@@ -236,7 +236,7 @@
*/
@Override
public Collection<String> dropTableStatements(DbEntity table) {
- QuotingStrategy context = getContextQuoteStrategy(table.getDataMap());
+ QuotingStrategy context = getQuotingStrategy(table.getDataMap().isQuotingSQLIdentifiers());
StringBuffer buf = new StringBuffer("DROP TABLE ");
buf.append(context.quoteFullyQualifiedName(table));
buf.append(" CASCADE");
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/BatchQueryBuilderTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/BatchQueryBuilderTest.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/BatchQueryBuilderTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/BatchQueryBuilderTest.java Wed Feb 4 10:19:19 2009
@@ -27,6 +27,7 @@
import org.apache.cayenne.dba.DbAdapter;
import org.apache.cayenne.dba.JdbcAdapter;
import org.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.map.DbEntity;
import org.apache.cayenne.query.BatchQuery;
/**
@@ -61,12 +62,15 @@
builder.setTrimFunction(trimFunction);
StringBuffer buf = new StringBuffer();
+ DbEntity entity = new DbEntity("Test");
DbAttribute attr = new DbAttribute("testAttr", Types.CHAR, null);
+ attr.setEntity(entity);
builder.appendDbAttribute(buf, attr);
assertEquals("testTrim(testAttr)", buf.toString());
buf = new StringBuffer();
attr = new DbAttribute("testAttr", Types.VARCHAR, null);
+ attr.setEntity(entity);
builder.appendDbAttribute(buf, attr);
assertEquals("testAttr", buf.toString());
}
@@ -82,12 +86,17 @@
};
StringBuffer buf = new StringBuffer();
+ DbEntity entity = new DbEntity("Test");
+
DbAttribute attr = new DbAttribute("testAttr", Types.CHAR, null);
+ attr.setEntity(entity);
builder.appendDbAttribute(buf, attr);
assertEquals("testAttr", buf.toString());
buf = new StringBuffer();
attr = new DbAttribute("testAttr", Types.VARCHAR, null);
+ attr.setEntity(entity);
+
builder.appendDbAttribute(buf, attr);
assertEquals("testAttr", buf.toString());
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilderTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilderTest.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilderTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/DeleteBatchQueryBuilderTest.java Wed Feb 4 10:19:19 2009
@@ -63,7 +63,8 @@
DbEntity entity = getDomain().getEntityResolver().lookupObjEntity(
SimpleLockingTestEntity.class).getDbEntity();
- List idAttributes = Arrays.asList(entity.getAttribute("LOCKING_TEST_ID"), entity.getAttribute("NAME"));
+ List idAttributes = Arrays.asList(entity.getAttribute("LOCKING_TEST_ID"), entity
+ .getAttribute("NAME"));
Collection nullAttributes = Collections.singleton("NAME");
@@ -79,4 +80,89 @@
+ entity.getName()
+ " WHERE LOCKING_TEST_ID = ? AND NAME IS NULL", generatedSql);
}
+
+ public void testCreateSqlStringWithIdentifiersQuote() throws Exception {
+ DbEntity entity = getDomain().getEntityResolver().lookupObjEntity(
+ SimpleLockingTestEntity.class).getDbEntity();
+ try {
+
+ entity.getDataMap().setQuotingSQLIdentifiers(true);
+ List idAttributes = Collections.singletonList(entity
+ .getAttribute("LOCKING_TEST_ID"));
+
+ DeleteBatchQuery deleteQuery = new DeleteBatchQuery(
+ entity,
+ idAttributes,
+ null,
+ 1);
+ DeleteBatchQueryBuilder builder = new DeleteBatchQueryBuilder(
+ new JdbcAdapter());
+ String generatedSql = builder.createSqlString(deleteQuery);
+
+ JdbcAdapter adapter = (JdbcAdapter) getAccessStackAdapter().getAdapter();
+ String charStart = adapter.getIdentifiersStartQuote();
+ String charEnd = adapter.getIdentifiersEndQuote();
+
+ assertNotNull(generatedSql);
+ assertEquals("DELETE FROM "
+ + charStart
+ + entity.getName()
+ + charEnd
+ + " WHERE "
+ + charStart
+ + "LOCKING_TEST_ID"
+ + charEnd
+ + " = ?", generatedSql);
+ }
+ finally {
+ entity.getDataMap().setQuotingSQLIdentifiers(false);
+ }
+
+ }
+
+ public void testCreateSqlStringWithNullsWithIdentifiersQuote() throws Exception {
+ DbEntity entity = getDomain().getEntityResolver().lookupObjEntity(
+ SimpleLockingTestEntity.class).getDbEntity();
+ try {
+
+ entity.getDataMap().setQuotingSQLIdentifiers(true);
+
+ List idAttributes = Arrays.asList(
+ entity.getAttribute("LOCKING_TEST_ID"),
+ entity.getAttribute("NAME"));
+
+ Collection nullAttributes = Collections.singleton("NAME");
+
+ DeleteBatchQuery deleteQuery = new DeleteBatchQuery(
+ entity,
+ idAttributes,
+ nullAttributes,
+ 1);
+ DeleteBatchQueryBuilder builder = new DeleteBatchQueryBuilder(
+ new JdbcAdapter());
+ String generatedSql = builder.createSqlString(deleteQuery);
+
+ JdbcAdapter adapter = (JdbcAdapter) getAccessStackAdapter().getAdapter();
+ String charStart = adapter.getIdentifiersStartQuote();
+ String charEnd = adapter.getIdentifiersEndQuote();
+ assertNotNull(generatedSql);
+
+ assertEquals("DELETE FROM "
+ + charStart
+ + entity.getName()
+ + charEnd
+ + " WHERE "
+ + charStart
+ + "LOCKING_TEST_ID"
+ + charEnd
+ + " = ? AND "
+ + charStart
+ + "NAME"
+ + charEnd
+ + " IS NULL", generatedSql);
+ }
+ finally {
+ entity.getDataMap().setQuotingSQLIdentifiers(false);
+ }
+ }
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilderTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilderTest.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilderTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/UpdateBatchQueryBuilderTest.java Wed Feb 4 10:19:19 2009
@@ -68,7 +68,8 @@
DbEntity entity = getDomain().getEntityResolver().lookupObjEntity(
SimpleLockingTestEntity.class).getDbEntity();
- List idAttributes = Arrays.asList(entity.getAttribute("LOCKING_TEST_ID"), entity.getAttribute("NAME"));
+ List idAttributes = Arrays.asList(entity.getAttribute("LOCKING_TEST_ID"), entity
+ .getAttribute("NAME"));
List updatedAttributes = Collections.singletonList(entity
.getAttribute("DESCRIPTION"));
@@ -84,6 +85,7 @@
UpdateBatchQueryBuilder builder = new UpdateBatchQueryBuilder(new JdbcAdapter());
String generatedSql = builder.createSqlString(updateQuery);
assertNotNull(generatedSql);
+
assertEquals(
"UPDATE "
+ entity.getName()
@@ -91,4 +93,102 @@
generatedSql);
}
+ public void testCreateSqlStringWithIdentifiersQuote() throws Exception {
+ DbEntity entity = getDomain().getEntityResolver().lookupObjEntity(
+ SimpleLockingTestEntity.class).getDbEntity();
+ try {
+
+ entity.getDataMap().setQuotingSQLIdentifiers(true);
+ List idAttributes = Collections.singletonList(entity
+ .getAttribute("LOCKING_TEST_ID"));
+ List updatedAttributes = Collections.singletonList(entity
+ .getAttribute("DESCRIPTION"));
+
+ UpdateBatchQuery updateQuery = new UpdateBatchQuery(
+ entity,
+ idAttributes,
+ updatedAttributes,
+ null,
+ 1);
+ UpdateBatchQueryBuilder builder = new UpdateBatchQueryBuilder(
+ new JdbcAdapter());
+ String generatedSql = builder.createSqlString(updateQuery);
+
+ JdbcAdapter adapter = (JdbcAdapter) getAccessStackAdapter().getAdapter();
+ String charStart = adapter.getIdentifiersStartQuote();
+ String charEnd = adapter.getIdentifiersEndQuote();
+
+ assertNotNull(generatedSql);
+ assertEquals("UPDATE "
+ + charStart
+ + entity.getName()
+ + charEnd
+ + " SET "
+ + charStart
+ + "DESCRIPTION"
+ + charEnd
+ + " = ? WHERE "
+ + charStart
+ + "LOCKING_TEST_ID"
+ + charEnd
+ + " = ?", generatedSql);
+
+ }
+ finally {
+ entity.getDataMap().setQuotingSQLIdentifiers(false);
+ }
+ }
+
+ public void testCreateSqlStringWithNullsWithIdentifiersQuote() throws Exception {
+ DbEntity entity = getDomain().getEntityResolver().lookupObjEntity(
+ SimpleLockingTestEntity.class).getDbEntity();
+ try {
+
+ entity.getDataMap().setQuotingSQLIdentifiers(true);
+ List idAttributes = Arrays.asList(
+ entity.getAttribute("LOCKING_TEST_ID"),
+ entity.getAttribute("NAME"));
+
+ List updatedAttributes = Collections.singletonList(entity
+ .getAttribute("DESCRIPTION"));
+
+ Collection nullAttributes = Collections.singleton("NAME");
+
+ UpdateBatchQuery updateQuery = new UpdateBatchQuery(
+ entity,
+ idAttributes,
+ updatedAttributes,
+ nullAttributes,
+ 1);
+ UpdateBatchQueryBuilder builder = new UpdateBatchQueryBuilder(
+ new JdbcAdapter());
+ String generatedSql = builder.createSqlString(updateQuery);
+ assertNotNull(generatedSql);
+ JdbcAdapter adapter = (JdbcAdapter) getAccessStackAdapter().getAdapter();
+ String charStart = adapter.getIdentifiersStartQuote();
+ String charEnd = adapter.getIdentifiersEndQuote();
+ assertEquals("UPDATE "
+ + charStart
+ + entity.getName()
+ + charEnd
+ + " SET "
+ + charStart
+ + "DESCRIPTION"
+ + charEnd
+ + " = ? WHERE "
+ + charStart
+ + "LOCKING_TEST_ID"
+ + charEnd
+ + " = ? AND "
+ + charStart
+ + "NAME"
+ + charEnd
+ + " IS NULL", generatedSql);
+
+ }
+ finally {
+ entity.getDataMap().setQuotingSQLIdentifiers(false);
+ }
+ }
+
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/MockDbAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/MockDbAdapter.java?rev=740672&r1=740671&r2=740672&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/MockDbAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/dba/MockDbAdapter.java Wed Feb 4 10:19:19 2009
@@ -152,4 +152,8 @@
public String getIdentifiersEndQuote(){
return "\"";
}
+
+ public QuotingStrategy getQuotingStrategy(boolean isQuoteStrategy) {
+ return null;
+ }
}