Return-Path: Delivered-To: apmail-db-ojb-dev-archive@www.apache.org Received: (qmail 99458 invoked from network); 16 Jun 2006 21:38:31 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 16 Jun 2006 21:38:31 -0000 Received: (qmail 70034 invoked by uid 500); 16 Jun 2006 21:38:30 -0000 Delivered-To: apmail-db-ojb-dev-archive@db.apache.org Received: (qmail 69888 invoked by uid 500); 16 Jun 2006 21:38:30 -0000 Mailing-List: contact ojb-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "OJB Developers List" Reply-To: "OJB Developers List" Delivered-To: mailing list ojb-dev@db.apache.org Received: (qmail 69877 invoked by uid 500); 16 Jun 2006 21:38:30 -0000 Received: (qmail 69871 invoked by uid 99); 16 Jun 2006 21:38:30 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Jun 2006 14:38:30 -0700 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received-SPF: pass (asf.osuosl.org: local policy) Received: from [140.211.166.113] (HELO eris.apache.org) (140.211.166.113) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 16 Jun 2006 14:38:29 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id 49D721A983A; Fri, 16 Jun 2006 14:38:09 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r414933 - /db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/FieldDescriptor.java Date: Fri, 16 Jun 2006 21:38:08 -0000 To: ojb-commits@db.apache.org From: arminw@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20060616213809.49D721A983A@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N 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 FieldDescriptor. + * + * @param rs_stmt The current used {@link org.apache.ojb.broker.accesslayer.ResultSetAndStatement} instance. + * @param convert If set true 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 FieldDescriptor. + * + * @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 true 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 FieldDescriptor. + * + * @param broker The current used PersistenceBroker. + * @param stmt The current used CallableStatement. + * @param index The result set column index. + * @param convert If set true 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