Tag: cws_src680_dba24d User: oj Date: 2007-11-06 09:04:05+0000 Modified: dba/connectivity/source/drivers/jdbc/makefile.mk dba/connectivity/source/drivers/jdbc/ResultSet.cxx dba/connectivity/source/drivers/jdbc/PreparedStatement.cxx dba/connectivity/source/drivers/jdbc/JStatement.cxx dba/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx
Log: #i51965# impl updateNumericObject and setObjectWithInfo File Changes: Directory: /dba/connectivity/source/drivers/jdbc/ ================================================= File [changed]: makefile.mk Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/jdbc/makefile.mk?r1=1.20&r2=1.20.54.1 Delta lines: +4 -3 ------------------- --- makefile.mk 2007-06-27 14:37:42+0000 1.20 +++ makefile.mk 2007-11-06 09:04:02+0000 1.20.54.1 @@ -4,9 +4,9 @@ # # $RCSfile: makefile.mk,v $ # -# $Revision: 1.20 $ +# $Revision: 1.20.54.1 $ # -# last change: $Author: hr $ $Date: 2007/06/27 14:37:42 $ +# last change: $Author: oj $ $Date: 2007/11/06 09:04:02 $ # # The Contents of this file are made available subject to # the terms of GNU Lesser General Public License Version 2.1. @@ -82,6 +82,7 @@ $(SLO)$/Throwable.obj \ $(SLO)$/Timestamp.obj \ $(SLO)$/jservices.obj \ + $(SLO)$/JBigDecimal.obj \ $(SLO)$/tools.obj SHL1VERSIONMAP=$(JDBC_TARGET).map File [changed]: ResultSet.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/jdbc/ResultSet.cxx?r1=1.31&r2=1.31.54.1 Delta lines: +42 -7 -------------------- --- ResultSet.cxx 2007-06-27 14:37:11+0000 1.31 +++ ResultSet.cxx 2007-11-06 09:04:02+0000 1.31.54.1 @@ -4,9 +4,9 @@ * * $RCSfile: ResultSet.cxx,v $ * - * $Revision: 1.31 $ + * $Revision: 1.31.54.1 $ * - * last change: $Author: hr $ $Date: 2007/06/27 14:37:11 $ + * last change: $Author: oj $ $Date: 2007/11/06 09:04:02 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -38,6 +38,7 @@ #ifndef _CONNECTIVITY_JAVA_SQL_RESULTSET_HXX_ #include "java/sql/ResultSet.hxx" #endif +#include "java/math/BigDecimal.hxx" #ifndef _CONNECTIVITY_JAVA_SQL_STATEMENT_HXX_ #include "java/sql/JStatement.hxx" #endif @@ -112,11 +113,12 @@ //************************************************************** jclass java_sql_ResultSet::theClass = 0; -java_sql_ResultSet::java_sql_ResultSet( JNIEnv * pEnv, jobject myObj, const java::sql::ConnectionLog& _rParentLogger, java_sql_Statement_Base* pStmt) +java_sql_ResultSet::java_sql_ResultSet( JNIEnv * pEnv, jobject myObj, const java::sql::ConnectionLog& _rParentLogger,java_sql_Connection& _rConnection, java_sql_Statement_Base* pStmt) :java_sql_ResultSet_BASE(m_aMutex) ,java_lang_Object( pEnv, myObj ) ,OPropertySetHelper(java_sql_ResultSet_BASE::rBHelper) ,m_aLogger( _rParentLogger, java::sql::ConnectionLog::RESULTSET ) + ,m_pConnection(&_rConnection) { SDBThreadAttach::addRef(); osl_incrementInterlockedCount(&m_refCount); @@ -510,7 +512,7 @@ } } - return out==0 ? 0 : new java_sql_ResultSetMetaData( t.pEnv, out, m_aLogger ); + return out==0 ? 0 : new java_sql_ResultSetMetaData( t.pEnv, out, m_aLogger,*m_pConnection ); } // ------------------------------------------------------------------------- Reference< XArray > SAL_CALL java_sql_ResultSet::getArray( sal_Int32 columnIndex ) throw(SQLException, RuntimeException) @@ -1579,10 +1581,43 @@ } // ------------------------------------------------------------------------- -void SAL_CALL java_sql_ResultSet::updateNumericObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x, sal_Int32 /*scale*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) +void SAL_CALL java_sql_ResultSet::updateNumericObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) { // OSL_ENSURE(0,"java_sql_ResultSet::updateNumericObject: NYI"); + try + { + SDBThreadAttach t; + if( t.pEnv ) + { + + // temporaere Variable initialisieren + static const char * cSignature = "(ILjava/lang/Object;I)V"; + static const char * cMethodName = "updateObject"; + // Java-Call absetzen + static jmethodID mID = NULL; + if ( !mID ) + mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!"); + if( mID ) + { + // Parameter konvertieren + double nTemp = 0.0; + ::std::auto_ptr<java_math_BigDecimal> pBigDecimal; + if ( x >>= nTemp) + { + pBigDecimal.reset(new java_math_BigDecimal(nTemp)); + } + else + pBigDecimal.reset(new java_math_BigDecimal(::comphelper::getString(x))); + //obj = convertwchar_tToJavaString(t.pEnv,::comphelper::getString(x)); + t.pEnv->CallVoidMethod( object, mID, columnIndex,pBigDecimal->getJavaObject(),scale); + ThrowLoggedSQLException( m_aLogger, t.pEnv, *this ); + } + } + } + catch(Exception) + { updateObject( columnIndex,x); + } } //------------------------------------------------------------------------------ sal_Int32 java_sql_ResultSet::getResultSetConcurrency() const throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) File [changed]: PreparedStatement.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/jdbc/PreparedStatement.cxx?r1=1.18&r2=1.18.54.1 Delta lines: +53 -7 -------------------- --- PreparedStatement.cxx 2007-06-27 14:36:57+0000 1.18 +++ PreparedStatement.cxx 2007-11-06 09:04:02+0000 1.18.54.1 @@ -4,9 +4,9 @@ * * $RCSfile: PreparedStatement.cxx,v $ * - * $Revision: 1.18 $ + * $Revision: 1.18.54.1 $ * - * last change: $Author: hr $ $Date: 2007/06/27 14:36:57 $ + * last change: $Author: oj $ $Date: 2007/11/06 09:04:02 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -50,6 +50,7 @@ #ifndef _CONNECTIVITY_JAVA_SQL_TIMESTAMP_HXX_ #include "java/sql/Timestamp.hxx" #endif +#include "java/math/BigDecimal.hxx" #ifndef _CONNECTIVITY_JAVA_TOOLS_HXX_ #include "java/tools.hxx" #endif @@ -242,7 +243,7 @@ } } - return out==0 ? 0 : new java_sql_ResultSet( t.pEnv, out, m_aLogger ); + return out==0 ? 0 : new java_sql_ResultSet( t.pEnv, out, m_aLogger, *m_pConnection,this); } // ------------------------------------------------------------------------- @@ -516,9 +517,54 @@ } // ------------------------------------------------------------------------- -void SAL_CALL java_sql_PreparedStatement::setObjectWithInfo( sal_Int32 /*parameterIndex*/, const ::com::sun::star::uno::Any& /*x*/, sal_Int32 /*targetSqlType*/, sal_Int32 /*scale*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) +void SAL_CALL java_sql_PreparedStatement::setObjectWithInfo( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x, sal_Int32 targetSqlType, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) { - ::dbtools::throwFeatureNotImplementedException( "XParameters::setObjectWithInfo", *this ); + m_aLogger.log( LogLevel::FINER, STR_LOG_OBJECT_NULL_PARAMETER, parameterIndex ); + + SDBThreadAttach t; OSL_ENSURE(t.pEnv,"Java Enviroment geloescht worden!"); + if( t.pEnv ){ + createStatement(t.pEnv); + + // temporaere Variable initialisieren + static const char * cSignature = "(ILjava/lang/Object;II)V"; + static const char * cMethodName = "setObject"; + // Java-Call absetzen + static jmethodID mID = NULL; + if ( !mID ) + mID = t.pEnv->GetMethodID( getMyClass(), cMethodName, cSignature );OSL_ENSURE(mID,"Unknown method id!"); + if( mID ){ + jobject obj = NULL; + double nTemp = 0.0; + switch(targetSqlType) + { + case DataType::DECIMAL: + case DataType::NUMERIC: + { + ::std::auto_ptr<java_math_BigDecimal> pBigDecimal; + if ( x >>= nTemp) + { + pBigDecimal.reset(new java_math_BigDecimal(nTemp)); + //setDouble(parameterIndex,nTemp); + //return; + } + else + pBigDecimal.reset(new java_math_BigDecimal(::comphelper::getString(x))); + //obj = convertwchar_tToJavaString(t.pEnv,::comphelper::getString(x)); + t.pEnv->CallVoidMethod( object, mID, parameterIndex,pBigDecimal->getJavaObject(),targetSqlType,scale); + ThrowLoggedSQLException( m_aLogger, t.pEnv, *this ); + return; + } + break; + default: + obj = convertwchar_tToJavaString(t.pEnv,::comphelper::getString(x)); + break; + } + t.pEnv->CallVoidMethod( object, mID, parameterIndex,obj,targetSqlType,scale); + t.pEnv->DeleteLocalRef(obj); + ThrowLoggedSQLException( m_aLogger, t.pEnv, *this ); + // und aufraeumen + } //mID + } //t.pEnv } // ------------------------------------------------------------------------- @@ -814,7 +860,7 @@ } } - return out==0 ? 0 : new java_sql_ResultSetMetaData( t.pEnv, out, m_aLogger ); + return out==0 ? 0 : new java_sql_ResultSetMetaData( t.pEnv, out, m_aLogger,*m_pConnection ); } // ----------------------------------------------------------------------------- // ----------------------------------------------------------------------------- File [changed]: JStatement.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/jdbc/JStatement.cxx?r1=1.3&r2=1.3.54.1 Delta lines: +6 -6 ------------------- --- JStatement.cxx 2007-06-27 14:36:28+0000 1.3 +++ JStatement.cxx 2007-11-06 09:04:02+0000 1.3.54.1 @@ -4,9 +4,9 @@ * * $RCSfile: JStatement.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.3.54.1 $ * - * last change: $Author: hr $ $Date: 2007/06/27 14:36:28 $ + * last change: $Author: oj $ $Date: 2007/11/06 09:04:02 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -254,7 +254,7 @@ } } else - xRes = new java_sql_ResultSet( t.pEnv, out, m_aLogger, this ); + xRes = new java_sql_ResultSet( t.pEnv, out, m_aLogger,*m_pConnection, this ); return xRes; } @@ -370,7 +370,7 @@ } //mID } //t.pEnv // ACHTUNG: der Aufrufer wird Eigentuemer des zurueckgelieferten Zeigers !!! - return out==0 ? 0 : new java_sql_ResultSet( t.pEnv, out, m_aLogger, this ); + return out==0 ? 0 : new java_sql_ResultSet( t.pEnv, out, m_aLogger, *m_pConnection,this ); } // ------------------------------------------------------------------------- Reference< XConnection > SAL_CALL java_sql_Statement_Base::getConnection( ) throw(SQLException, RuntimeException) @@ -490,7 +490,7 @@ } //mID } //t.pEnv // ACHTUNG: der Aufrufer wird Eigentuemer des zurueckgelieferten Zeigers !!! - return out==0 ? 0 : new java_sql_ResultSet( t.pEnv, out, m_aLogger, this ); + return out==0 ? 0 : new java_sql_ResultSet( t.pEnv, out, m_aLogger, *m_pConnection,this ); } // ------------------------------------------------------------------------- File [changed]: DatabaseMetaData.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/jdbc/DatabaseMetaData.cxx?r1=1.26&r2=1.26.44.1 Delta lines: +10 -10 --------------------- --- DatabaseMetaData.cxx 2007-07-24 11:50:25+0000 1.26 +++ DatabaseMetaData.cxx 2007-11-06 09:04:02+0000 1.26.44.1 @@ -4,9 +4,9 @@ * * $RCSfile: DatabaseMetaData.cxx,v $ * - * $Revision: 1.26 $ + * $Revision: 1.26.44.1 $ * - * last change: $Author: rt $ $Date: 2007/07/24 11:50:25 $ + * last change: $Author: oj $ $Date: 2007/11/06 09:04:02 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -247,7 +247,7 @@ return NULL; m_aLogger.log( LogLevel::FINEST, STR_LOG_META_DATA_SUCCESS, cMethodName ); - return new java_sql_ResultSet( t.pEnv, out, m_aLogger ); + return new java_sql_ResultSet( t.pEnv, out, m_aLogger,*m_pConnection); } // ------------------------------------------------------------------------- Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getProcedureColumns( @@ -405,7 +405,7 @@ return NULL; m_aLogger.log( LogLevel::FINEST, STR_LOG_META_DATA_SUCCESS, cMethodName ); - return new java_sql_ResultSet( t.pEnv, out, m_aLogger ); + return new java_sql_ResultSet( t.pEnv, out, m_aLogger,*m_pConnection); } // ------------------------------------------------------------------------- Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getBestRowIdentifier( @@ -448,7 +448,7 @@ return NULL; m_aLogger.log( LogLevel::FINEST, STR_LOG_META_DATA_SUCCESS, cMethodName ); - return new java_sql_ResultSet( t.pEnv, out, m_aLogger ); + return new java_sql_ResultSet( t.pEnv, out, m_aLogger,*m_pConnection); } // ------------------------------------------------------------------------- Reference< XResultSet > SAL_CALL java_sql_DatabaseMetaData::getTablePrivileges( @@ -578,7 +578,7 @@ return NULL; m_aLogger.log( LogLevel::FINEST, STR_LOG_META_DATA_SUCCESS, cMethodName ); - return new java_sql_ResultSet( t.pEnv, out, m_aLogger ); + return new java_sql_ResultSet( t.pEnv, out, m_aLogger,*m_pConnection); } // ------------------------------------------------------------------------- @@ -728,7 +728,7 @@ return NULL; m_aLogger.log( LogLevel::FINEST, STR_LOG_META_DATA_SUCCESS, _pMethodName ); - return new java_sql_ResultSet( t.pEnv, out, m_aLogger ); + return new java_sql_ResultSet( t.pEnv, out, m_aLogger,*m_pConnection); } // ------------------------------------------------------------------------- @@ -800,7 +800,7 @@ return NULL; m_aLogger.log( LogLevel::FINEST, STR_LOG_META_DATA_SUCCESS, _pMethodName ); - return new java_sql_ResultSet( t.pEnv, out, m_aLogger ); + return new java_sql_ResultSet( t.pEnv, out, m_aLogger,*m_pConnection); } // ------------------------------------------------------------------------- @@ -1596,7 +1596,7 @@ } } - return out ? new java_sql_ResultSet( t.pEnv, out, m_aLogger ) : 0; + return out ? new java_sql_ResultSet( t.pEnv, out, m_aLogger,*m_pConnection ) : 0; } // ------------------------------------------------------------------------- Reference< XConnection > SAL_CALL java_sql_DatabaseMetaData::getConnection( ) throw(SQLException, RuntimeException) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
