User: kz Date: 06/02/28 02:34:14 Modified: /dba/connectivity/source/drivers/evoab2/ NResultSetMetaData.cxx
Log: INTEGRATION: CWS evo2fixes (1.3.74); FILE MERGED 2006/02/15 12:15:32 mmeeks 1.3.74.1: Issue numbers: i#50913#, i#62042#, i#55893#, i#62043# Submitted by: misc, Tor, Jayant, me Reviewed by: mmeeks Fix a number of bugs, make it work with evo 2.4 & 2.6. File Changes: Directory: /dba/connectivity/source/drivers/evoab2/ =================================================== File [changed]: NResultSetMetaData.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/drivers/evoab2/NResultSetMetaData.cxx?r1=1.3&r2=1.4 Delta lines: +35 -6 -------------------- --- NResultSetMetaData.cxx 8 Sep 2005 05:52:42 -0000 1.3 +++ NResultSetMetaData.cxx 28 Feb 2006 10:34:12 -0000 1.4 @@ -45,6 +45,7 @@ #ifndef _COM_SUN_STAR_SDBC_DATATYPE_HPP_ #include <com/sun/star/sdbc/DataType.hpp> #endif +#include "NDebug.hxx" using namespace connectivity::evoab; using namespace com::sun::star::uno; @@ -52,7 +53,8 @@ using namespace com::sun::star::sdbc; OEvoabResultSetMetaData::OEvoabResultSetMetaData(const ::rtl::OUString& _aTableName) - : m_aTableName(_aTableName) + : m_aTableName(_aTableName), + m_aEvoabFields() { } @@ -61,6 +63,27 @@ { } // ------------------------------------------------------------------------- +void OEvoabResultSetMetaData::setEvoabFields(const ::vos::ORef<connectivity::OSQLColumns> &xColumns) throw(SQLException) +{ + OSQLColumns::const_iterator aIter; + static const ::rtl::OUString aName(::rtl::OUString::createFromAscii("Name")); + + for (aIter = xColumns->begin(); aIter != xColumns->end(); ++aIter) + { + ::rtl::OUString aFieldName; + sal_uInt32 nFieldNumber; + + (*aIter)->getPropertyValue(aName) >>= aFieldName; + nFieldNumber = findEvoabField(aFieldName); + if (nFieldNumber == -1) + ::dbtools::throwGenericSQLException( + ::rtl::OUString::createFromAscii("Invalid column name: ") + aFieldName, + NULL); + m_aEvoabFields.push_back(nFieldNumber); + } +} + +// ------------------------------------------------------------------------- void OEvoabResultSetMetaData::checkColumnIndex(sal_Int32 nColumnNum) throw(SQLException, RuntimeException) { if( nColumnNum <= 0 || nColumnNum > getColumnCount() ) @@ -74,12 +97,13 @@ // ------------------------------------------------------------------------- sal_Int32 SAL_CALL OEvoabResultSetMetaData::getColumnType( sal_Int32 nColumnNum ) throw(SQLException, RuntimeException) { - return evoab::getFieldType (nColumnNum - 1); + sal_uInt32 nField = m_aEvoabFields[nColumnNum - 1]; + return evoab::getFieldType (nField); } // ------------------------------------------------------------------------- sal_Int32 SAL_CALL OEvoabResultSetMetaData::getColumnCount( ) throw(SQLException, RuntimeException) { - return evoab::getFieldCount(); + return m_aEvoabFields.size(); } // ------------------------------------------------------------------------- sal_Bool SAL_CALL OEvoabResultSetMetaData::isCaseSensitive( sal_Int32 nColumnNum ) throw(SQLException, RuntimeException) @@ -94,17 +118,22 @@ // ------------------------------------------------------------------------- ::rtl::OUString SAL_CALL OEvoabResultSetMetaData::getColumnName( sal_Int32 nColumnNum ) throw(SQLException, RuntimeException) { - return evoab::getFieldName( nColumnNum - 1 ); + sal_uInt32 nField = m_aEvoabFields[nColumnNum - 1]; + return evoab::getFieldName( nField ); } // ------------------------------------------------------------------------- ::rtl::OUString SAL_CALL OEvoabResultSetMetaData::getColumnTypeName( sal_Int32 nColumnNum ) throw(SQLException, RuntimeException) { - return evoab::getFieldTypeName( nColumnNum - 1 ); + sal_uInt32 nField = m_aEvoabFields[nColumnNum - 1]; + return evoab::getFieldTypeName( nField ); } // ------------------------------------------------------------------------- ::rtl::OUString SAL_CALL OEvoabResultSetMetaData::getColumnLabel( sal_Int32 nColumnNum ) throw(SQLException, RuntimeException) { - const GParamSpec *pSpec = getField( nColumnNum - 1 ); + + sal_uInt32 nField = m_aEvoabFields[nColumnNum - 1]; + const ColumnProperty *pSpecs = getField(nField); + GParamSpec *pSpec = pSpecs->pField; rtl::OUString aLabel; if( pSpec ) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
