Author: aadamchik
Date: Sun Feb 24 13:03:25 2013
New Revision: 1449473

URL: http://svn.apache.org/r1449473
Log:
CAY-1522 EJBQL query don't support quotes

fix by Ilya - partial

Modified:
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLDbPathTranslator.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLIdentifierColumnsTranslator.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLTranslationContext.java
    
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/JdbcEJBQLTranslatorFactory.java

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java?rev=1449473&r1=1449472&r2=1449473&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLAggregateColumnTranslator.java
 Sun Feb 24 13:03:25 2013
@@ -125,8 +125,9 @@ class EJBQLAggregateColumnTranslator ext
             DbEntity table = currentEntity.getDbEntity();
             String alias = this.lastAlias != null ? lastAlias : 
context.getTableAlias(
                     idPath,
-                    table.getFullyQualifiedName());
-            
context.append(alias).append('.').append(attribute.getDbAttributeName());
+                    context.getQuotingSupport().generateTableName(table));
+            context.append(alias).append('.').append(
+                    
context.getQuotingSupport().generateColumnName(attribute.getDbAttribute()));
         }
         
         @Override

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java?rev=1449473&r1=1449472&r2=1449473&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLConditionTranslator.java
 Sun Feb 24 13:03:25 2013
@@ -27,6 +27,7 @@ import java.util.Map;
 
 import org.apache.cayenne.ObjectId;
 import org.apache.cayenne.Persistent;
+import org.apache.cayenne.dba.QuotingSupport;
 import org.apache.cayenne.dba.TypesMapping;
 import org.apache.cayenne.ejbql.EJBQLBaseVisitor;
 import org.apache.cayenne.ejbql.EJBQLException;
@@ -157,10 +158,9 @@ public class EJBQLConditionTranslator ex
         String correlatedEntityId = path.getId();
         ClassDescriptor correlatedEntityDescriptor = context
                 .getEntityDescriptor(correlatedEntityId);
-        String correlatedTableName = correlatedEntityDescriptor
+        String correlatedTableName = 
context.getQuotingSupport().generateTableName(correlatedEntityDescriptor
                 .getEntity()
-                .getDbEntity()
-                .getFullyQualifiedName();
+                .getDbEntity());
         String correlatedTableAlias = context.getTableAlias(
                 correlatedEntityId,
                 correlatedTableName);
@@ -174,10 +174,9 @@ public class EJBQLConditionTranslator ex
 
         context.append(" EXISTS (SELECT 1 FROM ");
 
-        String subqueryTableName = targetDescriptor
+        String subqueryTableName = 
context.getQuotingSupport().generateTableName(targetDescriptor
                 .getEntity()
-                .getDbEntity()
-                .getFullyQualifiedName();
+                .getDbEntity());
         String subqueryRootAlias = context.getTableAlias(subqueryId, 
subqueryTableName);
 
         ObjRelationship relationship = (ObjRelationship) 
correlatedEntityDescriptor
@@ -205,7 +204,8 @@ public class EJBQLConditionTranslator ex
             DbJoin join = it.next();
             context.append(' ').append(subqueryRootAlias).append('.').append(
                     join.getTargetName()).append(" = ");
-            
context.append(correlatedTableAlias).append('.').append(join.getSourceName());
+            context.append(correlatedTableAlias).append('.')
+                    
.append(context.getQuotingSupport().generateColumnName(join.getSource()));
 
             if (it.hasNext()) {
                 context.append(" AND");
@@ -249,10 +249,9 @@ public class EJBQLConditionTranslator ex
         String correlatedEntityId = path.getId();
         ClassDescriptor correlatedEntityDescriptor = context
                 .getEntityDescriptor(correlatedEntityId);
-        String correlatedTableName = correlatedEntityDescriptor
+        String correlatedTableName = 
context.getQuotingSupport().generateTableName(correlatedEntityDescriptor
                 .getEntity()
-                .getDbEntity()
-                .getFullyQualifiedName();
+                .getDbEntity());
         String correlatedTableAlias = context.getTableAlias(
                 correlatedEntityId,
                 correlatedTableName);
@@ -266,10 +265,9 @@ public class EJBQLConditionTranslator ex
 
         context.append(" EXISTS (SELECT 1 FROM ");
 
-        String subqueryTableName = targetDescriptor
+        String subqueryTableName = 
context.getQuotingSupport().generateTableName(targetDescriptor
                 .getEntity()
-                .getDbEntity()
-                .getFullyQualifiedName();
+                .getDbEntity());
         String subqueryRootAlias = context.getTableAlias(subqueryId, 
subqueryTableName);
 
         ObjRelationship relationship = (ObjRelationship) 
correlatedEntityDescriptor
@@ -294,10 +292,11 @@ public class EJBQLConditionTranslator ex
         DbRelationship correlatedJoinRelationship = 
context.getIncomingRelationships(
                 new EJBQLTableId(id)).get(0);
 
+        QuotingSupport quotingSupport = context.getQuotingSupport();
         for (DbJoin join : correlatedJoinRelationship.getJoins()) {
             context.append(' ').append(subqueryRootAlias).append('.').append(
                     join.getTargetName()).append(" = ");
-            
context.append(correlatedTableAlias).append('.').append(join.getSourceName());
+            
context.append(correlatedTableAlias).append('.').append(quotingSupport.generateColumnName(join.getSource()));
             context.append(" AND");
         }
 
@@ -321,8 +320,8 @@ public class EJBQLConditionTranslator ex
         // reverse order to get the nearest to the correlated of the direct 
relation
         for (int i = dbRelationships.size() - 1; i > 0; i--) {
             DbRelationship dbRelationship = dbRelationships.get(i);
-            String subqueryTargetTableName = ((DbEntity) 
dbRelationship.getTargetEntity())
-                    .getFullyQualifiedName();
+            String subqueryTargetTableName = 
context.getQuotingSupport().generateTableName(
+                    (DbEntity) dbRelationship.getTargetEntity());
             String subqueryTargetAlias;
             if (i == dbRelationships.size() - 1) {
                 subqueryTargetAlias = subqueryRootAlias;
@@ -337,8 +336,8 @@ public class EJBQLConditionTranslator ex
 
             context.append(" JOIN ");
 
-            String subquerySourceTableName = ((DbEntity) 
dbRelationship.getSourceEntity())
-                    .getFullyQualifiedName();
+            String subquerySourceTableName = 
context.getQuotingSupport().generateTableName(
+                    (DbEntity) dbRelationship.getSourceEntity());
             String subquerySourceAlias = context.getTableAlias(
                     subquerySourceTableName,
                     subquerySourceTableName);
@@ -647,14 +646,13 @@ public class EJBQLConditionTranslator ex
         }
 
         DbEntity table = descriptor.getEntity().getDbEntity();
-        String alias = context.getTableAlias(expression.getText(), table
-                .getFullyQualifiedName());
+        String alias = context.getTableAlias(expression.getText(), 
context.getQuotingSupport().generateTableName(table));
 
         Collection<DbAttribute> pks = table.getPrimaryKeys();
 
         if (pks.size() == 1) {
             DbAttribute pk = pks.iterator().next();
-            context.append(' ').append(alias).append('.').append(pk.getName());
+            context.append(' 
').append(alias).append('.').append(context.getQuotingSupport().generateColumnName(pk));
         }
         else {
             throw new EJBQLException(

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLDbPathTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLDbPathTranslator.java?rev=1449473&r1=1449472&r2=1449473&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLDbPathTranslator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLDbPathTranslator.java
 Sun Feb 24 13:03:25 2013
@@ -114,7 +114,7 @@ public abstract class EJBQLDbPathTransla
 
         if (oldPath != null) {
             this.idPath = oldPath;
-            this.lastAlias = context.getTableAlias(oldPath, 
currentEntity.getFullyQualifiedName());
+            this.lastAlias = context.getTableAlias(oldPath, 
context.getQuotingSupport().generateTableName(currentEntity));
         }
         else {
 
@@ -124,7 +124,8 @@ public abstract class EJBQLDbPathTransla
                         joinMarker,
                         new EJBQLTableId(idPath),
                         new EJBQLTableId(fullPath));
-                this.lastAlias = context.getTableAlias(fullPath, 
currentEntity.getFullyQualifiedName());
+                this.lastAlias = context.getTableAlias(fullPath, 
context.getQuotingSupport().generateTableName(
+                        currentEntity));
             }
             else {
                 joinAppender.appendOuterJoin(
@@ -136,7 +137,8 @@ public abstract class EJBQLDbPathTransla
                         .getRelationship(lastPathComponent);
                 DbEntity targetEntity = (DbEntity) 
lastRelationship.getTargetEntity();
 
-                this.lastAlias = context.getTableAlias(fullPath, 
targetEntity.getFullyQualifiedName());
+                this.lastAlias = context.getTableAlias(fullPath, 
context.getQuotingSupport().generateTableName(
+                        targetEntity));
             }
 
             this.idPath = newPath;
@@ -184,11 +186,12 @@ public abstract class EJBQLDbPathTransla
         if (isUsingAliases()) {
             String alias = this.lastAlias != null ? lastAlias : 
context.getTableAlias(
                     idPath,
-                    table.getFullyQualifiedName());
-            context.append(' 
').append(alias).append('.').append(attribute.getName());
+                    context.getQuotingSupport().generateTableName(table));
+            context.append(' ').append(alias).append('.')
+                    
.append(context.getQuotingSupport().generateColumnName(attribute));
         }
         else {
-            context.append(' ').append(attribute.getName());
+            context.append(' 
').append(context.getQuotingSupport().generateColumnName(attribute));
         }
     }
 
@@ -203,7 +206,7 @@ public abstract class EJBQLDbPathTransla
 
             String alias = this.lastAlias != null ? lastAlias : 
context.getTableAlias(
                     idPath,
-                    table.getFullyQualifiedName());
+                    context.getQuotingSupport().generateTableName(table));
 
             Collection<DbAttribute> pks = table.getPrimaryKeys();
 
@@ -213,7 +216,7 @@ public abstract class EJBQLDbPathTransla
                 if (isUsingAliases()) {
                     context.append(alias).append('.');
                 }
-                context.append(pk.getName());
+                
context.append(context.getQuotingSupport().generateColumnName(pk));
             }
             else {
                 throw new EJBQLException(
@@ -227,7 +230,7 @@ public abstract class EJBQLDbPathTransla
 
             String alias = this.lastAlias != null ? lastAlias : 
context.getTableAlias(
                     idPath,
-                    table.getFullyQualifiedName());
+                    context.getQuotingSupport().generateTableName(table));
 
             List<DbJoin> joins = relationship.getJoins();
 
@@ -237,7 +240,7 @@ public abstract class EJBQLDbPathTransla
                 if (isUsingAliases()) {
                     context.append(alias).append('.');
                 }
-                context.append(join.getSourceName());
+                
context.append(context.getQuotingSupport().generateColumnName(join.getSource()));
             }
             else {
                 Map<String, String> multiColumnMatch = new HashMap<String, 
String>(joins

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java?rev=1449473&r1=1449472&r2=1449473&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLGroupByTranslator.java
 Sun Feb 24 13:03:25 2013
@@ -76,7 +76,8 @@ class EJBQLGroupByTranslator extends EJB
                 String idVariableAbsolutePath = fullPath + "." + 
expression.getText();
                 ClassDescriptor descriptor = 
context.getEntityDescriptor(idVariableAbsolutePath);
                 if (descriptor != null) {
-                    this.lastAlias = 
context.getTableAlias(idVariableAbsolutePath, 
descriptor.getEntity().getDbEntity().getFullyQualifiedName());
+                    this.lastAlias = 
context.getTableAlias(idVariableAbsolutePath,
+                            
context.getQuotingSupport().generateTableName(descriptor.getEntity().getDbEntity()));
                 }
 
                 this.lastPathComponent = expression.getText();
@@ -99,7 +100,7 @@ class EJBQLGroupByTranslator extends EJB
                 
 
                 String alias = this.lastAlias != null ? lastAlias : context
-                        .getTableAlias(idPath, table.getFullyQualifiedName());
+                        .getTableAlias(idPath, 
context.getQuotingSupport().generateTableName(table));
 
                 boolean first = true;
                 while (it.hasNext()) {
@@ -107,7 +108,7 @@ class EJBQLGroupByTranslator extends EJB
                     context.append(!first ? ", " : " ");
 
                     DbAttribute dbAttribute = it.next();
-                    
context.append(alias).append('.').append(dbAttribute.getName());
+                    
context.append(alias).append('.').append(context.getQuotingSupport().generateColumnName(dbAttribute));
 
                     first = false;
                 }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLIdentifierColumnsTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLIdentifierColumnsTranslator.java?rev=1449473&r1=1449472&r2=1449473&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLIdentifierColumnsTranslator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLIdentifierColumnsTranslator.java
 Sun Feb 24 13:03:25 2013
@@ -235,8 +235,8 @@ class EJBQLIdentifierColumnsTranslator e
             String javaType) {
 
         DbEntity table = (DbEntity) column.getEntity();
-        String alias = context.getTableAlias(identifier, 
table.getFullyQualifiedName());
-        String columnName = alias + "." + column.getName();
+        String alias = context.getTableAlias(identifier, 
context.getQuotingSupport().generateTableName(table));
+        String columnName = alias + "." + 
context.getQuotingSupport().generateColumnName(column);
 
         Set<String> columns = getColumns();
 

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java?rev=1449473&r1=1449472&r2=1449473&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLJoinAppender.java
 Sun Feb 24 13:03:25 2013
@@ -24,6 +24,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.cayenne.dba.QuotingSupport;
 import org.apache.cayenne.ejbql.EJBQLBaseVisitor;
 import org.apache.cayenne.ejbql.EJBQLException;
 import org.apache.cayenne.ejbql.EJBQLExpression;
@@ -110,7 +111,7 @@ public class EJBQLJoinAppender {
         String tableName;
 
         if (sourceEntity instanceof DbEntity) {
-            tableName = ((DbEntity) sourceEntity).getFullyQualifiedName();
+            tableName = 
context.getQuotingSupport().generateTableName((DbEntity) sourceEntity);
         }
         else {
             tableName = sourceEntity.getName();
@@ -134,14 +135,14 @@ public class EJBQLJoinAppender {
                 for (int i = 1; i < joinRelationships.size(); i++) {
                     DbRelationship dbRelationship = joinRelationships.get(i);
 
-                    String subquerySourceTableName = ((DbEntity)dbRelationship
-                            .getSourceEntity())
-                            .getFullyQualifiedName();
+                    String subquerySourceTableName = 
context.getQuotingSupport().generateTableName((DbEntity) dbRelationship
+                            .getSourceEntity());
                     String subquerySourceAlias = context.getTableAlias(
                             subquerySourceTableName,
                             subquerySourceTableName);
 
-                    String subqueryTargetTableName = 
((DbEntity)dbRelationship.getTargetEntity()).getFullyQualifiedName();
+                    String subqueryTargetTableName = 
context.getQuotingSupport().generateTableName(
+                            (DbEntity) dbRelationship.getTargetEntity());
                     
                     String subqueryTargetAlias = "";
                     if(i==joinRelationships.size()-1){
@@ -195,6 +196,7 @@ public class EJBQLJoinAppender {
             String sourceAlias,
             String targetAlias) {
         context.append(" ON (");
+        QuotingSupport quotingSupport = context.getQuotingSupport();
 
         Iterator<DbJoin> it = incomingDB.getJoins().iterator();
         if (it.hasNext()) {
@@ -202,11 +204,11 @@ public class EJBQLJoinAppender {
             context
                     .append(sourceAlias)
                     .append('.')
-                    .append(dbJoin.getSourceName())
+                    
.append(quotingSupport.generateColumnName(dbJoin.getSource()))
                     .append(" = ")
                     .append(targetAlias)
                     .append('.')
-                    .append(dbJoin.getTargetName());
+                    
.append(quotingSupport.generateColumnName(dbJoin.getTarget()));
         }
 
         while (it.hasNext()) {
@@ -215,11 +217,11 @@ public class EJBQLJoinAppender {
             context
                     .append(sourceAlias)
                     .append('.')
-                    .append(dbJoin.getSourceName())
+                    
.append(quotingSupport.generateColumnName(dbJoin.getSource()))
                     .append(" = ")
                     .append(targetAlias)
                     .append('.')
-                    .append(dbJoin.getTargetName());
+                    
.append(quotingSupport.generateColumnName(dbJoin.getTarget()));
         }
 
         context.append(")");
@@ -228,8 +230,9 @@ public class EJBQLJoinAppender {
     public String appendTable(EJBQLTableId id) {
 
         DbEntity dbEntity = id.getDbEntity(context);
-        
-        String tableName = dbEntity.getFullyQualifiedName();
+
+        String tableName = 
context.getQuotingSupport().generateTableName(dbEntity);
+
         String alias;
 
         if (context.isUsingAliases()) {
@@ -329,13 +332,16 @@ public class EJBQLJoinAppender {
                         if (next instanceof DbRelationship) {
                             DbRelationship rel = (DbRelationship) next;
                             context.append(" LEFT OUTER JOIN ");
-                            String targetEntityName = 
((DbEntity)rel.getTargetEntity()).getFullyQualifiedName();
+                            String targetEntityName = 
context.getQuotingSupport().generateTableName(
+                                    (DbEntity) rel.getTargetEntity());
                             String subqueryTargetAlias = 
context.getTableAlias(id
                                     .getEntityId(), targetEntityName);
                             context.append(targetEntityName).append(' 
').append(
                                     subqueryTargetAlias);
                             generateJoiningExpression(rel, 
context.getTableAlias(id
-                                    .getEntityId(), 
((DbEntity)rel.getSourceEntity()).getFullyQualifiedName()), 
subqueryTargetAlias);
+                                    .getEntityId(),
+                                    
context.getQuotingSupport().generateTableName((DbEntity) 
rel.getSourceEntity())),
+                                    subqueryTargetAlias);
                         }
 
                     }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java?rev=1449473&r1=1449472&r2=1449473&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLPathTranslator.java
 Sun Feb 24 13:03:25 2013
@@ -24,6 +24,7 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.cayenne.dba.QuotingSupport;
 import org.apache.cayenne.ejbql.EJBQLBaseVisitor;
 import org.apache.cayenne.ejbql.EJBQLException;
 import org.apache.cayenne.ejbql.EJBQLExpression;
@@ -125,15 +126,12 @@ public abstract class EJBQLPathTranslato
             if (lastRelationship != null) {
                 ObjEntity targetEntity = (ObjEntity) 
lastRelationship.getTargetEntity();
 
-                this.lastAlias = context.getTableAlias(fullPath, targetEntity
-                        .getDbEntity()
-                        .getFullyQualifiedName());
+                this.lastAlias = context.getTableAlias(fullPath, 
context.getQuotingSupport().generateTableName(
+                        targetEntity.getDbEntity()));
             }
             else {
-                this.lastAlias = context.getTableAlias(oldPath, currentEntity
-                        .getDbEntity()
-                        .getFullyQualifiedName());
-
+                String tableName = 
context.getQuotingSupport().generateTableName(currentEntity.getDbEntity());
+                this.lastAlias = context.getTableAlias(oldPath, tableName);
             }
         }
         else {
@@ -163,9 +161,8 @@ public abstract class EJBQLPathTranslato
 
             }
 
-            this.lastAlias = context.getTableAlias(fullPath, targetEntity
-                    .getDbEntity()
-                    .getFullyQualifiedName());
+            this.lastAlias = context.getTableAlias(fullPath, 
context.getQuotingSupport().generateTableName(
+                    targetEntity.getDbEntity()));
 
             this.idPath = newPath;
         }
@@ -206,7 +203,8 @@ public abstract class EJBQLPathTranslato
     }
 
     protected void processTerminatingAttribute(ObjAttribute attribute) {
-        
+        QuotingSupport quotingSupport = context.getQuotingSupport();
+
         DbEntity table = null;
         Iterator<?> it = attribute.getDbPathIterator();
         while (it.hasNext()) {
@@ -219,12 +217,12 @@ public abstract class EJBQLPathTranslato
         if (isUsingAliases()) {
             String alias = this.lastAlias != null ? lastAlias : 
context.getTableAlias(
                     idPath,
-                    table.getFullyQualifiedName());
+                    quotingSupport.generateTableName(table));
             context.append(' ').append(alias).append('.').append(
-                    attribute.getDbAttributeName());
+                    
quotingSupport.generateColumnName(attribute.getDbAttribute()));
         }
         else {
-            context.append(' ').append(attribute.getDbAttributeName());
+            context.append(' 
').append(context.getQuotingSupport().generateColumnName(attribute.getDbAttribute()));
         }
     }
 
@@ -244,7 +242,7 @@ public abstract class EJBQLPathTranslato
 
             String alias = this.lastAlias != null ? lastAlias : 
context.getTableAlias(
                     idPath,
-                    table.getFullyQualifiedName());
+                    context.getQuotingSupport().generateTableName(table));
 
             Collection<DbAttribute> pks = table.getPrimaryKeys();
 
@@ -254,7 +252,7 @@ public abstract class EJBQLPathTranslato
                 if (isUsingAliases()) {
                     context.append(alias).append('.');
                 }
-                context.append(pk.getName());
+                
context.append(context.getQuotingSupport().generateColumnName(pk));
             }
             else {
                 throw new EJBQLException(
@@ -270,7 +268,7 @@ public abstract class EJBQLPathTranslato
 
             String alias = this.lastAlias != null ? lastAlias : 
context.getTableAlias(
                     idPath,
-                    table.getFullyQualifiedName());
+                    context.getQuotingSupport().generateTableName(table));
 
             List<DbJoin> joins = dbRelationship.getJoins();
 
@@ -280,7 +278,7 @@ public abstract class EJBQLPathTranslato
                 if (isUsingAliases()) {
                     context.append(alias).append('.');
                 }
-                context.append(join.getSourceName());
+                
context.append(context.getQuotingSupport().generateColumnName(join.getSource()));
             }
             else {
                 Map<String, String> multiColumnMatch = new HashMap<String, 
String>(joins

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java?rev=1449473&r1=1449472&r2=1449473&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLSelectColumnsTranslator.java
 Sun Feb 24 13:03:25 2013
@@ -96,7 +96,7 @@ public class EJBQLSelectColumnsTranslato
                 }
 
                 String alias = this.lastAlias != null ? lastAlias : context
-                        .getTableAlias(idPath, table.getFullyQualifiedName());
+                        .getTableAlias(idPath, 
context.getQuotingSupport().generateTableName(table));
 
                 boolean first = true;
                 while (it.hasNext()) {
@@ -119,7 +119,7 @@ public class EJBQLSelectColumnsTranslato
             protected void processTerminatingAttribute(ObjAttribute attribute) 
{
                 DbEntity table = currentEntity.getDbEntity();
                 String alias = this.lastAlias != null ? lastAlias : context
-                        .getTableAlias(idPath, table.getFullyQualifiedName());
+                        .getTableAlias(idPath, 
context.getQuotingSupport().generateTableName(table));
                 if (attribute.isFlattened()) {
                     Iterator<?> dbPathIterator = attribute.getDbPathIterator();
                     EJBQLTableId lhsId = new EJBQLTableId(idPath);
@@ -139,7 +139,8 @@ public class EJBQLSelectColumnsTranslato
                                     attribute.getType(),
                                     context.getTableAlias(
                                             lhsId.getEntityId(),
-                                            dbAttribute.getEntity().getName()),
+                                            context.getQuotingSupport()
+                                                    
.generateTableName((DbEntity) dbAttribute.getEntity())),
                                     dbAttribute,
                                     context.isAppendingResultColumns() ? 
context
                                             .nextColumnAlias() : "");
@@ -182,7 +183,7 @@ public class EJBQLSelectColumnsTranslato
             context.append(' ');
         }
 
-        context.append(alias).append('.').append(dbAttribute.getName());
+        
context.append(alias).append('.').append(context.getQuotingSupport().generateColumnName(dbAttribute));
 
         if (context.isAppendingResultColumns()) {
             // String columnAlias = context.nextColumnAlias();

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLTranslationContext.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLTranslationContext.java?rev=1449473&r1=1449472&r2=1449473&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLTranslationContext.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/EJBQLTranslationContext.java
 Sun Feb 24 13:03:25 2013
@@ -24,6 +24,8 @@ import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.cayenne.dba.JdbcAdapter;
+import org.apache.cayenne.dba.QuotingSupport;
 import org.apache.cayenne.ejbql.EJBQLCompiledExpression;
 import org.apache.cayenne.ejbql.EJBQLException;
 import org.apache.cayenne.map.DbEntity;
@@ -47,6 +49,7 @@ public class EJBQLTranslationContext {
     protected Map<String, Object> namedParameters;
     protected Map<Integer, Object> positionalParameters;
     private EJBQLTranslatorFactory translatorFactory;
+    private QuotingSupport quotingSupport;
     private EntityResolver entityResolver;
     private List<Object> resultSetMetadata;
 
@@ -81,6 +84,9 @@ public class EJBQLTranslationContext {
         this.usingAliases = true;
         this.caseInsensitive = false;
         this.queryMetadata = query.getMetaData(entityResolver);
+
+        this.quotingSupport = ((JdbcEJBQLTranslatorFactory) 
translatorFactory).getQuotingSupport();
+
         // buffer stack will hold named buffers during translation in the 
order they were
         // requested
         this.bufferStack = new ArrayList<StringBuilder>();
@@ -438,6 +444,10 @@ public class EJBQLTranslationContext {
         this.caseInsensitive = caseInsensitive;
     }
 
+    public QuotingSupport getQuotingSupport() {
+        return this.quotingSupport;
+    }
+
     public void onSubselect() {
         subselectCount++;
     }

Modified: 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/JdbcEJBQLTranslatorFactory.java
URL: 
http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/JdbcEJBQLTranslatorFactory.java?rev=1449473&r1=1449472&r2=1449473&view=diff
==============================================================================
--- 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/JdbcEJBQLTranslatorFactory.java
 (original)
+++ 
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/jdbc/JdbcEJBQLTranslatorFactory.java
 Sun Feb 24 13:03:25 2013
@@ -18,6 +18,9 @@
  ****************************************************************/
 package org.apache.cayenne.access.jdbc;
 
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.DefaultQuotingStrategy;
+import org.apache.cayenne.dba.QuotingSupport;
 import org.apache.cayenne.ejbql.EJBQLExpressionVisitor;
 
 /**
@@ -31,6 +34,20 @@ public class JdbcEJBQLTranslatorFactory 
     
     protected boolean caseInsensitive = false;
 
+    protected QuotingSupport quotingSupport;
+
+    public JdbcEJBQLTranslatorFactory() {
+        initQuoting();
+    }
+
+    protected void initQuoting() {
+        quotingSupport = new QuotingSupport(new DefaultQuotingStrategy());
+    }
+
+    public QuotingSupport getQuotingSupport() {
+        return this.quotingSupport;
+    }
+
     public EJBQLJoinAppender getJoinAppender(EJBQLTranslationContext context) {
         EJBQLJoinAppender appender = (EJBQLJoinAppender) context
                 .getAttribute(JOIN_APPENDER_KEY);


Reply via email to