summaryrefslogtreecommitdiff
path: root/connectivity/source/commontools/TTableHelper.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'connectivity/source/commontools/TTableHelper.cxx')
-rw-r--r--connectivity/source/commontools/TTableHelper.cxx635
1 files changed, 0 insertions, 635 deletions
diff --git a/connectivity/source/commontools/TTableHelper.cxx b/connectivity/source/commontools/TTableHelper.cxx
deleted file mode 100644
index ecf97d4beb..0000000000
--- a/connectivity/source/commontools/TTableHelper.cxx
+++ /dev/null
@@ -1,635 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org 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 version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_connectivity.hxx"
-#include "connectivity/TTableHelper.hxx"
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XResultSet.hpp>
-#include <com/sun/star/sdbcx/KeyType.hpp>
-#include <com/sun/star/sdbc/KeyRule.hpp>
-#include <cppuhelper/typeprovider.hxx>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <comphelper/implementationreference.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/extract.hxx>
-#include <comphelper/types.hxx>
-#include "connectivity/dbtools.hxx"
-#include "connectivity/sdbcx/VCollection.hxx"
-#include <unotools/sharedunocomponent.hxx>
-#include "TConnection.hxx"
-
-#include <o3tl/compat_functional.hxx>
-
-using namespace ::comphelper;
-using namespace connectivity;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-namespace
-{
- /// helper class for column property change events which holds the OComponentDefinition weak
-typedef ::cppu::WeakImplHelper1 < XContainerListener > OTableContainerListener_BASE;
-class OTableContainerListener : public OTableContainerListener_BASE
-{
- OTableHelper* m_pComponent;
- ::std::map< ::rtl::OUString,bool> m_aRefNames;
-
- OTableContainerListener(const OTableContainerListener&);
- void operator =(const OTableContainerListener&);
-protected:
- virtual ~OTableContainerListener(){}
-public:
- OTableContainerListener(OTableHelper* _pComponent) : m_pComponent(_pComponent){}
- virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& /*Event*/ ) throw (RuntimeException)
- {
- }
- virtual void SAL_CALL elementRemoved( const ::com::sun::star::container::ContainerEvent& Event ) throw (RuntimeException)
- {
- ::rtl::OUString sName;
- Event.Accessor >>= sName;
- if ( m_aRefNames.find(sName) != m_aRefNames.end() )
- m_pComponent->refreshKeys();
- }
- virtual void SAL_CALL elementReplaced( const ::com::sun::star::container::ContainerEvent& Event ) throw (RuntimeException)
- {
- ::rtl::OUString sOldComposedName,sNewComposedName;
- Event.ReplacedElement >>= sOldComposedName;
- Event.Accessor >>= sNewComposedName;
- if ( sOldComposedName != sNewComposedName && m_aRefNames.find(sOldComposedName) != m_aRefNames.end() )
- m_pComponent->refreshKeys();
- }
- // XEventListener
- virtual void SAL_CALL disposing( const EventObject& /*_rSource*/ ) throw (RuntimeException)
- {
- }
- void clear() { m_pComponent = NULL; }
- inline void add(const ::rtl::OUString& _sRefName) { m_aRefNames.insert(::std::map< ::rtl::OUString,bool>::value_type(_sRefName,true)); }
-};
-}
-namespace connectivity
-{
- ::rtl::OUString lcl_getServiceNameForSetting(const Reference< ::com::sun::star::sdbc::XConnection >& _xConnection,const ::rtl::OUString& i_sSetting)
- {
- ::rtl::OUString sSupportService;
- Any aValue;
- if ( ::dbtools::getDataSourceSetting(_xConnection,i_sSetting,aValue) )
- {
- aValue >>= sSupportService;
- }
- return sSupportService;
- }
- struct OTableHelperImpl
- {
- TKeyMap m_aKeys;
- // helper services which can be provided by extensions
- Reference< ::com::sun::star::sdb::tools::XTableRename> m_xRename;
- Reference< ::com::sun::star::sdb::tools::XTableAlteration> m_xAlter;
- Reference< ::com::sun::star::sdb::tools::XKeyAlteration> m_xKeyAlter;
- Reference< ::com::sun::star::sdb::tools::XIndexAlteration> m_xIndexAlter;
-
- Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
- Reference< ::com::sun::star::sdbc::XConnection > m_xConnection;
- ::comphelper::ImplementationReference< OTableContainerListener,XContainerListener>
- m_xTablePropertyListener;
- ::std::vector< ColumnDesc > m_aColumnDesc;
- OTableHelperImpl(const Reference< ::com::sun::star::sdbc::XConnection >& _xConnection)
- : m_xConnection(_xConnection)
- {
- try
- {
- m_xMetaData = m_xConnection->getMetaData();
- Reference<XMultiServiceFactory> xFac(_xConnection,UNO_QUERY);
- if ( xFac.is() )
- {
- static const ::rtl::OUString s_sTableRename(RTL_CONSTASCII_USTRINGPARAM("TableRenameServiceName"));
- m_xRename.set(xFac->createInstance(lcl_getServiceNameForSetting(m_xConnection,s_sTableRename)),UNO_QUERY);
- static const ::rtl::OUString s_sTableAlteration(RTL_CONSTASCII_USTRINGPARAM("TableAlterationServiceName"));
- m_xAlter.set(xFac->createInstance(lcl_getServiceNameForSetting(m_xConnection,s_sTableAlteration)),UNO_QUERY);
- static const ::rtl::OUString s_sKeyAlteration(RTL_CONSTASCII_USTRINGPARAM("KeyAlterationServiceName"));
- m_xKeyAlter.set(xFac->createInstance(lcl_getServiceNameForSetting(m_xConnection,s_sKeyAlteration)),UNO_QUERY);
- static const ::rtl::OUString s_sIndexAlteration(RTL_CONSTASCII_USTRINGPARAM("IndexAlterationServiceName"));
- m_xIndexAlter.set(xFac->createInstance(lcl_getServiceNameForSetting(m_xConnection,s_sIndexAlteration)),UNO_QUERY);
- }
- }
- catch(const Exception&)
- {
- }
- }
- };
-}
-
-OTableHelper::OTableHelper( sdbcx::OCollection* _pTables,
- const Reference< XConnection >& _xConnection,
- sal_Bool _bCase)
- :OTable_TYPEDEF(_pTables,_bCase)
- ,m_pImpl(new OTableHelperImpl(_xConnection))
-{
-}
-// -------------------------------------------------------------------------
-OTableHelper::OTableHelper( sdbcx::OCollection* _pTables,
- const Reference< XConnection >& _xConnection,
- sal_Bool _bCase,
- const ::rtl::OUString& _Name,
- const ::rtl::OUString& _Type,
- const ::rtl::OUString& _Description ,
- const ::rtl::OUString& _SchemaName,
- const ::rtl::OUString& _CatalogName
- ) : OTable_TYPEDEF(_pTables,
- _bCase,
- _Name,
- _Type,
- _Description,
- _SchemaName,
- _CatalogName)
- ,m_pImpl(new OTableHelperImpl(_xConnection))
-{
-}
-// -----------------------------------------------------------------------------
-OTableHelper::~OTableHelper()
-{
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL OTableHelper::disposing()
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- if ( m_pImpl->m_xTablePropertyListener.is() )
- {
- m_pTables->removeContainerListener(m_pImpl->m_xTablePropertyListener.getRef());
- m_pImpl->m_xTablePropertyListener->clear();
- m_pImpl->m_xTablePropertyListener.dispose();
- }
- OTable_TYPEDEF::disposing();
-
- m_pImpl->m_xConnection = NULL;
- m_pImpl->m_xMetaData = NULL;
-
-}
-
-// -------------------------------------------------------------------------
-namespace
-{
- /** collects ColumnDesc's from a resultset produced by XDatabaseMetaData::getColumns
- */
- void lcl_collectColumnDescs_throw( const Reference< XResultSet >& _rxResult, ::std::vector< ColumnDesc >& _out_rColumns )
- {
- Reference< XRow > xRow( _rxResult, UNO_QUERY_THROW );
- ::rtl::OUString sName;
- OrdinalPosition nOrdinalPosition( 0 );
- while ( _rxResult->next() )
- {
- sName = xRow->getString( 4 ); // COLUMN_NAME
- sal_Int32 nField5 = xRow->getInt(5);
- ::rtl::OUString aField6 = xRow->getString(6);
- sal_Int32 nField7 = xRow->getInt(7)
- , nField9 = xRow->getInt(9)
- , nField11= xRow->getInt(11);
- ::rtl::OUString sField12 = xRow->getString(12)
- ,sField13 = xRow->getString(13);
- nOrdinalPosition = xRow->getInt( 17 ); // ORDINAL_POSITION
- _out_rColumns.push_back( ColumnDesc( sName,nField5,aField6,nField7,nField9,nField11,sField12,sField13, nOrdinalPosition ) );
- }
- }
-
- /** checks a given array of ColumnDesc's whether it has reasonable ordinal positions. If not,
- they will be normalized to be the array index.
- */
- void lcl_sanitizeColumnDescs( ::std::vector< ColumnDesc >& _rColumns )
- {
- if ( _rColumns.empty() )
- return;
-
- // collect all used ordinals
- ::std::set< OrdinalPosition > aUsedOrdinals;
- for ( ::std::vector< ColumnDesc >::iterator collect = _rColumns.begin();
- collect != _rColumns.end();
- ++collect
- )
- aUsedOrdinals.insert( collect->nOrdinalPosition );
-
- // we need to have as much different ordinals as we have different columns
- bool bDuplicates = aUsedOrdinals.size() != _rColumns.size();
- // and it needs to be a continuous range
- size_t nOrdinalsRange = *aUsedOrdinals.rbegin() - *aUsedOrdinals.begin() + 1;
- bool bGaps = nOrdinalsRange != _rColumns.size();
-
- // if that's not the case, normalize it
- if ( bGaps || bDuplicates )
- {
- OSL_FAIL( "lcl_sanitizeColumnDescs: database did provide invalid ORDINAL_POSITION values!" );
-
- OrdinalPosition nNormalizedPosition = 1;
- for ( ::std::vector< ColumnDesc >::iterator normalize = _rColumns.begin();
- normalize != _rColumns.end();
- ++normalize
- )
- normalize->nOrdinalPosition = nNormalizedPosition++;
- return;
- }
-
- // what's left is that the range might not be from 1 to <column count>, but for instance
- // 0 to <column count>-1.
- size_t nOffset = *aUsedOrdinals.begin() - 1;
- for ( ::std::vector< ColumnDesc >::iterator offset = _rColumns.begin();
- offset != _rColumns.end();
- ++offset
- )
- offset->nOrdinalPosition -= nOffset;
- }
-}
-
-// -------------------------------------------------------------------------
-void OTableHelper::refreshColumns()
-{
- TStringVector aVector;
- if(!isNew())
- {
- Any aCatalog;
- if ( m_CatalogName.getLength() )
- aCatalog <<= m_CatalogName;
-
- ::utl::SharedUNOComponent< XResultSet > xResult( getMetaData()->getColumns(
- aCatalog,
- m_SchemaName,
- m_Name,
- ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%"))
- ) );
-
- // collect the column names, together with their ordinal position
- m_pImpl->m_aColumnDesc.clear();
- lcl_collectColumnDescs_throw( xResult, m_pImpl->m_aColumnDesc );
-
- // ensure that the ordinal positions as obtained from the meta data do make sense
- lcl_sanitizeColumnDescs( m_pImpl->m_aColumnDesc );
-
- // sort by ordinal position
- ::std::map< OrdinalPosition, ::rtl::OUString > aSortedColumns;
- for ( ::std::vector< ColumnDesc >::const_iterator copy = m_pImpl->m_aColumnDesc.begin();
- copy != m_pImpl->m_aColumnDesc.end();
- ++copy
- )
- aSortedColumns[ copy->nOrdinalPosition ] = copy->sName;
-
- // copy them to aVector, now that we have the proper ordering
- ::std::transform(
- aSortedColumns.begin(),
- aSortedColumns.end(),
- ::std::insert_iterator< TStringVector >( aVector, aVector.begin() ),
- ::o3tl::select2nd< ::std::map< OrdinalPosition, ::rtl::OUString >::value_type >()
- );
- }
-
- if(m_pColumns)
- m_pColumns->reFill(aVector);
- else
- m_pColumns = createColumns(aVector);
-}
-// -----------------------------------------------------------------------------
-const ColumnDesc* OTableHelper::getColumnDescription(const ::rtl::OUString& _sName) const
-{
- const ColumnDesc* pRet = NULL;
- ::std::vector< ColumnDesc >::const_iterator aEnd = m_pImpl->m_aColumnDesc.end();
- for (::std::vector< ColumnDesc >::const_iterator aIter = m_pImpl->m_aColumnDesc.begin();aIter != aEnd;++aIter)
- {
- if ( aIter->sName == _sName )
- {
- pRet = &*aIter;
- break;
- }
- } // for (::std::vector< ColumnDesc >::const_iterator aIter = m_pImpl->m_aColumnDesc.begin();aIter != aEnd;++aIter)
- return pRet;
-}
-// -------------------------------------------------------------------------
-void OTableHelper::refreshPrimaryKeys(TStringVector& _rNames)
-{
- Any aCatalog;
- if ( m_CatalogName.getLength() )
- aCatalog <<= m_CatalogName;
- Reference< XResultSet > xResult = getMetaData()->getPrimaryKeys(aCatalog,m_SchemaName,m_Name);
-
- if ( xResult.is() )
- {
- sdbcx::TKeyProperties pKeyProps(new sdbcx::KeyProperties(::rtl::OUString(),KeyType::PRIMARY,0,0));
- ::rtl::OUString aPkName;
- bool bAlreadyFetched = false;
- const Reference< XRow > xRow(xResult,UNO_QUERY);
- while ( xResult->next() )
- {
- pKeyProps->m_aKeyColumnNames.push_back(xRow->getString(4));
- if ( !bAlreadyFetched )
- {
- aPkName = xRow->getString(6);
- bAlreadyFetched = true;
- }
- }
-
- m_pImpl->m_aKeys.insert(TKeyMap::value_type(aPkName,pKeyProps));
- _rNames.push_back(aPkName);
- } // if ( xResult.is() && xResult->next() )
- ::comphelper::disposeComponent(xResult);
-}
-// -------------------------------------------------------------------------
-void OTableHelper::refreshForgeinKeys(TStringVector& _rNames)
-{
- Any aCatalog;
- if ( m_CatalogName.getLength() )
- aCatalog <<= m_CatalogName;
- Reference< XResultSet > xResult = getMetaData()->getImportedKeys(aCatalog,m_SchemaName,m_Name);
- Reference< XRow > xRow(xResult,UNO_QUERY);
-
- if ( xRow.is() )
- {
- sdbcx::TKeyProperties pKeyProps;
- ::rtl::OUString aName,sCatalog,aSchema,sOldFKName;
- while( xResult->next() )
- {
- // this must be outsid the "if" because we have to call in a right order
- sCatalog = xRow->getString(1);
- if ( xRow->wasNull() )
- sCatalog = ::rtl::OUString();
- aSchema = xRow->getString(2);
- aName = xRow->getString(3);
-
- const ::rtl::OUString sForeignKeyColumn = xRow->getString(8);
- const sal_Int32 nUpdateRule = xRow->getInt(10);
- const sal_Int32 nDeleteRule = xRow->getInt(11);
- const ::rtl::OUString sFkName = xRow->getString(12);
-
- if ( pKeyProps.get() )
- {
- }
-
-
- if ( sFkName.getLength() && !xRow->wasNull() )
- {
- if ( sOldFKName != sFkName )
- {
- if ( pKeyProps.get() )
- m_pImpl->m_aKeys.insert(TKeyMap::value_type(sOldFKName,pKeyProps));
-
- const ::rtl::OUString sReferencedName = ::dbtools::composeTableName(getMetaData(),sCatalog,aSchema,aName,sal_False,::dbtools::eInDataManipulation);
- pKeyProps.reset(new sdbcx::KeyProperties(sReferencedName,KeyType::FOREIGN,nUpdateRule,nDeleteRule));
- pKeyProps->m_aKeyColumnNames.push_back(sForeignKeyColumn);
- _rNames.push_back(sFkName);
- if ( m_pTables->hasByName(sReferencedName) )
- {
- if ( !m_pImpl->m_xTablePropertyListener.is() )
- m_pImpl->m_xTablePropertyListener = ::comphelper::ImplementationReference< OTableContainerListener,XContainerListener>( new OTableContainerListener(this) );
- m_pTables->addContainerListener(m_pImpl->m_xTablePropertyListener.getRef());
- m_pImpl->m_xTablePropertyListener->add(sReferencedName);
- } // if ( m_pTables->hasByName(sReferencedName) )
- sOldFKName = sFkName;
- } // if ( sOldFKName != sFkName )
- else if ( pKeyProps.get() )
- {
- pKeyProps->m_aKeyColumnNames.push_back(sForeignKeyColumn);
- }
- }
- } // while( xResult->next() )
- if ( pKeyProps.get() )
- m_pImpl->m_aKeys.insert(TKeyMap::value_type(sOldFKName,pKeyProps));
- ::comphelper::disposeComponent(xResult);
- }
-}
-// -------------------------------------------------------------------------
-void OTableHelper::refreshKeys()
-{
- m_pImpl->m_aKeys.clear();
-
- TStringVector aNames;
-
- if(!isNew())
- {
- refreshPrimaryKeys(aNames);
- refreshForgeinKeys(aNames);
- m_pKeys = createKeys(aNames);
- } // if(!isNew())
- else if (!m_pKeys )
- m_pKeys = createKeys(aNames);
- /*if(m_pKeys)
- m_pKeys->reFill(aVector);
- else*/
-
-}
-// -------------------------------------------------------------------------
-void OTableHelper::refreshIndexes()
-{
- TStringVector aVector;
- if(!isNew())
- {
- // fill indexes
- Any aCatalog;
- if ( m_CatalogName.getLength() )
- aCatalog <<= m_CatalogName;
- Reference< XResultSet > xResult = getMetaData()->getIndexInfo(aCatalog,m_SchemaName,m_Name,sal_False,sal_False);
-
- if(xResult.is())
- {
- Reference< XRow > xRow(xResult,UNO_QUERY);
- ::rtl::OUString aName;
- ::rtl::OUString sCatalogSep = getMetaData()->getCatalogSeparator();
- ::rtl::OUString sPreviousRoundName;
- while( xResult->next() )
- {
- aName = xRow->getString(5);
- if(aName.getLength())
- aName += sCatalogSep;
- aName += xRow->getString(6);
- if ( aName.getLength() )
- {
- // don't insert the name if the last one we inserted was the same
- if (sPreviousRoundName != aName)
- aVector.push_back(aName);
- }
- sPreviousRoundName = aName;
- }
- ::comphelper::disposeComponent(xResult);
- }
- }
-
- if(m_pIndexes)
- m_pIndexes->reFill(aVector);
- else
- m_pIndexes = createIndexes(aVector);
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString OTableHelper::getRenameStart() const
-{
- ::rtl::OUString sSql(RTL_CONSTASCII_USTRINGPARAM("RENAME "));
- if ( m_Type == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VIEW")) )
- sSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" VIEW "));
- else
- sSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" TABLE "));
-
- return sSql;
-}
-// -------------------------------------------------------------------------
-// XRename
-void SAL_CALL OTableHelper::rename( const ::rtl::OUString& newName ) throw(SQLException, ElementExistException, RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- checkDisposed(
-#ifdef GCC
- ::connectivity::sdbcx::OTableDescriptor_BASE::rBHelper.bDisposed
-#else
- rBHelper.bDisposed
-#endif
- );
-
- if(!isNew())
- {
- if ( m_pImpl->m_xRename.is() )
- {
- m_pImpl->m_xRename->rename(this,newName);
- }
- else
- {
- ::rtl::OUString sSql = getRenameStart();
- ::rtl::OUString sQuote = getMetaData()->getIdentifierQuoteString( );
-
- ::rtl::OUString sCatalog,sSchema,sTable;
- ::dbtools::qualifiedNameComponents(getMetaData(),newName,sCatalog,sSchema,sTable,::dbtools::eInDataManipulation);
-
- ::rtl::OUString sComposedName;
- sComposedName = ::dbtools::composeTableName(getMetaData(),m_CatalogName,m_SchemaName,m_Name,sal_True,::dbtools::eInDataManipulation);
- sSql += sComposedName
- + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" TO "));
- sComposedName = ::dbtools::composeTableName(getMetaData(),sCatalog,sSchema,sTable,sal_True,::dbtools::eInDataManipulation);
- sSql += sComposedName;
-
- Reference< XStatement > xStmt = m_pImpl->m_xConnection->createStatement( );
- if ( xStmt.is() )
- {
- xStmt->execute(sSql);
- ::comphelper::disposeComponent(xStmt);
- }
- }
-
- OTable_TYPEDEF::rename(newName);
- }
- else
- ::dbtools::qualifiedNameComponents(getMetaData(),newName,m_CatalogName,m_SchemaName,m_Name,::dbtools::eInTableDefinitions);
-}
-// -----------------------------------------------------------------------------
-Reference< XDatabaseMetaData> OTableHelper::getMetaData() const
-{
- return m_pImpl->m_xMetaData;
-}
-// -------------------------------------------------------------------------
-void SAL_CALL OTableHelper::alterColumnByIndex( sal_Int32 index, const Reference< XPropertySet >& descriptor ) throw(SQLException, ::com::sun::star::lang::IndexOutOfBoundsException, RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- checkDisposed(
-#ifdef GCC
- ::connectivity::sdbcx::OTableDescriptor_BASE::rBHelper.bDisposed
-#else
- rBHelper.bDisposed
-#endif
- );
-
- Reference< XPropertySet > xOld;
- if(::cppu::extractInterface(xOld,m_pColumns->getByIndex(index)) && xOld.is())
- alterColumnByName(getString(xOld->getPropertyValue(OMetaConnection::getPropMap().getNameByIndex(PROPERTY_ID_NAME))),descriptor);
-}
-
-// -------------------------------------------------------------------------
-::rtl::OUString SAL_CALL OTableHelper::getName() throw(RuntimeException)
-{
- ::rtl::OUString sComposedName;
- sComposedName = ::dbtools::composeTableName(getMetaData(),m_CatalogName,m_SchemaName,m_Name,sal_False,::dbtools::eInDataManipulation);
- return sComposedName;
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL OTableHelper::acquire() throw()
-{
- OTable_TYPEDEF::acquire();
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL OTableHelper::release() throw()
-{
- OTable_TYPEDEF::release();
-}
-// -----------------------------------------------------------------------------
-sdbcx::TKeyProperties OTableHelper::getKeyProperties(const ::rtl::OUString& _sName) const
-{
- sdbcx::TKeyProperties pKeyProps;
- TKeyMap::const_iterator aFind = m_pImpl->m_aKeys.find(_sName);
- if ( aFind != m_pImpl->m_aKeys.end() )
- {
- pKeyProps = aFind->second;
- }
- else // only a fall back
- {
- OSL_FAIL("No key with the given name found");
- pKeyProps.reset(new sdbcx::KeyProperties());
- }
-
- return pKeyProps;
-}
-// -----------------------------------------------------------------------------
-void OTableHelper::addKey(const ::rtl::OUString& _sName,const sdbcx::TKeyProperties& _aKeyProperties)
-{
- m_pImpl->m_aKeys.insert(TKeyMap::value_type(_sName,_aKeyProperties));
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString OTableHelper::getTypeCreatePattern() const
-{
- return ::rtl::OUString();
-}
-// -----------------------------------------------------------------------------
-Reference< XConnection> OTableHelper::getConnection() const
-{
- return m_pImpl->m_xConnection;
-}
-// -----------------------------------------------------------------------------
-Reference< ::com::sun::star::sdb::tools::XTableRename> OTableHelper::getRenameService() const
-{
- return m_pImpl->m_xRename;
-}
-// -----------------------------------------------------------------------------
-Reference< ::com::sun::star::sdb::tools::XTableAlteration> OTableHelper::getAlterService() const
-{
- return m_pImpl->m_xAlter;
-}
-// -----------------------------------------------------------------------------
-Reference< ::com::sun::star::sdb::tools::XKeyAlteration> OTableHelper::getKeyService() const
-{
- return m_pImpl->m_xKeyAlter;
-}
-// -----------------------------------------------------------------------------
-Reference< ::com::sun::star::sdb::tools::XIndexAlteration> OTableHelper::getIndexService() const
-{
- return m_pImpl->m_xIndexAlter;
-}
-// -----------------------------------------------------------------------------
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */