diff options
author | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-09-11 09:04:51 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2017-09-11 12:27:13 +0200 |
commit | 020c3eebc2435c4a03076c99e36b5f144e358fe5 (patch) | |
tree | 07415e95b13dffd01ce5c112ae1dc977211d0b21 /connectivity/source/drivers/writer/WDatabaseMetaData.cxx | |
parent | 653e49371444e5ae48b1570e85822577fb8fd147 (diff) |
connectivity DatabaseMetaData: pull out OComponent from OCalc/Writer
Only getURL() and getTables() is custom, the rest can be shared.
Change-Id: I9d282a30f722bce0c05b37c7d005c84193e01b7c
Reviewed-on: https://gerrit.libreoffice.org/42152
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'connectivity/source/drivers/writer/WDatabaseMetaData.cxx')
-rw-r--r-- | connectivity/source/drivers/writer/WDatabaseMetaData.cxx | 211 |
1 files changed, 1 insertions, 210 deletions
diff --git a/connectivity/source/drivers/writer/WDatabaseMetaData.cxx b/connectivity/source/drivers/writer/WDatabaseMetaData.cxx index 66104f0a0e9b..e83ea87e198d 100644 --- a/connectivity/source/drivers/writer/WDatabaseMetaData.cxx +++ b/connectivity/source/drivers/writer/WDatabaseMetaData.cxx @@ -19,20 +19,8 @@ #include "writer/WDatabaseMetaData.hxx" #include "writer/WConnection.hxx" -#include <com/sun/star/sdbc/DataType.hpp> -#include <com/sun/star/sdbc/ResultSetType.hpp> -#include <com/sun/star/sdbc/ColumnValue.hpp> -#include <com/sun/star/beans/XPropertySet.hpp> -#include <com/sun/star/sdbc/ResultSetConcurrency.hpp> -#include <com/sun/star/sdbcx/XColumnsSupplier.hpp> -#include <com/sun/star/sdbcx/XIndexesSupplier.hpp> -#include <com/sun/star/text/XTextDocument.hpp> #include <com/sun/star/text/XTextTablesSupplier.hpp> -#include "FDatabaseMetaDataResultSet.hxx" -#include <com/sun/star/lang/XUnoTunnel.hpp> -#include <comphelper/types.hxx> -using namespace connectivity::file; using namespace ::com::sun::star; namespace connectivity @@ -40,7 +28,7 @@ namespace connectivity namespace writer { -OWriterDatabaseMetaData::OWriterDatabaseMetaData(OConnection* pConnection) :ODatabaseMetaData(pConnection) +OWriterDatabaseMetaData::OWriterDatabaseMetaData(file::OConnection* pConnection) :OComponentDatabaseMetaData(pConnection) { } @@ -48,177 +36,6 @@ OWriterDatabaseMetaData::~OWriterDatabaseMetaData() { } -uno::Reference<sdbc::XResultSet> OWriterDatabaseMetaData::impl_getTypeInfo_throw() -{ - ::osl::MutexGuard aGuard(m_aMutex); - - ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eTypeInfo); - uno::Reference<sdbc::XResultSet> xRef = pResult; - - static ODatabaseMetaDataResultSet::ORows aRows; - if (aRows.empty()) - { - ODatabaseMetaDataResultSet::ORow aRow; - - aRows.reserve(6); - aRow.reserve(18); - - aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue()); - aRow.push_back(new ORowSetValueDecorator(OUString("VARCHAR"))); - aRow.push_back(new ORowSetValueDecorator(sdbc::DataType::VARCHAR)); - aRow.push_back(new ORowSetValueDecorator((sal_Int32)65535)); - aRow.push_back(ODatabaseMetaDataResultSet::getQuoteValue()); - aRow.push_back(ODatabaseMetaDataResultSet::getQuoteValue()); - aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue()); - aRow.push_back(ODatabaseMetaDataResultSet::get1Value()); // ORowSetValue((sal_Int32)ColumnValue::NULLABLE) - aRow.push_back(ODatabaseMetaDataResultSet::get1Value()); - aRow.push_back(new ORowSetValueDecorator((sal_Int32)sdbc::ColumnSearch::CHAR)); - aRow.push_back(ODatabaseMetaDataResultSet::get1Value()); - aRow.push_back(ODatabaseMetaDataResultSet::get0Value()); - aRow.push_back(ODatabaseMetaDataResultSet::get0Value()); - aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue()); - aRow.push_back(ODatabaseMetaDataResultSet::get0Value()); - aRow.push_back(ODatabaseMetaDataResultSet::get0Value()); - aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue()); - aRow.push_back(ODatabaseMetaDataResultSet::getEmptyValue()); - aRow.push_back(new ORowSetValueDecorator((sal_Int32)10)); - aRows.push_back(aRow); - - aRow[1] = new ORowSetValueDecorator(OUString("DECIMAL")); - aRow[2] = new ORowSetValueDecorator(sdbc::DataType::DECIMAL); - aRow[3] = ODatabaseMetaDataResultSet::get0Value(); - aRow[9] = ODatabaseMetaDataResultSet::getBasicValue(); - aRow[15] = ODatabaseMetaDataResultSet::get0Value(); - aRows.push_back(aRow); - - aRow[1] = new ORowSetValueDecorator(OUString("BOOL")); - aRow[2] = new ORowSetValueDecorator(sdbc::DataType::BIT); - aRow[3] = new ORowSetValueDecorator((sal_Int32)20); - aRow[9] = ODatabaseMetaDataResultSet::getBasicValue(); - aRow[15] = new ORowSetValueDecorator((sal_Int32)15); - aRows.push_back(aRow); - - aRow[1] = new ORowSetValueDecorator(OUString("DATE")); - aRow[2] = new ORowSetValueDecorator(sdbc::DataType::DATE); - aRow[3] = ODatabaseMetaDataResultSet::get0Value(); - aRow[9] = ODatabaseMetaDataResultSet::getBasicValue(); - aRow[15] = ODatabaseMetaDataResultSet::get0Value(); - aRows.push_back(aRow); - - aRow[1] = new ORowSetValueDecorator(OUString("TIME")); - aRow[2] = new ORowSetValueDecorator(sdbc::DataType::TIME); - aRow[3] = ODatabaseMetaDataResultSet::get0Value(); - aRow[9] = ODatabaseMetaDataResultSet::getBasicValue(); - aRow[15] = ODatabaseMetaDataResultSet::get0Value(); - aRows.push_back(aRow); - - aRow[1] = new ORowSetValueDecorator(OUString("TIMESTAMP")); - aRow[2] = new ORowSetValueDecorator(sdbc::DataType::TIMESTAMP); - aRow[3] = ODatabaseMetaDataResultSet::get0Value(); - aRow[9] = ODatabaseMetaDataResultSet::getBasicValue(); - aRow[15] = ODatabaseMetaDataResultSet::get0Value(); - aRows.push_back(aRow); - } - - pResult->setRows(aRows); - return xRef; -} - - -uno::Reference<sdbc::XResultSet> SAL_CALL OWriterDatabaseMetaData::getColumns( - const uno::Any& /*catalog*/, const OUString& /*schemaPattern*/, const OUString& tableNamePattern, - const OUString& columnNamePattern) -{ - ::osl::MutexGuard aGuard(m_aMutex); - - uno::Reference<sdbcx::XTablesSupplier> xTables = m_pConnection->createCatalog(); - if (!xTables.is()) - throw sdbc::SQLException(); - - uno::Reference<container::XNameAccess> xNames = xTables->getTables(); - if (!xNames.is()) - throw sdbc::SQLException(); - - ODatabaseMetaDataResultSet::ORows aRows; - ODatabaseMetaDataResultSet::ORow aRow(19); - - aRow[10] = new ORowSetValueDecorator((sal_Int32)10); - - uno::Sequence<OUString> aTabNames(xNames->getElementNames()); - const OUString* pTabIter = aTabNames.getConstArray(); - const OUString* pTabEnd = pTabIter + aTabNames.getLength(); - for (; pTabIter != pTabEnd; ++pTabIter) - { - if (match(tableNamePattern,*pTabIter,'\0')) - { - uno::Reference<sdbcx::XColumnsSupplier> xTable(xNames->getByName(*pTabIter), uno::UNO_QUERY_THROW); - aRow[3] = new ORowSetValueDecorator(*pTabIter); - - uno::Reference<container::XNameAccess> xColumns = xTable->getColumns(); - if (!xColumns.is()) - throw sdbc::SQLException(); - - uno::Sequence<OUString> aColNames(xColumns->getElementNames()); - - const OUString* pColumnIter = aColNames.getConstArray(); - const OUString* pEnd = pColumnIter + aColNames.getLength(); - uno::Reference<beans::XPropertySet> xColumn; - for (sal_Int32 i=1; pColumnIter != pEnd; ++pColumnIter,++i) - { - if (match(columnNamePattern,*pColumnIter,'\0')) - { - aRow[4] = new ORowSetValueDecorator(*pColumnIter); - - xColumns->getByName(*pColumnIter) >>= xColumn; - OSL_ENSURE(xColumn.is(),"Columns contains a column who isn't a fastpropertyset!"); - aRow[5] = new ORowSetValueDecorator(::comphelper::getINT32(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPE)))); - aRow[6] = new ORowSetValueDecorator(::comphelper::getString(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME)))); - aRow[7] = new ORowSetValueDecorator(::comphelper::getINT32(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_PRECISION)))); - // aRow[8] = xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME)); - aRow[9] = new ORowSetValueDecorator(::comphelper::getINT32(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_SCALE)))); - aRow[11] = new ORowSetValueDecorator(::comphelper::getINT32(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_ISNULLABLE)))); - // aRow[12] = xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME)); - aRow[13] = new ORowSetValueDecorator(::comphelper::getString(xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_DEFAULTVALUE)))); - // aRow[14] = xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME)); - // aRow[15] = xColumn->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_TYPENAME)); - switch (sal_Int32(aRow[5]->getValue())) - { - case sdbc::DataType::CHAR: - case sdbc::DataType::VARCHAR: - aRow[16] = new ORowSetValueDecorator((sal_Int32)254); - break; - case sdbc::DataType::LONGVARCHAR: - aRow[16] = new ORowSetValueDecorator((sal_Int32)65535); - break; - default: - aRow[16] = new ORowSetValueDecorator((sal_Int32)0); - } - aRow[17] = new ORowSetValueDecorator(i); - switch (sal_Int32(aRow[11]->getValue())) - { - case sdbc::ColumnValue::NO_NULLS: - aRow[18] = new ORowSetValueDecorator(OUString("NO")); - break; - case sdbc::ColumnValue::NULLABLE: - aRow[18] = new ORowSetValueDecorator(OUString("YES")); - break; - default: - aRow[18] = new ORowSetValueDecorator(OUString()); - } - aRows.push_back(aRow); - } - } - } - } - - ODatabaseMetaDataResultSet* pResult = new ODatabaseMetaDataResultSet(::connectivity::ODatabaseMetaDataResultSet::eColumns); - uno::Reference<sdbc::XResultSet> xRef = pResult; - pResult->setRows(aRows); - - return xRef; -} - - OUString SAL_CALL OWriterDatabaseMetaData::getURL() { ::osl::MutexGuard aGuard(m_aMutex); @@ -227,32 +44,6 @@ OUString SAL_CALL OWriterDatabaseMetaData::getURL() } -sal_Int32 SAL_CALL OWriterDatabaseMetaData::getMaxBinaryLiteralLength() -{ - return SAL_MAX_INT32; -} - - -sal_Int32 SAL_CALL OWriterDatabaseMetaData::getMaxCharLiteralLength() -{ - return SAL_MAX_INT32; -} - -sal_Int32 SAL_CALL OWriterDatabaseMetaData::getMaxColumnNameLength() -{ - return SAL_MAX_INT32; -} - -sal_Int32 SAL_CALL OWriterDatabaseMetaData::getMaxColumnsInIndex() -{ - return 1; -} - -sal_Int32 SAL_CALL OWriterDatabaseMetaData::getMaxColumnsInTable() -{ - return 256; -} - uno::Reference<sdbc::XResultSet> SAL_CALL OWriterDatabaseMetaData::getTables( const uno::Any& /*catalog*/, const OUString& /*schemaPattern*/, const OUString& tableNamePattern, const uno::Sequence< OUString >& types) |