summaryrefslogtreecommitdiff
path: root/connectivity/source/drivers
diff options
context:
space:
mode:
authorOcke Janssen <oj@openoffice.org>2001-05-23 08:18:28 +0000
committerOcke Janssen <oj@openoffice.org>2001-05-23 08:18:28 +0000
commit39dcd561255d9c1b438c618c9810a1b39eeb3d65 (patch)
treedcb67742d4f052c7f614c11cedc45bfef85a0af1 /connectivity/source/drivers
parentc6431349f002d326d811070c29534e12efbe53de (diff)
#86528# disable exception in some files
Diffstat (limited to 'connectivity/source/drivers')
-rw-r--r--connectivity/source/drivers/ado/ADatabaseMetaData.cxx584
-rw-r--r--connectivity/source/drivers/ado/ADatabaseMetaDataImpl.cxx688
-rw-r--r--connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx138
-rw-r--r--connectivity/source/drivers/ado/ADatabaseMetaDataResultSetMetaData.cxx217
-rw-r--r--connectivity/source/drivers/ado/ADriver.cxx85
-rw-r--r--connectivity/source/drivers/ado/AGroup.cxx87
-rw-r--r--connectivity/source/drivers/ado/AIndex.cxx33
-rw-r--r--connectivity/source/drivers/ado/AKey.cxx117
-rw-r--r--connectivity/source/drivers/ado/ATable.cxx59
-rw-r--r--connectivity/source/drivers/ado/AUser.cxx21
-rw-r--r--connectivity/source/drivers/ado/AView.cxx22
-rw-r--r--connectivity/source/drivers/ado/Aolevariant.cxx22
-rw-r--r--connectivity/source/drivers/ado/Awrapado.cxx555
-rw-r--r--connectivity/source/drivers/ado/adoimp.cxx106
-rw-r--r--connectivity/source/drivers/ado/makefile.mk34
-rw-r--r--connectivity/source/drivers/calc/CTable.cxx7
-rw-r--r--connectivity/source/drivers/calc/makefile.mk10
-rw-r--r--connectivity/source/drivers/dbase/DCode.cxx6
-rw-r--r--connectivity/source/drivers/dbase/DNoException.cxx805
-rw-r--r--connectivity/source/drivers/dbase/DTable.cxx373
-rw-r--r--connectivity/source/drivers/dbase/dindexnode.cxx359
-rw-r--r--connectivity/source/drivers/dbase/makefile.mk28
-rw-r--r--connectivity/source/drivers/file/FCatalog.cxx10
-rw-r--r--connectivity/source/drivers/file/FDriver.cxx40
-rw-r--r--connectivity/source/drivers/file/FNoException.cxx425
-rw-r--r--connectivity/source/drivers/file/FPreparedStatement.cxx7
-rw-r--r--connectivity/source/drivers/file/FResultSet.cxx440
-rw-r--r--connectivity/source/drivers/file/fanalyzer.cxx22
-rw-r--r--connectivity/source/drivers/file/fcode.cxx56
-rw-r--r--connectivity/source/drivers/file/fcomp.cxx28
-rw-r--r--connectivity/source/drivers/file/makefile.mk21
-rw-r--r--connectivity/source/drivers/flat/ENoException.cxx368
-rw-r--r--connectivity/source/drivers/flat/ETable.cxx308
-rw-r--r--connectivity/source/drivers/flat/makefile.mk21
-rw-r--r--connectivity/source/drivers/jdbc/Date.cxx11
-rw-r--r--connectivity/source/drivers/jdbc/Timestamp.cxx14
36 files changed, 3328 insertions, 2799 deletions
diff --git a/connectivity/source/drivers/ado/ADatabaseMetaData.cxx b/connectivity/source/drivers/ado/ADatabaseMetaData.cxx
index 31052e3e5ab1..4bb4c1fb971e 100644
--- a/connectivity/source/drivers/ado/ADatabaseMetaData.cxx
+++ b/connectivity/source/drivers/ado/ADatabaseMetaData.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ADatabaseMetaData.cxx,v $
*
- * $Revision: 1.8 $
+ * $Revision: 1.9 $
*
- * last change: $Author: oj $ $Date: 2001-05-18 08:48:07 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:15:43 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -99,65 +99,6 @@ using namespace com::sun::star::beans;
using namespace com::sun::star::sdbc;
-const int JET_ENGINETYPE_UNKNOWN = 0;
-const int JET_ENGINETYPE_JET10 = 1;
-const int JET_ENGINETYPE_JET11 = 2;
-const int JET_ENGINETYPE_JET20 = 3;
-const int JET_ENGINETYPE_JET3X = 4;
-const int JET_ENGINETYPE_JET4X = 5;
-const int JET_ENGINETYPE_DBASE3 = 10;
-const int JET_ENGINETYPE_DBASE4 = 11;
-const int JET_ENGINETYPE_DBASE5 = 12;
-const int JET_ENGINETYPE_EXCEL30 = 20;
-const int JET_ENGINETYPE_EXCEL40 = 21;
-const int JET_ENGINETYPE_EXCEL50 = 22;
-const int JET_ENGINETYPE_EXCEL80 = 23;
-const int JET_ENGINETYPE_EXCEL90 = 24;
-const int JET_ENGINETYPE_EXCHANGE4 = 30;
-const int JET_ENGINETYPE_LOTUSWK1 = 40;
-const int JET_ENGINETYPE_LOTUSWK3 = 41;
-const int JET_ENGINETYPE_LOTUSWK4 = 42;
-const int JET_ENGINETYPE_PARADOX3X = 50;
-const int JET_ENGINETYPE_PARADOX4X = 51;
-const int JET_ENGINETYPE_PARADOX5X = 52;
-const int JET_ENGINETYPE_PARADOX7X = 53;
-const int JET_ENGINETYPE_TEXT1X = 60;
-const int JET_ENGINETYPE_HTML1X = 70;
-
-sal_Bool isJetEngine(sal_Int32 _nEngineType)
-{
- sal_Bool bRet = sal_False;
- switch(_nEngineType)
- {
- case JET_ENGINETYPE_UNKNOWN:
- case JET_ENGINETYPE_JET10:
- case JET_ENGINETYPE_JET11:
- case JET_ENGINETYPE_JET20:
- case JET_ENGINETYPE_JET3X:
- case JET_ENGINETYPE_JET4X:
- case JET_ENGINETYPE_DBASE3:
- case JET_ENGINETYPE_DBASE4:
- case JET_ENGINETYPE_DBASE5:
- case JET_ENGINETYPE_EXCEL30:
- case JET_ENGINETYPE_EXCEL40:
- case JET_ENGINETYPE_EXCEL50:
- case JET_ENGINETYPE_EXCEL80:
- case JET_ENGINETYPE_EXCEL90:
- case JET_ENGINETYPE_EXCHANGE4:
- case JET_ENGINETYPE_LOTUSWK1:
- case JET_ENGINETYPE_LOTUSWK3:
- case JET_ENGINETYPE_LOTUSWK4:
- case JET_ENGINETYPE_PARADOX3X:
- case JET_ENGINETYPE_PARADOX4X:
- case JET_ENGINETYPE_PARADOX5X:
- case JET_ENGINETYPE_PARADOX7X:
- case JET_ENGINETYPE_TEXT1X:
- case JET_ENGINETYPE_HTML1X:
- bRet = sal_True;
- break;
- }
- return bRet;
-}
// using namespace connectivity;
ODatabaseMetaData::ODatabaseMetaData(OConnection* _pCon)
@@ -167,77 +108,7 @@ ODatabaseMetaData::ODatabaseMetaData(OConnection* _pCon)
{
}
// -------------------------------------------------------------------------
-void ODatabaseMetaData::fillLiterals() throw(SQLException, RuntimeException)
-{
- ADORecordset *pRecordset = NULL;
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
- m_pADOConnection->OpenSchema(adSchemaDBInfoLiterals,vtEmpty,vtEmpty,&pRecordset);
-
- ADOS::ThrowException(*m_pADOConnection,*this);
-
- OSL_ENSURE(pRecordset,"getMaxSize no resultset!");
- WpADORecordset aRecordset(pRecordset);
-
- aRecordset.MoveFirst();
- OLEVariant aValue;
- sal_Int32 nRet = 0;
- LiteralInfo aInfo;
- while(!aRecordset.IsAtEOF())
- {
- WpOLEAppendCollection<ADOFields, ADOField, WpADOField> aFields(aRecordset.GetFields());
- WpADOField aField(aFields.GetItem(1));
- aInfo.pwszLiteralValue = aField.get_Value();
- aField = aFields.GetItem(5);
- aInfo.fSupported = aField.get_Value();
- aField = aFields.GetItem(6);
- aInfo.cchMaxLen = aField.get_Value().getUInt32();
-
- aField = aFields.GetItem(4);
- sal_uInt32 nId = aField.get_Value().getUInt32();
- m_aLiteralInfo[nId] = aInfo;
-
- aRecordset.MoveNext();
- }
- aRecordset.Close();
-}
-// -------------------------------------------------------------------------
-sal_Int32 ODatabaseMetaData::getMaxSize(sal_uInt32 _nId) throw(SQLException, RuntimeException)
-{
- if(!m_aLiteralInfo.size())
- fillLiterals();
-
- sal_Int32 nSize = 0;
- ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId);
- if(aIter != m_aLiteralInfo.end() && (*aIter).second.fSupported)
- nSize = ((*aIter).second.cchMaxLen == (-1)) ? 0 : (*aIter).second.cchMaxLen;
- return nSize;
-}
-// -------------------------------------------------------------------------
-sal_Bool ODatabaseMetaData::isCapable(sal_uInt32 _nId) throw(SQLException, RuntimeException)
-{
- if(!m_aLiteralInfo.size())
- fillLiterals();
- sal_Bool bSupported = sal_False;
- ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId);
- if(aIter != m_aLiteralInfo.end())
- bSupported = (*aIter).second.fSupported;
- return bSupported;
-}
-
-// -------------------------------------------------------------------------
-::rtl::OUString ODatabaseMetaData::getLiteral(sal_uInt32 _nId) throw(SQLException, RuntimeException)
-{
- if(!m_aLiteralInfo.size())
- fillLiterals();
- ::rtl::OUString sStr;
- ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId);
- if(aIter != m_aLiteralInfo.end() && (*aIter).second.fSupported)
- sStr = (*aIter).second.pwszLiteralValue;
- return sStr;
-}
-// -------------------------------------------------------------------------
-sal_Int32 ODatabaseMetaData::getInt32Property(const ::rtl::OUString& _aProperty) throw(SQLException, RuntimeException)
+sal_Int32 ODatabaseMetaData::getInt32Property(const ::rtl::OUString& _aProperty) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
{
WpOLEAppendCollection<ADOProperties, ADOProperty, WpADOProperty> aProps(m_pADOConnection->get_Properties());
// ADOS::ThrowException(*m_pADOConnection,*this);
@@ -250,7 +121,7 @@ sal_Int32 ODatabaseMetaData::getInt32Property(const ::rtl::OUString& _aProperty)
}
// -------------------------------------------------------------------------
-sal_Bool ODatabaseMetaData::getBoolProperty(const ::rtl::OUString& _aProperty) throw(SQLException, RuntimeException)
+sal_Bool ODatabaseMetaData::getBoolProperty(const ::rtl::OUString& _aProperty) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
{
WpOLEAppendCollection<ADOProperties, ADOProperty, WpADOProperty> aProps(m_pADOConnection->get_Properties());
ADOS::ThrowException(*m_pADOConnection,*this);
@@ -259,7 +130,7 @@ sal_Bool ODatabaseMetaData::getBoolProperty(const ::rtl::OUString& _aProperty) t
return (!aVar.isNull() && !aVar.isEmpty() ? aVar.getBool() : sal_False);
}
// -------------------------------------------------------------------------
-::rtl::OUString ODatabaseMetaData::getStringProperty(const ::rtl::OUString& _aProperty) throw(SQLException, RuntimeException)
+::rtl::OUString ODatabaseMetaData::getStringProperty(const ::rtl::OUString& _aProperty) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
{
WpOLEAppendCollection<ADOProperties, ADOProperty, WpADOProperty> aProps(m_pADOConnection->get_Properties());
ADOS::ThrowException(*m_pADOConnection,*this);
@@ -272,36 +143,13 @@ sal_Bool ODatabaseMetaData::getBoolProperty(const ::rtl::OUString& _aProperty) t
return aValue;
}
-
// -------------------------------------------------------------------------
Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTypeInfo( ) throw(SQLException, RuntimeException)
{
- HRESULT hr = S_OK;
- // Create elements used in the array
- OLEVariant varCriteria[2];
- const int nCrit = sizeof varCriteria / sizeof varCriteria[0];
- // Create SafeArray Bounds and initialize the array
- SAFEARRAYBOUND rgsabound[1];
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = nCrit;
- SAFEARRAY *psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos = 0;
- SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;
- SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- OLEVariant aEmpty;
- aEmpty.setNoArg();
-
- ADORecordset *pRec=NULL;
- m_pADOConnection->OpenSchema(adSchemaProviderTypes,vsa,aEmpty,&pRec);
+ ADORecordset *pRecordset = m_pADOConnection->getTypeInfo();
// ADOS::ThrowException(*m_pADOConnection,*this);
- ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(pRec);
+ ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(pRecordset);
pResult->setTypeInfoMap();
Reference< XResultSet > xRef = pResult;
return xRef;
@@ -351,41 +199,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumnPrivileges(
const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table,
const ::rtl::OUString& columnNamePattern ) throw(SQLException, RuntimeException)
{
- // Create elements used in the array
- HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
- OLEVariant varCriteria[4];
-
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos=0;
- if(catalog.hasValue())
- varCriteria[nPos].setString(getString(catalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(schema.toChar() != '%')
- varCriteria[nPos].setString(schema);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
-
- varCriteria[nPos].setString(table);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- varCriteria[nPos].setString(columnNamePattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME
-
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- ADORecordset *pRecordset = NULL;
- m_pADOConnection->OpenSchema(adSchemaColumnPrivileges,vsa,vtEmpty,&pRecordset);
+ ADORecordset *pRecordset = m_pADOConnection->getColumnPrivileges(catalog,schema,table,columnNamePattern);
ADOS::ThrowException(*m_pADOConnection,*this);
Reference< XResultSet > xRef = NULL;
@@ -400,42 +214,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getColumns(
const Any& catalog, const ::rtl::OUString& schemaPattern, const ::rtl::OUString& tableNamePattern,
const ::rtl::OUString& columnNamePattern ) throw(SQLException, RuntimeException)
{
- // Create elements used in the array
- HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
- OLEVariant varCriteria[4];
-
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos=0;
- if(catalog.hasValue())
- varCriteria[nPos].setString(getString(catalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(schemaPattern.toChar() != '%')
- varCriteria[nPos].setString(schemaPattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
-
- if(tableNamePattern.toChar() != '%')
- varCriteria[nPos].setString(tableNamePattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- varCriteria[nPos].setString(columnNamePattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME
-
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- ADORecordset *pRecordset = NULL;
- m_pADOConnection->OpenSchema(adSchemaColumns,vsa,vtEmpty,&pRecordset);
+ ADORecordset *pRecordset = m_pADOConnection->getColumns(catalog,schemaPattern,tableNamePattern,columnNamePattern);
ADOS::ThrowException(*m_pADOConnection,*this);
Reference< XResultSet > xRef = NULL;
@@ -451,52 +230,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTables(
const Any& catalog, const ::rtl::OUString& schemaPattern,
const ::rtl::OUString& tableNamePattern, const Sequence< ::rtl::OUString >& types ) throw(SQLException, RuntimeException)
{
- // Create elements used in the array
- HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
- OLEVariant varCriteria[4];
-
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos=0;
- if(catalog.hasValue())
- varCriteria[nPos].setString(getString(catalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(schemaPattern.toChar() != '%')
- varCriteria[nPos].setString(schemaPattern);
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
- if(tableNamePattern.toChar() != '%')
- varCriteria[nPos].setString(tableNamePattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- ::rtl::OUString aTypes,aComma = ::rtl::OUString::createFromAscii(",");
- const ::rtl::OUString* pBegin = types.getConstArray();
- const ::rtl::OUString* pEnd = pBegin + types.getLength();
- for(;pBegin != pEnd;++pBegin)
- aTypes = aTypes + *pBegin + aComma;
-
- if(aTypes.getLength())
- varCriteria[nPos].setString(aTypes);
- // else
- // varCriteria[nPos].setString(::rtl::OUString::createFromAscii("TABLE"));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_TYPE
-
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- ADORecordset *pRecordset = NULL;
- m_pADOConnection->OpenSchema(adSchemaTables,vsa,vtEmpty,&pRecordset);
+ ADORecordset *pRecordset = m_pADOConnection->getTables(catalog,schemaPattern,tableNamePattern,types);
ADOS::ThrowException(*m_pADOConnection,*this);
Reference< XResultSet > xRef = NULL;
@@ -512,43 +246,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedureColumns(
const Any& catalog, const ::rtl::OUString& schemaPattern,
const ::rtl::OUString& procedureNamePattern, const ::rtl::OUString& columnNamePattern ) throw(SQLException, RuntimeException)
{
- // Create elements used in the array
- HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
- OLEVariant varCriteria[4];
-
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos=0;
- if(catalog.hasValue())
- varCriteria[nPos].setString(getString(catalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(schemaPattern.toChar() != '%')
- varCriteria[nPos].setString(schemaPattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
-
- if(procedureNamePattern.toChar() != '%')
- varCriteria[nPos].setString(procedureNamePattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- if(columnNamePattern.toChar() != '%')
- varCriteria[nPos].setString(columnNamePattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME
-
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- ADORecordset *pRecordset = NULL;
- m_pADOConnection->OpenSchema(adSchemaProcedureParameters,vsa,vtEmpty,&pRecordset);
+ ADORecordset *pRecordset = m_pADOConnection->getProcedureColumns(catalog,schemaPattern,procedureNamePattern,columnNamePattern);
ADOS::ThrowException(*m_pADOConnection,*this);
Reference< XResultSet > xRef = NULL;
@@ -565,38 +263,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getProcedures(
const ::rtl::OUString& procedureNamePattern ) throw(SQLException, RuntimeException)
{
// Create elements used in the array
- HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
- OLEVariant varCriteria[3];
-
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos=0;
- if(catalog.hasValue())
- varCriteria[nPos].setString(getString(catalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(schemaPattern.toChar() != '%')
- varCriteria[nPos].setString(schemaPattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
-
- if(procedureNamePattern.toChar() != '%')
- varCriteria[nPos].setString(procedureNamePattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- ADORecordset *pRecordset = NULL;
- m_pADOConnection->OpenSchema(adSchemaProcedures,vsa,vtEmpty,&pRecordset);
+ ADORecordset *pRecordset = m_pADOConnection->getProcedures(catalog,schemaPattern,procedureNamePattern);
ADOS::ThrowException(*m_pADOConnection,*this);
Reference< XResultSet > xRef = NULL;
@@ -678,46 +345,10 @@ sal_Int32 SAL_CALL ODatabaseMetaData::getMaxTablesInSelect( ) throw(SQLExceptio
Reference< XResultSet > SAL_CALL ODatabaseMetaData::getExportedKeys(
const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(SQLException, RuntimeException)
{
- // Create elements used in the array
- HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
- OLEVariant varCriteria[6];
-
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos=0;
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- if(catalog.hasValue())
- varCriteria[nPos].setString(getString(catalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(schema.toChar() != '%')
- varCriteria[nPos].setString(schema);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
-
- varCriteria[nPos].setString(table);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- ADORecordset *pRecordset = NULL;
- m_pADOConnection->OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset);
+ ADORecordset *pRecordset = m_pADOConnection->getExportedKeys(catalog,schema,table);
ADOS::ThrowException(*m_pADOConnection,*this);
Reference< XResultSet > xRef = NULL;
-
ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(pRecordset);
pResult->setCrossReferenceMap();
xRef = pResult;
@@ -728,42 +359,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getExportedKeys(
Reference< XResultSet > SAL_CALL ODatabaseMetaData::getImportedKeys(
const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(SQLException, RuntimeException)
{
- // Create elements used in the array
- HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
- OLEVariant varCriteria[6];
-
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos=0;
- if(catalog.hasValue())
- varCriteria[nPos].setString(getString(catalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(schema.toChar() != '%')
- varCriteria[nPos].setString(schema);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
-
- varCriteria[nPos].setString(table);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- ADORecordset *pRecordset = NULL;
- m_pADOConnection->OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset);
+ ADORecordset *pRecordset = m_pADOConnection->getImportedKeys(catalog,schema,table);
ADOS::ThrowException(*m_pADOConnection,*this);
Reference< XResultSet > xRef = NULL;
@@ -778,39 +374,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getImportedKeys(
Reference< XResultSet > SAL_CALL ODatabaseMetaData::getPrimaryKeys(
const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table ) throw(SQLException, RuntimeException)
{
- // Create elements used in the array
- HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
- OLEVariant varCriteria[3];
-
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos=0;
- if(catalog.hasValue())
- varCriteria[nPos].setString(getString(catalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(schema.toChar() != '%')
- varCriteria[nPos].setString(schema);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
-
- varCriteria[nPos].setString(table);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
-
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- ADORecordset *pRecordset = NULL;
- m_pADOConnection->OpenSchema(adSchemaPrimaryKeys,vsa,vtEmpty,&pRecordset);
+ ADORecordset *pRecordset = m_pADOConnection->getPrimaryKeys(catalog,schema,table);
ADOS::ThrowException(*m_pADOConnection,*this);
Reference< XResultSet > xRef = NULL;
@@ -826,42 +390,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getIndexInfo(
const Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table,
sal_Bool unique, sal_Bool approximate ) throw(SQLException, RuntimeException)
{
- // Create elements used in the array
- HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
- OLEVariant varCriteria[5];
-
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos=0;
- if(catalog.hasValue())
- varCriteria[nPos].setString(getString(catalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(schema.toChar() != '%')
- varCriteria[nPos].setString(schema);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// INDEX_NAME
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TYPE
-
- varCriteria[nPos].setString(table);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- ADORecordset *pRecordset = NULL;
- m_pADOConnection->OpenSchema(adSchemaIndexes,vsa,vtEmpty,&pRecordset);
+ ADORecordset *pRecordset = m_pADOConnection->getIndexInfo(catalog,schema,table,unique,approximate);
ADOS::ThrowException(*m_pADOConnection,*this);
Reference< XResultSet > xRef = NULL;
@@ -890,44 +419,11 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getTablePrivileges(
sal_Int32 nEngineType = getInt32Property(::rtl::OUString::createFromAscii("Jet OLEDB:Engine Type"));
Reference< XResultSet > xRef = NULL;
- if(!isJetEngine(nEngineType))
+ if(!ADOS::isJetEngine(nEngineType))
{ // the jet provider doesn't support this method
// Create elements used in the array
- HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
- OLEVariant varCriteria[5];
-
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos=0;
- if(catalog.hasValue())
- varCriteria[nPos].setString(getString(catalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(schemaPattern.toChar() != '%')
- varCriteria[nPos].setString(schemaPattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
-
- if(tableNamePattern.toChar() != '%')
- varCriteria[nPos].setString(tableNamePattern);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// GRANTOR
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// GRANTEE
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- ADORecordset *pRecordset = NULL;
- m_pADOConnection->OpenSchema(adSchemaTablePrivileges,vsa,vtEmpty,&pRecordset);
+ ADORecordset *pRecordset = m_pADOConnection->getTablePrivileges(catalog,schemaPattern,tableNamePattern);
ADOS::ThrowException(*m_pADOConnection,*this);
ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(pRecordset);
@@ -979,49 +475,7 @@ Reference< XResultSet > SAL_CALL ODatabaseMetaData::getCrossReference(
const ::rtl::OUString& primaryTable, const Any& foreignCatalog,
const ::rtl::OUString& foreignSchema, const ::rtl::OUString& foreignTable ) throw(SQLException, RuntimeException)
{
- // Create elements used in the array
- HRESULT hr = S_OK;
- SAFEARRAYBOUND rgsabound[1];
- SAFEARRAY *psa = NULL;
- OLEVariant varCriteria[6];
-
- // Create SafeArray Bounds and initialize the array
- rgsabound[0].lLbound = 0;
- rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
- psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
-
- sal_Int32 nPos=0;
- if(primaryCatalog.hasValue())
- varCriteria[nPos].setString(getString(primaryCatalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(primarySchema.toChar() != '%')
- varCriteria[nPos].setString(primarySchema);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
-
- varCriteria[nPos].setString(primaryTable);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- if(foreignCatalog.hasValue())
- varCriteria[nPos].setString(getString(foreignCatalog));
-
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
- if(foreignSchema.toChar() != '%')
- varCriteria[nPos].setString(foreignSchema);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
-
- varCriteria[nPos].setString(foreignTable);
- hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
-
- OLEVariant vtEmpty;
- vtEmpty.setNoArg();
-
- // Initialize and fill the SafeArray
- OLEVariant vsa;
- vsa.setArray(psa,VT_VARIANT);
-
- ADORecordset *pRecordset = NULL;
- m_pADOConnection->OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset);
+ ADORecordset *pRecordset = m_pADOConnection->getCrossReference(primaryCatalog,primarySchema,primaryTable,foreignCatalog,foreignSchema,foreignTable);
ADOS::ThrowException(*m_pADOConnection,*this);
Reference< XResultSet > xRef = NULL;
diff --git a/connectivity/source/drivers/ado/ADatabaseMetaDataImpl.cxx b/connectivity/source/drivers/ado/ADatabaseMetaDataImpl.cxx
new file mode 100644
index 000000000000..7dc1b13bc875
--- /dev/null
+++ b/connectivity/source/drivers/ado/ADatabaseMetaDataImpl.cxx
@@ -0,0 +1,688 @@
+/*************************************************************************
+ *
+ * $RCSfile: ADatabaseMetaDataImpl.cxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: oj $ $Date: 2001-05-23 09:16:18 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the License); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an AS IS basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _CONNECTIVITY_ADO_ADATABASEMETADATA_HXX_
+#include "ado/ADatabaseMetaData.hxx"
+#endif
+#ifndef _CONNECTIVITY_ADO_ADATABASEMETADATARESULTSETMETADATA_HXX_
+#include "ado/ADatabaseMetaDataResultSetMetaData.hxx"
+#endif
+#ifndef _CONNECTIVITY_ADO_AWRAPADO_HXX_
+#include "ado/Awrapado.hxx"
+#endif
+#ifndef _CONNECTIVITY_ADABAS_GROUP_HXX_
+#include "ado/AGroup.hxx"
+#endif
+#ifndef _CONNECTIVITY_ADO_ADOIMP_HXX_
+#include "ado/adoimp.hxx"
+#endif
+#ifndef _CONNECTIVITY_ADO_INDEX_HXX_
+#include "ado/AIndex.hxx"
+#endif
+#ifndef _CONNECTIVITY_ADO_KEY_HXX_
+#include "ado/AKey.hxx"
+#endif
+#ifndef _CONNECTIVITY_ADO_TABLE_HXX_
+#include "ado/ATable.hxx"
+#endif
+#ifndef _COM_SUN_STAR_SDBC_DATATYPE_HPP_
+#include <com/sun/star/sdbc/DataType.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_PROCEDURERESULT_HPP_
+#include <com/sun/star/sdbc/ProcedureResult.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_COLUMNVALUE_HPP_
+#include <com/sun/star/sdbc/ColumnValue.hpp>
+#endif
+#ifdef DELETE
+#undef DELETE
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_PRIVILEGE_HPP_
+#include <com/sun/star/sdbcx/Privilege.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_PRIVILEGEOBJECT_HPP_
+#include <com/sun/star/sdbcx/PrivilegeObject.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBC_KEYRULE_HPP_
+#include <com/sun/star/sdbc/KeyRule.hpp>
+#endif
+#ifndef _COM_SUN_STAR_SDBCX_KEYTYPE_HPP_
+#include <com/sun/star/sdbcx/KeyType.hpp>
+#endif
+
+using namespace connectivity;
+using namespace connectivity::ado;
+using namespace ::com::sun::star::sdbc;
+using namespace ::com::sun::star::sdbcx;
+using namespace ::com::sun::star::uno;
+
+// -------------------------------------------------------------------------
+void ODatabaseMetaData::fillLiterals()
+{
+ ADORecordset *pRecordset = NULL;
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+ m_pADOConnection->OpenSchema(adSchemaDBInfoLiterals,vtEmpty,vtEmpty,&pRecordset);
+
+ ADOS::ThrowException(*m_pADOConnection,*this);
+
+ OSL_ENSURE(pRecordset,"getMaxSize no resultset!");
+ WpADORecordset aRecordset(pRecordset);
+
+ aRecordset.MoveFirst();
+ OLEVariant aValue;
+ sal_Int32 nRet = 0;
+ LiteralInfo aInfo;
+ while(!aRecordset.IsAtEOF())
+ {
+ WpOLEAppendCollection<ADOFields, ADOField, WpADOField> aFields(aRecordset.GetFields());
+ WpADOField aField(aFields.GetItem(1));
+ aInfo.pwszLiteralValue = aField.get_Value();
+ aField = aFields.GetItem(5);
+ aInfo.fSupported = aField.get_Value();
+ aField = aFields.GetItem(6);
+ aInfo.cchMaxLen = aField.get_Value().getUInt32();
+
+ aField = aFields.GetItem(4);
+ sal_uInt32 nId = aField.get_Value().getUInt32();
+ m_aLiteralInfo[nId] = aInfo;
+
+ aRecordset.MoveNext();
+ }
+ aRecordset.Close();
+}
+// -------------------------------------------------------------------------
+sal_Int32 ODatabaseMetaData::getMaxSize(sal_uInt32 _nId)
+{
+ if(!m_aLiteralInfo.size())
+ fillLiterals();
+
+ sal_Int32 nSize = 0;
+ ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId);
+ if(aIter != m_aLiteralInfo.end() && (*aIter).second.fSupported)
+ nSize = ((*aIter).second.cchMaxLen == (-1)) ? 0 : (*aIter).second.cchMaxLen;
+ return nSize;
+}
+// -------------------------------------------------------------------------
+sal_Bool ODatabaseMetaData::isCapable(sal_uInt32 _nId)
+{
+ if(!m_aLiteralInfo.size())
+ fillLiterals();
+ sal_Bool bSupported = sal_False;
+ ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId);
+ if(aIter != m_aLiteralInfo.end())
+ bSupported = (*aIter).second.fSupported;
+ return bSupported;
+}
+
+// -------------------------------------------------------------------------
+::rtl::OUString ODatabaseMetaData::getLiteral(sal_uInt32 _nId)
+{
+ if(!m_aLiteralInfo.size())
+ fillLiterals();
+ ::rtl::OUString sStr;
+ ::std::map<sal_uInt32,LiteralInfo>::const_iterator aIter = m_aLiteralInfo.find(_nId);
+ if(aIter != m_aLiteralInfo.end() && (*aIter).second.fSupported)
+ sStr = (*aIter).second.pwszLiteralValue;
+ return sStr;
+}
+// -----------------------------------------------------------------------------
+// -------------------------------------------------------------------------
+void ODatabaseMetaDataResultSetMetaData::setColumnPrivilegesMap()
+{
+ m_mColumns[8] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("IS_GRANTABLE"),
+ ColumnValue::NULLABLE,
+ 3,3,0,
+ DataType::VARCHAR);
+}
+// -------------------------------------------------------------------------
+void ODatabaseMetaDataResultSetMetaData::setColumnsMap()
+{
+ m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("TYPE_NAME"),
+ ColumnValue::NO_NULLS,
+ 0,0,0,
+ DataType::VARCHAR);
+ m_mColumns[11] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+ m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"),
+ ColumnValue::NULLABLE,
+ 0,0,0,
+ DataType::VARCHAR);
+ m_mColumns[13] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("COLUMN_DEF"),
+ ColumnValue::NULLABLE,
+ 0,0,0,
+ DataType::VARCHAR);
+ m_mColumns[14] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATA_TYPE"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+ m_mColumns[15] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATETIME_SUB"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+ m_mColumns[16] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("CHAR_OCTET_LENGTH"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+}
+// -------------------------------------------------------------------------
+void ODatabaseMetaDataResultSetMetaData::setTablesMap()
+{
+ m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"),
+ ColumnValue::NULLABLE,
+ 0,0,0,
+ DataType::VARCHAR);
+}
+// -------------------------------------------------------------------------
+void ODatabaseMetaDataResultSetMetaData::setProcedureColumnsMap()
+{
+ m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+}
+// -------------------------------------------------------------------------
+void ODatabaseMetaDataResultSetMetaData::setPrimaryKeysMap()
+{
+ m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("KEY_SEQ"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+ m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PK_NAME"),
+ ColumnValue::NULLABLE,
+ 0,0,0,
+ DataType::VARCHAR);
+}
+// -------------------------------------------------------------------------
+void ODatabaseMetaDataResultSetMetaData::setIndexInfoMap()
+{
+ m_mColumns[4] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NON_UNIQUE"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::BIT);
+ m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("INDEX_QUALIFIER"),
+ ColumnValue::NULLABLE,
+ 0,0,0,
+ DataType::VARCHAR);
+ m_mColumns[10] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("ASC_OR_DESC"),
+ ColumnValue::NULLABLE,
+ 0,0,0,
+ DataType::VARCHAR);
+}
+// -------------------------------------------------------------------------
+void ODatabaseMetaDataResultSetMetaData::setTablePrivilegesMap()
+{
+ m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PRIVILEGE"),
+ ColumnValue::NULLABLE,
+ 0,0,0,
+ DataType::VARCHAR);
+ m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("IS_GRANTABLE"),
+ ColumnValue::NULLABLE,
+ 0,0,0,
+ DataType::VARCHAR);
+}
+// -------------------------------------------------------------------------
+void ODatabaseMetaDataResultSetMetaData::setCrossReferenceMap()
+{
+ m_mColumns[9] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("KEY_SEQ"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+}
+// -------------------------------------------------------------------------
+void ODatabaseMetaDataResultSetMetaData::setTypeInfoMap()
+{
+ m_mColumns[3] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PRECISION"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+ m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+ m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("AUTO_INCREMENT"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::BIT);
+ m_mColumns[16] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATA_TYPE"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+ m_mColumns[17] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATETIME_SUB"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+ m_mColumns[18] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NUM_PREC_RADIX"),
+ ColumnValue::NO_NULLS,
+ 1,1,0,
+ DataType::INTEGER);
+}
+// -------------------------------------------------------------------------
+void ODatabaseMetaDataResultSetMetaData::setProceduresMap()
+{
+ m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"),
+ ColumnValue::NULLABLE,
+ 0,0,0,
+ DataType::VARCHAR);
+}
+// -------------------------------------------------------------------------
+sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isSearchable( sal_Int32 column ) throw(SQLException, RuntimeException)
+{
+ if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
+ return (*m_mColumnsIter).second.isSearchable();
+ return sal_True;
+}
+// -------------------------------------------------------------------------
+sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isAutoIncrement( sal_Int32 column ) throw(SQLException, RuntimeException)
+{
+ if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
+ return (*m_mColumnsIter).second.isAutoIncrement();
+ return sal_False;
+}
+// -------------------------------------------------------------------------
+::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnServiceName( sal_Int32 column ) throw(SQLException, RuntimeException)
+{
+ if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
+ return (*m_mColumnsIter).second.getColumnServiceName();
+ return ::rtl::OUString();
+}
+// -------------------------------------------------------------------------
+::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getTableName( sal_Int32 column ) throw(SQLException, RuntimeException)
+{
+ if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
+ return (*m_mColumnsIter).second.getTableName();
+ return ::rtl::OUString();
+}
+// -------------------------------------------------------------------------
+::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getCatalogName( sal_Int32 column ) throw(SQLException, RuntimeException)
+{
+ if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
+ return (*m_mColumnsIter).second.getCatalogName();
+ return ::rtl::OUString();
+}
+// -------------------------------------------------------------------------
+::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnTypeName( sal_Int32 column ) throw(SQLException, RuntimeException)
+{
+ if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
+ return (*m_mColumnsIter).second.getColumnTypeName();
+ return ::rtl::OUString();
+}
+// -------------------------------------------------------------------------
+
+sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCaseSensitive( sal_Int32 column ) throw(SQLException, RuntimeException)
+{
+ if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
+ return (*m_mColumnsIter).second.isCaseSensitive();
+ return sal_True;
+}
+// -------------------------------------------------------------------------
+
+::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getSchemaName( sal_Int32 column ) throw(SQLException, RuntimeException)
+{
+ if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
+ return (*m_mColumnsIter).second.getSchemaName();
+ return ::rtl::OUString();
+}
+// -----------------------------------------------------------------------------
+// -------------------------------------------------------------------------
+ObjectTypeEnum OAdoGroup::MapObjectType(sal_Int32 _ObjType)
+{
+ ObjectTypeEnum eNumType= adPermObjTable;
+ switch(_ObjType)
+ {
+ case PrivilegeObject::TABLE:
+ break;
+ case PrivilegeObject::VIEW:
+ eNumType = adPermObjView;
+ break;
+ case PrivilegeObject::COLUMN:
+ eNumType = adPermObjColumn;
+ break;
+ }
+ return eNumType;
+}
+// -------------------------------------------------------------------------
+sal_Int32 OAdoGroup::MapRight(RightsEnum _eNum)
+{
+ sal_Int32 nRight = 0;
+ if(_eNum & adRightRead)
+ nRight |= Privilege::SELECT;
+ if(_eNum & adRightInsert)
+ nRight |= Privilege::INSERT;
+ if(_eNum & adRightUpdate)
+ nRight |= Privilege::UPDATE;
+ if(_eNum & adRightDelete)
+ nRight |= Privilege::DELETE;
+ if(_eNum & adRightReadDesign)
+ nRight |= Privilege::READ;
+ if(_eNum & adRightCreate)
+ nRight |= Privilege::CREATE;
+ if(_eNum & adRightWriteDesign)
+ nRight |= Privilege::ALTER;
+ if(_eNum & adRightReference)
+ nRight |= Privilege::REFERENCE;
+ if(_eNum & adRightDrop)
+ nRight |= Privilege::DROP;
+
+ return nRight;
+}
+// -------------------------------------------------------------------------
+RightsEnum OAdoGroup::Map2Right(sal_Int32 _eNum)
+{
+ sal_Int32 nRight = adRightNone;
+ if(_eNum & Privilege::SELECT)
+ nRight |= adRightRead;
+
+ if(_eNum & Privilege::INSERT)
+ nRight |= adRightInsert;
+
+ if(_eNum & Privilege::UPDATE)
+ nRight |= adRightUpdate;
+
+ if(_eNum & Privilege::DELETE)
+ nRight |= adRightDelete;
+
+ if(_eNum & Privilege::READ)
+ nRight |= adRightReadDesign;
+
+ if(_eNum & Privilege::CREATE)
+ nRight |= adRightCreate;
+
+ if(_eNum & Privilege::ALTER)
+ nRight |= adRightWriteDesign;
+
+ if(_eNum & Privilege::REFERENCE)
+ nRight |= adRightReference;
+
+ if(_eNum & Privilege::DROP)
+ nRight |= adRightDrop;
+
+ return (RightsEnum)nRight;
+}
+// -------------------------------------------------------------------------
+void WpADOIndex::Create()
+{
+ IClassFactory2* pIUnknown = NULL;
+ IUnknown *pOuter = NULL;
+ HRESULT hr = -1;
+ _ADOIndex* pCommand;
+ hr = CoCreateInstance(ADOS::CLSID_ADOINDEX_25,
+ NULL,
+ CLSCTX_INPROC_SERVER,
+ ADOS::IID_ADOINDEX_25,
+ (void**)&pCommand );
+
+
+ if( !FAILED( hr ) )
+ operator=(pCommand);
+}
+// -------------------------------------------------------------------------
+void OAdoIndex::fillPropertyValues()
+{
+ if(m_aIndex.IsValid())
+ {
+ m_Name = m_aIndex.get_Name();
+ m_IsUnique = m_aIndex.get_Unique();
+ m_IsPrimaryKeyIndex = m_aIndex.get_PrimaryKey();
+ m_IsClustered = m_aIndex.get_Clustered();
+ }
+}
+// -----------------------------------------------------------------------------
+void WpADOKey::Create()
+{
+ IClassFactory2* pIUnknown = NULL;
+ IUnknown *pOuter = NULL;
+ HRESULT hr = -1;
+ _ADOKey* pCommand;
+ hr = CoCreateInstance(ADOS::CLSID_ADOKEY_25,
+ NULL,
+ CLSCTX_INPROC_SERVER,
+ ADOS::IID_ADOKEY_25,
+ (void**)&pCommand );
+
+
+ if( !FAILED( hr ) )
+ operator=(pCommand);
+}
+// -------------------------------------------------------------------------
+void OAdoKey::fillPropertyValues()
+{
+ if(m_aKey.IsValid())
+ {
+ m_Type = MapKeyRule(m_aKey.get_Type());
+ m_Name = m_aKey.get_Name();
+ m_ReferencedTable = m_aKey.get_RelatedTable();
+ m_UpdateRule = MapRule(m_aKey.get_UpdateRule());
+ m_DeleteRule = MapRule(m_aKey.get_DeleteRule());
+ }
+}
+// -------------------------------------------------------------------------
+sal_Int32 OAdoKey::MapRule(const RuleEnum& _eNum) const
+{
+ sal_Int32 eNum = KeyRule::NO_ACTION;
+ switch(_eNum)
+ {
+ case adRICascade:
+ eNum = KeyRule::CASCADE;
+ break;
+ case adRISetNull:
+ eNum = KeyRule::SET_NULL;
+ break;
+ case adRINone:
+ eNum = KeyRule::NO_ACTION;
+ break;
+ case adRISetDefault:
+ eNum = KeyRule::SET_DEFAULT;
+ break;
+ }
+ return eNum;
+}
+// -------------------------------------------------------------------------
+RuleEnum OAdoKey::Map2Rule(const sal_Int32& _eNum) const
+{
+ RuleEnum eNum = adRINone;
+ switch(_eNum)
+ {
+ case KeyRule::CASCADE:
+ eNum = adRICascade;
+ break;
+ case KeyRule::SET_NULL:
+ eNum = adRISetNull;
+ break;
+ case KeyRule::NO_ACTION:
+ eNum = adRINone;
+ break;
+ case KeyRule::SET_DEFAULT:
+ eNum = adRISetDefault;
+ break;
+ }
+ return eNum;
+}
+// -------------------------------------------------------------------------
+sal_Int32 OAdoKey::MapKeyRule(const KeyTypeEnum& _eNum) const
+{
+ sal_Int32 nKeyType = KeyType::PRIMARY;
+ switch(_eNum)
+ {
+ case adKeyPrimary:
+ nKeyType = KeyType::PRIMARY;
+ break;
+ case adKeyForeign:
+ nKeyType = KeyType::FOREIGN;
+ break;
+ case adKeyUnique:
+ nKeyType = KeyType::UNIQUE;
+ break;
+ }
+ return nKeyType;
+}
+// -------------------------------------------------------------------------
+KeyTypeEnum OAdoKey::Map2KeyRule(const sal_Int32& _eNum) const
+{
+ KeyTypeEnum eNum;
+ switch(_eNum)
+ {
+ case KeyType::PRIMARY:
+ eNum = adKeyPrimary;
+ break;
+ case KeyType::FOREIGN:
+ eNum = adKeyForeign;
+ break;
+ case KeyType::UNIQUE:
+ eNum = adKeyUnique;
+ break;
+ }
+ return eNum;
+}
+// -----------------------------------------------------------------------------
+void WpADOTable::Create()
+{
+ IClassFactory2* pIUnknown = NULL;
+ IUnknown *pOuter = NULL;
+ HRESULT hr = -1;
+ _ADOTable* pCommand;
+ hr = CoCreateInstance(ADOS::CLSID_ADOTABLE_25,
+ NULL,
+ CLSCTX_INPROC_SERVER,
+ ADOS::IID_ADOTABLE_25,
+ (void**)&pCommand );
+
+
+ if( !FAILED( hr ) )
+ operator=(pCommand);
+}
+// -------------------------------------------------------------------------
+::rtl::OUString WpADOCatalog::GetObjectOwner(const ::rtl::OUString& _rName, ObjectTypeEnum _eNum)
+{
+ OLEVariant _rVar;
+ _rVar.setNoArg();
+ OLEString aBSTR;
+ OLEString sStr1(_rName);
+ pInterface->GetObjectOwner(sStr1,_eNum,_rVar,&aBSTR);
+ return aBSTR;
+}
+// -----------------------------------------------------------------------------
+void OAdoTable::fillPropertyValues()
+{
+ if(m_aTable.IsValid())
+ {
+ m_Name = m_aTable.get_Name();
+ m_Type = m_aTable.get_Type();
+ {
+ WpADOCatalog aCat(m_aTable.get_ParentCatalog());
+ if(aCat.IsValid())
+ m_CatalogName = aCat.GetObjectOwner(m_aTable.get_Name(),adPermObjTable);
+ }
+ {
+ ADOProperties* pProps = m_aTable.get_Properties();
+ if(pProps)
+ {
+ pProps->AddRef();
+ ADOProperty* pProp = NULL;
+ pProps->get_Item(OLEVariant(::rtl::OUString::createFromAscii("Description")),&pProp);
+ WpADOProperty aProp(pProp);
+ if(pProp)
+ m_Description = aProp.GetValue();
+ pProps->Release();
+ }
+ }
+ }
+}
+// -----------------------------------------------------------------------------
+void WpADOUser::Create()
+{
+ IClassFactory2* pIUnknown = NULL;
+ IUnknown *pOuter = NULL;
+ HRESULT hr = -1;
+ _ADOUser* pCommand;
+ hr = CoCreateInstance(ADOS::CLSID_ADOUSER_25,
+ NULL,
+ CLSCTX_INPROC_SERVER,
+ ADOS::IID_ADOUSER_25,
+ (void**)&pCommand );
+
+
+ if( !FAILED( hr ) )
+ operator=(pCommand);
+}
+// -------------------------------------------------------------------------
+void WpADOView::Create()
+{
+ IClassFactory2* pIUnknown = NULL;
+ IUnknown *pOuter = NULL;
+ HRESULT hr = -1;
+ ADOView* pCommand;
+ hr = CoCreateInstance(ADOS::CLSID_ADOVIEW_25,
+ NULL,
+ CLSCTX_INPROC_SERVER,
+ ADOS::IID_ADOVIEW_25,
+ (void**)&pCommand );
+
+
+ if( !FAILED( hr ) )
+ operator=(pCommand);
+}
+
+// -------------------------------------------------------------------------
+
+
diff --git a/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx b/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx
index 5682feae54da..01cf482a94ee 100644
--- a/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx
+++ b/connectivity/source/drivers/ado/ADatabaseMetaDataResultSet.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ADatabaseMetaDataResultSet.cxx,v $
*
- * $Revision: 1.12 $
+ * $Revision: 1.13 $
*
- * last change: $Author: oj $ $Date: 2001-05-17 09:13:23 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:15:43 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -176,6 +176,12 @@ Any SAL_CALL ODatabaseMetaDataResultSet::queryInterface( const Type & rType ) th
return ::comphelper::concatSequences(aTypes.getTypes(),ODatabaseMetaDataResultSet_BASE::getTypes());
}
+// -----------------------------------------------------------------------------
+void ODatabaseMetaDataResultSet::checkRecordSet() throw(SQLException)
+{
+ if(!m_pRecordSet)
+ throwFunctionSequenceException(*this);
+}
// -------------------------------------------------------------------------
sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::findColumn( const ::rtl::OUString& columnName ) throw(SQLException, RuntimeException)
@@ -204,8 +210,8 @@ Reference< ::com::sun::star::io::XInputStream > SAL_CALL ODatabaseMetaDataResult
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -247,8 +253,8 @@ Reference< ::com::sun::star::io::XInputStream > SAL_CALL ODatabaseMetaDataResult
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
return NULL;
@@ -260,8 +266,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::getBoolean( sal_Int32 columnIndex
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -277,8 +283,8 @@ sal_Int8 SAL_CALL ODatabaseMetaDataResultSet::getByte( sal_Int32 columnIndex ) t
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -299,8 +305,8 @@ Sequence< sal_Int8 > SAL_CALL ODatabaseMetaDataResultSet::getBytes( sal_Int32 co
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -316,8 +322,8 @@ Sequence< sal_Int8 > SAL_CALL ODatabaseMetaDataResultSet::getBytes( sal_Int32 co
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -333,8 +339,8 @@ double SAL_CALL ODatabaseMetaDataResultSet::getDouble( sal_Int32 columnIndex ) t
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -350,8 +356,8 @@ float SAL_CALL ODatabaseMetaDataResultSet::getFloat( sal_Int32 columnIndex ) thr
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -367,8 +373,8 @@ sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::getInt( sal_Int32 columnIndex ) t
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -390,8 +396,8 @@ sal_Int32 SAL_CALL ODatabaseMetaDataResultSet::getRow( ) throw(SQLException, Ru
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
return 0;
}
@@ -402,8 +408,8 @@ sal_Int64 SAL_CALL ODatabaseMetaDataResultSet::getLong( sal_Int32 columnIndex )
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -416,8 +422,8 @@ Reference< XResultSetMetaData > SAL_CALL ODatabaseMetaDataResultSet::getMetaData
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
if(!m_xMetaData.is())
m_xMetaData = new ODatabaseMetaDataResultSetMetaData(m_pRecordSet,this);
@@ -430,8 +436,8 @@ Reference< XArray > SAL_CALL ODatabaseMetaDataResultSet::getArray( sal_Int32 col
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
return NULL;
@@ -444,8 +450,8 @@ Reference< XClob > SAL_CALL ODatabaseMetaDataResultSet::getClob( sal_Int32 colum
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
return NULL;
@@ -456,8 +462,8 @@ Reference< XBlob > SAL_CALL ODatabaseMetaDataResultSet::getBlob( sal_Int32 colum
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
return NULL;
@@ -469,8 +475,8 @@ Reference< XRef > SAL_CALL ODatabaseMetaDataResultSet::getRef( sal_Int32 columnI
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
return NULL;
@@ -482,8 +488,8 @@ Any SAL_CALL ODatabaseMetaDataResultSet::getObject( sal_Int32 columnIndex, const
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
return Any();
@@ -495,8 +501,8 @@ sal_Int16 SAL_CALL ODatabaseMetaDataResultSet::getShort( sal_Int32 columnIndex )
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -518,8 +524,8 @@ sal_Int16 SAL_CALL ODatabaseMetaDataResultSet::getShort( sal_Int32 columnIndex )
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -540,8 +546,8 @@ sal_Int16 SAL_CALL ODatabaseMetaDataResultSet::getShort( sal_Int32 columnIndex )
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -558,8 +564,8 @@ sal_Int16 SAL_CALL ODatabaseMetaDataResultSet::getShort( sal_Int32 columnIndex )
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
columnIndex = mapColumn(columnIndex);
ADO_GETFIELD(columnIndex);
@@ -575,8 +581,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isAfterLast( ) throw(SQLException
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
VARIANT_BOOL bIsAtEOF;
m_pRecordSet->get_EOF(&bIsAtEOF);
@@ -588,8 +594,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isFirst( ) throw(SQLException, Ru
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
return m_nRowPos == 1;
}
@@ -599,8 +605,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::isLast( ) throw(SQLException, Run
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
return sal_True;
}
@@ -610,8 +616,8 @@ void SAL_CALL ODatabaseMetaDataResultSet::beforeFirst( ) throw(SQLException, Ru
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
if(first())
previous();
@@ -622,8 +628,8 @@ void SAL_CALL ODatabaseMetaDataResultSet::afterLast( ) throw(SQLException, Runt
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
if(last())
next();
@@ -728,8 +734,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowDeleted( ) throw(SQLException,
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
RecordStatusEnum eRec;
m_pRecordSet->get_Status((sal_Int32*)&eRec);
@@ -740,8 +746,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowInserted( ) throw(SQLException
{ ::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
RecordStatusEnum eRec;
m_pRecordSet->get_Status((sal_Int32*)&eRec);
@@ -753,8 +759,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::rowUpdated( ) throw(SQLException,
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
RecordStatusEnum eRec;
m_pRecordSet->get_Status((sal_Int32*)&eRec);
@@ -801,8 +807,8 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSet::wasNull( ) throw(SQLException, Ru
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
return m_aValue.isNull();
}
@@ -812,8 +818,8 @@ void SAL_CALL ODatabaseMetaDataResultSet::refreshRow( ) throw(SQLException, Run
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
m_pRecordSet->Resync(adAffectCurrent,adResyncAllValues);
}
@@ -824,8 +830,8 @@ void SAL_CALL ODatabaseMetaDataResultSet::cancel( ) throw(RuntimeException)
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(ODatabaseMetaDataResultSet_BASE::rBHelper.bDisposed);
- if(!m_pRecordSet)
- throwFunctionSequenceException(*this);
+ checkRecordSet();
+
m_pRecordSet->Cancel();
}
diff --git a/connectivity/source/drivers/ado/ADatabaseMetaDataResultSetMetaData.cxx b/connectivity/source/drivers/ado/ADatabaseMetaDataResultSetMetaData.cxx
index 5f5c6ddc5ae2..4a2d9f1fd749 100644
--- a/connectivity/source/drivers/ado/ADatabaseMetaDataResultSetMetaData.cxx
+++ b/connectivity/source/drivers/ado/ADatabaseMetaDataResultSetMetaData.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ADatabaseMetaDataResultSetMetaData.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: oj $ $Date: 2001-05-17 07:26:59 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -63,16 +63,6 @@
#include "ado/ADatabaseMetaDataResultSetMetaData.hxx"
#endif
-#ifndef _COM_SUN_STAR_SDBC_DATATYPE_HPP_
-#include <com/sun/star/sdbc/DataType.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBC_PROCEDURERESULT_HPP_
-#include <com/sun/star/sdbc/ProcedureResult.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBC_COLUMNVALUE_HPP_
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#endif
-
#ifndef _CONNECTIVITY_ADO_AWRAPADO_HXX_
#include "ado/Awrapado.hxx"
#endif
@@ -141,22 +131,6 @@ sal_Int32 SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnCount( ) throw(
}
// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCaseSensitive( sal_Int32 column ) throw(SQLException, RuntimeException)
-{
- if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
- return (*m_mColumnsIter).second.isCaseSensitive();
- return sal_True;
-}
-// -------------------------------------------------------------------------
-
-::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getSchemaName( sal_Int32 column ) throw(SQLException, RuntimeException)
-{
- if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
- return (*m_mColumnsIter).second.getSchemaName();
- return ::rtl::OUString();
-}
-// -------------------------------------------------------------------------
-
::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnName( sal_Int32 column ) throw(SQLException, RuntimeException)
{
if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
@@ -170,27 +144,6 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCaseSensitive( sal_Int32
return ::rtl::OUString();
}
// -------------------------------------------------------------------------
-::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getTableName( sal_Int32 column ) throw(SQLException, RuntimeException)
-{
- if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
- return (*m_mColumnsIter).second.getTableName();
- return ::rtl::OUString();
-}
-// -------------------------------------------------------------------------
-::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getCatalogName( sal_Int32 column ) throw(SQLException, RuntimeException)
-{
- if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
- return (*m_mColumnsIter).second.getCatalogName();
- return ::rtl::OUString();
-}
-// -------------------------------------------------------------------------
-::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnTypeName( sal_Int32 column ) throw(SQLException, RuntimeException)
-{
- if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
- return (*m_mColumnsIter).second.getColumnTypeName();
- return ::rtl::OUString();
-}
-// -------------------------------------------------------------------------
::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnLabel( sal_Int32 column ) throw(SQLException, RuntimeException)
{
if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
@@ -198,13 +151,6 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCaseSensitive( sal_Int32
return getColumnName(column);
}
// -------------------------------------------------------------------------
-::rtl::OUString SAL_CALL ODatabaseMetaDataResultSetMetaData::getColumnServiceName( sal_Int32 column ) throw(SQLException, RuntimeException)
-{
- if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
- return (*m_mColumnsIter).second.getColumnServiceName();
- return ::rtl::OUString();
-}
-// -------------------------------------------------------------------------
sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCurrency( sal_Int32 column ) throw(SQLException, RuntimeException)
{
@@ -221,14 +167,6 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isCurrency( sal_Int32 colu
}
// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isAutoIncrement( sal_Int32 column ) throw(SQLException, RuntimeException)
-{
- if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
- return (*m_mColumnsIter).second.isAutoIncrement();
- return sal_False;
-}
-// -------------------------------------------------------------------------
-
sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isSigned( sal_Int32 column ) throw(SQLException, RuntimeException)
{
@@ -288,14 +226,6 @@ sal_Int32 SAL_CALL ODatabaseMetaDataResultSetMetaData::isNullable( sal_Int32 col
}
// -------------------------------------------------------------------------
-sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isSearchable( sal_Int32 column ) throw(SQLException, RuntimeException)
-{
- if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
- return (*m_mColumnsIter).second.isSearchable();
- return sal_True;
-}
-// -------------------------------------------------------------------------
-
sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isReadOnly( sal_Int32 column ) throw(SQLException, RuntimeException)
{
if(m_mColumns.size() && (m_mColumnsIter = m_mColumns.find(column)) != m_mColumns.end())
@@ -336,145 +266,6 @@ sal_Bool SAL_CALL ODatabaseMetaDataResultSetMetaData::isWritable( sal_Int32 colu
return (*m_mColumnsIter).second.isWritable();
return isDefinitelyWritable(column);
}
-// -------------------------------------------------------------------------
-void ODatabaseMetaDataResultSetMetaData::setColumnPrivilegesMap()
-{
- m_mColumns[8] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("IS_GRANTABLE"),
- ColumnValue::NULLABLE,
- 3,3,0,
- DataType::VARCHAR);
-}
-// -------------------------------------------------------------------------
-void ODatabaseMetaDataResultSetMetaData::setColumnsMap()
-{
- m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("TYPE_NAME"),
- ColumnValue::NO_NULLS,
- 0,0,0,
- DataType::VARCHAR);
- m_mColumns[11] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
- m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"),
- ColumnValue::NULLABLE,
- 0,0,0,
- DataType::VARCHAR);
- m_mColumns[13] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("COLUMN_DEF"),
- ColumnValue::NULLABLE,
- 0,0,0,
- DataType::VARCHAR);
- m_mColumns[14] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATA_TYPE"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
- m_mColumns[15] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATETIME_SUB"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
- m_mColumns[16] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("CHAR_OCTET_LENGTH"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
-}
-// -------------------------------------------------------------------------
-void ODatabaseMetaDataResultSetMetaData::setTablesMap()
-{
- m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"),
- ColumnValue::NULLABLE,
- 0,0,0,
- DataType::VARCHAR);
-}
-// -------------------------------------------------------------------------
-void ODatabaseMetaDataResultSetMetaData::setProcedureColumnsMap()
-{
- m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
-}
-// -------------------------------------------------------------------------
-void ODatabaseMetaDataResultSetMetaData::setPrimaryKeysMap()
-{
- m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("KEY_SEQ"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
- m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PK_NAME"),
- ColumnValue::NULLABLE,
- 0,0,0,
- DataType::VARCHAR);
-}
-// -------------------------------------------------------------------------
-void ODatabaseMetaDataResultSetMetaData::setIndexInfoMap()
-{
- m_mColumns[4] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NON_UNIQUE"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::BIT);
- m_mColumns[5] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("INDEX_QUALIFIER"),
- ColumnValue::NULLABLE,
- 0,0,0,
- DataType::VARCHAR);
- m_mColumns[10] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("ASC_OR_DESC"),
- ColumnValue::NULLABLE,
- 0,0,0,
- DataType::VARCHAR);
-}
-// -------------------------------------------------------------------------
-void ODatabaseMetaDataResultSetMetaData::setTablePrivilegesMap()
-{
- m_mColumns[6] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PRIVILEGE"),
- ColumnValue::NULLABLE,
- 0,0,0,
- DataType::VARCHAR);
- m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("IS_GRANTABLE"),
- ColumnValue::NULLABLE,
- 0,0,0,
- DataType::VARCHAR);
-}
-// -------------------------------------------------------------------------
-void ODatabaseMetaDataResultSetMetaData::setCrossReferenceMap()
-{
- m_mColumns[9] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("KEY_SEQ"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
-}
-// -------------------------------------------------------------------------
-void ODatabaseMetaDataResultSetMetaData::setTypeInfoMap()
-{
- m_mColumns[3] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("PRECISION"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
- m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NULLABLE"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
- m_mColumns[12] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("AUTO_INCREMENT"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::BIT);
- m_mColumns[16] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATA_TYPE"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
- m_mColumns[17] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("SQL_DATETIME_SUB"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
- m_mColumns[18] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("NUM_PREC_RADIX"),
- ColumnValue::NO_NULLS,
- 1,1,0,
- DataType::INTEGER);
-}
-// -------------------------------------------------------------------------
-void ODatabaseMetaDataResultSetMetaData::setProceduresMap()
-{
- m_mColumns[7] = OColumn(::rtl::OUString(),::rtl::OUString::createFromAscii("REMARKS"),
- ColumnValue::NULLABLE,
- 0,0,0,
- DataType::VARCHAR);
-}
-// -------------------------------------------------------------------------
+// -----------------------------------------------------------------------------
+
diff --git a/connectivity/source/drivers/ado/ADriver.cxx b/connectivity/source/drivers/ado/ADriver.cxx
index 2105a20075c2..75b017c2b2d6 100644
--- a/connectivity/source/drivers/ado/ADriver.cxx
+++ b/connectivity/source/drivers/ado/ADriver.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ADriver.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -175,11 +175,7 @@ Reference< XConnection > SAL_CALL ODriver::connect( const ::rtl::OUString& url,
sal_Bool SAL_CALL ODriver::acceptsURL( const ::rtl::OUString& url )
throw(SQLException, RuntimeException)
{
- if(!url.compareTo(::rtl::OUString::createFromAscii("sdbc:ado:"),9))
- {
- return sal_True;
- }
- return sal_False;
+ return (!url.compareTo(::rtl::OUString::createFromAscii("sdbc:ado:"),9));
}
// --------------------------------------------------------------------------------
Sequence< DriverPropertyInfo > SAL_CALL ODriver::getPropertyInfo( const ::rtl::OUString& url, const Sequence< PropertyValue >& info ) throw(SQLException, RuntimeException)
@@ -240,30 +236,65 @@ Reference< XTablesSupplier > SAL_CALL ODriver::getDataDefinitionByURL( const ::r
return getDataDefinitionByConnection(connect(url,info));
}
-//#include <tools/prewin.h>
-//namespace test__rr__
-//{
-//
-//#import "c:\Program Files\Common Files\system\ado\msadox.dll"
-//
-//}
-//#include <tools/postwin.h>
+// -----------------------------------------------------------------------------
+void OLEVariant::ChangeType(VARTYPE vartype, const OLEVariant* pSrc)
+{
+ //
+ // If pDest is NULL, convert type in place
+ //
+ if (pSrc == NULL)
+ pSrc = this;
-void WpADOCatalog::Create()
+ if ((this != pSrc) || (vartype != V_VT(this)))
+ {
+ if(FAILED(::VariantChangeType(static_cast<VARIANT*>(this),
+ const_cast<VARIANT*>(static_cast<const VARIANT*>(pSrc)),
+ 0, vartype)))
+ throw ::com::sun::star::sdbc::SQLException(::rtl::OUString::createFromAscii("Could convert type!"),NULL,::rtl::OUString(),1000,::com::sun::star::uno::Any());
+ }
+}
+// -----------------------------------------------------------------------------
+void ADOS::ThrowException(ADOConnection* _pAdoCon,const Reference< XInterface >& _xInterface) throw(SQLException, RuntimeException)
{
- IClassFactory2* pIUnknown = NULL;
- IUnknown *pOuter = NULL;
- HRESULT hr = -1;
- _ADOCatalog* pCommand;
- hr = CoCreateInstance(ADOS::CLSID_ADOCATALOG_25,
- NULL,
- CLSCTX_INPROC_SERVER,
- ADOS::IID_ADOCATALOG_25,
- (void**)&pCommand );
+ ADOErrors *pErrors = NULL;
+ _pAdoCon->get_Errors(&pErrors);
+ if(!pErrors)
+ return; // no error found
+ pErrors->AddRef( );
- if( !FAILED( hr ) )
- operator=(pCommand);
+ // alle aufgelaufenen Fehler auslesen und ausgeben
+ sal_Int32 nLen;
+ pErrors->get_Count(&nLen);
+ if (nLen)
+ {
+ ::rtl::OUString sError;
+ ::rtl::OUString aSQLState;
+ SQLException aException;
+ for (sal_Int32 i = nLen-1; i>=0; i--)
+ {
+ ADOError *pError = NULL;
+ pErrors->get_Item(OLEVariant(i),&pError);
+ WpADOError aErr(pError);
+ OSL_ENSURE(pError,"No error in collection found! BAD!");
+ if(pError)
+ {
+ if(i==nLen-1)
+ aException = SQLException(aErr.GetDescription(),_xInterface,aErr.GetSQLState(),aErr.GetNumber(),Any());
+ else
+ {
+ SQLException aTemp = SQLException(aErr.GetDescription(),
+ _xInterface,aErr.GetSQLState(),aErr.GetNumber(),makeAny(aException));
+ aTemp.NextException <<= aException;
+ aException = aTemp;
+ }
+ }
+ }
+ pErrors->Clear();
+ pErrors->Release();
+ throw aException;
+ }
+ pErrors->Release();
}
diff --git a/connectivity/source/drivers/ado/AGroup.cxx b/connectivity/source/drivers/ado/AGroup.cxx
index 06cb5f050802..dd9e8aa55265 100644
--- a/connectivity/source/drivers/ado/AGroup.cxx
+++ b/connectivity/source/drivers/ado/AGroup.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: AGroup.cxx,v $
*
- * $Revision: 1.9 $
+ * $Revision: 1.10 $
*
- * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -71,15 +71,6 @@
#ifndef _COMPHELPER_SEQUENCE_HXX_
#include <comphelper/sequence.hxx>
#endif
-#ifdef DELETE
-#undef DELETE
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_PRIVILEGE_HPP_
-#include <com/sun/star/sdbcx/Privilege.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_PRIVILEGEOBJECT_HPP_
-#include <com/sun/star/sdbcx/PrivilegeObject.hpp>
-#endif
#ifndef _COM_SUN_STAR_SDBC_XROW_HPP_
#include <com/sun/star/sdbc/XRow.hpp>
@@ -247,81 +238,7 @@ void SAL_CALL OAdoGroup::revokePrivileges( const ::rtl::OUString& objName, sal_I
{
m_aGroup.SetPermissions(objName,MapObjectType(objType),adAccessDeny,Map2Right(objPrivileges));
}
-// -------------------------------------------------------------------------
-ObjectTypeEnum OAdoGroup::MapObjectType(sal_Int32 _ObjType)
-{
- ObjectTypeEnum eNumType= adPermObjTable;
- switch(_ObjType)
- {
- case PrivilegeObject::TABLE:
- break;
- case PrivilegeObject::VIEW:
- eNumType = adPermObjView;
- break;
- case PrivilegeObject::COLUMN:
- eNumType = adPermObjColumn;
- break;
- }
- return eNumType;
-}
-// -------------------------------------------------------------------------
-sal_Int32 OAdoGroup::MapRight(RightsEnum _eNum)
-{
- sal_Int32 nRight = 0;
- if(_eNum & adRightRead)
- nRight |= Privilege::SELECT;
- if(_eNum & adRightInsert)
- nRight |= Privilege::INSERT;
- if(_eNum & adRightUpdate)
- nRight |= Privilege::UPDATE;
- if(_eNum & adRightDelete)
- nRight |= Privilege::DELETE;
- if(_eNum & adRightReadDesign)
- nRight |= Privilege::READ;
- if(_eNum & adRightCreate)
- nRight |= Privilege::CREATE;
- if(_eNum & adRightWriteDesign)
- nRight |= Privilege::ALTER;
- if(_eNum & adRightReference)
- nRight |= Privilege::REFERENCE;
- if(_eNum & adRightDrop)
- nRight |= Privilege::DROP;
- return nRight;
-}
-// -------------------------------------------------------------------------
-RightsEnum OAdoGroup::Map2Right(sal_Int32 _eNum)
-{
- sal_Int32 nRight = adRightNone;
- if(_eNum & Privilege::SELECT)
- nRight |= adRightRead;
-
- if(_eNum & Privilege::INSERT)
- nRight |= adRightInsert;
-
- if(_eNum & Privilege::UPDATE)
- nRight |= adRightUpdate;
-
- if(_eNum & Privilege::DELETE)
- nRight |= adRightDelete;
-
- if(_eNum & Privilege::READ)
- nRight |= adRightReadDesign;
-
- if(_eNum & Privilege::CREATE)
- nRight |= adRightCreate;
-
- if(_eNum & Privilege::ALTER)
- nRight |= adRightWriteDesign;
-
- if(_eNum & Privilege::REFERENCE)
- nRight |= adRightReference;
-
- if(_eNum & Privilege::DROP)
- nRight |= adRightDrop;
-
- return (RightsEnum)nRight;
-}
// -----------------------------------------------------------------------------
void SAL_CALL OAdoGroup::acquire() throw(::com::sun::star::uno::RuntimeException)
{
diff --git a/connectivity/source/drivers/ado/AIndex.cxx b/connectivity/source/drivers/ado/AIndex.cxx
index 3fe4f16ab95a..43547254534a 100644
--- a/connectivity/source/drivers/ado/AIndex.cxx
+++ b/connectivity/source/drivers/ado/AIndex.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: AIndex.cxx,v $
*
- * $Revision: 1.12 $
+ * $Revision: 1.13 $
*
- * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -96,23 +96,6 @@ using namespace com::sun::star::beans;
using namespace com::sun::star::sdbc;
// -------------------------------------------------------------------------
-void WpADOIndex::Create()
-{
- IClassFactory2* pIUnknown = NULL;
- IUnknown *pOuter = NULL;
- HRESULT hr = -1;
- _ADOIndex* pCommand;
- hr = CoCreateInstance(ADOS::CLSID_ADOINDEX_25,
- NULL,
- CLSCTX_INPROC_SERVER,
- ADOS::IID_ADOINDEX_25,
- (void**)&pCommand );
-
-
- if( !FAILED( hr ) )
- operator=(pCommand);
-}
-// -------------------------------------------------------------------------
OAdoIndex::OAdoIndex(sal_Bool _bCase,OConnection* _pConnection,ADOIndex* _pIndex)
: OIndex_ADO(::rtl::OUString(),::rtl::OUString(),sal_False,sal_False,sal_False,_bCase)
,m_pConnection(_pConnection)
@@ -223,18 +206,6 @@ void SAL_CALL OAdoIndex::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,cons
}
OIndex_ADO::setFastPropertyValue_NoBroadcast(nHandle,rValue);
}
-// -------------------------------------------------------------------------
-void OAdoIndex::fillPropertyValues()
-{
- if(m_aIndex.IsValid())
- {
- m_Name = m_aIndex.get_Name();
- m_IsUnique = m_aIndex.get_Unique();
- m_IsPrimaryKeyIndex = m_aIndex.get_PrimaryKey();
- m_IsClustered = m_aIndex.get_Clustered();
- }
-}
-// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void SAL_CALL OAdoIndex::acquire() throw(::com::sun::star::uno::RuntimeException)
{
diff --git a/connectivity/source/drivers/ado/AKey.cxx b/connectivity/source/drivers/ado/AKey.cxx
index e6c7b3cae9e8..20dd3cb487bd 100644
--- a/connectivity/source/drivers/ado/AKey.cxx
+++ b/connectivity/source/drivers/ado/AKey.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: AKey.cxx,v $
*
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
*
- * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -74,12 +74,6 @@
#ifndef _COMPHELPER_SEQUENCE_HXX_
#include <comphelper/sequence.hxx>
#endif
-#ifndef _COM_SUN_STAR_SDBC_KEYRULE_HPP_
-#include <com/sun/star/sdbc/KeyRule.hpp>
-#endif
-#ifndef _COM_SUN_STAR_SDBCX_KEYTYPE_HPP_
-#include <com/sun/star/sdbcx/KeyType.hpp>
-#endif
#ifndef _CONNECTIVITY_ADO_COLUMNS_HXX_
#include "ado/AColumns.hxx"
#endif
@@ -95,23 +89,6 @@ using namespace com::sun::star::sdbc;
using namespace com::sun::star::sdbcx;
// -------------------------------------------------------------------------
-void WpADOKey::Create()
-{
- IClassFactory2* pIUnknown = NULL;
- IUnknown *pOuter = NULL;
- HRESULT hr = -1;
- _ADOKey* pCommand;
- hr = CoCreateInstance(ADOS::CLSID_ADOKEY_25,
- NULL,
- CLSCTX_INPROC_SERVER,
- ADOS::IID_ADOKEY_25,
- (void**)&pCommand );
-
-
- if( !FAILED( hr ) )
- operator=(pCommand);
-}
-// -------------------------------------------------------------------------
OAdoKey::OAdoKey(sal_Bool _bCase,OConnection* _pConnection, ADOKey* _pKey)
: OKey_ADO(_bCase)
,m_pConnection(_pConnection)
@@ -232,96 +209,6 @@ void OAdoKey::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rVal
OKey_ADO::setFastPropertyValue_NoBroadcast(nHandle,rValue);
}
// -------------------------------------------------------------------------
-void OAdoKey::fillPropertyValues()
-{
- if(m_aKey.IsValid())
- {
- m_Type = MapKeyRule(m_aKey.get_Type());
- m_Name = m_aKey.get_Name();
- m_ReferencedTable = m_aKey.get_RelatedTable();
- m_UpdateRule = MapRule(m_aKey.get_UpdateRule());
- m_DeleteRule = MapRule(m_aKey.get_DeleteRule());
- }
-}
-// -------------------------------------------------------------------------
-sal_Int32 OAdoKey::MapRule(const RuleEnum& _eNum) const
-{
- sal_Int32 eNum = KeyRule::NO_ACTION;
- switch(_eNum)
- {
- case adRICascade:
- eNum = KeyRule::CASCADE;
- break;
- case adRISetNull:
- eNum = KeyRule::SET_NULL;
- break;
- case adRINone:
- eNum = KeyRule::NO_ACTION;
- break;
- case adRISetDefault:
- eNum = KeyRule::SET_DEFAULT;
- break;
- }
- return eNum;
-}
-// -------------------------------------------------------------------------
-RuleEnum OAdoKey::Map2Rule(const sal_Int32& _eNum) const
-{
- RuleEnum eNum = adRINone;
- switch(_eNum)
- {
- case KeyRule::CASCADE:
- eNum = adRICascade;
- break;
- case KeyRule::SET_NULL:
- eNum = adRISetNull;
- break;
- case KeyRule::NO_ACTION:
- eNum = adRINone;
- break;
- case KeyRule::SET_DEFAULT:
- eNum = adRISetDefault;
- break;
- }
- return eNum;
-}
-// -------------------------------------------------------------------------
-sal_Int32 OAdoKey::MapKeyRule(const KeyTypeEnum& _eNum) const
-{
- sal_Int32 nKeyType = KeyType::PRIMARY;
- switch(_eNum)
- {
- case adKeyPrimary:
- nKeyType = KeyType::PRIMARY;
- break;
- case adKeyForeign:
- nKeyType = KeyType::FOREIGN;
- break;
- case adKeyUnique:
- nKeyType = KeyType::UNIQUE;
- break;
- }
- return nKeyType;
-}
-// -------------------------------------------------------------------------
-KeyTypeEnum OAdoKey::Map2KeyRule(const sal_Int32& _eNum) const
-{
- KeyTypeEnum eNum;
- switch(_eNum)
- {
- case KeyType::PRIMARY:
- eNum = adKeyPrimary;
- break;
- case KeyType::FOREIGN:
- eNum = adKeyForeign;
- break;
- case KeyType::UNIQUE:
- eNum = adKeyUnique;
- break;
- }
- return eNum;
-}
-// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void SAL_CALL OAdoKey::acquire() throw(::com::sun::star::uno::RuntimeException)
{
diff --git a/connectivity/source/drivers/ado/ATable.cxx b/connectivity/source/drivers/ado/ATable.cxx
index cd53938246a6..1cc53e17ea4f 100644
--- a/connectivity/source/drivers/ado/ATable.cxx
+++ b/connectivity/source/drivers/ado/ATable.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ATable.cxx,v $
*
- * $Revision: 1.15 $
+ * $Revision: 1.16 $
*
- * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -120,23 +120,6 @@ using namespace com::sun::star::container;
using namespace com::sun::star::lang;
// -------------------------------------------------------------------------
-void WpADOTable::Create()
-{
- IClassFactory2* pIUnknown = NULL;
- IUnknown *pOuter = NULL;
- HRESULT hr = -1;
- _ADOTable* pCommand;
- hr = CoCreateInstance(ADOS::CLSID_ADOTABLE_25,
- NULL,
- CLSCTX_INPROC_SERVER,
- ADOS::IID_ADOTABLE_25,
- (void**)&pCommand );
-
-
- if( !FAILED( hr ) )
- operator=(pCommand);
-}
-// -------------------------------------------------------------------------
OAdoTable::OAdoTable(sal_Bool _bCase,OCatalog* _pCatalog,_ADOTable* _pTable)
: OTable_TYPEDEF(_bCase,::rtl::OUString(),::rtl::OUString())
,m_pCatalog(_pCatalog)
@@ -362,44 +345,6 @@ void OAdoTable::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rV
OTable_TYPEDEF::setFastPropertyValue_NoBroadcast(nHandle,rValue);
}
// -------------------------------------------------------------------------
-void OAdoTable::fillPropertyValues()
-{
- if(m_aTable.IsValid())
- {
- m_Name = m_aTable.get_Name();
- m_Type = m_aTable.get_Type();
- {
- WpADOCatalog aCat(m_aTable.get_ParentCatalog());
- if(aCat.IsValid())
- m_CatalogName = aCat.GetObjectOwner(m_aTable.get_Name(),adPermObjTable);
- }
- {
- ADOProperties* pProps = m_aTable.get_Properties();
- if(pProps)
- {
- pProps->AddRef();
- ADOProperty* pProp = NULL;
- pProps->get_Item(OLEVariant(::rtl::OUString::createFromAscii("Description")),&pProp);
- WpADOProperty aProp(pProp);
- if(pProp)
- m_Description = aProp.GetValue();
- pProps->Release();
- }
- }
- }
-}
-// -------------------------------------------------------------------------
-::rtl::OUString WpADOCatalog::GetObjectOwner(const ::rtl::OUString& _rName, ObjectTypeEnum _eNum)
-{
- OLEVariant _rVar;
- _rVar.setNoArg();
- OLEString aBSTR;
- OLEString sStr1(_rName);
- pInterface->GetObjectOwner(sStr1,_eNum,_rVar,&aBSTR);
- return aBSTR;
-}
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
void SAL_CALL OAdoTable::acquire() throw(::com::sun::star::uno::RuntimeException)
{
OTable_TYPEDEF::acquire();
diff --git a/connectivity/source/drivers/ado/AUser.cxx b/connectivity/source/drivers/ado/AUser.cxx
index 073618e965ae..2138adea9d93 100644
--- a/connectivity/source/drivers/ado/AUser.cxx
+++ b/connectivity/source/drivers/ado/AUser.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: AUser.cxx,v $
*
- * $Revision: 1.9 $
+ * $Revision: 1.10 $
*
- * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -88,23 +88,6 @@ using namespace com::sun::star::beans;
using namespace com::sun::star::sdbc;
// -------------------------------------------------------------------------
-void WpADOUser::Create()
-{
- IClassFactory2* pIUnknown = NULL;
- IUnknown *pOuter = NULL;
- HRESULT hr = -1;
- _ADOUser* pCommand;
- hr = CoCreateInstance(ADOS::CLSID_ADOUSER_25,
- NULL,
- CLSCTX_INPROC_SERVER,
- ADOS::IID_ADOUSER_25,
- (void**)&pCommand );
-
-
- if( !FAILED( hr ) )
- operator=(pCommand);
-}
-// -------------------------------------------------------------------------
OAdoUser::OAdoUser(sal_Bool _bCase, ADOUser* _pUser) : OUser_TYPEDEF(_bCase)
{
construct();
diff --git a/connectivity/source/drivers/ado/AView.cxx b/connectivity/source/drivers/ado/AView.cxx
index 943b86f3bc33..e26125a84c57 100644
--- a/connectivity/source/drivers/ado/AView.cxx
+++ b/connectivity/source/drivers/ado/AView.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: AView.cxx,v $
*
- * $Revision: 1.9 $
+ * $Revision: 1.10 $
*
- * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -89,24 +89,6 @@ using namespace com::sun::star::sdbc;
// IMPLEMENT_SERVICE_INFO(OAdoView,"com.sun.star.sdbcx.AView","com.sun.star.sdbcx.View");
// -------------------------------------------------------------------------
-void WpADOView::Create()
-{
- IClassFactory2* pIUnknown = NULL;
- IUnknown *pOuter = NULL;
- HRESULT hr = -1;
- ADOView* pCommand;
- hr = CoCreateInstance(ADOS::CLSID_ADOVIEW_25,
- NULL,
- CLSCTX_INPROC_SERVER,
- ADOS::IID_ADOVIEW_25,
- (void**)&pCommand );
-
-
- if( !FAILED( hr ) )
- operator=(pCommand);
-}
-
-// -------------------------------------------------------------------------
OAdoView::OAdoView(sal_Bool _bCase,ADOView* _pView) : OView_ADO(_bCase,NULL)
{
construct();
diff --git a/connectivity/source/drivers/ado/Aolevariant.cxx b/connectivity/source/drivers/ado/Aolevariant.cxx
index 9ab9092d4b0a..65b8349e0a1c 100644
--- a/connectivity/source/drivers/ado/Aolevariant.cxx
+++ b/connectivity/source/drivers/ado/Aolevariant.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: Aolevariant.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: oj $ $Date: 2001-05-18 08:48:07 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -523,21 +523,3 @@ SAFEARRAY* OLEVariant::getUI1SAFEARRAYPtr() const
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-void OLEVariant::ChangeType(VARTYPE vartype, const OLEVariant* pSrc)
-{
- //
- // If pDest is NULL, convert type in place
- //
- if (pSrc == NULL)
- pSrc = this;
-
- if ((this != pSrc) || (vartype != V_VT(this)))
- {
- if(FAILED(::VariantChangeType(static_cast<VARIANT*>(this),
- const_cast<VARIANT*>(static_cast<const VARIANT*>(pSrc)),
- 0, vartype)))
- throw ::com::sun::star::sdbc::SQLException(::rtl::OUString::createFromAscii("Could convert type!"),NULL,::rtl::OUString(),1000,::com::sun::star::uno::Any());
- }
-}
-
diff --git a/connectivity/source/drivers/ado/Awrapado.cxx b/connectivity/source/drivers/ado/Awrapado.cxx
index 1b4982433dbd..6f92a6e05943 100644
--- a/connectivity/source/drivers/ado/Awrapado.cxx
+++ b/connectivity/source/drivers/ado/Awrapado.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: Awrapado.cxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: oj $ $Date: 2001-05-22 07:40:32 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -64,8 +64,37 @@
#ifndef _CONNECTIVITY_ADO_AWRAPADOX_HXX_
#include "ado/Awrapadox.hxx"
#endif
+#ifndef _COMPHELPER_TYPES_HXX_
+#include <comphelper/types.hxx>
+#endif
using namespace connectivity::ado;
+//#include <tools/prewin.h>
+//namespace test__rr__
+//{
+//
+//#import "c:\Program Files\Common Files\system\ado\msadox.dll"
+//
+//}
+//#include <tools/postwin.h>
+
+void WpADOCatalog::Create()
+{
+ IClassFactory2* pIUnknown = NULL;
+ IUnknown *pOuter = NULL;
+ HRESULT hr = -1;
+ _ADOCatalog* pCommand;
+ hr = CoCreateInstance(ADOS::CLSID_ADOCATALOG_25,
+ NULL,
+ CLSCTX_INPROC_SERVER,
+ ADOS::IID_ADOCATALOG_25,
+ (void**)&pCommand );
+
+
+ if( !FAILED( hr ) )
+ operator=(pCommand);
+}
+
ADOProperties* WpADOConnection::get_Properties() const
{
@@ -1560,5 +1589,527 @@ WpBase::operator IDispatch*()
return pIUnknown;
}
+ADORecordset* WpADOConnection::getExportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table )
+{
+ // Create elements used in the array
+ HRESULT hr = S_OK;
+ SAFEARRAYBOUND rgsabound[1];
+ SAFEARRAY *psa = NULL;
+ OLEVariant varCriteria[6];
+
+ // Create SafeArray Bounds and initialize the array
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
+ psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos=0;
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ if(catalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(catalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(schema.toChar() != '%')
+ varCriteria[nPos].setString(schema);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+
+ varCriteria[nPos].setString(table);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ ADORecordset *pRecordset = NULL;
+ OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset);
+
+ return pRecordset;
+}
+// -----------------------------------------------------------------------------
+ADORecordset* WpADOConnection::getImportedKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table )
+{
+ // Create elements used in the array
+ HRESULT hr = S_OK;
+ SAFEARRAYBOUND rgsabound[1];
+ SAFEARRAY *psa = NULL;
+ OLEVariant varCriteria[6];
+
+ // Create SafeArray Bounds and initialize the array
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
+ psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos=0;
+ if(catalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(catalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(schema.toChar() != '%')
+ varCriteria[nPos].setString(schema);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+
+ varCriteria[nPos].setString(table);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ ADORecordset *pRecordset = NULL;
+ OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset);
+ return pRecordset;
+}
+// -----------------------------------------------------------------------------
+ADORecordset* WpADOConnection::getPrimaryKeys( const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table )
+{
+ // Create elements used in the array
+ HRESULT hr = S_OK;
+ SAFEARRAYBOUND rgsabound[1];
+ SAFEARRAY *psa = NULL;
+ OLEVariant varCriteria[3];
+
+ // Create SafeArray Bounds and initialize the array
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
+ psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos=0;
+ if(catalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(catalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(schema.toChar() != '%')
+ varCriteria[nPos].setString(schema);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+
+ varCriteria[nPos].setString(table);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ ADORecordset *pRecordset = NULL;
+ OpenSchema(adSchemaPrimaryKeys,vsa,vtEmpty,&pRecordset);
+
+ return pRecordset;
+}
+// -----------------------------------------------------------------------------
+ADORecordset* WpADOConnection::getIndexInfo(
+ const ::com::sun::star::uno::Any& catalog, const ::rtl::OUString& schema, const ::rtl::OUString& table,
+ sal_Bool unique, sal_Bool approximate )
+{
+ // Create elements used in the array
+ HRESULT hr = S_OK;
+ SAFEARRAYBOUND rgsabound[1];
+ SAFEARRAY *psa = NULL;
+ OLEVariant varCriteria[5];
+
+ // Create SafeArray Bounds and initialize the array
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
+ psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos=0;
+ if(catalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(catalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(schema.toChar() != '%')
+ varCriteria[nPos].setString(schema);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// INDEX_NAME
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TYPE
+
+ varCriteria[nPos].setString(table);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ ADORecordset *pRecordset = NULL;
+ OpenSchema(adSchemaIndexes,vsa,vtEmpty,&pRecordset);
+
+ return pRecordset;
+}
+// -----------------------------------------------------------------------------
+ADORecordset* WpADOConnection::getTablePrivileges( const ::com::sun::star::uno::Any& catalog,
+ const ::rtl::OUString& schemaPattern,
+ const ::rtl::OUString& tableNamePattern )
+{
+ HRESULT hr = S_OK;
+ SAFEARRAYBOUND rgsabound[1];
+ SAFEARRAY *psa = NULL;
+ OLEVariant varCriteria[5];
+
+ // Create SafeArray Bounds and initialize the array
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
+ psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos=0;
+ if(catalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(catalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(schemaPattern.toChar() != '%')
+ varCriteria[nPos].setString(schemaPattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+
+ if(tableNamePattern.toChar() != '%')
+ varCriteria[nPos].setString(tableNamePattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// GRANTOR
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// GRANTEE
+
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ ADORecordset *pRecordset = NULL;
+ OpenSchema(adSchemaTablePrivileges,vsa,vtEmpty,&pRecordset);
+
+ return pRecordset;
+}
+// -----------------------------------------------------------------------------
+ADORecordset* WpADOConnection::getCrossReference( const ::com::sun::star::uno::Any& primaryCatalog,
+ const ::rtl::OUString& primarySchema,
+ const ::rtl::OUString& primaryTable,
+ const ::com::sun::star::uno::Any& foreignCatalog,
+ const ::rtl::OUString& foreignSchema,
+ const ::rtl::OUString& foreignTable)
+{
+ // Create elements used in the array
+ HRESULT hr = S_OK;
+ SAFEARRAYBOUND rgsabound[1];
+ SAFEARRAY *psa = NULL;
+ OLEVariant varCriteria[6];
+
+ // Create SafeArray Bounds and initialize the array
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
+ psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos=0;
+ if(primaryCatalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(primaryCatalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(primarySchema.toChar() != '%')
+ varCriteria[nPos].setString(primarySchema);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+
+ varCriteria[nPos].setString(primaryTable);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ if(foreignCatalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(foreignCatalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(foreignSchema.toChar() != '%')
+ varCriteria[nPos].setString(foreignSchema);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+
+ varCriteria[nPos].setString(foreignTable);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ ADORecordset *pRecordset = NULL;
+ OpenSchema(adSchemaForeignKeys,vsa,vtEmpty,&pRecordset);
+
+ return pRecordset;
+}
+// -----------------------------------------------------------------------------
+ADORecordset* WpADOConnection::getProcedures( const ::com::sun::star::uno::Any& catalog,
+ const ::rtl::OUString& schemaPattern,
+ const ::rtl::OUString& procedureNamePattern )
+{
+ HRESULT hr = S_OK;
+ SAFEARRAYBOUND rgsabound[1];
+ SAFEARRAY *psa = NULL;
+ OLEVariant varCriteria[3];
+
+ // Create SafeArray Bounds and initialize the array
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
+ psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos=0;
+ if(catalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(catalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(schemaPattern.toChar() != '%')
+ varCriteria[nPos].setString(schemaPattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+
+ if(procedureNamePattern.toChar() != '%')
+ varCriteria[nPos].setString(procedureNamePattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ ADORecordset *pRecordset = NULL;
+ OpenSchema(adSchemaProcedures,vsa,vtEmpty,&pRecordset);
+
+ return pRecordset;
+}
+// -----------------------------------------------------------------------------
+ADORecordset* WpADOConnection::getProcedureColumns( const ::com::sun::star::uno::Any& catalog,
+ const ::rtl::OUString& schemaPattern,
+ const ::rtl::OUString& procedureNamePattern,
+ const ::rtl::OUString& columnNamePattern )
+{
+ // Create elements used in the array
+ HRESULT hr = S_OK;
+ SAFEARRAYBOUND rgsabound[1];
+ SAFEARRAY *psa = NULL;
+ OLEVariant varCriteria[4];
+
+ // Create SafeArray Bounds and initialize the array
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
+ psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos=0;
+ if(catalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(catalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(schemaPattern.toChar() != '%')
+ varCriteria[nPos].setString(schemaPattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+
+ if(procedureNamePattern.toChar() != '%')
+ varCriteria[nPos].setString(procedureNamePattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ if(columnNamePattern.toChar() != '%')
+ varCriteria[nPos].setString(columnNamePattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME
+
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ ADORecordset *pRecordset = NULL;
+ OpenSchema(adSchemaProcedureParameters,vsa,vtEmpty,&pRecordset);
+
+ return pRecordset;
+}
+// -----------------------------------------------------------------------------
+ADORecordset* WpADOConnection::getTables( const ::com::sun::star::uno::Any& catalog,
+ const ::rtl::OUString& schemaPattern,
+ const ::rtl::OUString& tableNamePattern,
+ const ::com::sun::star::uno::Sequence< ::rtl::OUString >& types )
+{
+ // Create elements used in the array
+ HRESULT hr = S_OK;
+ SAFEARRAYBOUND rgsabound[1];
+ SAFEARRAY *psa = NULL;
+ OLEVariant varCriteria[4];
+
+ // Create SafeArray Bounds and initialize the array
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
+ psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos=0;
+ if(catalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(catalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(schemaPattern.toChar() != '%')
+ varCriteria[nPos].setString(schemaPattern);
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+ if(tableNamePattern.toChar() != '%')
+ varCriteria[nPos].setString(tableNamePattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ ::rtl::OUString aTypes,aComma = ::rtl::OUString::createFromAscii(",");
+ const ::rtl::OUString* pBegin = types.getConstArray();
+ const ::rtl::OUString* pEnd = pBegin + types.getLength();
+ for(;pBegin != pEnd;++pBegin)
+ aTypes = aTypes + *pBegin + aComma;
+
+ if(aTypes.getLength())
+ varCriteria[nPos].setString(aTypes);
+ // else
+ // varCriteria[nPos].setString(::rtl::OUString::createFromAscii("TABLE"));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_TYPE
+
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ ADORecordset *pRecordset = NULL;
+ OpenSchema(adSchemaTables,vsa,vtEmpty,&pRecordset);
+
+ return pRecordset;
+}
+// -----------------------------------------------------------------------------
+ADORecordset* WpADOConnection::getColumns( const ::com::sun::star::uno::Any& catalog,
+ const ::rtl::OUString& schemaPattern,
+ const ::rtl::OUString& tableNamePattern,
+ const ::rtl::OUString& columnNamePattern )
+{
+ // Create elements used in the array
+ HRESULT hr = S_OK;
+ SAFEARRAYBOUND rgsabound[1];
+ SAFEARRAY *psa = NULL;
+ OLEVariant varCriteria[4];
+
+ // Create SafeArray Bounds and initialize the array
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
+ psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos=0;
+ if(catalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(catalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(schemaPattern.toChar() != '%')
+ varCriteria[nPos].setString(schemaPattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+
+ if(tableNamePattern.toChar() != '%')
+ varCriteria[nPos].setString(tableNamePattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ varCriteria[nPos].setString(columnNamePattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME
+
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ ADORecordset *pRecordset = NULL;
+ OpenSchema(adSchemaColumns,vsa,vtEmpty,&pRecordset);
+
+ return pRecordset;
+}
+// -----------------------------------------------------------------------------
+ADORecordset* WpADOConnection::getColumnPrivileges( const ::com::sun::star::uno::Any& catalog,
+ const ::rtl::OUString& schema,
+ const ::rtl::OUString& table,
+ const ::rtl::OUString& columnNamePattern )
+{
+ // Create elements used in the array
+ HRESULT hr = S_OK;
+ SAFEARRAYBOUND rgsabound[1];
+ SAFEARRAY *psa = NULL;
+ OLEVariant varCriteria[4];
+
+ // Create SafeArray Bounds and initialize the array
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = sizeof varCriteria / sizeof varCriteria[0];
+ psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos=0;
+ if(catalog.hasValue())
+ varCriteria[nPos].setString(::comphelper::getString(catalog));
+
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_CATALOG
+ if(schema.toChar() != '%')
+ varCriteria[nPos].setString(schema);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_SCHEMA
+
+ varCriteria[nPos].setString(table);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// TABLE_NAME
+
+ varCriteria[nPos].setString(columnNamePattern);
+ hr = SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;// COLUMN_NAME
+
+ OLEVariant vtEmpty;
+ vtEmpty.setNoArg();
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ ADORecordset *pRecordset = NULL;
+ OpenSchema(adSchemaColumnPrivileges,vsa,vtEmpty,&pRecordset);
+
+ return pRecordset;
+}
+// -----------------------------------------------------------------------------
+ADORecordset* WpADOConnection::getTypeInfo( )
+{
+ HRESULT hr = S_OK;
+ // Create elements used in the array
+ OLEVariant varCriteria[2];
+ const int nCrit = sizeof varCriteria / sizeof varCriteria[0];
+ // Create SafeArray Bounds and initialize the array
+ SAFEARRAYBOUND rgsabound[1];
+ rgsabound[0].lLbound = 0;
+ rgsabound[0].cElements = nCrit;
+ SAFEARRAY *psa = SafeArrayCreate( VT_VARIANT, 1, rgsabound );
+
+ sal_Int32 nPos = 0;
+ SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;
+ SafeArrayPutElement(psa,&nPos,&varCriteria[nPos]);nPos++;
+
+ // Initialize and fill the SafeArray
+ OLEVariant vsa;
+ vsa.setArray(psa,VT_VARIANT);
+
+ OLEVariant aEmpty;
+ aEmpty.setNoArg();
+
+ ADORecordset *pRec=NULL;
+ OpenSchema(adSchemaProviderTypes,vsa,aEmpty,&pRec);
+
+ return pRec;
+}
+
diff --git a/connectivity/source/drivers/ado/adoimp.cxx b/connectivity/source/drivers/ado/adoimp.cxx
index 3ac6b888ff11..633f29285ce1 100644
--- a/connectivity/source/drivers/ado/adoimp.cxx
+++ b/connectivity/source/drivers/ado/adoimp.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: adoimp.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: kz $ $Date: 2001-04-24 08:21:49 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -114,49 +114,6 @@ const IID ADOS::IID_ADOUSER_25 = MYADOID(0x00000619);
const CLSID ADOS::CLSID_ADOVIEW_25 = MYADOID(0x00000612);
const IID ADOS::IID_ADOVIEW_25 = MYADOID(0x00000613);
-void ADOS::ThrowException(ADOConnection* _pAdoCon,const Reference< XInterface >& _xInterface) throw(SQLException, RuntimeException)
-{
- ADOErrors *pErrors = NULL;
- _pAdoCon->get_Errors(&pErrors);
- if(!pErrors)
- return; // no error found
-
- pErrors->AddRef( );
-
- // alle aufgelaufenen Fehler auslesen und ausgeben
- sal_Int32 nLen;
- pErrors->get_Count(&nLen);
- if (nLen)
- {
- ::rtl::OUString sError;
- ::rtl::OUString aSQLState;
- SQLException aException;
- for (sal_Int32 i = nLen-1; i>=0; i--)
- {
- ADOError *pError = NULL;
- pErrors->get_Item(OLEVariant(i),&pError);
- WpADOError aErr(pError);
- OSL_ENSURE(pError,"No error in collection found! BAD!");
- if(pError)
- {
- if(i==nLen-1)
- aException = SQLException(aErr.GetDescription(),_xInterface,aErr.GetSQLState(),aErr.GetNumber(),Any());
- else
- {
- SQLException aTemp = SQLException(aErr.GetDescription(),
- _xInterface,aErr.GetSQLState(),aErr.GetNumber(),makeAny(aException));
- aTemp.NextException <<= aException;
- aException = aTemp;
- }
- }
- }
- pErrors->Clear();
- pErrors->Release();
- throw aException;
- }
- pErrors->Release();
-}
-
// -------------------------------------------------------------------------
sal_Int32 ADOS::MapADOType2Jdbc(DataTypeEnum eType)
{
@@ -240,6 +197,65 @@ DataTypeEnum ADOS::MapJdbc2ADOType(sal_Int32 _nType)
return adEmpty;
}
// -----------------------------------------------------------------------------
+const int JET_ENGINETYPE_UNKNOWN = 0;
+const int JET_ENGINETYPE_JET10 = 1;
+const int JET_ENGINETYPE_JET11 = 2;
+const int JET_ENGINETYPE_JET20 = 3;
+const int JET_ENGINETYPE_JET3X = 4;
+const int JET_ENGINETYPE_JET4X = 5;
+const int JET_ENGINETYPE_DBASE3 = 10;
+const int JET_ENGINETYPE_DBASE4 = 11;
+const int JET_ENGINETYPE_DBASE5 = 12;
+const int JET_ENGINETYPE_EXCEL30 = 20;
+const int JET_ENGINETYPE_EXCEL40 = 21;
+const int JET_ENGINETYPE_EXCEL50 = 22;
+const int JET_ENGINETYPE_EXCEL80 = 23;
+const int JET_ENGINETYPE_EXCEL90 = 24;
+const int JET_ENGINETYPE_EXCHANGE4 = 30;
+const int JET_ENGINETYPE_LOTUSWK1 = 40;
+const int JET_ENGINETYPE_LOTUSWK3 = 41;
+const int JET_ENGINETYPE_LOTUSWK4 = 42;
+const int JET_ENGINETYPE_PARADOX3X = 50;
+const int JET_ENGINETYPE_PARADOX4X = 51;
+const int JET_ENGINETYPE_PARADOX5X = 52;
+const int JET_ENGINETYPE_PARADOX7X = 53;
+const int JET_ENGINETYPE_TEXT1X = 60;
+const int JET_ENGINETYPE_HTML1X = 70;
+
+sal_Bool ADOS::isJetEngine(sal_Int32 _nEngineType)
+{
+ sal_Bool bRet = sal_False;
+ switch(_nEngineType)
+ {
+ case JET_ENGINETYPE_UNKNOWN:
+ case JET_ENGINETYPE_JET10:
+ case JET_ENGINETYPE_JET11:
+ case JET_ENGINETYPE_JET20:
+ case JET_ENGINETYPE_JET3X:
+ case JET_ENGINETYPE_JET4X:
+ case JET_ENGINETYPE_DBASE3:
+ case JET_ENGINETYPE_DBASE4:
+ case JET_ENGINETYPE_DBASE5:
+ case JET_ENGINETYPE_EXCEL30:
+ case JET_ENGINETYPE_EXCEL40:
+ case JET_ENGINETYPE_EXCEL50:
+ case JET_ENGINETYPE_EXCEL80:
+ case JET_ENGINETYPE_EXCEL90:
+ case JET_ENGINETYPE_EXCHANGE4:
+ case JET_ENGINETYPE_LOTUSWK1:
+ case JET_ENGINETYPE_LOTUSWK3:
+ case JET_ENGINETYPE_LOTUSWK4:
+ case JET_ENGINETYPE_PARADOX3X:
+ case JET_ENGINETYPE_PARADOX4X:
+ case JET_ENGINETYPE_PARADOX5X:
+ case JET_ENGINETYPE_PARADOX7X:
+ case JET_ENGINETYPE_TEXT1X:
+ case JET_ENGINETYPE_HTML1X:
+ bRet = sal_True;
+ break;
+ }
+ return bRet;
+}
diff --git a/connectivity/source/drivers/ado/makefile.mk b/connectivity/source/drivers/ado/makefile.mk
index 145653fa4817..80f4eabf197a 100644
--- a/connectivity/source/drivers/ado/makefile.mk
+++ b/connectivity/source/drivers/ado/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.7 $
+# $Revision: 1.8 $
#
-# last change: $Author: oj $ $Date: 2001-05-17 09:13:23 $
+# last change: $Author: oj $ $Date: 2001-05-23 09:13:09 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -66,7 +66,7 @@ PRJINC=..$/..
PRJNAME=connectivity
TARGET=ado
-ENABLE_EXCEPTIONS=TRUE
+# ENABLE_EXCEPTIONS=TRUE
# --- Settings ----------------------------------
.IF "$(DBGUTIL_OJ)"!=""
@@ -80,6 +80,7 @@ ENVCFLAGS+=/FR$(SLO)$/
# --- Files -------------------------------------
SLOFILES=\
+ $(SLO)$/ADatabaseMetaDataImpl.obj \
$(SLO)$/Aolevariant.obj \
$(SLO)$/Awrapado.obj \
$(SLO)$/ADatabaseMetaData.obj \
@@ -110,6 +111,33 @@ SLOFILES=\
$(SLO)$/Aservices.obj \
$(SLO)$/adoimp.obj
+EXCEPTIONSFILES= \
+ $(SLO)$/ADatabaseMetaData.obj \
+ $(SLO)$/AColumn.obj \
+ $(SLO)$/AColumns.obj \
+ $(SLO)$/AIndex.obj \
+ $(SLO)$/AIndexes.obj \
+ $(SLO)$/AKey.obj \
+ $(SLO)$/AKeys.obj \
+ $(SLO)$/AUser.obj \
+ $(SLO)$/AUsers.obj \
+ $(SLO)$/AGroup.obj \
+ $(SLO)$/AGroups.obj \
+ $(SLO)$/ACatalog.obj \
+ $(SLO)$/AView.obj \
+ $(SLO)$/AViews.obj \
+ $(SLO)$/ATable.obj \
+ $(SLO)$/ATables.obj \
+ $(SLO)$/ACallableStatement.obj \
+ $(SLO)$/ADatabaseMetaDataResultSetMetaData.obj \
+ $(SLO)$/ADatabaseMetaDataResultSet.obj \
+ $(SLO)$/AResultSet.obj \
+ $(SLO)$/AConnection.obj \
+ $(SLO)$/AStatement.obj \
+ $(SLO)$/APreparedStatement.obj \
+ $(SLO)$/AResultSetMetaData.obj \
+ $(SLO)$/ADriver.obj \
+ $(SLO)$/Aservices.obj
# --- Library -----------------------------------
diff --git a/connectivity/source/drivers/calc/CTable.cxx b/connectivity/source/drivers/calc/CTable.cxx
index 7e621143fd5e..193f4aa2d3c3 100644
--- a/connectivity/source/drivers/calc/CTable.cxx
+++ b/connectivity/source/drivers/calc/CTable.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: CTable.cxx,v $
*
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
*
- * last change: $Author: oj $ $Date: 2001-05-14 11:40:01 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:10 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -128,9 +128,6 @@
#ifndef _COMPHELPER_SEQUENCE_HXX_
#include <comphelper/sequence.hxx>
#endif
-#ifndef _CONNECTIVITY_DATECONVERSION_HXX_
-#include "connectivity/DateConversion.hxx"
-#endif
#ifndef _INTN_HXX //autogen
#include <tools/intn.hxx>
#endif
diff --git a/connectivity/source/drivers/calc/makefile.mk b/connectivity/source/drivers/calc/makefile.mk
index 3e3dcff38d8d..d597fcd948a7 100644
--- a/connectivity/source/drivers/calc/makefile.mk
+++ b/connectivity/source/drivers/calc/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.6 $
+# $Revision: 1.7 $
#
-# last change: $Author: oj $ $Date: 2001-05-14 11:40:01 $
+# last change: $Author: oj $ $Date: 2001-05-23 09:13:10 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -115,9 +115,9 @@ SHL1STDLIBS=\
$(COMPHELPERLIB)
-.IF "$(DBFILELIB)" == ""
-SHL1STDLIBS+= ifile$(UPD).lib
-.ENDIF
+#.IF "$(DBFILELIB)" == ""
+#SHL1STDLIBS+= ifile$(UPD).lib
+#.ENDIF
SHL1DEPN=
SHL1IMPLIB= i$(TARGET)
diff --git a/connectivity/source/drivers/dbase/DCode.cxx b/connectivity/source/drivers/dbase/DCode.cxx
index 544c0817990b..a4cc70d1e0d7 100644
--- a/connectivity/source/drivers/dbase/DCode.cxx
+++ b/connectivity/source/drivers/dbase/DCode.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: DCode.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: oj $ $Date: 2001-05-14 11:39:59 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:10 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -86,7 +86,7 @@ OOperandAttr* OFILEAnalyzer::createOperandAttr(sal_Int32 _nPos,
const Reference< XPropertySet>& _xCol,
const Reference< XNameAccess>& _xIndexes)
{
- return new OFILEOperandAttr(_nPos,_xCol,_xIndexes);
+ return new OFILEOperandAttr((sal_uInt16)_nPos,_xCol,_xIndexes);
}
//------------------------------------------------------------------
diff --git a/connectivity/source/drivers/dbase/DNoException.cxx b/connectivity/source/drivers/dbase/DNoException.cxx
new file mode 100644
index 000000000000..89ea25f92048
--- /dev/null
+++ b/connectivity/source/drivers/dbase/DNoException.cxx
@@ -0,0 +1,805 @@
+/*************************************************************************
+ *
+ * $RCSfile: DNoException.cxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: oj $ $Date: 2001-05-23 09:18:28 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the License); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an AS IS basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+#ifndef _CONNECTIVITY_DBASE_TABLE_HXX_
+#include "dbase/DTable.hxx"
+#endif
+#ifndef _CONNECTIVITY_DBASE_INDEX_HXX_
+#include "dbase/DIndex.hxx"
+#endif
+#ifndef _CONNECTIVITY_DBASE_INDEXNODE_HXX_
+#include "dbase/dindexnode.hxx"
+#endif
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+
+using namespace connectivity;
+using namespace connectivity::dbase;
+using namespace com::sun::star::uno;
+using namespace com::sun::star::sdbc;
+//------------------------------------------------------------------
+sal_Bool ODbaseTable::seekRow(FilePosition eCursorPosition, sal_Int32 nOffset, sal_Int32& nCurPos)
+{
+ // ----------------------------------------------------------
+ // Positionierung vorbereiten:
+
+ sal_uInt32 nNumberOfRecords = (sal_uInt32)m_aHeader.db_anz;
+ sal_uInt32 nTempPos = m_nFilePos;
+ m_nFilePos = nCurPos;
+
+ switch(eCursorPosition)
+ {
+ case FILE_NEXT:
+ m_nFilePos++;
+ break;
+ case FILE_PRIOR:
+ if (m_nFilePos > 0)
+ m_nFilePos--;
+ break;
+ case FILE_FIRST:
+ m_nFilePos = 1;
+ break;
+ case FILE_LAST:
+ m_nFilePos = nNumberOfRecords;
+ break;
+ case FILE_RELATIVE:
+ m_nFilePos = (((sal_Int32)m_nFilePos) + nOffset < 0) ? 0L
+ : (sal_uInt32)(((sal_Int32)m_nFilePos) + nOffset);
+ break;
+ case FILE_ABSOLUTE:
+ case FILE_BOOKMARK:
+ m_nFilePos = (sal_uInt32)nOffset;
+ break;
+ }
+
+ if (m_nFilePos > (sal_Int32)nNumberOfRecords)
+ m_nFilePos = (sal_Int32)nNumberOfRecords + 1;
+
+ if (m_nFilePos == 0 || m_nFilePos == (sal_Int32)nNumberOfRecords + 1)
+ goto Error;
+ else
+ {
+ sal_uInt16 nEntryLen = m_aHeader.db_slng;
+
+ OSL_ENSURE(m_nFilePos >= 1,"SdbDBFCursor::FileFetchRow: ungueltige Record-Position");
+ sal_Int32 nPos = m_aHeader.db_kopf + (sal_Int32)(m_nFilePos-1) * nEntryLen;
+
+ ULONG nLen = m_pFileStream->Seek(nPos);
+ if (m_pFileStream->GetError() != ERRCODE_NONE)
+ goto Error;
+
+ nLen = m_pFileStream->Read((char*)m_pBuffer, nEntryLen);
+ if (m_pFileStream->GetError() != ERRCODE_NONE)
+ goto Error;
+ }
+ goto End;
+
+Error:
+ switch(eCursorPosition)
+ {
+ case FILE_PRIOR:
+ case FILE_FIRST:
+ m_nFilePos = 0;
+ break;
+ case FILE_LAST:
+ case FILE_NEXT:
+ case FILE_ABSOLUTE:
+ case FILE_RELATIVE:
+ if (nOffset > 0)
+ m_nFilePos = nNumberOfRecords + 1;
+ else if (nOffset < 0)
+ m_nFilePos = 0;
+ break;
+ case FILE_BOOKMARK:
+ m_nFilePos = nTempPos; // vorherige Position
+ }
+ // aStatus.Set(SDB_STAT_NO_DATA_FOUND);
+ return sal_False;
+
+End:
+ nCurPos = m_nFilePos;
+ return sal_True;
+}
+// -----------------------------------------------------------------------------
+BOOL ODbaseTable::ReadMemo(ULONG nBlockNo, ORowSetValue& aVariable)
+{
+ BOOL bIsText = TRUE;
+ // SdbConnection* pConnection = GetConnection();
+
+ m_pMemoStream->Seek(nBlockNo * m_aMemoHeader.db_size);
+ switch (m_aMemoHeader.db_typ)
+ {
+ case MemodBaseIII: // dBase III-Memofeld, endet mit Ctrl-Z
+ {
+ const char cEOF = (char) 0x1a;
+ ByteString aBStr;
+ static char aBuf[514];
+ aBuf[512] = 0; // sonst kann der Zufall uebel mitspielen
+ BOOL bReady = sal_False;
+
+ do
+ {
+ m_pMemoStream->Read(&aBuf,512);
+
+ USHORT i = 0;
+ while (aBuf[i] != cEOF && ++i < 512)
+ ;
+ bReady = aBuf[i] == cEOF;
+
+ aBuf[i] = 0;
+ aBStr += aBuf;
+
+ } while (!bReady && !m_pMemoStream->IsEof() && aBStr.Len() < STRING_MAXLEN);
+
+ ::rtl::OUString aStr(aBStr.GetBuffer(), aBStr.Len(),getConnection()->getTextEncoding());
+ aVariable = Sequence<sal_Int8>(reinterpret_cast<const sal_Int8*>(aStr.getStr()),sizeof(sal_Unicode)*aStr.getLength());
+
+ } break;
+ case MemoFoxPro:
+ case MemodBaseIV: // dBase IV-Memofeld mit Laengenangabe
+ {
+ char sHeader[4];
+ m_pMemoStream->Read(sHeader,4);
+ // Foxpro stores text and binary data
+ if (m_aMemoHeader.db_typ == MemoFoxPro)
+ {
+ if (((BYTE)sHeader[0]) != 0 || ((BYTE)sHeader[1]) != 0 || ((BYTE)sHeader[2]) != 0)
+ {
+// String aText = String(SdbResId(STR_STAT_FILE_INVALID));
+// aText.SearchAndReplace(String::CreateFromAscii("%%d"),m_pMemoStream->GetFileName());
+// aText.SearchAndReplace(String::CreateFromAscii("%%t"),aStatus.TypeToString(MEMO));
+// aStatus.Set(SDB_STAT_ERROR,
+// String::CreateFromAscii("01000"),
+// aStatus.CreateErrorMessage(aText),
+// 0, String() );
+ return sal_False;
+ }
+
+ bIsText = sHeader[3] != 0;
+ }
+ else if (((BYTE)sHeader[0]) != 0xFF || ((BYTE)sHeader[1]) != 0xFF || ((BYTE)sHeader[2]) != 0x08)
+ {
+// String aText = String(SdbResId(STR_STAT_FILE_INVALID));
+// aText.SearchAndReplace(String::CreateFromAscii("%%d"),m_pMemoStream->GetFileName());
+// aText.SearchAndReplace(String::CreateFromAscii("%%t"),aStatus.TypeToString(MEMO));
+// aStatus.Set(SDB_STAT_ERROR,
+// String::CreateFromAscii("01000"),
+// aStatus.CreateErrorMessage(aText),
+// 0, String() );
+ return sal_False;
+ }
+
+ ULONG nLength;
+ (*m_pMemoStream) >> nLength;
+
+ if (m_aMemoHeader.db_typ == MemodBaseIV)
+ nLength -= 8;
+
+ // char cChar;
+ if (nLength < STRING_MAXLEN && bIsText)
+ {
+ ByteString aBStr;
+ aBStr.Expand(USHORT (nLength));
+ m_pMemoStream->Read(aBStr.AllocBuffer((USHORT)nLength),nLength);
+ aBStr.ReleaseBufferAccess();
+ ::rtl::OUString aStr(aBStr.GetBuffer(),aBStr.Len(), getConnection()->getTextEncoding());
+ aVariable = Sequence<sal_Int8>(reinterpret_cast<const sal_Int8*>(aStr.getStr()),sizeof(sal_Unicode)*aStr.getLength());
+ }
+ else
+ {
+ Sequence<sal_Int8> aText(nLength);
+ sal_Int8* pData = aText.getArray();
+ sal_Char cChar;
+ for (ULONG i = 0; i < nLength; i++)
+ {
+ m_pMemoStream->Read(&cChar,1);
+ (*pData++) = cChar;
+ }
+ aVariable = aText;
+ // return sal_False;
+ }
+ }
+ }
+ return sal_True;
+}
+// -----------------------------------------------------------------------------
+BOOL ODbaseTable::WriteMemo(ORowSetValue& aVariable, ULONG& rBlockNr)
+{
+ // wird die BlockNr 0 vorgegeben, wird der block ans Ende gehaengt
+ char cChar = 0;
+ BOOL bIsText = TRUE;
+ // SdbConnection* pConnection = GetConnection();
+
+ ULONG nSize = 0;
+ ULONG nStreamSize;
+ BYTE nHeader[4];
+
+ ByteString aStr;
+ // ::Sequence<sal_Int8>* pData = NULL;
+// if (aVariable.getValueType() == ::getCppuType((const ::com::sun::star::uno::Sequence< sal_Int8 > *)0))
+// {
+// pData = (::Sequence<sal_Int8>*)aVariable.get();
+// nSize = pData->getLength();
+// }
+// else
+// {
+ aStr = ByteString(String(aVariable.getString()), getConnection()->getTextEncoding());
+ nSize = aStr.Len();
+ // }
+
+ // Anhaengen oder ueberschreiben
+ BOOL bAppend = rBlockNr == 0;
+
+ if (!bAppend)
+ {
+ switch (m_aMemoHeader.db_typ)
+ {
+ case MemodBaseIII: // dBase III-Memofeld, endet mit 2 * Ctrl-Z
+ bAppend = nSize > (512 - 2);
+ break;
+ case MemoFoxPro:
+ case MemodBaseIV: // dBase IV-Memofeld mit Laengenangabe
+ {
+ char sHeader[4];
+ m_pMemoStream->Seek(rBlockNr * m_aMemoHeader.db_size);
+ m_pMemoStream->SeekRel(4L);
+ m_pMemoStream->Read(sHeader,4);
+
+ ULONG nOldSize;
+ if (m_aMemoHeader.db_typ == MemoFoxPro)
+ nOldSize = ((((unsigned char)sHeader[0]) * 256 +
+ (unsigned char)sHeader[1]) * 256 +
+ (unsigned char)sHeader[2]) * 256 +
+ (unsigned char)sHeader[3];
+ else
+ nOldSize = ((((unsigned char)sHeader[3]) * 256 +
+ (unsigned char)sHeader[2]) * 256 +
+ (unsigned char)sHeader[1]) * 256 +
+ (unsigned char)sHeader[0] - 8;
+
+ // passt die neue Laenge in die belegten Bloecke
+ ULONG nUsedBlocks = ((nSize + 8) / m_aMemoHeader.db_size) + (((nSize + 8) % m_aMemoHeader.db_size > 0) ? 1 : 0),
+ nOldUsedBlocks = ((nOldSize + 8) / m_aMemoHeader.db_size) + (((nOldSize + 8) % m_aMemoHeader.db_size > 0) ? 1 : 0);
+ bAppend = nUsedBlocks > nOldUsedBlocks;
+ }
+ }
+ }
+
+ if (bAppend)
+ {
+ ULONG nStreamSize;
+ nStreamSize = m_pMemoStream->Seek(STREAM_SEEK_TO_END);
+ // letzten block auffuellen
+ rBlockNr = (nStreamSize / m_aMemoHeader.db_size) + ((nStreamSize % m_aMemoHeader.db_size) > 0 ? 1 : 0);
+
+ m_pMemoStream->SetStreamSize(rBlockNr * m_aMemoHeader.db_size);
+ m_pMemoStream->Seek(STREAM_SEEK_TO_END);
+ }
+ else
+ {
+ m_pMemoStream->Seek(rBlockNr * m_aMemoHeader.db_size);
+ }
+
+ switch (m_aMemoHeader.db_typ)
+ {
+ case MemodBaseIII: // dBase III-Memofeld, endet mit Ctrl-Z
+ {
+ const char cEOF = (char) 0x1a;
+ nSize++;
+
+// if (pData)
+// {
+// m_pMemoStream->Write((const char*) pData->getConstArray(), pData->getLength());
+// }
+// else
+// {
+ m_pMemoStream->Write(aStr.GetBuffer(), aStr.Len());
+ // }
+
+ (*m_pMemoStream) << cEOF << cEOF;
+ } break;
+ case MemoFoxPro:
+ case MemodBaseIV: // dBase IV-Memofeld mit Laengenangabe
+ {
+ (*m_pMemoStream) << (BYTE)0xFF
+ << (BYTE)0xFF
+ << (BYTE)0x08;
+
+ UINT32 nWriteSize = nSize;
+ if (m_aMemoHeader.db_typ == MemoFoxPro)
+ {
+ (*m_pMemoStream) << (BYTE) 0x01; // ((pData = NULL) ? 0x01 : 0x00);
+ for (int i = 4; i > 0; nWriteSize >>= 8)
+ nHeader[--i] = (BYTE) (nWriteSize % 256);
+ }
+ else
+ {
+ (*m_pMemoStream) << (BYTE) 0x00;
+ nWriteSize += 8;
+ for (int i = 0; i < 4; nWriteSize >>= 8)
+ nHeader[i++] = (BYTE) (nWriteSize % 256);
+ }
+
+ m_pMemoStream->Write(nHeader,4);
+// if (pData)
+// {
+// m_pMemoStream->Write((const char*) pData->getConstArray(), pData->getLength());
+// }
+// else
+// {
+ m_pMemoStream->Write(aStr.GetBuffer(), aStr.Len());
+ // }
+ m_pMemoStream->Flush();
+ }
+ }
+
+
+ // Schreiben der neuen Blocknummer
+ if (bAppend)
+ {
+ nStreamSize = m_pMemoStream->Seek(STREAM_SEEK_TO_END);
+ m_aMemoHeader.db_next = (nStreamSize / m_aMemoHeader.db_size) + ((nStreamSize % m_aMemoHeader.db_size) > 0 ? 1 : 0);
+
+ // Schreiben der neuen Blocknummer
+ m_pMemoStream->Seek(0L);
+ (*m_pMemoStream) << m_aMemoHeader.db_next;
+ m_pMemoStream->Flush();
+ }
+ return sal_True;
+}
+// -----------------------------------------------------------------------------
+void ODbaseTable::AllocBuffer()
+{
+ UINT16 nSize = m_aHeader.db_slng;
+ OSL_ENSURE(nSize > 0, "Size too small");
+
+ if (m_nBufferSize != nSize)
+ {
+ delete m_pBuffer;
+ m_pBuffer = NULL;
+ }
+
+ // Falls noch kein Puffer vorhanden: allozieren:
+ if (m_pBuffer == NULL && nSize)
+ {
+ m_nBufferSize = nSize;
+ m_pBuffer = new BYTE[m_nBufferSize+1];
+ }
+}
+// -----------------------------------------------------------------------------
+BOOL ODbaseTable::WriteBuffer()
+{
+ OSL_ENSURE(m_nFilePos >= 1,"SdbDBFCursor::FileFetchRow: ungueltige Record-Position");
+
+ // Auf gewuenschten Record positionieren:
+ long nPos = m_aHeader.db_kopf + (long)(m_nFilePos-1) * m_aHeader.db_slng;
+ m_pFileStream->Seek(nPos);
+ return m_pFileStream->Write((char*) m_pBuffer, m_aHeader.db_slng) > 0;
+}
+// -----------------------------------------------------------------------------
+sal_Int32 ODbaseTable::getCurrentLastPos() const
+{
+ return m_aHeader.db_anz;
+}
+// -----------------------------------------------------------------------------
+//==================================================================
+// ONDXNode
+//==================================================================
+
+//------------------------------------------------------------------
+void ONDXNode::Read(SvStream &rStream, ODbaseIndex& rIndex)
+{
+ rStream >> (sal_uInt32)aKey.nRecord; // schluessel
+ if (rIndex.getHeader().db_keytype)
+ {
+ double aDbl;
+ rStream >> aDbl;
+ aKey = ONDXKey(aDbl,aKey.nRecord);
+ }
+ else
+ {
+ ByteString aBuf;
+ USHORT nLen = rIndex.getHeader().db_keylen;
+ char* pStr = aBuf.AllocBuffer(nLen+1);
+
+ rStream.Read(pStr,nLen);
+ pStr[nLen] = 0;
+ aBuf.ReleaseBufferAccess();
+ aBuf.EraseTrailingChars();
+
+ // aKey = ONDXKey((aBuf,rIndex.GetDBFConnection()->GetCharacterSet()) ,aKey.nRecord);
+ aKey = ONDXKey(::rtl::OUString(aBuf.GetBuffer(),aBuf.Len(),rIndex.m_pTable->getConnection()->getTextEncoding()) ,aKey.nRecord);
+ }
+ rStream >> aChild;
+}
+
+union
+{
+ double aDbl;
+ char aData[128];
+} aNodeData;
+//------------------------------------------------------------------
+void ONDXNode::Write(SvStream &rStream, const ONDXPage& rPage) const
+{
+ const ODbaseIndex& rIndex = rPage.GetIndex();
+ if (!rIndex.isUnique() || rPage.IsLeaf())
+ rStream << (sal_uInt32)aKey.nRecord; // schluessel
+ else
+ rStream << (sal_uInt32)0; // schluessel
+
+ if (rIndex.getHeader().db_keytype) // double
+ {
+ if (aKey.getValue().isNull())
+ {
+ memset(aNodeData.aData,0,rIndex.getHeader().db_keylen);
+ rStream.Write((BYTE*)aNodeData.aData,rIndex.getHeader().db_keylen);
+ }
+ else
+ rStream << (double) aKey.getValue();
+ }
+ else
+ {
+ memset(aNodeData.aData,0x20,rIndex.getHeader().db_keylen);
+ if (!aKey.getValue().isNull())
+ {
+ ::rtl::OUString sValue = aKey.getValue();
+ ByteString aText(sValue.getStr(), rIndex.m_pTable->getConnection()->getTextEncoding());
+ strncpy(aNodeData.aData,aText.GetBuffer(),min(rIndex.getHeader().db_keylen, aText.Len()));
+ }
+ rStream.Write((BYTE*)aNodeData.aData,rIndex.getHeader().db_keylen);
+ }
+ rStream << aChild;
+}
+
+
+//------------------------------------------------------------------
+ONDXPagePtr& ONDXNode::GetChild(ODbaseIndex* pIndex, ONDXPage* pParent)
+{
+ if (!aChild.Is() && pIndex)
+ {
+ aChild = pIndex->CreatePage(aChild.GetPagePos(),pParent,aChild.HasPage());
+ }
+ return aChild;
+}
+
+//==================================================================
+// ONDXKey
+//==================================================================
+//------------------------------------------------------------------
+BOOL ONDXKey::IsText(sal_Int32 eType)
+{
+ return eType == DataType::VARCHAR || eType == DataType::CHAR;
+}
+
+//------------------------------------------------------------------
+StringCompare ONDXKey::Compare(const ONDXKey& rKey) const
+{
+ // DBG_ASSERT(is(), "Falscher Indexzugriff");
+ StringCompare eResult;
+
+ if (getValue().isNull())
+ {
+ if (rKey.getValue().isNull() || (rKey.IsText(getDBType()) && !rKey.getValue().getString().getLength()))
+ eResult = COMPARE_EQUAL;
+ else
+ eResult = COMPARE_LESS;
+ }
+ else if (rKey.getValue().isNull())
+ {
+ if (getValue().isNull() || (IsText(getDBType()) && !getValue().getString().getLength()))
+ eResult = COMPARE_EQUAL;
+ else
+ eResult = COMPARE_GREATER;
+ }
+ else if (IsText(getDBType()))
+ {
+ INT32 nRes = getValue().getString().compareTo(rKey.getValue());
+ eResult = (nRes > 0) ? COMPARE_GREATER : (nRes == 0) ? COMPARE_EQUAL : COMPARE_LESS;
+ }
+ else
+ {
+ double m = getValue(),n = rKey.getValue();
+ eResult = (m > n) ? COMPARE_GREATER : (n == m) ? COMPARE_EQUAL : COMPARE_LESS;
+ }
+
+ // Record vergleich, wenn Index !Unique
+ if (eResult == COMPARE_EQUAL && nRecord && rKey.nRecord)
+ eResult = (nRecord > rKey.nRecord) ? COMPARE_GREATER :
+ (nRecord == rKey.nRecord) ? COMPARE_EQUAL : COMPARE_LESS;
+
+ return eResult;
+}
+// -----------------------------------------------------------------------------
+void ONDXKey::setValue(const ORowSetValue& _rVal)
+{
+ xValue = _rVal;
+}
+// -----------------------------------------------------------------------------
+const ORowSetValue& ONDXKey::getValue() const
+{
+ return xValue;
+}
+// -----------------------------------------------------------------------------
+SvStream& connectivity::dbase::operator >> (SvStream &rStream, ONDXPagePtr& rPage)
+{
+ rStream >> rPage.nPagePos;
+ return rStream;
+}
+// -----------------------------------------------------------------------------
+SvStream& connectivity::dbase::operator << (SvStream &rStream, const ONDXPagePtr& rPage)
+{
+ rStream << rPage.nPagePos;
+ return rStream;
+}
+// -----------------------------------------------------------------------------
+//==================================================================
+// ONDXPagePtr
+//==================================================================
+//------------------------------------------------------------------
+ONDXPagePtr::ONDXPagePtr(const ONDXPagePtr& rRef)
+ :ONDXPageRef(rRef)
+ ,nPagePos(rRef.nPagePos)
+{
+}
+
+//------------------------------------------------------------------
+ONDXPagePtr::ONDXPagePtr(ONDXPage* pRefPage)
+ :ONDXPageRef(pRefPage)
+ ,nPagePos(0)
+{
+ if (pRefPage)
+ nPagePos = pRefPage->GetPagePos();
+}
+//------------------------------------------------------------------
+ONDXPagePtr& ONDXPagePtr::operator=(const ONDXPagePtr& rRef)
+{
+ ONDXPageRef::operator=(rRef);
+ nPagePos = rRef.nPagePos;
+ return *this;
+}
+
+//------------------------------------------------------------------
+ONDXPagePtr& ONDXPagePtr::operator= (ONDXPage* pRef)
+{
+ ONDXPageRef::operator=(pRef);
+ nPagePos = (pRef) ? pRef->GetPagePos() : 0;
+ return *this;
+}
+// -----------------------------------------------------------------------------
+static UINT32 nValue;
+//------------------------------------------------------------------
+SvStream& connectivity::dbase::operator >> (SvStream &rStream, ONDXPage& rPage)
+{
+ rStream.Seek(rPage.GetPagePos() * 512);
+ rStream >> nValue >> rPage.aChild;
+ rPage.nCount = USHORT(nValue);
+
+// DBG_ASSERT(rPage.nCount && rPage.nCount < rPage.GetIndex().GetMaxNodes(), "Falscher Count");
+ for (USHORT i = 0; i < rPage.nCount; i++)
+ rPage[i].Read(rStream, rPage.GetIndex());
+ return rStream;
+}
+
+//------------------------------------------------------------------
+SvStream& connectivity::dbase::operator << (SvStream &rStream, const ONDXPage& rPage)
+{
+ // Seite existiert noch nicht
+ ULONG nSize = (rPage.GetPagePos() + 1) * 512;
+ if (nSize > rStream.Seek(STREAM_SEEK_TO_END))
+ {
+ rStream.SetStreamSize(nSize);
+ rStream.Seek(rPage.GetPagePos() * 512);
+
+ char aEmptyData[512];
+ memset(aEmptyData,0x00,512);
+ rStream.Write((BYTE*)aEmptyData,512);
+ }
+ ULONG nCurrentPos = rStream.Seek(rPage.GetPagePos() * 512);
+
+ nValue = rPage.nCount;
+ rStream << nValue << rPage.aChild;
+
+ USHORT i = 0;
+ for (; i < rPage.nCount; i++)
+ rPage[i].Write(rStream, rPage);
+
+ // check if we have to fill the stream with '\0'
+ if(i < rPage.rIndex.getHeader().db_maxkeys)
+ {
+ ULONG nTell = rStream.Tell() % 512;
+ USHORT nBufferSize = rStream.GetBufferSize();
+ ULONG nSize = nBufferSize - nTell;
+ char* pEmptyData = new char[nSize];
+ memset(pEmptyData,0x00,nSize);
+ rStream.Write((BYTE*)pEmptyData,nSize);
+ rStream.Seek(nTell);
+ delete pEmptyData;
+ }
+ return rStream;
+}
+// -----------------------------------------------------------------------------
+#ifdef DEBUG
+//------------------------------------------------------------------
+void ONDXPage::PrintPage()
+{
+ DBG_TRACE4("\nSDB: -----------Page: %d Parent: %d Count: %d Child: %d-----",
+ nPagePos, HasParent() ? aParent->GetPagePos() : 0 ,nCount, aChild.GetPagePos());
+
+ for (USHORT i = 0; i < nCount; i++)
+ {
+ ONDXNode rNode = (*this)[i];
+ ONDXKey& rKey = rNode.GetKey();
+ if (!IsLeaf())
+ rNode.GetChild(&rIndex, this);
+
+ if (rKey.getValue().isNull())
+ {
+ DBG_TRACE2("SDB: [%d,NULL,%d]",rKey.GetRecord(), rNode.GetChild().GetPagePos());
+ }
+ else if (rIndex.getHeader().db_keytype)
+ {
+ DBG_TRACE3("SDB: [%d,%f,%d]",rKey.GetRecord(), rKey.getValue().getDouble(),rNode.GetChild().GetPagePos());
+ }
+ else
+ {
+ DBG_TRACE3("SDB: [%d,%s,%d]",rKey.GetRecord(), (const char* )ByteString(rKey.getValue().getString().getStr(), rIndex.m_pTable->getConnection()->getTextEncoding()).GetBuffer(),rNode.GetChild().GetPagePos());
+ }
+ }
+ DBG_TRACE("SDB: -----------------------------------------------\n");
+ if (!IsLeaf())
+ {
+ GetChild(&rIndex)->PrintPage();
+ for (USHORT i = 0; i < nCount; i++)
+ {
+ ONDXNode rNode = (*this)[i];
+ rNode.GetChild(&rIndex,this)->PrintPage();
+ }
+ }
+ DBG_TRACE("SDB: ===============================================\n");
+}
+#endif
+// -----------------------------------------------------------------------------
+BOOL ONDXPage::IsFull() const
+{
+ return Count() == rIndex.getHeader().db_maxkeys;
+}
+// -----------------------------------------------------------------------------
+//------------------------------------------------------------------
+USHORT ONDXPage::Search(const ONDXKey& rSearch)
+{
+ // binare Suche spaeter
+ USHORT i = 0xFFFF;
+ while (++i < Count())
+ if ((*this)[i].GetKey() == rSearch)
+ break;
+
+ return (i < Count()) ? i : NODE_NOTFOUND;
+}
+
+//------------------------------------------------------------------
+USHORT ONDXPage::Search(const ONDXPage* pPage)
+{
+ USHORT i = 0xFFFF;
+ while (++i < Count())
+ if (((*this)[i]).GetChild() == pPage)
+ break;
+
+ // wenn nicht gefunden, dann wird davon ausgegangen, dass die Seite selbst
+ // auf die Page zeigt
+ return (i < Count()) ? i : NODE_NOTFOUND;
+}
+// -----------------------------------------------------------------------------
+// laeuft rekursiv
+void ONDXPage::SearchAndReplace(const ONDXKey& rSearch,
+ ONDXKey& rReplace)
+{
+ if (rSearch == rReplace)
+ return;
+
+ USHORT nPos = NODE_NOTFOUND;
+ ONDXPage* pPage = this;
+
+ while (pPage && (nPos = pPage->Search(rSearch)) == NODE_NOTFOUND)
+ pPage = pPage->aParent;
+
+ if (pPage)
+ {
+ (*pPage)[nPos].GetKey() = rReplace;
+ pPage->SetModified(TRUE);
+ }
+}
+// -----------------------------------------------------------------------------
+ONDXNode& ONDXPage::operator[] (USHORT nPos)
+{
+ DBG_ASSERT(nCount > nPos, "falscher Indexzugriff");
+ return ppNodes[nPos];
+}
+
+//------------------------------------------------------------------
+const ONDXNode& ONDXPage::operator[] (USHORT nPos) const
+{
+ DBG_ASSERT(nCount > nPos, "falscher Indexzugriff");
+ return ppNodes[nPos];
+}
+// -----------------------------------------------------------------------------
+void ONDXPage::Remove(USHORT nPos)
+{
+ DBG_ASSERT(nCount > nPos, "falscher Indexzugriff");
+
+ for (USHORT i = nPos; i < (nCount-1); i++)
+ (*this)[i] = (*this)[i+1];
+
+ nCount--;
+ bModified = TRUE;
+}
+// -----------------------------------------------------------------------------
+
+
+
+
+
+
+
+
+
+
+
diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx
index bdc78d093456..ead94acd45dc 100644
--- a/connectivity/source/drivers/dbase/DTable.cxx
+++ b/connectivity/source/drivers/dbase/DTable.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: DTable.cxx,v $
*
- * $Revision: 1.46 $
+ * $Revision: 1.47 $
*
- * last change: $Author: oj $ $Date: 2001-05-18 08:48:08 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:10 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -98,9 +98,6 @@
#ifndef _COMPHELPER_SEQUENCE_HXX_
#include <comphelper/sequence.hxx>
#endif
-#ifndef _CONNECTIVITY_DATECONVERSION_HXX_
-#include "connectivity/DateConversion.hxx"
-#endif
#ifndef _INTN_HXX //autogen
#include <tools/intn.hxx>
#endif
@@ -609,89 +606,6 @@ sal_Int64 ODbaseTable::getSomething( const Sequence< sal_Int8 > & rId ) throw (R
return ODbaseTable_BASE::getSomething(rId);
}
//------------------------------------------------------------------
-sal_Bool ODbaseTable::seekRow(FilePosition eCursorPosition, sal_Int32 nOffset, sal_Int32& nCurPos)
-{
- // ----------------------------------------------------------
- // Positionierung vorbereiten:
-
- sal_uInt32 nNumberOfRecords = (sal_uInt32)m_aHeader.db_anz;
- sal_uInt32 nTempPos = m_nFilePos;
- m_nFilePos = nCurPos;
-
- switch(eCursorPosition)
- {
- case FILE_NEXT:
- m_nFilePos++;
- break;
- case FILE_PRIOR:
- if (m_nFilePos > 0)
- m_nFilePos--;
- break;
- case FILE_FIRST:
- m_nFilePos = 1;
- break;
- case FILE_LAST:
- m_nFilePos = nNumberOfRecords;
- break;
- case FILE_RELATIVE:
- m_nFilePos = (((sal_Int32)m_nFilePos) + nOffset < 0) ? 0L
- : (sal_uInt32)(((sal_Int32)m_nFilePos) + nOffset);
- break;
- case FILE_ABSOLUTE:
- case FILE_BOOKMARK:
- m_nFilePos = (sal_uInt32)nOffset;
- break;
- }
-
- if (m_nFilePos > (sal_Int32)nNumberOfRecords)
- m_nFilePos = (sal_Int32)nNumberOfRecords + 1;
-
- if (m_nFilePos == 0 || m_nFilePos == (sal_Int32)nNumberOfRecords + 1)
- goto Error;
- else
- {
- sal_uInt16 nEntryLen = m_aHeader.db_slng;
-
- OSL_ENSURE(m_nFilePos >= 1,"SdbDBFCursor::FileFetchRow: ungueltige Record-Position");
- sal_Int32 nPos = m_aHeader.db_kopf + (sal_Int32)(m_nFilePos-1) * nEntryLen;
-
- ULONG nLen = m_pFileStream->Seek(nPos);
- if (m_pFileStream->GetError() != ERRCODE_NONE)
- goto Error;
-
- nLen = m_pFileStream->Read((char*)m_pBuffer, nEntryLen);
- if (m_pFileStream->GetError() != ERRCODE_NONE)
- goto Error;
- }
- goto End;
-
-Error:
- switch(eCursorPosition)
- {
- case FILE_PRIOR:
- case FILE_FIRST:
- m_nFilePos = 0;
- break;
- case FILE_LAST:
- case FILE_NEXT:
- case FILE_ABSOLUTE:
- case FILE_RELATIVE:
- if (nOffset > 0)
- m_nFilePos = nNumberOfRecords + 1;
- else if (nOffset < 0)
- m_nFilePos = 0;
- break;
- case FILE_BOOKMARK:
- m_nFilePos = nTempPos; // vorherige Position
- }
- // aStatus.Set(SDB_STAT_NO_DATA_FOUND);
- return sal_False;
-
-End:
- nCurPos = m_nFilePos;
- return sal_True;
-}
-//------------------------------------------------------------------
sal_Bool ODbaseTable::fetchRow(OValueRow _rRow,const OSQLColumns & _rCols, sal_Bool _bUseTableDefs,sal_Bool bRetrieveData)
{
// Einlesen der Daten
@@ -856,107 +770,6 @@ sal_Bool ODbaseTable::fetchRow(OValueRow _rRow,const OSQLColumns & _rCols, sal_B
return sal_True;
}
//------------------------------------------------------------------
-BOOL ODbaseTable::ReadMemo(ULONG nBlockNo, ORowSetValue& aVariable)
-{
- BOOL bIsText = TRUE;
- // SdbConnection* pConnection = GetConnection();
-
- m_pMemoStream->Seek(nBlockNo * m_aMemoHeader.db_size);
- switch (m_aMemoHeader.db_typ)
- {
- case MemodBaseIII: // dBase III-Memofeld, endet mit Ctrl-Z
- {
- const char cEOF = (char) 0x1a;
- ByteString aBStr;
- static char aBuf[514];
- aBuf[512] = 0; // sonst kann der Zufall uebel mitspielen
- BOOL bReady = sal_False;
-
- do
- {
- m_pMemoStream->Read(&aBuf,512);
-
- USHORT i = 0;
- while (aBuf[i] != cEOF && ++i < 512)
- ;
- bReady = aBuf[i] == cEOF;
-
- aBuf[i] = 0;
- aBStr += aBuf;
-
- } while (!bReady && !m_pMemoStream->IsEof() && aBStr.Len() < STRING_MAXLEN);
-
- ::rtl::OUString aStr(aBStr.GetBuffer(), aBStr.Len(),getConnection()->getTextEncoding());
- aVariable = Sequence<sal_Int8>(reinterpret_cast<const sal_Int8*>(aStr.getStr()),sizeof(sal_Unicode)*aStr.getLength());
-
- } break;
- case MemoFoxPro:
- case MemodBaseIV: // dBase IV-Memofeld mit Laengenangabe
- {
- char sHeader[4];
- m_pMemoStream->Read(sHeader,4);
- // Foxpro stores text and binary data
- if (m_aMemoHeader.db_typ == MemoFoxPro)
- {
- if (((BYTE)sHeader[0]) != 0 || ((BYTE)sHeader[1]) != 0 || ((BYTE)sHeader[2]) != 0)
- {
-// String aText = String(SdbResId(STR_STAT_FILE_INVALID));
-// aText.SearchAndReplace(String::CreateFromAscii("%%d"),m_pMemoStream->GetFileName());
-// aText.SearchAndReplace(String::CreateFromAscii("%%t"),aStatus.TypeToString(MEMO));
-// aStatus.Set(SDB_STAT_ERROR,
-// String::CreateFromAscii("01000"),
-// aStatus.CreateErrorMessage(aText),
-// 0, String() );
- return sal_False;
- }
-
- bIsText = sHeader[3] != 0;
- }
- else if (((BYTE)sHeader[0]) != 0xFF || ((BYTE)sHeader[1]) != 0xFF || ((BYTE)sHeader[2]) != 0x08)
- {
-// String aText = String(SdbResId(STR_STAT_FILE_INVALID));
-// aText.SearchAndReplace(String::CreateFromAscii("%%d"),m_pMemoStream->GetFileName());
-// aText.SearchAndReplace(String::CreateFromAscii("%%t"),aStatus.TypeToString(MEMO));
-// aStatus.Set(SDB_STAT_ERROR,
-// String::CreateFromAscii("01000"),
-// aStatus.CreateErrorMessage(aText),
-// 0, String() );
- return sal_False;
- }
-
- ULONG nLength;
- (*m_pMemoStream) >> nLength;
-
- if (m_aMemoHeader.db_typ == MemodBaseIV)
- nLength -= 8;
-
- // char cChar;
- if (nLength < STRING_MAXLEN && bIsText)
- {
- ByteString aBStr;
- aBStr.Expand(USHORT (nLength));
- m_pMemoStream->Read(aBStr.AllocBuffer((USHORT)nLength),nLength);
- aBStr.ReleaseBufferAccess();
- ::rtl::OUString aStr(aBStr.GetBuffer(),aBStr.Len(), getConnection()->getTextEncoding());
- aVariable = Sequence<sal_Int8>(reinterpret_cast<const sal_Int8*>(aStr.getStr()),sizeof(sal_Unicode)*aStr.getLength());
- }
- else
- {
- Sequence<sal_Int8> aText(nLength);
- sal_Int8* pData = aText.getArray();
- sal_Char cChar;
- for (ULONG i = 0; i < nLength; i++)
- {
- m_pMemoStream->Read(&cChar,1);
- (*pData++) = cChar;
- }
- aVariable = aText;
- // return sal_False;
- }
- }
- }
- return sal_True;
-}
// -------------------------------------------------------------------------
void ODbaseTable::FileClose()
{
@@ -1464,171 +1277,6 @@ BOOL ODbaseTable::DeleteRow(const OSQLColumns& _rCols)
m_pFileStream->Flush();
return sal_True;;
}
-
-//------------------------------------------------------------------
-BOOL ODbaseTable::WriteMemo(ORowSetValue& aVariable, ULONG& rBlockNr)
-{
- // wird die BlockNr 0 vorgegeben, wird der block ans Ende gehaengt
- char cChar = 0;
- BOOL bIsText = TRUE;
- // SdbConnection* pConnection = GetConnection();
-
- ULONG nSize = 0;
- ULONG nStreamSize;
- BYTE nHeader[4];
-
- ByteString aStr;
- // ::Sequence<sal_Int8>* pData = NULL;
-// if (aVariable.getValueType() == ::getCppuType((const ::com::sun::star::uno::Sequence< sal_Int8 > *)0))
-// {
-// pData = (::Sequence<sal_Int8>*)aVariable.get();
-// nSize = pData->getLength();
-// }
-// else
-// {
- aStr = ByteString(String(aVariable.getString()), getConnection()->getTextEncoding());
- nSize = aStr.Len();
- // }
-
- // Anhaengen oder ueberschreiben
- BOOL bAppend = rBlockNr == 0;
-
- if (!bAppend)
- {
- switch (m_aMemoHeader.db_typ)
- {
- case MemodBaseIII: // dBase III-Memofeld, endet mit 2 * Ctrl-Z
- bAppend = nSize > (512 - 2);
- break;
- case MemoFoxPro:
- case MemodBaseIV: // dBase IV-Memofeld mit Laengenangabe
- {
- char sHeader[4];
- m_pMemoStream->Seek(rBlockNr * m_aMemoHeader.db_size);
- m_pMemoStream->SeekRel(4L);
- m_pMemoStream->Read(sHeader,4);
-
- ULONG nOldSize;
- if (m_aMemoHeader.db_typ == MemoFoxPro)
- nOldSize = ((((unsigned char)sHeader[0]) * 256 +
- (unsigned char)sHeader[1]) * 256 +
- (unsigned char)sHeader[2]) * 256 +
- (unsigned char)sHeader[3];
- else
- nOldSize = ((((unsigned char)sHeader[3]) * 256 +
- (unsigned char)sHeader[2]) * 256 +
- (unsigned char)sHeader[1]) * 256 +
- (unsigned char)sHeader[0] - 8;
-
- // passt die neue Laenge in die belegten Bloecke
- ULONG nUsedBlocks = ((nSize + 8) / m_aMemoHeader.db_size) + (((nSize + 8) % m_aMemoHeader.db_size > 0) ? 1 : 0),
- nOldUsedBlocks = ((nOldSize + 8) / m_aMemoHeader.db_size) + (((nOldSize + 8) % m_aMemoHeader.db_size > 0) ? 1 : 0);
- bAppend = nUsedBlocks > nOldUsedBlocks;
- }
- }
- }
-
- if (bAppend)
- {
- ULONG nStreamSize;
- nStreamSize = m_pMemoStream->Seek(STREAM_SEEK_TO_END);
- // letzten block auffuellen
- rBlockNr = (nStreamSize / m_aMemoHeader.db_size) + ((nStreamSize % m_aMemoHeader.db_size) > 0 ? 1 : 0);
-
- m_pMemoStream->SetStreamSize(rBlockNr * m_aMemoHeader.db_size);
- m_pMemoStream->Seek(STREAM_SEEK_TO_END);
- }
- else
- {
- m_pMemoStream->Seek(rBlockNr * m_aMemoHeader.db_size);
- }
-
- switch (m_aMemoHeader.db_typ)
- {
- case MemodBaseIII: // dBase III-Memofeld, endet mit Ctrl-Z
- {
- const char cEOF = (char) 0x1a;
- nSize++;
-
-// if (pData)
-// {
-// m_pMemoStream->Write((const char*) pData->getConstArray(), pData->getLength());
-// }
-// else
-// {
- m_pMemoStream->Write(aStr.GetBuffer(), aStr.Len());
- // }
-
- (*m_pMemoStream) << cEOF << cEOF;
- } break;
- case MemoFoxPro:
- case MemodBaseIV: // dBase IV-Memofeld mit Laengenangabe
- {
- (*m_pMemoStream) << (BYTE)0xFF
- << (BYTE)0xFF
- << (BYTE)0x08;
-
- UINT32 nWriteSize = nSize;
- if (m_aMemoHeader.db_typ == MemoFoxPro)
- {
- (*m_pMemoStream) << (BYTE) 0x01; // ((pData = NULL) ? 0x01 : 0x00);
- for (int i = 4; i > 0; nWriteSize >>= 8)
- nHeader[--i] = (BYTE) (nWriteSize % 256);
- }
- else
- {
- (*m_pMemoStream) << (BYTE) 0x00;
- nWriteSize += 8;
- for (int i = 0; i < 4; nWriteSize >>= 8)
- nHeader[i++] = (BYTE) (nWriteSize % 256);
- }
-
- m_pMemoStream->Write(nHeader,4);
-// if (pData)
-// {
-// m_pMemoStream->Write((const char*) pData->getConstArray(), pData->getLength());
-// }
-// else
-// {
- m_pMemoStream->Write(aStr.GetBuffer(), aStr.Len());
- // }
- m_pMemoStream->Flush();
- }
- }
-
-
- // Schreiben der neuen Blocknummer
- if (bAppend)
- {
- nStreamSize = m_pMemoStream->Seek(STREAM_SEEK_TO_END);
- m_aMemoHeader.db_next = (nStreamSize / m_aMemoHeader.db_size) + ((nStreamSize % m_aMemoHeader.db_size) > 0 ? 1 : 0);
-
- // Schreiben der neuen Blocknummer
- m_pMemoStream->Seek(0L);
- (*m_pMemoStream) << m_aMemoHeader.db_next;
- m_pMemoStream->Flush();
- }
- return sal_True;
-}
-//------------------------------------------------------------------
-void ODbaseTable::AllocBuffer()
-{
- UINT16 nSize = m_aHeader.db_slng;
- OSL_ENSURE(nSize > 0, "Size too small");
-
- if (m_nBufferSize != nSize)
- {
- delete m_pBuffer;
- m_pBuffer = NULL;
- }
-
- // Falls noch kein Puffer vorhanden: allozieren:
- if (m_pBuffer == NULL && nSize)
- {
- m_nBufferSize = nSize;
- m_pBuffer = new BYTE[m_nBufferSize+1];
- }
-}
// -------------------------------------------------------------------------
Reference<XPropertySet> ODbaseTable::isUniqueByColumnName(const ::rtl::OUString& _rColName)
{
@@ -1895,18 +1543,6 @@ BOOL ODbaseTable::UpdateBuffer(OValueVector& rRow, OValueRow pOrgRow,const Refer
}
return sal_True;
}
-
-
-//------------------------------------------------------------------
-BOOL ODbaseTable::WriteBuffer()
-{
- OSL_ENSURE(m_nFilePos >= 1,"SdbDBFCursor::FileFetchRow: ungueltige Record-Position");
-
- // Auf gewuenschten Record positionieren:
- long nPos = m_aHeader.db_kopf + (long)(m_nFilePos-1) * m_aHeader.db_slng;
- m_pFileStream->Seek(nPos);
- return m_pFileStream->Write((char*) m_pBuffer, m_aHeader.db_slng) > 0;
-}
// -----------------------------------------------------------------------------
// XAlterTable
void SAL_CALL ODbaseTable::alterColumnByName( const ::rtl::OUString& colName, const Reference< XPropertySet >& descriptor ) throw(SQLException, NoSuchElementException, RuntimeException)
@@ -2167,7 +1803,4 @@ void ODbaseTable::copyData(ODbaseTable* _pNewTable)
}
}
// -----------------------------------------------------------------------------
-sal_Int32 ODbaseTable::getCurrentLastPos() const
-{
- return m_aHeader.db_anz;
-}
+
diff --git a/connectivity/source/drivers/dbase/dindexnode.cxx b/connectivity/source/drivers/dbase/dindexnode.cxx
index c1ae7aebc2ed..56aa81ce2330 100644
--- a/connectivity/source/drivers/dbase/dindexnode.cxx
+++ b/connectivity/source/drivers/dbase/dindexnode.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: dindexnode.cxx,v $
*
- * $Revision: 1.11 $
+ * $Revision: 1.12 $
*
- * last change: $Author: oj $ $Date: 2001-05-10 14:30:43 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:10 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -381,19 +381,6 @@ BOOL ONDXPage::Append(ONDXNode& rNode)
DBG_ASSERT(!IsFull(), "kein Append moeglich");
return Insert(nCount, rNode);
}
-
-//------------------------------------------------------------------
-void ONDXPage::Remove(USHORT nPos)
-{
- DBG_ASSERT(nCount > nPos, "falscher Indexzugriff");
-
- for (USHORT i = nPos; i < (nCount-1); i++)
- (*this)[i] = (*this)[i+1];
-
- nCount--;
- bModified = TRUE;
-}
-
//------------------------------------------------------------------
void ONDXPage::Release(BOOL bSave)
{
@@ -430,68 +417,6 @@ void ONDXPage::ReleaseFull(BOOL bSave)
aTempParent->GetChild().Clear();
}
}
-
-
-//------------------------------------------------------------------
-ONDXNode& ONDXPage::operator[] (USHORT nPos)
-{
- DBG_ASSERT(nCount > nPos, "falscher Indexzugriff");
- return ppNodes[nPos];
-}
-
-//------------------------------------------------------------------
-const ONDXNode& ONDXPage::operator[] (USHORT nPos) const
-{
- DBG_ASSERT(nCount > nPos, "falscher Indexzugriff");
- return ppNodes[nPos];
-}
-
-//------------------------------------------------------------------
-// laeuft rekursiv
-void ONDXPage::SearchAndReplace(const ONDXKey& rSearch,
- ONDXKey& rReplace)
-{
- if (rSearch == rReplace)
- return;
-
- USHORT nPos = NODE_NOTFOUND;
- ONDXPage* pPage = this;
-
- while (pPage && (nPos = pPage->Search(rSearch)) == NODE_NOTFOUND)
- pPage = pPage->aParent;
-
- if (pPage)
- {
- (*pPage)[nPos].GetKey() = rReplace;
- pPage->SetModified(TRUE);
- }
-}
-
-//------------------------------------------------------------------
-USHORT ONDXPage::Search(const ONDXKey& rSearch)
-{
- // binare Suche spaeter
- USHORT i = 0xFFFF;
- while (++i < Count())
- if ((*this)[i].GetKey() == rSearch)
- break;
-
- return (i < Count()) ? i : NODE_NOTFOUND;
-}
-
-//------------------------------------------------------------------
-USHORT ONDXPage::Search(const ONDXPage* pPage)
-{
- USHORT i = 0xFFFF;
- while (++i < Count())
- if (((*this)[i]).GetChild() == pPage)
- break;
-
- // wenn nicht gefunden, dann wird davon ausgegangen, dass die Seite selbst
- // auf die Page zeigt
- return (i < Count()) ? i : NODE_NOTFOUND;
-}
-
//------------------------------------------------------------------
BOOL ONDXPage::Delete(USHORT nNodePos)
{
@@ -812,242 +737,9 @@ void ONDXPage::Merge(USHORT nParentNodePos, ONDXPagePtr xPage)
}
}
// -------------------------------------------------------------------------
-BOOL ONDXPage::IsFull() const
-{
- return Count() == rIndex.getHeader().db_maxkeys;
-}
-
-#ifdef DEBUG
-//------------------------------------------------------------------
-void ONDXPage::PrintPage()
-{
- DBG_TRACE4("\nSDB: -----------Page: %d Parent: %d Count: %d Child: %d-----",
- nPagePos, HasParent() ? aParent->GetPagePos() : 0 ,nCount, aChild.GetPagePos());
-
- for (USHORT i = 0; i < nCount; i++)
- {
- ONDXNode rNode = (*this)[i];
- ONDXKey& rKey = rNode.GetKey();
- if (!IsLeaf())
- rNode.GetChild(&rIndex, this);
-
- if (rKey.getValue().isNull())
- {
- DBG_TRACE2("SDB: [%d,NULL,%d]",rKey.GetRecord(), rNode.GetChild().GetPagePos());
- }
- else if (rIndex.getHeader().db_keytype)
- {
- DBG_TRACE3("SDB: [%d,%f,%d]",rKey.GetRecord(), rKey.getValue().getDouble(),rNode.GetChild().GetPagePos());
- }
- else
- {
- DBG_TRACE3("SDB: [%d,%s,%d]",rKey.GetRecord(), (const char* )ByteString(rKey.getValue().getString().getStr(), rIndex.m_pTable->getConnection()->getTextEncoding()).GetBuffer(),rNode.GetChild().GetPagePos());
- }
- }
- DBG_TRACE("SDB: -----------------------------------------------\n");
- if (!IsLeaf())
- {
- GetChild(&rIndex)->PrintPage();
- for (USHORT i = 0; i < nCount; i++)
- {
- ONDXNode rNode = (*this)[i];
- rNode.GetChild(&rIndex,this)->PrintPage();
- }
- }
- DBG_TRACE("SDB: ===============================================\n");
-}
-#endif
-
-
-static UINT32 nValue;
-//------------------------------------------------------------------
-SvStream& connectivity::dbase::operator >> (SvStream &rStream, ONDXPage& rPage)
-{
- rStream.Seek(rPage.GetPagePos() * 512);
- rStream >> nValue >> rPage.aChild;
- rPage.nCount = USHORT(nValue);
-
-// DBG_ASSERT(rPage.nCount && rPage.nCount < rPage.GetIndex().GetMaxNodes(), "Falscher Count");
- for (USHORT i = 0; i < rPage.nCount; i++)
- rPage[i].Read(rStream, rPage.GetIndex());
- return rStream;
-}
-
-//------------------------------------------------------------------
-SvStream& connectivity::dbase::operator << (SvStream &rStream, const ONDXPage& rPage)
-{
- // Seite existiert noch nicht
- ULONG nSize = (rPage.GetPagePos() + 1) * 512;
- if (nSize > rStream.Seek(STREAM_SEEK_TO_END))
- {
- rStream.SetStreamSize(nSize);
- rStream.Seek(rPage.GetPagePos() * 512);
-
- char aEmptyData[512];
- memset(aEmptyData,0x00,512);
- rStream.Write((BYTE*)aEmptyData,512);
- }
- ULONG nCurrentPos = rStream.Seek(rPage.GetPagePos() * 512);
-
- nValue = rPage.nCount;
- rStream << nValue << rPage.aChild;
-
- USHORT i = 0;
- for (; i < rPage.nCount; i++)
- rPage[i].Write(rStream, rPage);
-
- // check if we have to fill the stream with '\0'
- if(i < rPage.rIndex.getHeader().db_maxkeys)
- {
- ULONG nTell = rStream.Tell() % 512;
- USHORT nBufferSize = rStream.GetBufferSize();
- ULONG nSize = nBufferSize - nTell;
- char* pEmptyData = new char[nSize];
- memset(pEmptyData,0x00,nSize);
- rStream.Write((BYTE*)pEmptyData,nSize);
- rStream.Seek(nTell);
- delete pEmptyData;
- }
- return rStream;
-}
-
-//==================================================================
-// ONDXNode
-//==================================================================
-
-//------------------------------------------------------------------
-void ONDXNode::Read(SvStream &rStream, ODbaseIndex& rIndex)
-{
- rStream >> (sal_uInt32)aKey.nRecord; // schluessel
- if (rIndex.getHeader().db_keytype)
- {
- double aDbl;
- rStream >> aDbl;
- aKey = ONDXKey(aDbl,aKey.nRecord);
- }
- else
- {
- ByteString aBuf;
- USHORT nLen = rIndex.getHeader().db_keylen;
- char* pStr = aBuf.AllocBuffer(nLen+1);
-
- rStream.Read(pStr,nLen);
- pStr[nLen] = 0;
- aBuf.ReleaseBufferAccess();
- aBuf.EraseTrailingChars();
-
- // aKey = ONDXKey((aBuf,rIndex.GetDBFConnection()->GetCharacterSet()) ,aKey.nRecord);
- aKey = ONDXKey(::rtl::OUString(aBuf.GetBuffer(),aBuf.Len(),rIndex.m_pTable->getConnection()->getTextEncoding()) ,aKey.nRecord);
- }
- rStream >> aChild;
-}
-
-union
-{
- double aDbl;
- char aData[128];
-} aNodeData;
-//------------------------------------------------------------------
-void ONDXNode::Write(SvStream &rStream, const ONDXPage& rPage) const
-{
- const ODbaseIndex& rIndex = rPage.GetIndex();
- if (!rIndex.isUnique() || rPage.IsLeaf())
- rStream << (sal_uInt32)aKey.nRecord; // schluessel
- else
- rStream << (sal_uInt32)0; // schluessel
-
- if (rIndex.getHeader().db_keytype) // double
- {
- if (aKey.getValue().isNull())
- {
- memset(aNodeData.aData,0,rIndex.getHeader().db_keylen);
- rStream.Write((BYTE*)aNodeData.aData,rIndex.getHeader().db_keylen);
- }
- else
- rStream << (double) aKey.getValue();
- }
- else
- {
- memset(aNodeData.aData,0x20,rIndex.getHeader().db_keylen);
- if (!aKey.getValue().isNull())
- {
- ::rtl::OUString sValue = aKey.getValue();
- ByteString aText(sValue.getStr(), rIndex.m_pTable->getConnection()->getTextEncoding());
- strncpy(aNodeData.aData,aText.GetBuffer(),min(rIndex.getHeader().db_keylen, aText.Len()));
- }
- rStream.Write((BYTE*)aNodeData.aData,rIndex.getHeader().db_keylen);
- }
- rStream << aChild;
-}
-
-
-//------------------------------------------------------------------
-ONDXPagePtr& ONDXNode::GetChild(ODbaseIndex* pIndex, ONDXPage* pParent)
-{
- if (!aChild.Is() && pIndex)
- {
- aChild = pIndex->CreatePage(aChild.GetPagePos(),pParent,aChild.HasPage());
- }
- return aChild;
-}
-
-//==================================================================
-// ONDXKey
-//==================================================================
-//------------------------------------------------------------------
-BOOL ONDXKey::IsText(sal_Int32 eType)
-{
- return eType == DataType::VARCHAR || eType == DataType::CHAR;
-}
-
-//------------------------------------------------------------------
-StringCompare ONDXKey::Compare(const ONDXKey& rKey) const
-{
- // DBG_ASSERT(is(), "Falscher Indexzugriff");
- StringCompare eResult;
- if (getValue().isNull())
- {
- if (rKey.getValue().isNull() || (rKey.IsText(getDBType()) && !rKey.getValue().getString().getLength()))
- eResult = COMPARE_EQUAL;
- else
- eResult = COMPARE_LESS;
- }
- else if (rKey.getValue().isNull())
- {
- if (getValue().isNull() || (IsText(getDBType()) && !getValue().getString().getLength()))
- eResult = COMPARE_EQUAL;
- else
- eResult = COMPARE_GREATER;
- }
- else if (IsText(getDBType()))
- {
- INT32 nRes = getValue().getString().compareTo(rKey.getValue());
- eResult = (nRes > 0) ? COMPARE_GREATER : (nRes == 0) ? COMPARE_EQUAL : COMPARE_LESS;
- }
- else
- {
- double m = getValue(),n = rKey.getValue();
- eResult = (m > n) ? COMPARE_GREATER : (n == m) ? COMPARE_EQUAL : COMPARE_LESS;
- }
- // Record vergleich, wenn Index !Unique
- if (eResult == COMPARE_EQUAL && nRecord && rKey.nRecord)
- eResult = (nRecord > rKey.nRecord) ? COMPARE_GREATER :
- (nRecord == rKey.nRecord) ? COMPARE_EQUAL : COMPARE_LESS;
- return eResult;
-}
-// -----------------------------------------------------------------------------
-void ONDXKey::setValue(const ORowSetValue& _rVal)
-{
- xValue = _rVal;
-}
-// -----------------------------------------------------------------------------
-const ORowSetValue& ONDXKey::getValue() const
-{
- return xValue;
-}
// -----------------------------------------------------------------------------
//namespace connectivity
//{
@@ -1056,52 +748,5 @@ const ORowSetValue& ONDXKey::getValue() const
// SV_IMPL_REF(ONDXPage);
// }
//}
-//==================================================================
-// ONDXPagePtr
-//==================================================================
-//------------------------------------------------------------------
-SvStream& connectivity::dbase::operator >> (SvStream &rStream, ONDXPagePtr& rPage)
-{
- rStream >> rPage.nPagePos;
- return rStream;
-}
-
-//------------------------------------------------------------------
-SvStream& connectivity::dbase::operator << (SvStream &rStream, const ONDXPagePtr& rPage)
-{
- rStream << rPage.nPagePos;
- return rStream;
-}
-//------------------------------------------------------------------
-ONDXPagePtr::ONDXPagePtr(const ONDXPagePtr& rRef)
- :ONDXPageRef(rRef)
- ,nPagePos(rRef.nPagePos)
-{
-}
-
-//------------------------------------------------------------------
-ONDXPagePtr::ONDXPagePtr(ONDXPage* pRefPage)
- :ONDXPageRef(pRefPage)
- ,nPagePos(0)
-{
- if (pRefPage)
- nPagePos = pRefPage->GetPagePos();
-}
-//------------------------------------------------------------------
-ONDXPagePtr& ONDXPagePtr::operator=(const ONDXPagePtr& rRef)
-{
- ONDXPageRef::operator=(rRef);
- nPagePos = rRef.nPagePos;
- return *this;
-}
-
-//------------------------------------------------------------------
-ONDXPagePtr& ONDXPagePtr::operator= (ONDXPage* pRef)
-{
- ONDXPageRef::operator=(pRef);
- nPagePos = (pRef) ? pRef->GetPagePos() : 0;
- return *this;
-}
-// -----------------------------------------------------------------------------
diff --git a/connectivity/source/drivers/dbase/makefile.mk b/connectivity/source/drivers/dbase/makefile.mk
index 8c77904c86bf..b9334fe7911d 100644
--- a/connectivity/source/drivers/dbase/makefile.mk
+++ b/connectivity/source/drivers/dbase/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.16 $
+# $Revision: 1.17 $
#
-# last change: $Author: oj $ $Date: 2001-05-14 11:37:37 $
+# last change: $Author: oj $ $Date: 2001-05-23 09:13:10 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -65,8 +65,6 @@ PRJINC=..$/..
PRJNAME=connectivity
TARGET=dbase
-ENABLE_EXCEPTIONS=TRUE
-
# --- Settings ----------------------------------
.IF "$(DBGUTIL_OJ)"!=""
ENVCFLAGS+=/FR$(SLO)$/
@@ -78,6 +76,7 @@ ENVCFLAGS+=/FR$(SLO)$/
# --- Files -------------------------------------
SLOFILES=\
+ $(SLO)$/DNoException.obj \
$(SLO)$/DCode.obj \
$(SLO)$/DResultSet.obj \
$(SLO)$/DStatement.obj \
@@ -97,6 +96,27 @@ SLOFILES=\
$(SLO)$/Dservices.obj \
$(SLO)$/DDriver.obj
+EXCEPTIONSFILES=\
+ $(SLO)$/DCode.obj \
+ $(SLO)$/DResultSet.obj \
+ $(SLO)$/DStatement.obj \
+ $(SLO)$/DPreparedStatement.obj \
+ $(SLO)$/dindexnode.obj \
+ $(SLO)$/DIndexPage.obj \
+ $(SLO)$/DIndexIter.obj \
+ $(SLO)$/DDatabaseMetaData.obj \
+ $(SLO)$/DCatalog.obj \
+ $(SLO)$/DColumns.obj \
+ $(SLO)$/DIndexColumns.obj \
+ $(SLO)$/DIndex.obj \
+ $(SLO)$/DIndexes.obj \
+ $(SLO)$/DTable.obj \
+ $(SLO)$/DTables.obj \
+ $(SLO)$/DConnection.obj \
+ $(SLO)$/Dservices.obj \
+ $(SLO)$/DDriver.obj
+
+
.IF "$(OS)"=="MACOSX"
#SHL1VERSIONMAP=$(TARGET).$(DLLPOSTFIX).map
.ELSE
diff --git a/connectivity/source/drivers/file/FCatalog.cxx b/connectivity/source/drivers/file/FCatalog.cxx
index 0f60ead02f37..0566d51d415d 100644
--- a/connectivity/source/drivers/file/FCatalog.cxx
+++ b/connectivity/source/drivers/file/FCatalog.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: FCatalog.cxx,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: oj $ $Date: 2001-05-02 12:54:56 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:11 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -116,6 +116,8 @@ void OFileCatalog::refreshTables()
aVector.push_back(xRow->getString(3));
}
if(m_pTables)
+ m_pTables->reFill(aVector);
+ else
delete m_pTables;
m_pTables = new OTables(m_xMetaData,*this,m_aMutex,aVector);
}
@@ -153,8 +155,4 @@ Sequence< Type > SAL_CALL OFileCatalog::getTypes( ) throw(RuntimeException)
}
return aRet;
}
-// -----------------------------------------------------------------------------
-void OFileCatalog::refreshViews(){}
-void OFileCatalog::refreshGroups(){}
-void OFileCatalog::refreshUsers(){}
diff --git a/connectivity/source/drivers/file/FDriver.cxx b/connectivity/source/drivers/file/FDriver.cxx
index 5f7688603102..a9b037a072c1 100644
--- a/connectivity/source/drivers/file/FDriver.cxx
+++ b/connectivity/source/drivers/file/FDriver.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: FDriver.cxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: oj $ $Date: 2001-05-17 09:13:20 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:11 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -65,9 +65,15 @@
#ifndef _CONNECTIVITY_FILE_OCONNECTION_HXX_
#include "file/FConnection.hxx"
#endif
+#ifndef _CONNECTIVITY_FILE_FCODE_HXX_
+#include "file/fcode.hxx"
+#endif
#ifndef _COM_SUN_STAR_LANG_DISPOSEDEXCEPTION_HPP_
#include <com/sun/star/lang/DisposedException.hpp>
#endif
+#ifndef _COMPHELPER_TYPES_HXX_
+#include <comphelper/types.hxx>
+#endif
using namespace connectivity::file;
using namespace com::sun::star::uno;
@@ -213,6 +219,36 @@ Reference< XTablesSupplier > SAL_CALL OFileDriver::getDataDefinitionByURL( const
return getDataDefinitionByConnection(connect(url,info));
}
// -----------------------------------------------------------------------------
+void OOperandParam::describe(const Reference< XPropertySet>& rColumn, ::vos::ORef<connectivity::OSQLColumns> rParameterColumns)
+{
+ // den alten namen beibehalten
+
+ Reference< XPropertySet> xColumn = (*rParameterColumns)[getRowPos()];
+
+ try
+ {
+ xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME)));
+ xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE)));
+ xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION)));
+ xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE)));
+ xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE)));
+ xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE)));
+ xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT)));
+ }
+ catch(const Exception&)
+ {
+ }
+
+ m_eDBType = ::comphelper::getINT32(rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE)));
+}
+// -----------------------------------------------------------------------------
+OOperandAttr::OOperandAttr(sal_uInt16 _nPos,const Reference< XPropertySet>& _xColumn)
+ : OOperandRow(_nPos,::comphelper::getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))))
+ , m_xColumn(_xColumn)
+{
+}
+// -----------------------------------------------------------------------------
+
diff --git a/connectivity/source/drivers/file/FNoException.cxx b/connectivity/source/drivers/file/FNoException.cxx
new file mode 100644
index 000000000000..540914620d9e
--- /dev/null
+++ b/connectivity/source/drivers/file/FNoException.cxx
@@ -0,0 +1,425 @@
+/*************************************************************************
+ *
+ * $RCSfile: FNoException.cxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: oj $ $Date: 2001-05-23 09:17:04 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the License); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an AS IS basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CONNECTIVITY_FILE_CATALOG_HXX_
+#include "file/FCatalog.hxx"
+#endif
+#ifndef _CONNECTIVITY_FILE_FCOMP_HXX_
+#include "file/fcomp.hxx"
+#endif
+#ifndef _CONNECTIVITY_FILE_FANALYZER_HXX_
+#include "file/fanalyzer.hxx"
+#endif
+#ifndef _CONNECTIVITY_FILE_FRESULTSET_HXX_
+#include "file/FResultSet.hxx"
+#endif
+#ifndef _CONNECTIVITY_FILE_VALUE_HXX_
+#include "FValue.hxx"
+#endif
+#ifndef _TOOLS_DEBUG_HXX
+#include <tools/debug.hxx>
+#endif
+
+using namespace connectivity;
+using namespace connectivity::file;
+// -----------------------------------------------------------------------------
+void OFileCatalog::refreshViews()
+{}
+void OFileCatalog::refreshGroups()
+{}
+void OFileCatalog::refreshUsers()
+{
+}
+// -----------------------------------------------------------------------------
+OPredicateInterpreter::~OPredicateInterpreter()
+{
+ while(!m_aStack.empty())
+ {
+ delete m_aStack.top();
+ m_aStack.pop();
+ }
+ // m_aStack.clear();
+}
+// -----------------------------------------------------------------------------
+void OPredicateCompiler::Clean()
+{
+ for(OCodeList::reverse_iterator aIter = m_aCodeList.rbegin(); aIter != m_aCodeList.rend();++aIter)
+ {
+ delete *aIter;
+ m_aCodeList.pop_back();
+ }
+ // m_aCodeList.clear();
+}
+// -----------------------------------------------------------------------------
+void OSQLAnalyzer::clean()
+{
+ m_aCompiler.Clean();
+}
+// -----------------------------------------------------------------------------
+void OSQLAnalyzer::bindParameterRow(OValueRow _pRow)
+{
+ OCodeList& rCodeList = m_aCompiler.m_aCodeList;
+ for(OCodeList::iterator aIter = rCodeList.begin(); aIter != rCodeList.end();++aIter)
+ {
+ OOperandParam* pParam = PTR_CAST(OOperandParam,(*aIter));
+ if (pParam)
+ pParam->bindValue(_pRow);
+ }
+}
+// -----------------------------------------------------------------------------
+sal_Bool OResultSet::isCount() const
+{
+ return (m_pParseTree &&
+ m_pParseTree->count() > 2 &&
+ SQL_ISRULE(m_pParseTree->getChild(2),scalar_exp_commalist) &&
+ SQL_ISRULE(m_pParseTree->getChild(2)->getChild(0),derived_column) &&
+ SQL_ISRULE(m_pParseTree->getChild(2)->getChild(0)->getChild(0),general_set_fct)
+ );
+}
+// -----------------------------------------------------------------------------
+void OResultSet::scanParameter(OSQLParseNode* pParseNode,::std::vector< OSQLParseNode*>& _rParaNodes)
+{
+ DBG_ASSERT(pParseNode != NULL,"OResultSet: interner Fehler: ungueltiger ParseNode");
+
+ // Parameter Name-Regel gefunden?
+ if (SQL_ISRULE(pParseNode,parameter))
+ {
+ DBG_ASSERT(pParseNode->count() >= 1,"OResultSet: Parse Tree fehlerhaft");
+ DBG_ASSERT(pParseNode->getChild(0)->getNodeType() == SQL_NODE_PUNCTUATION,"OResultSet: Parse Tree fehlerhaft");
+
+ _rParaNodes.push_back(pParseNode);
+ // Weiterer Abstieg nicht erforderlich
+ return;
+ }
+
+ // Weiter absteigen im Parse Tree
+ for (UINT32 i = 0; i < pParseNode->count(); i++)
+ scanParameter(pParseNode->getChild(i),_rParaNodes);
+}
+// -----------------------------------------------------------------------------
+//------------------------------------------------------------------
+int
+#if defined(WIN) || defined(WNT)
+__cdecl
+#endif
+#if defined(ICC) && defined(OS2)
+_Optlink
+#endif
+connectivity::file::OFILEKeyCompare(const void * elem1, const void * elem2)
+{
+ const OFILESortIndex * pIndex = OFILESortIndex::pCurrentIndex;
+ const OFILEKeyValue * pKeyValue1 = (OFILEKeyValue *) * (OFILEKeyValue **) elem1;
+ const OFILEKeyValue * pKeyValue2 = (OFILEKeyValue *) * (OFILEKeyValue **) elem2;
+
+ // Ueber die (max.) drei ORDER BY-Columns iterieren. Abbruch des Vergleiches, wenn Ungleichheit erkannt
+ // oder alle Columns gleich.
+ for (UINT16 i = 0; i < SQL_ORDERBYKEYS && pIndex->eKeyType[i] != SQL_ORDERBYKEY_NONE; i++)
+ {
+ const int nGreater = (pIndex->bAscending[i]) ? 1 : -1;
+ const int nLess = - nGreater;
+
+ // Vergleich (je nach Datentyp):
+ switch (pIndex->eKeyType[i])
+ {
+ case SQL_ORDERBYKEY_STRING:
+ {
+ INT32 nRes = pKeyValue1->GetKeyString(i)->compareTo(*pKeyValue2->GetKeyString(i));
+ if (nRes < 0)
+ return nLess;
+ else if (nRes > 0)
+ return nGreater;
+ }
+ break;
+ case SQL_ORDERBYKEY_DOUBLE:
+ {
+ double d1 = pKeyValue1->GetKeyDouble(i);
+ double d2 = pKeyValue2->GetKeyDouble(i);
+
+ if (d1 < d2)
+ return nLess;
+ else if (d1 > d2)
+ return nGreater;
+ }
+ break;
+ }
+ }
+
+ // Wenn wir bis hierher gekommen sind, waren alle Werte gleich:
+ return 0;
+}
+// -----------------------------------------------------------------------------
+//------------------------------------------------------------------
+OKeySet* OFILESortIndex::CreateKeySet()
+{
+
+ OSL_ENSURE(! bFrozen,"OFILESortIndex::Freeze: already frozen!");
+
+ // Kritischer Bereich: Hinterlegung von this in statischer Variable.
+ // Zugriff auf diese Variable von der OFILECompare-Funktion aus.
+ // Da dies NUR waehrend der Ausfuehrung der qsort-Funktion stattfindet,
+ // ist dies aber unkritisch: unter Windows 3.x ist diese Ausfuehrung
+ // UNUNTERBRECHBAR; unter NT, OS/2, Unix, ... hat jede DLL ihr
+ // eigenes Datensegment.
+ pCurrentIndex = this;
+ eCurrentCharSet = eCharSet;
+
+ // Sortierung:
+ if (eKeyType[0] != SQL_ORDERBYKEY_NONE)
+ // Sortierung, wenn mindestens nach dem ersten Key sortiert werden soll:
+ qsort(ppKeyValueArray,nCount,sizeof(void *),&OFILEKeyCompare);
+
+
+ // Ende des kritischen Bereiches
+ pCurrentIndex = NULL;
+
+
+ OKeySet* pKeySet = new OKeySet(nCount);
+ OKeySet::iterator aIter = pKeySet->begin();
+ for (INT32 i = 0; i < nCount; i++,++aIter)
+ {
+ OFILEKeyValuePtr pKeyValue = ppKeyValueArray[i];
+
+ OSL_ENSURE(pKeyValue != NULL,"OFILESortIndex::Freeze: pKeyValue == NULL");
+ (*aIter) = pKeyValue->GetValue(); // Wert holen ...
+
+ // Strings in KeyValue freigeben!
+ for (int j = 0; j < SQL_ORDERBYKEYS; j++)
+ {
+ if (eKeyType[j] == SQL_ORDERBYKEY_STRING)
+ delete pKeyValue->GetKeyString(j);
+ }
+ delete pKeyValue;
+ }
+ bFrozen = TRUE;
+ pKeySet->setFrozen();
+ return pKeySet;
+}
+// -----------------------------------------------------------------------------
+OFILESortIndex * OFILESortIndex::pCurrentIndex;
+CharSet OFILESortIndex::eCurrentCharSet;
+//------------------------------------------------------------------
+OFILESortIndex::OFILESortIndex(const OKeyType eKeyType2[], // Genau 3 Eintraege!
+ const BOOL bAscending2[], // Genau 3 Eintraege!
+ INT32 nMaxNumberOfRows, rtl_TextEncoding eSet) // Obere Schranke fuer die Anzahl indizierbarer Zeilen
+ : nMaxCount(nMaxNumberOfRows),
+ nCount(0),
+ bFrozen(FALSE), eCharSet(eSet)
+{
+ for (int j = 0; j < SQL_ORDERBYKEYS; j++)
+ {
+ eKeyType[j] = eKeyType2[j];
+ bAscending[j] = bAscending2[j];
+ }
+
+#if defined MAX_KEYSET_SIZE
+ // Zur Sicherheit Maximalgroesse nochmal pruefen:
+ if (nMaxCount > MAX_KEYSET_SIZE)
+ {
+ DBG_WARNING("OFILESortIndex::OFILESortIndex: nMaxNumberOfRows zur Zeit auf <16K beschraenkt!");
+ nMaxCount = MAX_KEYSET_SIZE;
+ }
+#endif
+ if (nMaxCount <= 0)
+ nMaxCount = USHORT(-1);
+
+ ppKeyValueArray = new OFILEKeyValuePtr[nMaxCount];
+
+ for (INT32 i = 0; i < nMaxCount; i++)
+ ppKeyValueArray[i] = NULL;
+}
+
+//------------------------------------------------------------------
+OFILESortIndex::~OFILESortIndex()
+{
+ __DELETE(nMaxCount) ppKeyValueArray;
+}
+
+
+//------------------------------------------------------------------
+BOOL OFILESortIndex::AddKeyValue(OFILEKeyValue * pKeyValue)
+{
+ if (nCount < nMaxCount)
+ {
+ if (bFrozen) // wenn der Index schon eingefroren
+ // dann wird der Key einfach ans Ende gehaengt
+ {
+ OSL_ENSURE(pKeyValue != NULL,"OFILESortIndex::Freeze: pKeyValue == NULL");
+ INT32 nValue = pKeyValue->GetValue(); // Wert holen ...
+
+ // Strings in KeyValue freigeben!
+ for (int j = 0; j < SQL_ORDERBYKEYS; j++)
+ {
+ if (eKeyType[j] == SQL_ORDERBYKEY_STRING)
+ delete pKeyValue->GetKeyString(j);
+ }
+ delete pKeyValue;
+ ppKeyValueArray[nCount++] = (OFILEKeyValuePtr) nValue;
+ }
+ else
+ ppKeyValueArray[nCount++] = pKeyValue;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+
+//------------------------------------------------------------------
+void OFILESortIndex::Freeze()
+{
+ OSL_ENSURE(! bFrozen,"OFILESortIndex::Freeze: already frozen!");
+
+ // Kritischer Bereich: Hinterlegung von this in statischer Variable.
+ // Zugriff auf diese Variable von der OFILECompare-Funktion aus.
+ // Da dies NUR waehrend der Ausfuehrung der qsort-Funktion stattfindet,
+ // ist dies aber unkritisch: unter Windows 3.x ist diese Ausfuehrung
+ // UNUNTERBRECHBAR; unter NT, OS/2, Unix, ... hat jede DLL ihr
+ // eigenes Datensegment.
+ pCurrentIndex = this;
+ eCurrentCharSet = eCharSet;
+
+ // Sortierung:
+ if (eKeyType[0] != SQL_ORDERBYKEY_NONE)
+ // Sortierung, wenn mindestens nach dem ersten Key sortiert werden soll:
+ qsort(ppKeyValueArray,nCount,sizeof(void *),&OFILEKeyCompare);
+
+
+ // Ende des kritischen Bereiches
+ pCurrentIndex = NULL;
+
+ // Wert auslesen, KeyValue loeschen und in den void * den Value
+ // reinschreiben (uebler Trick mit Typecast!)
+ for (INT32 i = 0; i < nCount; i++)
+ {
+ OFILEKeyValuePtr pKeyValue = ppKeyValueArray[i];
+
+ OSL_ENSURE(pKeyValue != NULL,"OFILESortIndex::Freeze: pKeyValue == NULL");
+ INT32 nValue = pKeyValue->GetValue(); // Wert holen ...
+
+ // Strings in KeyValue freigeben!
+ for (int j = 0; j < SQL_ORDERBYKEYS; j++)
+ {
+ if (eKeyType[j] == SQL_ORDERBYKEY_STRING)
+ delete pKeyValue->GetKeyString(j);
+ }
+ delete pKeyValue;
+ ppKeyValueArray[i] = (OFILEKeyValuePtr) nValue;
+ }
+
+ bFrozen = TRUE;
+}
+
+//------------------------------------------------------------------
+INT32 OFILESortIndex::GetValue(INT32 nPos) const
+{
+ OSL_ENSURE(nPos > 0,"OFILESortIndex::GetValue: nPos == 0");
+ OSL_ENSURE(nPos <= nCount,"OFILESortIndex::GetValue: Zugriff ausserhalb der Array-Grenzen");
+
+// OSL_ENSURE(ppKeyValueArray[nPos-1] != NULL,"OFILESortIndex::GetValue: interner Fehler: kein KeyValue an dieser Stelle");
+// return ppKeyValueArray[nPos-1]->GetValue();
+
+ if (!bFrozen)
+ {
+ if (eKeyType[0] == SQL_ORDERBYKEY_NONE) // wenn keine Sortierung vorliegt
+ // darf auf die Values schon vorher zugegriffen werden
+ return ppKeyValueArray[nPos-1]->GetValue();
+ else
+ {
+ OSL_ASSERT("OFILESortIndex::GetValue: Invalid use of index!");
+ return 0;
+ }
+ }
+ else
+ return (INT32) ppKeyValueArray[nPos-1]; // Trick: nach Freeze sind hier nur noch Values, keine KeyValue-Strukturen mehr!
+
+}
+// -----------------------------------------------------------------------------
+OFILEKeyValue* OResultSet::GetOrderbyKeyValue(OValueRow _rRow)
+{
+ UINT32 nBookmarkValue = Abs((sal_Int32)(*_rRow)[0]);
+
+ OFILEKeyValue* pKeyValue = new OFILEKeyValue((UINT32)nBookmarkValue);
+ for (int i = 0; i < sizeof m_nOrderbyColumnNumber / sizeof (* m_nOrderbyColumnNumber); i++)
+ {
+ if (m_nOrderbyColumnNumber[i] == SQL_COLUMN_NOTFOUND) break;
+
+ ORowSetValue xKey = (*_rRow)[m_nOrderbyColumnNumber[i]];
+ switch (xKey.getTypeKind())
+ {
+ case ::com::sun::star::sdbc::DataType::VARCHAR:
+ case ::com::sun::star::sdbc::DataType::CHAR:
+ pKeyValue->SetKey(i,(rtl::OUString)xKey);
+ break;
+ default:
+ pKeyValue->SetKey(i,(double)xKey);
+ break;
+ }
+ }
+ return pKeyValue;
+}
+// -----------------------------------------------------------------------------
+
+
+
+
+
+
+
+
diff --git a/connectivity/source/drivers/file/FPreparedStatement.cxx b/connectivity/source/drivers/file/FPreparedStatement.cxx
index c86db187edda..5e0eb1ee81b2 100644
--- a/connectivity/source/drivers/file/FPreparedStatement.cxx
+++ b/connectivity/source/drivers/file/FPreparedStatement.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: FPreparedStatement.cxx,v $
*
- * $Revision: 1.17 $
+ * $Revision: 1.18 $
*
- * last change: $Author: oj $ $Date: 2001-05-17 06:46:53 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:11 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -79,9 +79,6 @@
#ifndef _COMPHELPER_SEQUENCE_HXX_
#include <comphelper/sequence.hxx>
#endif
-#ifndef _CONNECTIVITY_DATECONVERSION_HXX_
-#include "connectivity/DateConversion.hxx"
-#endif
#ifndef _COM_SUN_STAR_LANG_DISPOSEDEXCEPTION_HPP_
#include <com/sun/star/lang/DisposedException.hpp>
#endif
diff --git a/connectivity/source/drivers/file/FResultSet.cxx b/connectivity/source/drivers/file/FResultSet.cxx
index 74030a8a11f0..d5aaf1846cf5 100644
--- a/connectivity/source/drivers/file/FResultSet.cxx
+++ b/connectivity/source/drivers/file/FResultSet.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: FResultSet.cxx,v $
*
- * $Revision: 1.55 $
+ * $Revision: 1.56 $
*
- * last change: $Author: oj $ $Date: 2001-05-18 08:48:05 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:11 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -287,6 +287,12 @@ sal_Int32 SAL_CALL OResultSet::findColumn( const ::rtl::OUString& columnName ) t
break;
return i;
}
+// -----------------------------------------------------------------------------
+void OResultSet::checkIndex(sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException)
+{
+ if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
+ ::dbtools::throwInvalidIndexException(*this);
+}
// -------------------------------------------------------------------------
Reference< ::com::sun::star::io::XInputStream > SAL_CALL OResultSet::getBinaryStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
{
@@ -294,8 +300,8 @@ Reference< ::com::sun::star::io::XInputStream > SAL_CALL OResultSet::getBinarySt
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
return NULL;
}
@@ -306,8 +312,8 @@ Reference< ::com::sun::star::io::XInputStream > SAL_CALL OResultSet::getCharacte
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
return NULL;
}
@@ -319,8 +325,8 @@ sal_Bool SAL_CALL OResultSet::getBoolean( sal_Int32 columnIndex ) throw(SQLExcep
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
m_bWasNull = (*m_aRow)[columnIndex].isNull();
return (*m_aRow)[columnIndex];
@@ -333,8 +339,8 @@ sal_Int8 SAL_CALL OResultSet::getByte( sal_Int32 columnIndex ) throw(SQLExceptio
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
m_bWasNull = (*m_aRow)[columnIndex].isNull();
return (*m_aRow)[columnIndex];
@@ -347,8 +353,8 @@ Sequence< sal_Int8 > SAL_CALL OResultSet::getBytes( sal_Int32 columnIndex ) thro
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
m_bWasNull = (*m_aRow)[columnIndex].isNull();
// it could happen that values are updated as string and then called for as getBytes
@@ -369,8 +375,8 @@ Sequence< sal_Int8 > SAL_CALL OResultSet::getBytes( sal_Int32 columnIndex ) thro
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
m_bWasNull = (*m_aRow)[columnIndex].isNull();
@@ -384,8 +390,8 @@ double SAL_CALL OResultSet::getDouble( sal_Int32 columnIndex ) throw(SQLExceptio
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
m_bWasNull = (*m_aRow)[columnIndex].isNull();
return (*m_aRow)[columnIndex];
@@ -398,8 +404,8 @@ float SAL_CALL OResultSet::getFloat( sal_Int32 columnIndex ) throw(SQLException,
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
m_bWasNull = (*m_aRow)[columnIndex].isNull();
return (*m_aRow)[columnIndex];
@@ -412,8 +418,8 @@ sal_Int32 SAL_CALL OResultSet::getInt( sal_Int32 columnIndex ) throw(SQLExceptio
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
m_bWasNull = (*m_aRow)[columnIndex].isNull();
return (*m_aRow)[columnIndex];
@@ -441,8 +447,8 @@ sal_Int64 SAL_CALL OResultSet::getLong( sal_Int32 columnIndex ) throw(SQLExcepti
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
return sal_Int64();
@@ -466,8 +472,8 @@ Reference< XArray > SAL_CALL OResultSet::getArray( sal_Int32 columnIndex ) throw
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
return NULL;
}
@@ -480,8 +486,8 @@ Reference< XClob > SAL_CALL OResultSet::getClob( sal_Int32 columnIndex ) throw(S
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
return NULL;
}
@@ -492,8 +498,8 @@ Reference< XBlob > SAL_CALL OResultSet::getBlob( sal_Int32 columnIndex ) throw(S
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
return NULL;
}
@@ -505,8 +511,8 @@ Reference< XRef > SAL_CALL OResultSet::getRef( sal_Int32 columnIndex ) throw(SQL
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
return NULL;
}
@@ -529,8 +535,8 @@ sal_Int16 SAL_CALL OResultSet::getShort( sal_Int32 columnIndex ) throw(SQLExcept
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
m_bWasNull = (*m_aRow)[columnIndex].isNull();
return (*m_aRow)[columnIndex];
@@ -544,8 +550,8 @@ sal_Int16 SAL_CALL OResultSet::getShort( sal_Int32 columnIndex ) throw(SQLExcept
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
m_bWasNull = (*m_aRow)[columnIndex].isNull();
return (*m_aRow)[columnIndex];
@@ -560,8 +566,8 @@ sal_Int16 SAL_CALL OResultSet::getShort( sal_Int32 columnIndex ) throw(SQLExcept
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
return (*m_aRow)[columnIndex];
@@ -575,8 +581,8 @@ sal_Int16 SAL_CALL OResultSet::getShort( sal_Int32 columnIndex ) throw(SQLExcept
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
return (*m_aRow)[columnIndex];
}
@@ -928,8 +934,8 @@ void SAL_CALL OResultSet::updateNull( sal_Int32 columnIndex ) throw(SQLException
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -944,8 +950,8 @@ void SAL_CALL OResultSet::updateBoolean( sal_Int32 columnIndex, sal_Bool x ) thr
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -958,8 +964,8 @@ void SAL_CALL OResultSet::updateByte( sal_Int32 columnIndex, sal_Int8 x ) throw(
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -973,8 +979,8 @@ void SAL_CALL OResultSet::updateShort( sal_Int32 columnIndex, sal_Int16 x ) thro
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -987,8 +993,8 @@ void SAL_CALL OResultSet::updateInt( sal_Int32 columnIndex, sal_Int32 x ) throw(
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -997,8 +1003,8 @@ void SAL_CALL OResultSet::updateInt( sal_Int32 columnIndex, sal_Int32 x ) throw(
// -------------------------------------------------------------------------
void SAL_CALL OResultSet::updateLong( sal_Int32 columnIndex, sal_Int64 x ) throw(SQLException, RuntimeException)
{
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
throw RuntimeException();
}
@@ -1009,8 +1015,8 @@ void SAL_CALL OResultSet::updateFloat( sal_Int32 columnIndex, float x ) throw(SQ
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -1024,8 +1030,8 @@ void SAL_CALL OResultSet::updateDouble( sal_Int32 columnIndex, double x ) throw(
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -1038,8 +1044,8 @@ void SAL_CALL OResultSet::updateString( sal_Int32 columnIndex, const ::rtl::OUSt
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -1052,8 +1058,8 @@ void SAL_CALL OResultSet::updateBytes( sal_Int32 columnIndex, const Sequence< sa
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -1066,8 +1072,8 @@ void SAL_CALL OResultSet::updateDate( sal_Int32 columnIndex, const ::com::sun::s
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -1081,8 +1087,8 @@ void SAL_CALL OResultSet::updateTime( sal_Int32 columnIndex, const ::com::sun::s
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -1096,8 +1102,8 @@ void SAL_CALL OResultSet::updateTimestamp( sal_Int32 columnIndex, const ::com::s
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -1113,8 +1119,8 @@ void SAL_CALL OResultSet::updateBinaryStream( sal_Int32 columnIndex, const Refer
if(!x.is())
::dbtools::throwFunctionSequenceException(*this);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
Sequence<sal_Int8> aSeq;
x->readSomeBytes(aSeq,length);
@@ -1130,8 +1136,8 @@ void SAL_CALL OResultSet::updateCharacterStream( sal_Int32 columnIndex, const Re
if(!x.is())
::dbtools::throwFunctionSequenceException(*this);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
Sequence<sal_Int8> aSeq;
x->readSomeBytes(aSeq,length);
@@ -1152,8 +1158,8 @@ void SAL_CALL OResultSet::updateObject( sal_Int32 columnIndex, const Any& x ) th
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
(*m_aInsertRow)[columnIndex].setBound(sal_True);
@@ -1166,8 +1172,8 @@ void SAL_CALL OResultSet::updateNumericObject( sal_Int32 columnIndex, const Any&
::osl::MutexGuard aGuard( m_aMutex );
checkDisposed(OResultSet_BASE::rBHelper.bDisposed);
- if(columnIndex <= 0 || columnIndex > (sal_Int32)m_xColumns->size())
- throwInvalidIndexException(*this);
+ checkIndex(columnIndex );
+
columnIndex = mapColumn(columnIndex);
OSL_ENSURE(0,"OResultSet::updateNumericObject: NYI");
}
@@ -1700,266 +1706,6 @@ sal_Bool OResultSet::moveAbsolute(sal_Int32 _nOffset,sal_Bool _bRetrieveData)
return bDataFound;
}
// -------------------------------------------------------------------------
-OFILEKeyValue* OResultSet::GetOrderbyKeyValue(OValueRow _rRow)
-{
- UINT32 nBookmarkValue = Abs((sal_Int32)(*_rRow)[0]);
-
- OFILEKeyValue* pKeyValue = new OFILEKeyValue((UINT32)nBookmarkValue);
- for (int i = 0; i < sizeof m_nOrderbyColumnNumber / sizeof (* m_nOrderbyColumnNumber); i++)
- {
- if (m_nOrderbyColumnNumber[i] == SQL_COLUMN_NOTFOUND) break;
-
- ORowSetValue xKey = (*_rRow)[m_nOrderbyColumnNumber[i]];
- switch (xKey.getTypeKind())
- {
- case ::com::sun::star::sdbc::DataType::VARCHAR:
- case ::com::sun::star::sdbc::DataType::CHAR:
- pKeyValue->SetKey(i,(rtl::OUString)xKey);
- break;
- default:
- pKeyValue->SetKey(i,(double)xKey);
- break;
- }
- }
- return pKeyValue;
-}
-OFILESortIndex * OFILESortIndex::pCurrentIndex;
-CharSet OFILESortIndex::eCurrentCharSet;
-//------------------------------------------------------------------
-OFILESortIndex::OFILESortIndex(const OKeyType eKeyType2[], // Genau 3 Eintraege!
- const BOOL bAscending2[], // Genau 3 Eintraege!
- INT32 nMaxNumberOfRows, rtl_TextEncoding eSet) // Obere Schranke fuer die Anzahl indizierbarer Zeilen
- : nMaxCount(nMaxNumberOfRows),
- nCount(0),
- bFrozen(FALSE), eCharSet(eSet)
-{
- for (int j = 0; j < SQL_ORDERBYKEYS; j++)
- {
- eKeyType[j] = eKeyType2[j];
- bAscending[j] = bAscending2[j];
- }
-
-#if defined MAX_KEYSET_SIZE
- // Zur Sicherheit Maximalgroesse nochmal pruefen:
- if (nMaxCount > MAX_KEYSET_SIZE)
- {
- DBG_WARNING("OFILESortIndex::OFILESortIndex: nMaxNumberOfRows zur Zeit auf <16K beschraenkt!");
- nMaxCount = MAX_KEYSET_SIZE;
- }
-#endif
- if (nMaxCount <= 0)
- nMaxCount = USHORT(-1);
-
- ppKeyValueArray = new OFILEKeyValuePtr[nMaxCount];
-
- for (INT32 i = 0; i < nMaxCount; i++)
- ppKeyValueArray[i] = NULL;
-}
-
-//------------------------------------------------------------------
-OFILESortIndex::~OFILESortIndex()
-{
- __DELETE(nMaxCount) ppKeyValueArray;
-}
-
-
-//------------------------------------------------------------------
-BOOL OFILESortIndex::AddKeyValue(OFILEKeyValue * pKeyValue)
-{
- if (nCount < nMaxCount)
- {
- if (bFrozen) // wenn der Index schon eingefroren
- // dann wird der Key einfach ans Ende gehaengt
- {
- OSL_ENSURE(pKeyValue != NULL,"OFILESortIndex::Freeze: pKeyValue == NULL");
- INT32 nValue = pKeyValue->GetValue(); // Wert holen ...
-
- // Strings in KeyValue freigeben!
- for (int j = 0; j < SQL_ORDERBYKEYS; j++)
- {
- if (eKeyType[j] == SQL_ORDERBYKEY_STRING)
- delete pKeyValue->GetKeyString(j);
- }
- delete pKeyValue;
- ppKeyValueArray[nCount++] = (OFILEKeyValuePtr) nValue;
- }
- else
- ppKeyValueArray[nCount++] = pKeyValue;
- return TRUE;
- }
- else
- return FALSE;
-}
-
-
-//------------------------------------------------------------------
-void OFILESortIndex::Freeze()
-{
- OSL_ENSURE(! bFrozen,"OFILESortIndex::Freeze: already frozen!");
-
- // Kritischer Bereich: Hinterlegung von this in statischer Variable.
- // Zugriff auf diese Variable von der OFILECompare-Funktion aus.
- // Da dies NUR waehrend der Ausfuehrung der qsort-Funktion stattfindet,
- // ist dies aber unkritisch: unter Windows 3.x ist diese Ausfuehrung
- // UNUNTERBRECHBAR; unter NT, OS/2, Unix, ... hat jede DLL ihr
- // eigenes Datensegment.
- pCurrentIndex = this;
- eCurrentCharSet = eCharSet;
-
- // Sortierung:
- if (eKeyType[0] != SQL_ORDERBYKEY_NONE)
- // Sortierung, wenn mindestens nach dem ersten Key sortiert werden soll:
- qsort(ppKeyValueArray,nCount,sizeof(void *),&OFILEKeyCompare);
-
-
- // Ende des kritischen Bereiches
- pCurrentIndex = NULL;
-
- // Wert auslesen, KeyValue loeschen und in den void * den Value
- // reinschreiben (uebler Trick mit Typecast!)
- for (INT32 i = 0; i < nCount; i++)
- {
- OFILEKeyValuePtr pKeyValue = ppKeyValueArray[i];
-
- OSL_ENSURE(pKeyValue != NULL,"OFILESortIndex::Freeze: pKeyValue == NULL");
- INT32 nValue = pKeyValue->GetValue(); // Wert holen ...
-
- // Strings in KeyValue freigeben!
- for (int j = 0; j < SQL_ORDERBYKEYS; j++)
- {
- if (eKeyType[j] == SQL_ORDERBYKEY_STRING)
- delete pKeyValue->GetKeyString(j);
- }
- delete pKeyValue;
- ppKeyValueArray[i] = (OFILEKeyValuePtr) nValue;
- }
-
- bFrozen = TRUE;
-}
-
-//------------------------------------------------------------------
-INT32 OFILESortIndex::GetValue(INT32 nPos) const
-{
- OSL_ENSURE(nPos > 0,"OFILESortIndex::GetValue: nPos == 0");
- OSL_ENSURE(nPos <= nCount,"OFILESortIndex::GetValue: Zugriff ausserhalb der Array-Grenzen");
-
-// OSL_ENSURE(ppKeyValueArray[nPos-1] != NULL,"OFILESortIndex::GetValue: interner Fehler: kein KeyValue an dieser Stelle");
-// return ppKeyValueArray[nPos-1]->GetValue();
-
- if (!bFrozen)
- {
- if (eKeyType[0] == SQL_ORDERBYKEY_NONE) // wenn keine Sortierung vorliegt
- // darf auf die Values schon vorher zugegriffen werden
- return ppKeyValueArray[nPos-1]->GetValue();
- else
- {
- OSL_ASSERT("OFILESortIndex::GetValue: Invalid use of index!");
- return 0;
- }
- }
- else
- return (INT32) ppKeyValueArray[nPos-1]; // Trick: nach Freeze sind hier nur noch Values, keine KeyValue-Strukturen mehr!
-
-}
-
-//------------------------------------------------------------------
-OKeySet* OFILESortIndex::CreateKeySet()
-{
-
- OSL_ENSURE(! bFrozen,"OFILESortIndex::Freeze: already frozen!");
-
- // Kritischer Bereich: Hinterlegung von this in statischer Variable.
- // Zugriff auf diese Variable von der OFILECompare-Funktion aus.
- // Da dies NUR waehrend der Ausfuehrung der qsort-Funktion stattfindet,
- // ist dies aber unkritisch: unter Windows 3.x ist diese Ausfuehrung
- // UNUNTERBRECHBAR; unter NT, OS/2, Unix, ... hat jede DLL ihr
- // eigenes Datensegment.
- pCurrentIndex = this;
- eCurrentCharSet = eCharSet;
-
- // Sortierung:
- if (eKeyType[0] != SQL_ORDERBYKEY_NONE)
- // Sortierung, wenn mindestens nach dem ersten Key sortiert werden soll:
- qsort(ppKeyValueArray,nCount,sizeof(void *),&OFILEKeyCompare);
-
-
- // Ende des kritischen Bereiches
- pCurrentIndex = NULL;
-
-
- OKeySet* pKeySet = new OKeySet(nCount);
- OKeySet::iterator aIter = pKeySet->begin();
- for (INT32 i = 0; i < nCount; i++,++aIter)
- {
- OFILEKeyValuePtr pKeyValue = ppKeyValueArray[i];
-
- OSL_ENSURE(pKeyValue != NULL,"OFILESortIndex::Freeze: pKeyValue == NULL");
- (*aIter) = pKeyValue->GetValue(); // Wert holen ...
-
- // Strings in KeyValue freigeben!
- for (int j = 0; j < SQL_ORDERBYKEYS; j++)
- {
- if (eKeyType[j] == SQL_ORDERBYKEY_STRING)
- delete pKeyValue->GetKeyString(j);
- }
- delete pKeyValue;
- }
- bFrozen = TRUE;
- pKeySet->setFrozen();
- return pKeySet;
-}
-
-//------------------------------------------------------------------
-int
-#if defined(WIN) || defined(WNT)
-__cdecl
-#endif
-#if defined(ICC) && defined(OS2)
-_Optlink
-#endif
-connectivity::file::OFILEKeyCompare(const void * elem1, const void * elem2)
-{
- const OFILESortIndex * pIndex = OFILESortIndex::pCurrentIndex;
- const OFILEKeyValue * pKeyValue1 = (OFILEKeyValue *) * (OFILEKeyValue **) elem1;
- const OFILEKeyValue * pKeyValue2 = (OFILEKeyValue *) * (OFILEKeyValue **) elem2;
-
- // Ueber die (max.) drei ORDER BY-Columns iterieren. Abbruch des Vergleiches, wenn Ungleichheit erkannt
- // oder alle Columns gleich.
- for (UINT16 i = 0; i < SQL_ORDERBYKEYS && pIndex->eKeyType[i] != SQL_ORDERBYKEY_NONE; i++)
- {
- const int nGreater = (pIndex->bAscending[i]) ? 1 : -1;
- const int nLess = - nGreater;
-
- // Vergleich (je nach Datentyp):
- switch (pIndex->eKeyType[i])
- {
- case SQL_ORDERBYKEY_STRING:
- {
- INT32 nRes = pKeyValue1->GetKeyString(i)->compareTo(*pKeyValue2->GetKeyString(i));
- if (nRes < 0)
- return nLess;
- else if (nRes > 0)
- return nGreater;
- }
- break;
- case SQL_ORDERBYKEY_DOUBLE:
- {
- double d1 = pKeyValue1->GetKeyDouble(i);
- double d2 = pKeyValue2->GetKeyDouble(i);
-
- if (d1 < d2)
- return nLess;
- else if (d1 > d2)
- return nGreater;
- }
- break;
- }
- }
-
- // Wenn wir bis hierher gekommen sind, waren alle Werte gleich:
- return 0;
-}
-//------------------------------------------------------------------
BOOL OResultSet::OpenImpl()
{
m_pSQLAnalyzer = createAnalyzer();
@@ -2917,36 +2663,6 @@ void OResultSet::describeParameter()
// }
}
}
-//------------------------------------------------------------------
-void OResultSet::scanParameter(OSQLParseNode* pParseNode,::std::vector< OSQLParseNode*>& _rParaNodes)
-{
- DBG_ASSERT(pParseNode != NULL,"OResultSet: interner Fehler: ungueltiger ParseNode");
-
- // Parameter Name-Regel gefunden?
- if (SQL_ISRULE(pParseNode,parameter))
- {
- DBG_ASSERT(pParseNode->count() >= 1,"OResultSet: Parse Tree fehlerhaft");
- DBG_ASSERT(pParseNode->getChild(0)->getNodeType() == SQL_NODE_PUNCTUATION,"OResultSet: Parse Tree fehlerhaft");
-
- _rParaNodes.push_back(pParseNode);
- // Weiterer Abstieg nicht erforderlich
- return;
- }
-
- // Weiter absteigen im Parse Tree
- for (UINT32 i = 0; i < pParseNode->count(); i++)
- scanParameter(pParseNode->getChild(i),_rParaNodes);
-}
-// -----------------------------------------------------------------------------
-sal_Bool OResultSet::isCount() const
-{
- return (m_pParseTree &&
- m_pParseTree->count() > 2 &&
- SQL_ISRULE(m_pParseTree->getChild(2),scalar_exp_commalist) &&
- SQL_ISRULE(m_pParseTree->getChild(2)->getChild(0),derived_column) &&
- SQL_ISRULE(m_pParseTree->getChild(2)->getChild(0)->getChild(0),general_set_fct)
- );
-}
// -----------------------------------------------------------------------------
void OResultSet::setBoundedColumns(const OValueRow& _rRow,
const ::vos::ORef<connectivity::OSQLColumns>& _rxColumns,
diff --git a/connectivity/source/drivers/file/fanalyzer.cxx b/connectivity/source/drivers/file/fanalyzer.cxx
index 71fc7d90ef46..edf8014855bf 100644
--- a/connectivity/source/drivers/file/fanalyzer.cxx
+++ b/connectivity/source/drivers/file/fanalyzer.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: fanalyzer.cxx,v $
*
- * $Revision: 1.10 $
+ * $Revision: 1.11 $
*
- * last change: $Author: oj $ $Date: 2001-05-08 13:26:37 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:11 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -233,19 +233,6 @@ void OSQLAnalyzer::start(OSQLParseNode* pSQLParseNode)
}
//------------------------------------------------------------------
-void OSQLAnalyzer::bindParameterRow(OValueRow _pRow)
-{
- OCodeList& rCodeList = m_aCompiler.m_aCodeList;
- for(OCodeList::iterator aIter = rCodeList.begin(); aIter != rCodeList.end();++aIter)
- {
- OOperandParam* pParam = PTR_CAST(OOperandParam,(*aIter));
- if (pParam)
- pParam->bindValue(_pRow);
- }
-}
-
-
-//------------------------------------------------------------------
void OSQLAnalyzer::describeParam(::vos::ORef<OSQLColumns> rParameterColumns)
{
OCodeList& rCodeList = m_aCompiler.m_aCodeList;
@@ -305,11 +292,6 @@ void OSQLAnalyzer::describeParam(::vos::ORef<OSQLColumns> rParameterColumns)
m_aCompiler.setParameterColumns(rParameterColumns);
}
-//------------------------------------------------------------------
-void OSQLAnalyzer::clean()
-{
- m_aCompiler.Clean();
-}
// -----------------------------------------------------------------------------
OOperandAttr* OSQLAnalyzer::createOperandAttr(sal_Int32 _nPos,
const Reference< XPropertySet>& _xCol,
diff --git a/connectivity/source/drivers/file/fcode.cxx b/connectivity/source/drivers/file/fcode.cxx
index d38d778ce544..1ede34390eb6 100644
--- a/connectivity/source/drivers/file/fcode.cxx
+++ b/connectivity/source/drivers/file/fcode.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: fcode.cxx,v $
*
- * $Revision: 1.17 $
+ * $Revision: 1.18 $
*
- * last change: $Author: oj $ $Date: 2001-05-18 08:31:20 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:11 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -77,9 +77,6 @@
#ifndef _SV_SVAPP_HXX
#include <vcl/svapp.hxx>
#endif
-#ifndef _COM_SUN_STAR_CONTAINER_XINDEXACCESS_HPP_
-#include <com/sun/star/container/XIndexAccess.hpp>
-#endif
#ifndef _TOOLS_DEBUG_HXX
#include <tools/debug.hxx>
#endif
@@ -94,12 +91,12 @@
using namespace ::comphelper;
using namespace connectivity;
using namespace connectivity::file;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
+//using namespace ::com::sun::star::uno;
+//using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbcx;
+//using namespace ::com::sun::star::container;
+//using namespace ::com::sun::star::beans;
+//using namespace ::com::sun::star::sdbcx;
TYPEINIT0(OCode);
TYPEINIT1(OOperand, OCode);
@@ -169,12 +166,6 @@ void OOperandValue::setValue(const ORowSetValue& _rVal)
{
m_aValue = _rVal;
}
-//------------------------------------------------------------------
-OOperandAttr::OOperandAttr(sal_uInt16 _nPos,const Reference< XPropertySet>& _xColumn)
- : OOperandRow(_nPos,getINT32(_xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE))))
- , m_xColumn(_xColumn)
-{
-}
// -------------------------------------------------------------------------
sal_Bool OOperandAttr::isIndexed() const
{
@@ -213,30 +204,6 @@ OOperandParam::OOperandParam(OSQLParseNode* pNode, sal_Int32 _nPos)
//------------------------------------------------------------------
-void OOperandParam::describe(const Reference< XPropertySet>& rColumn, ::vos::ORef<connectivity::OSQLColumns> rParameterColumns)
-{
- // den alten namen beibehalten
-
- Reference< XPropertySet> xColumn = (*rParameterColumns)[getRowPos()];
-
- try
- {
- xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME)));
- xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE)));
- xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION)));
- xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE)));
- xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE)));
- xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE)));
- xColumn->setPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT),rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISAUTOINCREMENT)));
- }
- catch(const Exception&)
- {
- }
-
- m_eDBType = getINT32(rColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE)));
-}
-
-//------------------------------------------------------------------
const ORowSetValue& OOperandValue::getValue() const
{
return m_aValue;
@@ -301,8 +268,10 @@ void OBoolOperator::Exec(OCodeStack& rCodeStack)
rCodeStack.pop();
rCodeStack.push(new OOperandResultBOOL(operate(pLeft, pRight)));
- if (IS_TYPE(OOperandResult,pLeft)) delete pLeft;
- if (IS_TYPE(OOperandResult,pRight)) delete pRight;
+ if (IS_TYPE(OOperandResult,pLeft))
+ delete pLeft;
+ if (IS_TYPE(OOperandResult,pRight))
+ delete pRight;
}
//------------------------------------------------------------------
@@ -327,7 +296,8 @@ void OOp_ISNULL::Exec(OCodeStack& rCodeStack)
rCodeStack.pop();
rCodeStack.push(new OOperandResultBOOL(operate(pOperand)));
- if (IS_TYPE(OOperandResult,pOperand)) delete pOperand;
+ if (IS_TYPE(OOperandResult,pOperand))
+ delete pOperand;
}
//------------------------------------------------------------------
diff --git a/connectivity/source/drivers/file/fcomp.cxx b/connectivity/source/drivers/file/fcomp.cxx
index 4d5731762a88..4f8a420f0f38 100644
--- a/connectivity/source/drivers/file/fcomp.cxx
+++ b/connectivity/source/drivers/file/fcomp.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: fcomp.cxx,v $
*
- * $Revision: 1.13 $
+ * $Revision: 1.14 $
*
- * last change: $Author: oj $ $Date: 2001-05-14 11:37:36 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:11 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -116,17 +116,6 @@ void OPredicateCompiler::dispose()
//------------------------------------------------------------------
// inline OCursor& OPredicateCompiler::Cursor() const {return m_rCursor;}
//------------------------------------------------------------------
-void OPredicateCompiler::Clean()
-{
- for(OCodeList::reverse_iterator aIter = m_aCodeList.rbegin(); aIter != m_aCodeList.rend();++aIter)
- {
- delete *aIter;
- m_aCodeList.pop_back();
- }
- // m_aCodeList.clear();
-}
-
-//------------------------------------------------------------------
void OPredicateCompiler::start(OSQLParseNode* pSQLParseNode)
{
if (!pSQLParseNode)
@@ -540,19 +529,6 @@ OOperand* OPredicateCompiler::execute_Operand(OSQLParseNode* pPredicateNode) thr
}
////////////////////////////////////////////////////////////////////////////////////////
-
-//------------------------------------------------------------------
-OPredicateInterpreter::~OPredicateInterpreter()
-{
- while(!m_aStack.empty())
- {
- delete m_aStack.top();
- m_aStack.pop();
- }
- // m_aStack.clear();
-}
-
-//------------------------------------------------------------------
sal_Bool OPredicateInterpreter::evaluate(OCodeList& rCodeList)
{
static sal_Bool bResult;
diff --git a/connectivity/source/drivers/file/makefile.mk b/connectivity/source/drivers/file/makefile.mk
index e50fb81f47b0..a5ece3244a64 100644
--- a/connectivity/source/drivers/file/makefile.mk
+++ b/connectivity/source/drivers/file/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.8 $
+# $Revision: 1.9 $
#
-# last change: $Author: vg $ $Date: 2001-05-16 15:31:48 $
+# last change: $Author: oj $ $Date: 2001-05-23 09:10:30 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -67,7 +67,6 @@ TARGET=file
USE_LDUMP2=TRUE
USE_DEFFILE=TRUE
-ENABLE_EXCEPTIONS=TRUE
LDUMP=ldump2.exe
# --- Settings ----------------------------------
@@ -81,6 +80,7 @@ ENVCFLAGS+=/FR$(SLO)$/
# --- Files -------------------------------------
SLOFILES=\
+ $(SLO)$/FNoException.obj \
$(SLO)$/FConnection.obj \
$(SLO)$/FResultSetMetaData.obj \
$(SLO)$/FColumns.obj \
@@ -96,6 +96,21 @@ SLOFILES=\
$(SLO)$/fcode.obj \
$(SLO)$/fcomp.obj
+EXCEPTIONSFILES=\
+ $(SLO)$/FConnection.obj \
+ $(SLO)$/FResultSetMetaData.obj \
+ $(SLO)$/FColumns.obj \
+ $(SLO)$/FTables.obj \
+ $(SLO)$/FTable.obj \
+ $(SLO)$/FCatalog.obj \
+ $(SLO)$/FResultSet.obj \
+ $(SLO)$/FStatement.obj \
+ $(SLO)$/FPreparedStatement.obj \
+ $(SLO)$/FDatabaseMetaData.obj \
+ $(SLO)$/FDriver.obj \
+ $(SLO)$/fanalyzer.obj \
+ $(SLO)$/fcomp.obj
+
.IF "$(OS)"=="MACOSX"
#SHL1VERSIONMAP=$(TARGET).$(DLLPOSTFIX).map
.ELSE
diff --git a/connectivity/source/drivers/flat/ENoException.cxx b/connectivity/source/drivers/flat/ENoException.cxx
new file mode 100644
index 000000000000..899fdb5e32b8
--- /dev/null
+++ b/connectivity/source/drivers/flat/ENoException.cxx
@@ -0,0 +1,368 @@
+/*************************************************************************
+ *
+ * $RCSfile: ENoException.cxx,v $
+ *
+ * $Revision: 1.1 $
+ *
+ * last change: $Author: oj $ $Date: 2001-05-23 09:17:42 $
+ *
+ * The Contents of this file are made available subject to the terms of
+ * either of the following licenses
+ *
+ * - GNU Lesser General Public License Version 2.1
+ * - Sun Industry Standards Source License Version 1.1
+ *
+ * Sun Microsystems Inc., October, 2000
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2000 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ *
+ * Sun Industry Standards Source License Version 1.1
+ * =================================================
+ * The contents of this file are subject to the Sun Industry Standards
+ * Source License Version 1.1 (the License); You may not use this file
+ * except in compliance with the License. You may obtain a copy of the
+ * License at http://www.openoffice.org/license.html.
+ *
+ * Software provided under this License is provided on an AS IS basis,
+ * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ * See the License for the specific provisions governing your rights and
+ * obligations concerning the Software.
+ *
+ * The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ * Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ * All Rights Reserved.
+ *
+ * Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+#ifndef _CONNECTIVITY_FLAT_TABLE_HXX_
+#include "flat/ETable.hxx"
+#endif
+#ifndef _CONNECTIVITY_FLAT_ECONNECTION_HXX_
+#include "flat/EConnection.hxx"
+#endif
+
+using namespace connectivity::flat;
+
+//------------------------------------------------------------------
+xub_StrLen OFlatString::GetTokenCount( sal_uInt8 cTok, sal_uInt8 cStrDel ) const
+{
+ if ( !Len() )
+ return 0;
+
+ xub_StrLen nTokCount = 1;
+ BOOL bStart = TRUE; // Stehen wir auf dem ersten Zeichen im Token?
+ BOOL bInString = FALSE; // Befinden wir uns INNERHALB eines (cStrDel delimited) String?
+
+ // Suche bis Stringende nach dem ersten nicht uebereinstimmenden Zeichen
+ for( xub_StrLen i = 0; i < Len(); i++ )
+ {
+ if (bStart)
+ {
+ bStart = FALSE;
+ // Erstes Zeichen ein String-Delimiter?
+ if ((*this).GetChar(i) == cStrDel)
+ {
+ bInString = TRUE; // dann sind wir jetzt INNERHALB des Strings!
+ continue; // dieses Zeichen ueberlesen!
+ }
+ }
+
+ if (bInString) {
+ // Wenn jetzt das String-Delimiter-Zeichen auftritt ...
+ if ( (*this).GetChar(i) == cStrDel )
+ {
+ if ((i+1 < Len()) && ((*this).GetChar(i+1) == cStrDel))
+ {
+ // Verdoppeltes String-Delimiter-Zeichen:
+ i++; // kein String-Ende, naechstes Zeichen ueberlesen.
+ }
+ else
+ {
+ // String-Ende
+ bInString = FALSE;
+ }
+ }
+ } else {
+ // Stimmt das Tokenzeichen ueberein, dann erhoehe TokCount
+ if ( (*this).GetChar(i) == cTok )
+ {
+ nTokCount++;
+ bStart = TRUE;
+ }
+ }
+ }
+
+ return nTokCount;
+}
+
+//------------------------------------------------------------------
+ByteString OFlatString::GetToken( xub_StrLen nToken, sal_uInt8 cTok, sal_uInt8 cStrDel ) const
+{
+ if ( !Len() )
+ return ByteString();
+
+ xub_StrLen nTok = 0;
+ BOOL bStart = TRUE; // Stehen wir auf dem ersten Zeichen im Token?
+ BOOL bInString = FALSE; // Befinden wir uns INNERHALB eines (cStrDel delimited) String?
+ ByteString aResult; // Ergebnisstring
+
+ // Suche bis Stringende nach dem ersten nicht uebereinstimmenden Zeichen
+ for( xub_StrLen i = 0; i < Len(); i++ )
+ {
+ if (bStart) {
+ bStart = FALSE;
+ // Erstes Zeichen ein String-Delimiter?
+ if ((*this).GetChar(i) == cStrDel) {
+ bInString = TRUE; // dann sind wir jetzt INNERHALB des Strings!
+ continue; // dieses Zeichen ueberlesen!
+ }
+ }
+
+ if (bInString) {
+ // Wenn jetzt das String-Delimiter-Zeichen auftritt ...
+ if ( (*this).GetChar(i) == cStrDel ) {
+ if ((i+1 < Len()) && ((*this).GetChar(i+1) == cStrDel))
+ {
+ // Verdoppeltes String-Delimiter-Zeichen:
+ i++; // kein String-Ende, naechstes Zeichen ueberlesen.
+
+ if (nTok == nToken)
+ {
+ aResult += (*this).GetChar(i); // Zeichen gehoert zum Resultat-String
+ }
+ }
+ else
+ {
+ // String-Ende
+ bInString = FALSE;
+ }
+ } else {
+ if (nTok == nToken) {
+ aResult += (*this).GetChar(i); // Zeichen gehoert zum Resultat-String
+ }
+ }
+
+ } else {
+ // Stimmt das Tokenzeichen ueberein, dann erhoehe nTok
+ if ( (*this).GetChar(i) == cTok ) {
+ nTok++;
+ bStart = TRUE;
+
+ if ( nTok > nToken )
+ {
+ // Vorzeitiger Abbruch der Schleife moeglich, denn
+ // wir haben, was wir wollten.
+ return aResult;
+ }
+ } else {
+ if (nTok == nToken) {
+ aResult += (*this).GetChar(i); // Zeichen gehoert zum Resultat-String
+ }
+ }
+ }
+ }
+
+ return aResult;
+}
+// -----------------------------------------------------------------------------
+void OFlatTable::refreshIndexes()
+{
+}
+// -----------------------------------------------------------------------------
+sal_Bool OFlatTable::checkHeaderLine()
+{
+ OFlatConnection* pConnection = (OFlatConnection*)m_pConnection;
+ if (m_nFilePos == 0 && pConnection->isHeaderLine())
+ {
+ BOOL bRead2;
+ do
+ {
+ bRead2 = m_pFileStream->ReadLine(m_aCurrentLine);
+ }
+ while(bRead2 && !m_aCurrentLine.Len());
+
+ m_nFilePos = m_pFileStream->Tell();
+ if (m_pFileStream->IsEof())
+ return sal_False;
+ }
+ return sal_True;
+}
+//------------------------------------------------------------------
+sal_Bool OFlatTable::seekRow(FilePosition eCursorPosition, sal_Int32 nOffset, sal_Int32& nCurPos)
+{
+ OFlatConnection* pConnection = (OFlatConnection*)m_pConnection;
+ // ----------------------------------------------------------
+ // Positionierung vorbereiten:
+
+ sal_uInt32 nTempPos = m_nFilePos;
+ m_nFilePos = nCurPos;
+
+ switch(eCursorPosition)
+ {
+ case FILE_FIRST:
+ m_nFilePos = 0;
+ m_nRowPos = 1;
+ // run through
+ case FILE_NEXT:
+ if(eCursorPosition != FILE_FIRST)
+ ++m_nRowPos;
+ m_pFileStream->Seek(m_nFilePos);
+ if (m_pFileStream->IsEof() || !checkHeaderLine())
+ {
+ m_nMaxRowCount = m_nRowPos;
+ return sal_False;
+ }
+
+ m_aRowToFilePos[m_nRowPos] = m_nFilePos;
+
+ m_pFileStream->ReadLine(m_aCurrentLine);
+ if (m_pFileStream->IsEof())
+ {
+ m_nMaxRowCount = m_nRowPos;
+ return sal_False;
+ }
+ nCurPos = m_pFileStream->Tell();
+ break;
+ case FILE_PRIOR:
+ --m_nRowPos;
+ if(m_nRowPos > 0)
+ {
+ m_nFilePos = m_aRowToFilePos.find(m_nRowPos)->second;
+ m_pFileStream->Seek(m_nFilePos);
+ if (m_pFileStream->IsEof() || !checkHeaderLine())
+ return sal_False;
+ m_pFileStream->ReadLine(m_aCurrentLine);
+ if (m_pFileStream->IsEof())
+ return sal_False;
+ nCurPos = m_pFileStream->Tell();
+ }
+ else
+ m_nRowPos = 0;
+
+ break;
+
+ break;
+ case FILE_LAST:
+ if(m_nMaxRowCount)
+ {
+ m_nFilePos = m_aRowToFilePos.rbegin()->second;
+ m_nRowPos = m_aRowToFilePos.rbegin()->first;
+ m_pFileStream->Seek(m_nFilePos);
+ if (m_pFileStream->IsEof() || !checkHeaderLine())
+ return sal_False;
+ m_pFileStream->ReadLine(m_aCurrentLine);
+ if (m_pFileStream->IsEof())
+ return sal_False;
+ nCurPos = m_pFileStream->Tell();
+ }
+ else
+ {
+ while(seekRow(FILE_NEXT,1,nCurPos)) ; // run through after last row
+ // now I know all
+ seekRow(FILE_PRIOR,1,nCurPos);
+ }
+ break;
+ case FILE_RELATIVE:
+ if(nOffset > 0)
+ {
+ for(sal_Int32 i = 0;i<nOffset;++i)
+ seekRow(FILE_NEXT,1,nCurPos);
+ }
+ else if(nOffset < 0)
+ {
+ for(sal_Int32 i = nOffset;i;++i)
+ seekRow(FILE_PRIOR,1,nCurPos);
+ }
+ break;
+ case FILE_ABSOLUTE:
+ {
+ if(nOffset < 0)
+ nOffset = m_nRowPos + nOffset;
+ ::std::map<sal_Int32,sal_Int32>::const_iterator aIter = m_aRowToFilePos.find(nOffset);
+ if(aIter != m_aRowToFilePos.end())
+ {
+ m_nFilePos = aIter->second;
+ m_pFileStream->Seek(m_nFilePos);
+ if (m_pFileStream->IsEof() || !checkHeaderLine())
+ return sal_False;
+ m_pFileStream->ReadLine(m_aCurrentLine);
+ if (m_pFileStream->IsEof())
+ return sal_False;
+ nCurPos = m_pFileStream->Tell();
+ }
+ else if(m_nMaxRowCount && nOffset > m_nMaxRowCount) // offset is outside the table
+ {
+ m_nRowPos = m_nMaxRowCount;
+ return sal_False;
+ }
+ else
+ {
+ aIter = m_aRowToFilePos.upper_bound(nOffset);
+ if(aIter == m_aRowToFilePos.end())
+ {
+ m_nRowPos = m_aRowToFilePos.rbegin()->first;
+ nCurPos = m_nFilePos = m_aRowToFilePos.rbegin()->second;
+ while(m_nRowPos != nOffset)
+ seekRow(FILE_NEXT,1,nCurPos);
+ }
+ else
+ {
+ --aIter;
+ m_nRowPos = aIter->first;
+ m_nFilePos = aIter->second;
+ m_pFileStream->Seek(m_nFilePos);
+ if (m_pFileStream->IsEof() || !checkHeaderLine())
+ return sal_False;
+ m_pFileStream->ReadLine(m_aCurrentLine);
+ if (m_pFileStream->IsEof())
+ return sal_False;
+ nCurPos = m_pFileStream->Tell();
+ }
+ }
+ }
+
+ break;
+ case FILE_BOOKMARK:
+ m_pFileStream->Seek(nOffset);
+ if (m_pFileStream->IsEof())
+ return sal_False;
+
+ m_nFilePos = m_pFileStream->Tell(); // Byte-Position in der Datei merken (am ZeilenANFANG)
+ m_pFileStream->ReadLine(m_aCurrentLine);
+ if (m_pFileStream->IsEof())
+ return sal_False;
+ nCurPos = m_pFileStream->Tell();
+ break;
+ }
+
+
+ return sal_True;
+}
+// -----------------------------------------------------------------------------
+
+
+
diff --git a/connectivity/source/drivers/flat/ETable.cxx b/connectivity/source/drivers/flat/ETable.cxx
index 7a59bc2085b0..467891a6541a 100644
--- a/connectivity/source/drivers/flat/ETable.cxx
+++ b/connectivity/source/drivers/flat/ETable.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: ETable.cxx,v $
*
- * $Revision: 1.28 $
+ * $Revision: 1.29 $
*
- * last change: $Author: oj $ $Date: 2001-05-18 08:31:19 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:10:30 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -94,9 +94,6 @@
#ifndef _COMPHELPER_SEQUENCE_HXX_
#include <comphelper/sequence.hxx>
#endif
-#ifndef _CONNECTIVITY_DATECONVERSION_HXX_
-#include "connectivity/DateConversion.hxx"
-#endif
#ifndef _INTN_HXX //autogen
#include <tools/intn.hxx>
#endif
@@ -154,127 +151,6 @@ using namespace ::com::sun::star::container;
using namespace ::com::sun::star::lang;
double toDouble(const ByteString& rString,rtl_TextEncoding _nrTextEncoding);
-//------------------------------------------------------------------
-xub_StrLen OFlatString::GetTokenCount( sal_uInt8 cTok, sal_uInt8 cStrDel ) const
-{
- if ( !Len() )
- return 0;
-
- xub_StrLen nTokCount = 1;
- BOOL bStart = TRUE; // Stehen wir auf dem ersten Zeichen im Token?
- BOOL bInString = FALSE; // Befinden wir uns INNERHALB eines (cStrDel delimited) String?
-
- // Suche bis Stringende nach dem ersten nicht uebereinstimmenden Zeichen
- for( xub_StrLen i = 0; i < Len(); i++ )
- {
- if (bStart)
- {
- bStart = FALSE;
- // Erstes Zeichen ein String-Delimiter?
- if ((*this).GetChar(i) == cStrDel)
- {
- bInString = TRUE; // dann sind wir jetzt INNERHALB des Strings!
- continue; // dieses Zeichen ueberlesen!
- }
- }
-
- if (bInString) {
- // Wenn jetzt das String-Delimiter-Zeichen auftritt ...
- if ( (*this).GetChar(i) == cStrDel )
- {
- if ((i+1 < Len()) && ((*this).GetChar(i+1) == cStrDel))
- {
- // Verdoppeltes String-Delimiter-Zeichen:
- i++; // kein String-Ende, naechstes Zeichen ueberlesen.
- }
- else
- {
- // String-Ende
- bInString = FALSE;
- }
- }
- } else {
- // Stimmt das Tokenzeichen ueberein, dann erhoehe TokCount
- if ( (*this).GetChar(i) == cTok )
- {
- nTokCount++;
- bStart = TRUE;
- }
- }
- }
-
- return nTokCount;
-}
-
-//------------------------------------------------------------------
-ByteString OFlatString::GetToken( xub_StrLen nToken, sal_uInt8 cTok, sal_uInt8 cStrDel ) const
-{
- if ( !Len() )
- return ByteString();
-
- xub_StrLen nTok = 0;
- BOOL bStart = TRUE; // Stehen wir auf dem ersten Zeichen im Token?
- BOOL bInString = FALSE; // Befinden wir uns INNERHALB eines (cStrDel delimited) String?
- ByteString aResult; // Ergebnisstring
-
- // Suche bis Stringende nach dem ersten nicht uebereinstimmenden Zeichen
- for( xub_StrLen i = 0; i < Len(); i++ )
- {
- if (bStart) {
- bStart = FALSE;
- // Erstes Zeichen ein String-Delimiter?
- if ((*this).GetChar(i) == cStrDel) {
- bInString = TRUE; // dann sind wir jetzt INNERHALB des Strings!
- continue; // dieses Zeichen ueberlesen!
- }
- }
-
- if (bInString) {
- // Wenn jetzt das String-Delimiter-Zeichen auftritt ...
- if ( (*this).GetChar(i) == cStrDel ) {
- if ((i+1 < Len()) && ((*this).GetChar(i+1) == cStrDel))
- {
- // Verdoppeltes String-Delimiter-Zeichen:
- i++; // kein String-Ende, naechstes Zeichen ueberlesen.
-
- if (nTok == nToken)
- {
- aResult += (*this).GetChar(i); // Zeichen gehoert zum Resultat-String
- }
- }
- else
- {
- // String-Ende
- bInString = FALSE;
- }
- } else {
- if (nTok == nToken) {
- aResult += (*this).GetChar(i); // Zeichen gehoert zum Resultat-String
- }
- }
-
- } else {
- // Stimmt das Tokenzeichen ueberein, dann erhoehe nTok
- if ( (*this).GetChar(i) == cTok ) {
- nTok++;
- bStart = TRUE;
-
- if ( nTok > nToken )
- {
- // Vorzeitiger Abbruch der Schleife moeglich, denn
- // wir haben, was wir wollten.
- return aResult;
- }
- } else {
- if (nTok == nToken) {
- aResult += (*this).GetChar(i); // Zeichen gehoert zum Resultat-String
- }
- }
- }
- }
-
- return aResult;
-}
// -------------------------------------------------------------------------
void OFlatTable::fillColumns()
@@ -589,10 +465,6 @@ void OFlatTable::refreshColumns()
else
m_pColumns = new OFlatColumns(this,m_aMutex,aVector);
}
-// -------------------------------------------------------------------------
-void OFlatTable::refreshIndexes()
-{
-}
// -------------------------------------------------------------------------
void SAL_CALL OFlatTable::disposing(void)
@@ -665,176 +537,6 @@ sal_Int64 OFlatTable::getSomething( const Sequence< sal_Int8 > & rId ) throw (Ru
return OFlatTable_BASE::getSomething(rId);
}
-// -------------------------------------------------------------------------
-sal_Bool OFlatTable::checkHeaderLine()
-{
- OFlatConnection* pConnection = (OFlatConnection*)m_pConnection;
- if (m_nFilePos == 0 && pConnection->isHeaderLine())
- {
- BOOL bRead2;
- do
- {
- bRead2 = m_pFileStream->ReadLine(m_aCurrentLine);
- }
- while(bRead2 && !m_aCurrentLine.Len());
-
- m_nFilePos = m_pFileStream->Tell();
- if (m_pFileStream->IsEof())
- return sal_False;
- }
- return sal_True;
-}
-//------------------------------------------------------------------
-sal_Bool OFlatTable::seekRow(FilePosition eCursorPosition, sal_Int32 nOffset, sal_Int32& nCurPos)
-{
- OFlatConnection* pConnection = (OFlatConnection*)m_pConnection;
- // ----------------------------------------------------------
- // Positionierung vorbereiten:
-
- sal_uInt32 nTempPos = m_nFilePos;
- m_nFilePos = nCurPos;
-
- switch(eCursorPosition)
- {
- case FILE_FIRST:
- m_nFilePos = 0;
- m_nRowPos = 1;
- // run through
- case FILE_NEXT:
- if(eCursorPosition != FILE_FIRST)
- ++m_nRowPos;
- m_pFileStream->Seek(m_nFilePos);
- if (m_pFileStream->IsEof() || !checkHeaderLine())
- {
- m_nMaxRowCount = m_nRowPos;
- return sal_False;
- }
-
- m_aRowToFilePos[m_nRowPos] = m_nFilePos;
-
- m_pFileStream->ReadLine(m_aCurrentLine);
- if (m_pFileStream->IsEof())
- {
- m_nMaxRowCount = m_nRowPos;
- return sal_False;
- }
- nCurPos = m_pFileStream->Tell();
- break;
- case FILE_PRIOR:
- --m_nRowPos;
- if(m_nRowPos > 0)
- {
- m_nFilePos = m_aRowToFilePos.find(m_nRowPos)->second;
- m_pFileStream->Seek(m_nFilePos);
- if (m_pFileStream->IsEof() || !checkHeaderLine())
- return sal_False;
- m_pFileStream->ReadLine(m_aCurrentLine);
- if (m_pFileStream->IsEof())
- return sal_False;
- nCurPos = m_pFileStream->Tell();
- }
- else
- m_nRowPos = 0;
-
- break;
-
- break;
- case FILE_LAST:
- if(m_nMaxRowCount)
- {
- m_nFilePos = m_aRowToFilePos.rbegin()->second;
- m_nRowPos = m_aRowToFilePos.rbegin()->first;
- m_pFileStream->Seek(m_nFilePos);
- if (m_pFileStream->IsEof() || !checkHeaderLine())
- return sal_False;
- m_pFileStream->ReadLine(m_aCurrentLine);
- if (m_pFileStream->IsEof())
- return sal_False;
- nCurPos = m_pFileStream->Tell();
- }
- else
- {
- while(seekRow(FILE_NEXT,1,nCurPos)) ; // run through after last row
- // now I know all
- seekRow(FILE_PRIOR,1,nCurPos);
- }
- break;
- case FILE_RELATIVE:
- if(nOffset > 0)
- {
- for(sal_Int32 i = 0;i<nOffset;++i)
- seekRow(FILE_NEXT,1,nCurPos);
- }
- else if(nOffset < 0)
- {
- for(sal_Int32 i = nOffset;i;++i)
- seekRow(FILE_PRIOR,1,nCurPos);
- }
- break;
- case FILE_ABSOLUTE:
- {
- if(nOffset < 0)
- nOffset = m_nRowPos + nOffset;
- ::std::map<sal_Int32,sal_Int32>::const_iterator aIter = m_aRowToFilePos.find(nOffset);
- if(aIter != m_aRowToFilePos.end())
- {
- m_nFilePos = aIter->second;
- m_pFileStream->Seek(m_nFilePos);
- if (m_pFileStream->IsEof() || !checkHeaderLine())
- return sal_False;
- m_pFileStream->ReadLine(m_aCurrentLine);
- if (m_pFileStream->IsEof())
- return sal_False;
- nCurPos = m_pFileStream->Tell();
- }
- else if(m_nMaxRowCount && nOffset > m_nMaxRowCount) // offset is outside the table
- {
- m_nRowPos = m_nMaxRowCount;
- return sal_False;
- }
- else
- {
- aIter = m_aRowToFilePos.upper_bound(nOffset);
- if(aIter == m_aRowToFilePos.end())
- {
- m_nRowPos = m_aRowToFilePos.rbegin()->first;
- nCurPos = m_nFilePos = m_aRowToFilePos.rbegin()->second;
- while(m_nRowPos != nOffset)
- seekRow(FILE_NEXT,1,nCurPos);
- }
- else
- {
- --aIter;
- m_nRowPos = aIter->first;
- m_nFilePos = aIter->second;
- m_pFileStream->Seek(m_nFilePos);
- if (m_pFileStream->IsEof() || !checkHeaderLine())
- return sal_False;
- m_pFileStream->ReadLine(m_aCurrentLine);
- if (m_pFileStream->IsEof())
- return sal_False;
- nCurPos = m_pFileStream->Tell();
- }
- }
- }
-
- break;
- case FILE_BOOKMARK:
- m_pFileStream->Seek(nOffset);
- if (m_pFileStream->IsEof())
- return sal_False;
-
- m_nFilePos = m_pFileStream->Tell(); // Byte-Position in der Datei merken (am ZeilenANFANG)
- m_pFileStream->ReadLine(m_aCurrentLine);
- if (m_pFileStream->IsEof())
- return sal_False;
- nCurPos = m_pFileStream->Tell();
- break;
- }
-
-
- return sal_True;
-}
//------------------------------------------------------------------
sal_Bool OFlatTable::fetchRow(OValueRow _rRow,const OSQLColumns & _rCols,sal_Bool bIsTable,sal_Bool bRetrieveData)
{
@@ -877,13 +579,13 @@ sal_Bool OFlatTable::fetchRow(OValueRow _rRow,const OSQLColumns & _rCols,sal_Boo
switch(nType)
{
case DataType::DATE:
- (*_rRow)[i] = ::dbtools::DBTypeConversion::toDouble(DateConversion::toDate(nRes,aDate));
+ (*_rRow)[i] = ::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toDate(nRes,aDate));
break;
case DataType::TIMESTAMP:
- (*_rRow)[i] = ::dbtools::DBTypeConversion::toDouble(DateConversion::toDateTime(nRes,aDate));
+ (*_rRow)[i] = ::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toDateTime(nRes,aDate));
break;
default:
- (*_rRow)[i] = ::dbtools::DBTypeConversion::toDouble(DateConversion::toTime(nRes));
+ (*_rRow)[i] = ::dbtools::DBTypeConversion::toDouble(::dbtools::DBTypeConversion::toTime(nRes));
}
}
catch(Exception&)
diff --git a/connectivity/source/drivers/flat/makefile.mk b/connectivity/source/drivers/flat/makefile.mk
index 7de72345e2d3..8092c5aba3df 100644
--- a/connectivity/source/drivers/flat/makefile.mk
+++ b/connectivity/source/drivers/flat/makefile.mk
@@ -2,9 +2,9 @@
#
# $RCSfile: makefile.mk,v $
#
-# $Revision: 1.12 $
+# $Revision: 1.13 $
#
-# last change: $Author: oj $ $Date: 2001-05-17 06:46:52 $
+# last change: $Author: oj $ $Date: 2001-05-23 09:13:11 $
#
# The Contents of this file are made available subject to the terms of
# either of the following licenses
@@ -65,8 +65,6 @@ PRJINC=..$/..
PRJNAME=connectivity
TARGET=flat
-ENABLE_EXCEPTIONS=TRUE
-
# --- Settings ----------------------------------
.IF "$(DBGUTIL_OJ)"!=""
ENVCFLAGS+=/FR$(SLO)$/
@@ -79,6 +77,20 @@ ENVCFLAGS+=/FR$(SLO)$/
# --- Files -------------------------------------
SLOFILES=\
+ $(SLO)$/ENoException.obj \
+ $(SLO)$/EResultSet.obj \
+ $(SLO)$/EStatement.obj \
+ $(SLO)$/EPreparedStatement.obj \
+ $(SLO)$/ETable.obj \
+ $(SLO)$/EDatabaseMetaData.obj \
+ $(SLO)$/ECatalog.obj \
+ $(SLO)$/EColumns.obj \
+ $(SLO)$/ETables.obj \
+ $(SLO)$/EConnection.obj \
+ $(SLO)$/Eservices.obj \
+ $(SLO)$/EDriver.obj
+
+EXCEPTIONSFILES=\
$(SLO)$/EResultSet.obj \
$(SLO)$/EStatement.obj \
$(SLO)$/EPreparedStatement.obj \
@@ -91,6 +103,7 @@ SLOFILES=\
$(SLO)$/Eservices.obj \
$(SLO)$/EDriver.obj
+
.IF "$(OS)"=="MACOSX"
#SHL1VERSIONMAP=$(TARGET).$(DLLPOSTFIX).map
.ELSE
diff --git a/connectivity/source/drivers/jdbc/Date.cxx b/connectivity/source/drivers/jdbc/Date.cxx
index 35304e184136..93c3e5e14895 100644
--- a/connectivity/source/drivers/jdbc/Date.cxx
+++ b/connectivity/source/drivers/jdbc/Date.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: Date.cxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: oj $ $Date: 2000-09-29 15:04:24 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:13:12 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -66,10 +66,9 @@
#ifndef _CONNECTIVITY_JAVA_TOOLS_HXX_
#include "java/tools.hxx"
#endif
-#ifndef _CONNECTIVITY_DATECONVERSION_HXX_
-#include "connectivity/DateConversion.hxx"
+#ifndef _DBHELPER_DBCONVERSION_HXX_
+#include "connectivity/dbconversion.hxx"
#endif
-
using namespace connectivity;
//**************************************************************
//************ Class: java.util.Date
@@ -84,7 +83,7 @@ java_util_Date::java_util_Date( const ::com::sun::star::util::Date& _rOut ) //:
return;
jvalue args[1];
// Parameter konvertieren
- args[0].j = DateConversion::toINT32(_rOut);
+ args[0].j = ::dbtools::DBTypeConversion::toINT32(_rOut);
// Java-Call fuer den Konstruktor absetzen
// temporaere Variable initialisieren
char * cSignature = "(J)V";
diff --git a/connectivity/source/drivers/jdbc/Timestamp.cxx b/connectivity/source/drivers/jdbc/Timestamp.cxx
index 9565ffb7882c..cdc675af95d5 100644
--- a/connectivity/source/drivers/jdbc/Timestamp.cxx
+++ b/connectivity/source/drivers/jdbc/Timestamp.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: Timestamp.cxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: oj $ $Date: 2001-05-18 08:31:18 $
+ * last change: $Author: oj $ $Date: 2001-05-23 09:10:30 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -65,12 +65,12 @@
#ifndef _CONNECTIVITY_JAVA_TOOLS_HXX_
#include "java/tools.hxx"
#endif
-#ifndef _CONNECTIVITY_DATECONVERSION_HXX_
-#include "connectivity/DateConversion.hxx"
-#endif
#ifndef _COMPHELPER_TYPES_HXX_
#include <comphelper/types.hxx>
#endif
+#ifndef _DBHELPER_DBCONVERSION_HXX_
+#include "connectivity/dbconversion.hxx"
+#endif
using namespace ::comphelper;
using namespace connectivity;
@@ -143,7 +143,7 @@ java_sql_Time::java_sql_Time( const ::com::sun::star::util::Time& _rOut ): java_
return;
jvalue args[1];
// Parameter konvertieren
- args[0].j = DateConversion::toINT32(_rOut);
+ args[0].j = ::dbtools::DBTypeConversion::toINT32(_rOut);
// Java-Call fuer den Konstruktor absetzen
// temporaere Variable initialisieren
char * cSignature = "(J)V";
@@ -194,7 +194,7 @@ java_sql_Timestamp::java_sql_Timestamp(const ::com::sun::star::util::DateTime& _
return;
jvalue args[1];
// Parameter konvertieren
- args[0].j = (jlong)DateConversion::toINT64(_rOut);
+ args[0].j = (jlong)::dbtools::DBTypeConversion::toINT64(_rOut);
// Java-Call fuer den Konstruktor absetzen
// temporaere Variable initialisieren
char * cSignature = "(J)V";