You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2006/01/21 18:17:29 UTC

svn commit: r371086 - in /db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer: JdbcAccessImpl.java RowReaderDefaultImpl.java sql/SelectStatement.java sql/SqlSelectStatement.java

Author: arminw
Date: Sat Jan 21 09:17:19 2006
New Revision: 371086

URL: http://svn.apache.org/viewcvs?rev=371086&view=rev
Log:
fix OJB-91

Modified:
    db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
    db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java
    db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SelectStatement.java
    db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java?rev=371086&r1=371085&r2=371086&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java Sat Jan 21 09:17:19 2006
@@ -371,6 +371,11 @@
                 {
                     return sql;
                 }
+
+                public boolean isUseOjbClassColumn()
+                {
+                    return false;
+                }
             });
         }
         catch (PersistenceBrokerException e)

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java?rev=371086&r1=371085&r2=371086&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java Sat Jan 21 09:17:19 2006
@@ -38,6 +38,7 @@
      * Used as key in result set row map.
      */
     private static final String OJB_CONCRETE_CLASS_KEY = "ojbTemporaryNoneColumnKey";
+    public static final String OJB_CLASS_COLUMN_USED = "ojbClassColumunUsed42";
     /**
      * represents a zero sized parameter array
      */
@@ -192,7 +193,7 @@
             }
             else
             {
-                String ojbClass = SqlHelper.getOjbClassName(rs_stmt.m_rs);
+                String ojbClass = getOJBClassColumnName(rs_stmt);
                 if (ojbClass != null)
                 {
                     ClassDescriptor cld = m_cld.getRepository().getDescriptorFor(ojbClass);
@@ -214,7 +215,8 @@
      */
     public void readPkValuesFrom(ResultSetAndStatement rs_stmt, Map row)
     {
-        String ojbClass = SqlHelper.getOjbClassName(rs_stmt.m_rs);
+
+        String ojbClass = getOJBClassColumnName(rs_stmt);
         ClassDescriptor cld;
         
         if (ojbClass != null)
@@ -321,5 +323,19 @@
     public ClassDescriptor getClassDescriptor()
     {
         return m_cld;
+    }
+
+    private String getOJBClassColumnName(ResultSetAndStatement rsAndStmt)
+    {
+        String result = null;
+        if(rsAndStmt.m_sql != null)
+        {
+            boolean b = rsAndStmt.m_sql.isUseOjbClassColumn();
+            if(b)
+            {
+                result = SqlHelper.getOjbClassName(rsAndStmt.m_rs);
+            }
+        }
+        return result;
     }
 }

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SelectStatement.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SelectStatement.java?rev=371086&r1=371085&r2=371086&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SelectStatement.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SelectStatement.java Sat Jan 21 09:17:19 2006
@@ -43,4 +43,12 @@
      * column index is not supported.
      */
     public int getColumnIndex(FieldDescriptor fld);
+
+    /**
+     * If "table-per-subclass"-inheritance is used for the class specified in
+     * the {@link org.apache.ojb.broker.query.Query} the name of the "real" class to
+     * instantiate for each row of the result set was hold by a pseudo column - In this
+     * case this method returns <em>true</em>.
+     */
+    public boolean isUseOjbClassColumn();
 }

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java
URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java?rev=371086&r1=371085&r2=371086&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java Sat Jan 21 09:17:19 2006
@@ -44,6 +44,7 @@
 public class SqlSelectStatement extends SqlQueryStatement implements SelectStatement
 {
     private WeakReference fieldsForSelect;
+    private boolean useOjbClassColumn;
 
     /**
      * Constructor for SqlSelectStatement.
@@ -178,6 +179,8 @@
         }
         buf.append(" ELSE '").append(cld.getClassNameOfObject()).append("'");
         buf.append(" END AS " + SqlHelper.OJB_CLASS_COLUMN);
+        // signal the use of the ojbClassColumn
+        setUseOjbClassColumn(true);
     }
     
     /**
@@ -475,5 +478,15 @@
             }
         }
         return index;
+    }
+
+    public boolean isUseOjbClassColumn()
+    {
+        return useOjbClassColumn;
+    }
+
+    protected void setUseOjbClassColumn(boolean useOjbClassColumn)
+    {
+        this.useOjbClassColumn = useOjbClassColumn;
     }
 }



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