You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2012/10/31 07:12:45 UTC

svn commit: r1403997 - in /db/torque/torque4/trunk/torque-runtime/src: main/java/org/apache/torque/map/ main/java/org/apache/torque/util/ test/java/org/apache/torque/util/

Author: tfischer
Date: Wed Oct 31 06:12:45 2012
New Revision: 1403997

URL: http://svn.apache.org/viewvc?rev=1403997&view=rev
Log:
TORQUE-241 fix issues with fully qualified table names in schema,xml

Modified:
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/map/ColumnMap.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/map/TableMap.java
    db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/BasePeerImpl.java
    db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/util/BasePeerImplTest.java

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/map/ColumnMap.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/map/ColumnMap.java?rev=1403997&r1=1403996&r2=1403997&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/map/ColumnMap.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/map/ColumnMap.java Wed Oct 31 06:12:45 2012
@@ -683,7 +683,7 @@ public class ColumnMap implements Column
      */
     public String getSqlExpression()
     {
-        return table.getName() + '.' + columnName;
+        return table.getFullyQualifiedTableName() + '.' + columnName;
     }
 
     @Override

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/map/TableMap.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/map/TableMap.java?rev=1403997&r1=1403996&r2=1403997&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/map/TableMap.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/map/TableMap.java Wed Oct 31 06:12:45 2012
@@ -52,6 +52,9 @@ public class TableMap implements Seriali
      */
     private static final long serialVersionUID = 1L;
 
+    /** The dot String. */
+    private static final String DOT = ".";
+
     /** The columns in the table. XML Order is preserved. */
     private final Map<String, ColumnMap> columns
             = Collections.synchronizedMap(
@@ -151,7 +154,7 @@ public class TableMap implements Seriali
         {
             throw new NullPointerException("tableName must not be null");
         }
-        int dotIndex = tableName.indexOf(".");
+        int dotIndex = tableName.indexOf(DOT);
         if (dotIndex != -1)
         {
             this.schemaName = tableName.substring(0, dotIndex);
@@ -254,6 +257,21 @@ public class TableMap implements Seriali
     }
 
     /**
+     * Returns the fully qualified table name, if available.
+     *
+     * @return the fully qualified table name, if a schema is set,
+     *         or just the table name if no schema is set, not null.
+     */
+    public String getFullyQualifiedTableName()
+    {
+        if (!StringUtils.isEmpty(schemaName))
+        {
+            return schemaName + DOT + tableName;
+        }
+        return tableName;
+    }
+
+    /**
      * Get the Java name of the table as defined in XML.
      *
      * @return A String with the Java name of the table.

Modified: db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/BasePeerImpl.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/BasePeerImpl.java?rev=1403997&r1=1403996&r2=1403997&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/BasePeerImpl.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/BasePeerImpl.java Wed Oct 31 06:12:45 2012
@@ -409,7 +409,7 @@ public class BasePeerImpl<T> implements 
         else
         {
             fullTableName = SqlBuilder.getFullTableName(
-                    tableMap.getName(),
+                    tableMap.getFullyQualifiedTableName(),
                     criteria.getDbName());
         }
         boolean ownTableAdded = false;
@@ -549,7 +549,7 @@ public class BasePeerImpl<T> implements 
         if (tableMap != null)
         {
             fullTableName = SqlBuilder.getFullTableName(
-                    tableMap.getName(),
+                    tableMap.getFullyQualifiedTableName(),
                     criteria.getDbName());
         }
         else
@@ -746,7 +746,7 @@ public class BasePeerImpl<T> implements 
         }
 
         String fullTableName = SqlBuilder.getFullTableName(
-                getTableMap().getName(),
+                getTableMap().getFullyQualifiedTableName(),
                 databaseNameFromInsertValues);
         StringBuilder query = new StringBuilder("INSERT INTO ")
             .append(fullTableName)
@@ -1389,7 +1389,7 @@ public class BasePeerImpl<T> implements 
         if (query.getFromClause().isEmpty())
         {
             String tableName = SqlBuilder.getFullTableName(
-                    getTableMap().getName(),
+                    getTableMap().getFullyQualifiedTableName(),
                     criteria.getDbName());
             query.getFromClause().add(new FromElement(tableName));
         }
@@ -1537,7 +1537,7 @@ public class BasePeerImpl<T> implements 
         if (query.getFromClause().isEmpty())
         {
             String tableName = SqlBuilder.getFullTableName(
-                    getTableMap().getName(),
+                    getTableMap().getFullyQualifiedTableName(),
                     criteria.getDbName());
             query.getFromClause().add(new FromElement(tableName));
         }
@@ -1940,7 +1940,7 @@ public class BasePeerImpl<T> implements 
 
         query.getFromClause().clear();
         String fullTableName = SqlBuilder.getFullTableName(
-                getTableMap().getName(),
+                getTableMap().getFullyQualifiedTableName(),
                 criteria.getDbName());
         query.getFromClause().add(new FromElement(fullTableName));
 
@@ -2037,7 +2037,7 @@ public class BasePeerImpl<T> implements 
 
         query.getFromClause().clear();
         String fullTableName = SqlBuilder.getFullTableName(
-                getTableMap().getName(),
+                getTableMap().getFullyQualifiedTableName(),
                 criteria.getDbName());
         query.getFromClause().add(new FromElement(fullTableName));
 

Modified: db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/util/BasePeerImplTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/util/BasePeerImplTest.java?rev=1403997&r1=1403996&r2=1403997&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/util/BasePeerImplTest.java (original)
+++ db/torque/torque4/trunk/torque-runtime/src/test/java/org/apache/torque/util/BasePeerImplTest.java Wed Oct 31 06:12:45 2012
@@ -31,10 +31,16 @@ import java.sql.ResultSet;
 import java.util.List;
 
 import org.apache.torque.BaseTestCase;
+import org.apache.torque.Torque;
 import org.apache.torque.criteria.Criteria;
+import org.apache.torque.map.ColumnMap;
+import org.apache.torque.map.DatabaseMap;
+import org.apache.torque.map.TableMap;
 import org.apache.torque.om.mapper.CompositeMapper;
 import org.apache.torque.om.mapper.IntegerMapper;
 import org.apache.torque.om.mapper.StringMapper;
+import org.apache.torque.sql.Query;
+import org.apache.torque.sql.SqlBuilder;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
@@ -46,7 +52,7 @@ import org.mockito.MockitoAnnotations;
 public class BasePeerImplTest extends BaseTestCase
 {
     /** System under test. */
-    private BasePeerImpl basePeerImpl;
+    private BasePeerImpl<?> basePeerImpl;
 
     /** Mock db connection. */
     @Mock
@@ -63,13 +69,15 @@ public class BasePeerImplTest extends Ba
     @Override
     public void setUp() throws Exception
     {
-        basePeerImpl = new BasePeerImpl();
+        basePeerImpl = new BasePeerImpl<Object>();
         super.setUp();
         basePeerImpl.setTableMap(tableMap);
+        basePeerImpl.setDatabaseName("databaseName");
         MockitoAnnotations.initMocks(this);
         when(connection.prepareStatement((String) any()))
                 .thenReturn(preparedStatement);
         when(preparedStatement.executeQuery()).thenReturn(resultSet);
+        when(preparedStatement.executeUpdate()).thenReturn(1);
     }
 
     /**
@@ -106,7 +114,7 @@ public class BasePeerImplTest extends Ba
         verify(resultSet).close();
         verifyNoMoreInteractions(connection, preparedStatement, resultSet);
         // verify result
-        assertEquals(1, result.size()); // one rwow
+        assertEquals(1, result.size()); // one row
         assertEquals(2, result.get(0).size()); // two columns
         assertEquals("fd", result.get(0).get(0));
         assertEquals(23, result.get(0).get(1));
@@ -128,4 +136,35 @@ public class BasePeerImplTest extends Ba
         basePeerImpl.doSelect(criteria, new IntegerMapper(), connection);
         verify(preparedStatement).setFetchSize(13);
     }
+
+    public void testDeleteWithQualifiedTableName()
+            throws Exception
+    {
+        // prepare
+        DatabaseMap fullyQualifiedDatatabaseMap
+            = Torque.getDatabaseMap("fullyQualifiedDatatabaseMap");
+        TableMap tableMap = new TableMap(
+                "schema.fully_qualified_table",
+                fullyQualifiedDatatabaseMap);
+        ColumnMap columnMap = new ColumnMap("column", tableMap);
+        basePeerImpl.setTableMap(tableMap);
+        Criteria criteria = new Criteria();
+        criteria.where(columnMap, 42);
+
+        // execute
+        int deleteCount = basePeerImpl.doDelete(criteria, connection);
+
+        // verify mock
+        verify(connection).prepareStatement(
+                "DELETE FROM schema.fully_qualified_table "
+                + "WHERE fully_qualified_table.column=?");
+        verify(preparedStatement).setInt(1, 42);
+        verify(preparedStatement).executeUpdate();
+        verify(preparedStatement).close();
+        verifyNoMoreInteractions(connection, preparedStatement, resultSet);
+
+        // verify result
+        assertEquals(1, deleteCount);
+    }
+
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org