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 [EMAIL PROTECTED] 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to