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/06/16 23:38:08 UTC

svn commit: r414933 - /db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/FieldDescriptor.java

Author: arminw
Date: Fri Jun 16 14:38:08 2006
New Revision: 414933

URL: http://svn.apache.org/viewvc?rev=414933&view=rev
Log:
add new methods to improve support for advanced jdbc data types (like JAVA_OBJECT) and ease read in of result set columns

Modified:
    db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/FieldDescriptor.java

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/FieldDescriptor.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/FieldDescriptor.java?rev=414933&r1=414932&r2=414933&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/FieldDescriptor.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/FieldDescriptor.java Fri Jun 16 14:38:08 2006
@@ -16,6 +16,8 @@
  */
 
 import java.io.Serializable;
+import java.sql.CallableStatement;
+import java.sql.SQLException;
 import java.sql.Types;
 import java.util.Comparator;
 
@@ -24,10 +26,12 @@
 import org.apache.commons.lang.builder.ToStringBuilder;
 import org.apache.commons.lang.builder.ToStringStyle;
 import org.apache.ojb.broker.OJBRuntimeException;
-import org.apache.ojb.broker.accesslayer.conversions.FieldConversion;
-import org.apache.ojb.broker.metadata.fieldaccess.AnonymousPersistentField;
+import org.apache.ojb.broker.PersistenceBroker;
 import org.apache.ojb.broker.accesslayer.NullCheck;
 import org.apache.ojb.broker.accesslayer.NullCheckDefaultImpl;
+import org.apache.ojb.broker.accesslayer.ResultSetAndStatement;
+import org.apache.ojb.broker.accesslayer.conversions.FieldConversion;
+import org.apache.ojb.broker.metadata.fieldaccess.AnonymousPersistentField;
 import org.apache.ojb.broker.util.ClassHelper;
 
 /**
@@ -542,6 +546,73 @@
     public boolean isLobFieldType()
     {
         return getJdbcType().getFieldType().isLobField();
+    }
+
+
+    /**
+     * Reads in the value of the field/column represented by this <code>FieldDescriptor</code>.
+     *
+     * @param rs_stmt The current used {@link org.apache.ojb.broker.accesslayer.ResultSetAndStatement} instance.
+     * @param convert If set <em>true</em> a
+     * {@link org.apache.ojb.broker.accesslayer.conversions.FieldConversion#sqlToJava(Object)} conversion call
+     * is done.
+     * @return The read in value of this field.
+     * @throws SQLException
+     */
+    public Object readValue(final ResultSetAndStatement rs_stmt, boolean convert)
+            throws SQLException
+    {
+        int idx = rs_stmt.m_sql.getColumnIndex(this);
+        return readValue(rs_stmt, idx, convert);
+    }
+
+    /**
+     * Reads in the value of the field/column represented by this <code>FieldDescriptor</code>.
+     *
+     * @param rs_stmt The current used {@link org.apache.ojb.broker.accesslayer.ResultSetAndStatement} instance.
+     * @param index The result set column index.
+     * @param convert If set <em>true</em> a
+     * {@link org.apache.ojb.broker.accesslayer.conversions.FieldConversion#sqlToJava(Object)} conversion call
+     * is done.
+     * @return The read in value of this field.
+     * @throws SQLException
+     */
+    public Object readValue(final ResultSetAndStatement rs_stmt, int index, boolean convert)
+            throws SQLException
+    {
+        Object val = getJdbcType().getObjectFromColumn(rs_stmt.m_rs, null, getColumnName(), index);
+        val = rs_stmt.m_platform.postPrepareReadInValue(this, val);
+        if(convert) val = getFieldConversion().sqlToJava(val);
+        if(isLobFieldType())
+        {
+            val = rs_stmt.m_broker.serviceLobHelper().wrapLobField(this, val);
+        }
+        return val;
+    }
+
+    /**
+     * Reads in the value of the field/column represented by this <code>FieldDescriptor</code>.
+     *
+     * @param broker The current used <code>PersistenceBroker</code>.
+     * @param stmt The current used <code>CallableStatement</code>.
+     * @param index The result set column index.
+     * @param convert If set <em>true</em> a
+     * {@link org.apache.ojb.broker.accesslayer.conversions.FieldConversion#sqlToJava(Object)} conversion call
+     * is done.
+     * @return The read in value of this field.
+     * @throws SQLException
+     */
+    public Object readValue(final PersistenceBroker broker, final CallableStatement stmt, int index, boolean convert)
+            throws SQLException
+    {
+        Object val = getJdbcType().getObjectFromColumn(stmt, index);
+        val = broker.serviceConnectionManager().getSupportedPlatform().postPrepareReadInValue(this, val);
+        if(convert) val = getFieldConversion().sqlToJava(val);
+        if(isLobFieldType())
+        {
+            val = broker.serviceLobHelper().wrapLobField(this, val);
+        }
+        return val;
     }
 
     /*



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