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]

Reply via email to