summaryrefslogtreecommitdiff
path: root/dbaccess/source/core
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:10 +0100
committerMichael Stahl <mstahl@redhat.com>2012-01-28 20:52:10 +0100
commit00a6c3c148e4c0e867816b4c361abb19d9ece7eb (patch)
tree9e9f67205cd5b72f1031721273e1534a3a1e5b0f /dbaccess/source/core
parent28068f42895821cbfc399fe50c9888c566dbdc4d (diff)
replace obsolete "master" branch with README that points at new repoHEADmaster-deletedmaster
Diffstat (limited to 'dbaccess/source/core')
-rw-r--r--dbaccess/source/core/api/BookmarkSet.cxx264
-rw-r--r--dbaccess/source/core/api/BookmarkSet.hxx73
-rw-r--r--dbaccess/source/core/api/CIndexColumn.hxx60
-rw-r--r--dbaccess/source/core/api/CIndexes.cxx104
-rw-r--r--dbaccess/source/core/api/CIndexes.hxx59
-rw-r--r--dbaccess/source/core/api/CRowSetColumn.cxx103
-rw-r--r--dbaccess/source/core/api/CRowSetColumn.hxx61
-rw-r--r--dbaccess/source/core/api/CRowSetDataColumn.cxx269
-rw-r--r--dbaccess/source/core/api/CRowSetDataColumn.hxx112
-rw-r--r--dbaccess/source/core/api/CacheSet.cxx716
-rw-r--r--dbaccess/source/core/api/CacheSet.hxx163
-rw-r--r--dbaccess/source/core/api/FilteredContainer.cxx485
-rw-r--r--dbaccess/source/core/api/HelperCollections.cxx119
-rw-r--r--dbaccess/source/core/api/HelperCollections.hxx121
-rw-r--r--dbaccess/source/core/api/KeySet.cxx1689
-rw-r--r--dbaccess/source/core/api/KeySet.hxx233
-rw-r--r--dbaccess/source/core/api/OptimisticSet.cxx739
-rw-r--r--dbaccess/source/core/api/OptimisticSet.hxx108
-rw-r--r--dbaccess/source/core/api/PrivateRow.cxx144
-rw-r--r--dbaccess/source/core/api/PrivateRow.hxx69
-rw-r--r--dbaccess/source/core/api/RowSet.cxx2977
-rw-r--r--dbaccess/source/core/api/RowSet.hxx548
-rw-r--r--dbaccess/source/core/api/RowSetBase.cxx1584
-rw-r--r--dbaccess/source/core/api/RowSetBase.hxx427
-rw-r--r--dbaccess/source/core/api/RowSetCache.cxx1703
-rw-r--r--dbaccess/source/core/api/RowSetCache.hxx227
-rw-r--r--dbaccess/source/core/api/RowSetCacheIterator.cxx149
-rw-r--r--dbaccess/source/core/api/RowSetCacheIterator.hxx89
-rw-r--r--dbaccess/source/core/api/RowSetRow.hxx98
-rw-r--r--dbaccess/source/core/api/SingleSelectQueryComposer.cxx1850
-rw-r--r--dbaccess/source/core/api/StaticSet.cxx372
-rw-r--r--dbaccess/source/core/api/StaticSet.hxx93
-rw-r--r--dbaccess/source/core/api/TableDeco.cxx697
-rw-r--r--dbaccess/source/core/api/View.cxx151
-rw-r--r--dbaccess/source/core/api/WrappedResultSet.cxx249
-rw-r--r--dbaccess/source/core/api/WrappedResultSet.hxx76
-rw-r--r--dbaccess/source/core/api/callablestatement.cxx304
-rw-r--r--dbaccess/source/core/api/column.cxx460
-rw-r--r--dbaccess/source/core/api/columnsettings.cxx181
-rw-r--r--dbaccess/source/core/api/datacolumn.cxx428
-rw-r--r--dbaccess/source/core/api/datacolumn.hxx119
-rw-r--r--dbaccess/source/core/api/datasettings.cxx223
-rw-r--r--dbaccess/source/core/api/definitioncolumn.cxx629
-rw-r--r--dbaccess/source/core/api/preparedstatement.cxx434
-rw-r--r--dbaccess/source/core/api/query.cxx384
-rw-r--r--dbaccess/source/core/api/query.hxx174
-rw-r--r--dbaccess/source/core/api/querycomposer.cxx355
-rw-r--r--dbaccess/source/core/api/querycontainer.cxx420
-rw-r--r--dbaccess/source/core/api/querydescriptor.cxx285
-rw-r--r--dbaccess/source/core/api/querydescriptor.hxx161
-rw-r--r--dbaccess/source/core/api/resultcolumn.cxx325
-rw-r--r--dbaccess/source/core/api/resultcolumn.hxx99
-rw-r--r--dbaccess/source/core/api/resultset.cxx1114
-rw-r--r--dbaccess/source/core/api/resultset.hxx240
-rw-r--r--dbaccess/source/core/api/statement.cxx640
-rw-r--r--dbaccess/source/core/api/table.cxx414
-rw-r--r--dbaccess/source/core/api/tablecontainer.cxx504
-rw-r--r--dbaccess/source/core/api/viewcontainer.cxx274
-rw-r--r--dbaccess/source/core/dataaccess/ComponentDefinition.cxx302
-rw-r--r--dbaccess/source/core/dataaccess/ComponentDefinition.hxx184
-rw-r--r--dbaccess/source/core/dataaccess/ContentHelper.cxx675
-rw-r--r--dbaccess/source/core/dataaccess/ModelImpl.cxx1436
-rw-r--r--dbaccess/source/core/dataaccess/ModelImpl.hxx644
-rw-r--r--dbaccess/source/core/dataaccess/SharedConnection.cxx169
-rw-r--r--dbaccess/source/core/dataaccess/SharedConnection.hxx144
-rw-r--r--dbaccess/source/core/dataaccess/bookmarkcontainer.cxx372
-rw-r--r--dbaccess/source/core/dataaccess/bookmarkcontainer.hxx179
-rw-r--r--dbaccess/source/core/dataaccess/commandcontainer.cxx101
-rw-r--r--dbaccess/source/core/dataaccess/commandcontainer.hxx85
-rw-r--r--dbaccess/source/core/dataaccess/commanddefinition.cxx167
-rw-r--r--dbaccess/source/core/dataaccess/commanddefinition.hxx123
-rw-r--r--dbaccess/source/core/dataaccess/connection.cxx895
-rw-r--r--dbaccess/source/core/dataaccess/connection.hxx254
-rw-r--r--dbaccess/source/core/dataaccess/dataaccessdescriptor.cxx328
-rw-r--r--dbaccess/source/core/dataaccess/databasecontext.cxx765
-rw-r--r--dbaccess/source/core/dataaccess/databasecontext.hxx214
-rw-r--r--dbaccess/source/core/dataaccess/databasedocument.cxx2090
-rw-r--r--dbaccess/source/core/dataaccess/databasedocument.hxx709
-rw-r--r--dbaccess/source/core/dataaccess/databaseregistrations.cxx377
-rw-r--r--dbaccess/source/core/dataaccess/databaseregistrations.hxx50
-rw-r--r--dbaccess/source/core/dataaccess/datasource.cxx1418
-rw-r--r--dbaccess/source/core/dataaccess/datasource.hxx239
-rw-r--r--dbaccess/source/core/dataaccess/definitioncontainer.cxx683
-rw-r--r--dbaccess/source/core/dataaccess/documentcontainer.cxx781
-rw-r--r--dbaccess/source/core/dataaccess/documentcontainer.hxx146
-rw-r--r--dbaccess/source/core/dataaccess/documentdefinition.cxx2210
-rw-r--r--dbaccess/source/core/dataaccess/documentdefinition.hxx386
-rw-r--r--dbaccess/source/core/dataaccess/documenteventexecutor.cxx222
-rw-r--r--dbaccess/source/core/dataaccess/documenteventexecutor.hxx77
-rw-r--r--dbaccess/source/core/dataaccess/documenteventnotifier.cxx300
-rw-r--r--dbaccess/source/core/dataaccess/documenteventnotifier.hxx143
-rw-r--r--dbaccess/source/core/dataaccess/documentevents.cxx251
-rw-r--r--dbaccess/source/core/dataaccess/documentevents.hxx89
-rw-r--r--dbaccess/source/core/dataaccess/intercept.cxx446
-rw-r--r--dbaccess/source/core/dataaccess/intercept.hxx169
-rw-r--r--dbaccess/source/core/dataaccess/myucp_datasupplier.cxx393
-rw-r--r--dbaccess/source/core/dataaccess/myucp_datasupplier.hxx80
-rw-r--r--dbaccess/source/core/dataaccess/myucp_resultset.cxx99
-rw-r--r--dbaccess/source/core/dataaccess/myucp_resultset.hxx64
-rw-r--r--dbaccess/source/core/inc/ContainerListener.hxx89
-rw-r--r--dbaccess/source/core/inc/ContainerMediator.hxx105
-rw-r--r--dbaccess/source/core/inc/ContentHelper.hxx207
-rw-r--r--dbaccess/source/core/inc/DatabaseDataProvider.hxx281
-rw-r--r--dbaccess/source/core/inc/FilteredContainer.hxx147
-rw-r--r--dbaccess/source/core/inc/PropertyForward.hxx83
-rw-r--r--dbaccess/source/core/inc/RefreshListener.hxx56
-rw-r--r--dbaccess/source/core/inc/SingleSelectQueryComposer.hxx256
-rw-r--r--dbaccess/source/core/inc/TableDeco.hxx186
-rw-r--r--dbaccess/source/core/inc/View.hxx87
-rw-r--r--dbaccess/source/core/inc/callablestatement.hxx91
-rw-r--r--dbaccess/source/core/inc/column.hxx259
-rw-r--r--dbaccess/source/core/inc/columnsettings.hxx108
-rw-r--r--dbaccess/source/core/inc/commandbase.hxx64
-rw-r--r--dbaccess/source/core/inc/composertools.hxx138
-rw-r--r--dbaccess/source/core/inc/containerapprove.hxx76
-rw-r--r--dbaccess/source/core/inc/core_resource.hrc110
-rw-r--r--dbaccess/source/core/inc/core_resource.hxx127
-rw-r--r--dbaccess/source/core/inc/datasettings.hxx95
-rw-r--r--dbaccess/source/core/inc/dbamiscres.hrc62
-rw-r--r--dbaccess/source/core/inc/definitioncolumn.hxx320
-rw-r--r--dbaccess/source/core/inc/definitioncontainer.hxx336
-rw-r--r--dbaccess/source/core/inc/module_dba.hxx43
-rw-r--r--dbaccess/source/core/inc/object.hxx42
-rw-r--r--dbaccess/source/core/inc/objectnameapproval.hxx90
-rw-r--r--dbaccess/source/core/inc/preparedstatement.hxx118
-rw-r--r--dbaccess/source/core/inc/querycomposer.hxx116
-rw-r--r--dbaccess/source/core/inc/querycontainer.hxx186
-rw-r--r--dbaccess/source/core/inc/recovery/dbdocrecovery.hxx91
-rw-r--r--dbaccess/source/core/inc/sdbcoretools.hxx82
-rw-r--r--dbaccess/source/core/inc/statement.hxx194
-rw-r--r--dbaccess/source/core/inc/table.hxx165
-rw-r--r--dbaccess/source/core/inc/tablecontainer.hxx119
-rw-r--r--dbaccess/source/core/inc/userinformation.hxx48
-rw-r--r--dbaccess/source/core/inc/veto.hxx73
-rw-r--r--dbaccess/source/core/inc/viewcontainer.hxx115
-rw-r--r--dbaccess/source/core/misc/ContainerListener.cxx132
-rw-r--r--dbaccess/source/core/misc/ContainerMediator.cxx264
-rw-r--r--dbaccess/source/core/misc/DatabaseDataProvider.cxx1174
-rw-r--r--dbaccess/source/core/misc/PropertyForward.cxx175
-rw-r--r--dbaccess/source/core/misc/apitools.cxx147
-rw-r--r--dbaccess/source/core/misc/dbastrings.cxx50
-rw-r--r--dbaccess/source/core/misc/dsntypes.cxx633
-rw-r--r--dbaccess/source/core/misc/module_dba.cxx45
-rw-r--r--dbaccess/source/core/misc/objectnameapproval.cxx104
-rw-r--r--dbaccess/source/core/misc/sdbcoretools.cxx177
-rw-r--r--dbaccess/source/core/misc/services.cxx122
-rw-r--r--dbaccess/source/core/misc/userinformation.cxx51
-rw-r--r--dbaccess/source/core/misc/veto.cxx78
-rw-r--r--dbaccess/source/core/recovery/dbdocrecovery.cxx440
-rw-r--r--dbaccess/source/core/recovery/settingsimport.cxx297
-rw-r--r--dbaccess/source/core/recovery/settingsimport.hxx193
-rw-r--r--dbaccess/source/core/recovery/storagestream.cxx129
-rw-r--r--dbaccess/source/core/recovery/storagestream.hxx112
-rw-r--r--dbaccess/source/core/recovery/storagetextstream.cxx133
-rw-r--r--dbaccess/source/core/recovery/storagetextstream.hxx69
-rw-r--r--dbaccess/source/core/recovery/storagexmlstream.cxx200
-rw-r--r--dbaccess/source/core/recovery/storagexmlstream.hxx116
-rw-r--r--dbaccess/source/core/recovery/subcomponentloader.cxx203
-rw-r--r--dbaccess/source/core/recovery/subcomponentloader.hxx90
-rw-r--r--dbaccess/source/core/recovery/subcomponentrecovery.cxx705
-rw-r--r--dbaccess/source/core/recovery/subcomponentrecovery.hxx129
-rw-r--r--dbaccess/source/core/recovery/subcomponents.hxx91
-rw-r--r--dbaccess/source/core/resource/core_resource.cxx117
-rw-r--r--dbaccess/source/core/resource/strings.src371
164 files changed, 0 insertions, 54919 deletions
diff --git a/dbaccess/source/core/api/BookmarkSet.cxx b/dbaccess/source/core/api/BookmarkSet.cxx
deleted file mode 100644
index f9cf63233..000000000
--- a/dbaccess/source/core/api/BookmarkSet.cxx
+++ /dev/null
@@ -1,264 +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_dbaccess.hxx"
-#include "BookmarkSet.hxx"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
-#include <connectivity/dbexception.hxx>
-#include <rtl/logfile.hxx>
-
-#include <limits>
-
-using namespace dbaccess;
-using namespace ::connectivity;
-using namespace ::dbtools;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::osl;
-
-void OBookmarkSet::construct(const Reference< XResultSet>& _xDriverSet,const ::rtl::OUString& i_sRowSetFilter)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::construct" );
- OCacheSet::construct(_xDriverSet,i_sRowSetFilter);
- m_xRowLocate.set(_xDriverSet,UNO_QUERY);
-}
-
-Any SAL_CALL OBookmarkSet::getBookmark() throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::getBookmark" );
- return m_xRowLocate->getBookmark();
-}
-
-sal_Bool SAL_CALL OBookmarkSet::moveToBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::moveToBookmark" );
- return m_xRowLocate->moveToBookmark(bookmark);
-}
-
-sal_Bool SAL_CALL OBookmarkSet::moveRelativeToBookmark( const Any& bookmark, sal_Int32 rows ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::moveRelativeToBookmark" );
- return m_xRowLocate->moveRelativeToBookmark(bookmark,rows);
-}
-
-sal_Int32 SAL_CALL OBookmarkSet::compareBookmarks( const Any& _first, const Any& _second ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::compareBookmarks" );
- return m_xRowLocate->compareBookmarks(_first,_second);
-}
-
-sal_Bool SAL_CALL OBookmarkSet::hasOrderedBookmarks( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::hasOrderedBookmarks" );
- return m_xRowLocate->hasOrderedBookmarks();
-}
-
-sal_Int32 SAL_CALL OBookmarkSet::hashBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::hashBookmark" );
- return m_xRowLocate->hashBookmark(bookmark);
-}
-
-// ::com::sun::star::sdbcx::XDeleteRows
-Sequence< sal_Int32 > SAL_CALL OBookmarkSet::deleteRows( const Sequence< Any >& rows ,const connectivity::OSQLTable& /*_xTable*/) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::deleteRows" );
- Reference< ::com::sun::star::sdbcx::XDeleteRows> xDeleteRow(m_xRowLocate,UNO_QUERY);
- if(xDeleteRow.is())
- {
- return xDeleteRow->deleteRows(rows);
- }
- return Sequence< sal_Int32 >();
-}
-
-void SAL_CALL OBookmarkSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& /*_xTable*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::insertRow" );
- Reference<XRowUpdate> xUpdRow(m_xRowLocate,UNO_QUERY);
- if(!xUpdRow.is())
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_XROWUPDATE ), SQL_GENERAL_ERROR, *this );
-
- Reference<XResultSetUpdate> xUpd(m_xRowLocate,UNO_QUERY);
- if(xUpd.is())
- {
- xUpd->moveToInsertRow();
- sal_Int32 i = 1;
- connectivity::ORowVector< ORowSetValue > ::Vector::iterator aEnd = _rInsertRow->get().end();
- for(connectivity::ORowVector< ORowSetValue > ::Vector::iterator aIter = _rInsertRow->get().begin()+1;aIter != aEnd;++aIter,++i)
- {
- aIter->setSigned(m_aSignedFlags[i-1]);
- updateColumn(i,xUpdRow,*aIter);
- }
- xUpd->insertRow();
- (*_rInsertRow->get().begin()) = m_xRowLocate->getBookmark();
- }
- else
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_XRESULTSETUPDATE ), SQL_GENERAL_ERROR, *this );
-}
-
-void SAL_CALL OBookmarkSet::updateRow(const ORowSetRow& _rInsertRow ,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& /*_xTable*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::updateRow" );
- Reference<XRowUpdate> xUpdRow(m_xRowLocate,UNO_QUERY);
- if(!xUpdRow.is())
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_XROWUPDATE ), SQL_GENERAL_ERROR, *this );
-
- sal_Int32 i = 1;
- connectivity::ORowVector< ORowSetValue > ::Vector::const_iterator aOrgIter = _rOrginalRow->get().begin()+1;
- connectivity::ORowVector< ORowSetValue > ::Vector::iterator aEnd = _rInsertRow->get().end();
- for(connectivity::ORowVector< ORowSetValue > ::Vector::iterator aIter = _rInsertRow->get().begin()+1;aIter != aEnd;++aIter,++i,++aOrgIter)
- {
- aIter->setSigned(aOrgIter->isSigned());
- updateColumn(i,xUpdRow,*aIter);
- }
-
-
- Reference<XResultSetUpdate> xUpd(m_xRowLocate,UNO_QUERY);
- if(xUpd.is())
- xUpd->updateRow();
- else
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_XRESULTSETUPDATE ), SQL_GENERAL_ERROR, *this );
-}
-
-void SAL_CALL OBookmarkSet::deleteRow(const ORowSetRow& /*_rDeleteRow*/ ,const connectivity::OSQLTable& /*_xTable*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::deleteRow" );
- Reference<XResultSetUpdate> xUpd(m_xRowLocate,UNO_QUERY);
-
- xUpd->deleteRow();
-}
-
-void SAL_CALL OBookmarkSet::cancelRowUpdates( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::cancelRowUpdates" );
-}
-
-void SAL_CALL OBookmarkSet::moveToInsertRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::moveToInsertRow" );
- Reference<XResultSetUpdate> xUpd(m_xRowLocate,UNO_QUERY);
- if(xUpd.is())
- xUpd->moveToInsertRow();
-}
-
-void SAL_CALL OBookmarkSet::moveToCurrentRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::moveToCurrentRow" );
-}
-
-void OBookmarkSet::fillValueRow(ORowSetRow& _rRow,sal_Int32 _nPosition)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::fillValueRow" );
- OCacheSet::fillValueRow(_rRow,_nPosition);
-}
-
-void OBookmarkSet::updateColumn(sal_Int32 nPos,Reference< XRowUpdate > _xParameter,const ORowSetValue& _rValue)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OBookmarkSet::updateColumn" );
- if(_rValue.isBound() && _rValue.isModified())
- {
- if(_rValue.isNull())
- _xParameter->updateNull(nPos);
- else
- {
-
- switch(_rValue.getTypeKind())
- {
- case DataType::DECIMAL:
- case DataType::NUMERIC:
- _xParameter->updateNumericObject(nPos,_rValue.makeAny(),m_xSetMetaData->getScale(nPos));
- break;
- case DataType::CHAR:
- case DataType::VARCHAR:
- _xParameter->updateString(nPos,_rValue);
- break;
- case DataType::BIGINT:
- if ( _rValue.isSigned() )
- _xParameter->updateLong(nPos,_rValue);
- else
- _xParameter->updateString(nPos,_rValue);
- break;
- case DataType::BIT:
- case DataType::BOOLEAN:
- _xParameter->updateBoolean(nPos,_rValue);
- break;
- case DataType::TINYINT:
- if ( _rValue.isSigned() )
- _xParameter->updateByte(nPos,_rValue);
- else
- _xParameter->updateShort(nPos,_rValue);
- break;
- case DataType::SMALLINT:
- if ( _rValue.isSigned() )
- _xParameter->updateShort(nPos,_rValue);
- else
- _xParameter->updateInt(nPos,_rValue);
- break;
- case DataType::INTEGER:
- if ( _rValue.isSigned() )
- _xParameter->updateInt(nPos,_rValue);
- else
- _xParameter->updateLong(nPos,_rValue);
- break;
- case DataType::FLOAT:
- _xParameter->updateFloat(nPos,_rValue);
- break;
- case DataType::DOUBLE:
- case DataType::REAL:
- _xParameter->updateDouble(nPos,_rValue);
- break;
- case DataType::DATE:
- _xParameter->updateDate(nPos,_rValue);
- break;
- case DataType::TIME:
- _xParameter->updateTime(nPos,_rValue);
- break;
- case DataType::TIMESTAMP:
- _xParameter->updateTimestamp(nPos,_rValue);
- break;
- case DataType::BINARY:
- case DataType::VARBINARY:
- case DataType::LONGVARBINARY:
- _xParameter->updateBytes(nPos,_rValue);
- break;
- case DataType::BLOB:
- case DataType::CLOB:
- _xParameter->updateObject(nPos,_rValue.getAny());
- break;
- }
- }
- }
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/BookmarkSet.hxx b/dbaccess/source/core/api/BookmarkSet.hxx
deleted file mode 100644
index 1b7b8052c..000000000
--- a/dbaccess/source/core/api/BookmarkSet.hxx
+++ /dev/null
@@ -1,73 +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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_CORE_API_BOOKMARKSET_HXX
-#define DBACCESS_CORE_API_BOOKMARKSET_HXX
-
-#include "CacheSet.hxx"
-#include <com/sun/star/sdbc/XRowUpdate.hpp>
-
-namespace dbaccess
-{
- // this set is used when we have a bookmarkable set from the driver
- class OBookmarkSet : public OCacheSet
- {
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XRowLocate> m_xRowLocate;
-
- void updateColumn(sal_Int32 nPos,::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowUpdate > _xParameter,const connectivity::ORowSetValue& _rValue);
- public:
- OBookmarkSet(sal_Int32 i_nMaxRows) : OCacheSet(i_nMaxRows)
- {}
- ~OBookmarkSet()
- {
- m_xRowLocate = NULL;
- }
-
- virtual void construct(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDriverSet,const ::rtl::OUString& i_sRowSetFilter);
- virtual void fillValueRow(ORowSetRow& _rRow,sal_Int32 _nPosition);
- // ::com::sun::star::sdbcx::XRowLocate
- virtual ::com::sun::star::uno::Any SAL_CALL getBookmark() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveToBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL compareBookmarks( const ::com::sun::star::uno::Any& first, const ::com::sun::star::uno::Any& second ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL hashBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbcx::XDeleteRows
- virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rows ,const connectivity::OSQLTable& _xTable) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbc::XResultSetUpdate
- virtual void SAL_CALL insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateRow(const ORowSetRow& _rInsertRow,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL deleteRow(const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- };
-}
-#endif // DBACCESS_CORE_API_BOOKMARKSET_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/CIndexColumn.hxx b/dbaccess/source/core/api/CIndexColumn.hxx
deleted file mode 100644
index 3bd08da3d..000000000
--- a/dbaccess/source/core/api/CIndexColumn.hxx
+++ /dev/null
@@ -1,60 +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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_INDEXCOLUMN_HXX_
-#define DBACCESS_INDEXCOLUMN_HXX_
-
-#include "adabas/BColumn.hxx"
-
-namespace connectivity
-{
- namespace adabas
- {
- class OIndexColumn : public OAdabasColumn
- {
- protected:
- sal_Bool m_IsAscending;
- public:
- OIndexColumn();
- OIndexColumn( sal_Bool _IsAscending,
- const ::rtl::OUString& _Name,
- const ::rtl::OUString& _TypeName,
- const ::rtl::OUString& _DefaultValue,
- sal_Int32 _IsNullable,
- sal_Int32 _Precision,
- sal_Int32 _Scale,
- sal_Int32 _Type,
- sal_Bool _IsAutoIncrement);
-
- virtual void construct();
- };
- }
-}
-#endif // DBACCESS_INDEXCOLUMN_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/CIndexes.cxx b/dbaccess/source/core/api/CIndexes.cxx
deleted file mode 100644
index 8ea223cff..000000000
--- a/dbaccess/source/core/api/CIndexes.cxx
+++ /dev/null
@@ -1,104 +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_dbaccess.hxx"
-#include "CIndexes.hxx"
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XResultSet.hpp>
-#include <com/sun/star/sdbc/IndexType.hpp>
-#include "dbastrings.hrc"
-#include <connectivity/dbtools.hxx>
-#include <comphelper/extract.hxx>
-#include <tools/debug.hxx>
-
-
-using namespace connectivity;
-using namespace connectivity::sdbcx;
-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;
-using namespace dbaccess;
-using namespace cppu;
-
-
-ObjectType OIndexes::createObject(const ::rtl::OUString& _rName)
-{
- ObjectType xRet;
- if ( m_xIndexes.is() && m_xIndexes->hasByName(_rName) )
- xRet.set(m_xIndexes->getByName(_rName),UNO_QUERY);
- else
- xRet = OIndexesHelper::createObject(_rName);
-
- return xRet;
-}
-
-Reference< XPropertySet > OIndexes::createDescriptor()
-{
- Reference<XDataDescriptorFactory> xData( m_xIndexes,UNO_QUERY);
- if(xData.is())
- return xData->createDataDescriptor();
- else
- return OIndexesHelper::createDescriptor();
-}
-
-// XAppend
-ObjectType OIndexes::appendObject( const ::rtl::OUString& _rForName, const Reference< XPropertySet >& descriptor )
-{
- Reference<XAppend> xData( m_xIndexes,UNO_QUERY);
- if ( !xData.is() )
- return OIndexesHelper::appendObject( _rForName, descriptor );
-
- xData->appendByDescriptor(descriptor);
- return createObject( _rForName );
-}
-
-// XDrop
-void OIndexes::dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName)
-{
- if ( m_xIndexes.is() )
- {
- Reference<XDrop> xData( m_xIndexes,UNO_QUERY);
- if ( xData.is() )
- xData->dropByName(_sElementName);
- }
- else
- OIndexesHelper::dropObject(_nPos,_sElementName);
-}
-
-void SAL_CALL OIndexes::disposing(void)
-{
- if ( m_xIndexes.is() )
- clear_NoDispose();
- else
- OIndexesHelper::disposing();
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/CIndexes.hxx b/dbaccess/source/core/api/CIndexes.hxx
deleted file mode 100644
index ec58d93f9..000000000
--- a/dbaccess/source/core/api/CIndexes.hxx
+++ /dev/null
@@ -1,59 +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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_INDEXES_HXX_
-#define DBACCESS_INDEXES_HXX_
-
-#include "connectivity/TIndexes.hxx"
-
-namespace dbaccess
-{
- class OIndexes : public connectivity::OIndexesHelper
- {
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xIndexes;
- protected:
- virtual connectivity::sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createDescriptor();
- virtual connectivity::sdbcx::ObjectType appendObject( const ::rtl::OUString& _rForName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& descriptor );
- virtual void dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName);
- public:
- OIndexes(connectivity::OTableHelper* _pTable,
- ::osl::Mutex& _rMutex,
- const ::std::vector< ::rtl::OUString> &_rVector,
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxIndexes
- ) : connectivity::OIndexesHelper(_pTable,_rMutex,_rVector)
- ,m_xIndexes(_rxIndexes)
- {}
-
- virtual void SAL_CALL disposing(void);
- };
-}
-
-#endif // DBACCESS_INDEXES_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/CRowSetColumn.cxx b/dbaccess/source/core/api/CRowSetColumn.cxx
deleted file mode 100644
index 444169cf9..000000000
--- a/dbaccess/source/core/api/CRowSetColumn.cxx
+++ /dev/null
@@ -1,103 +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_dbaccess.hxx"
-
-#include "dbastrings.hrc"
-#include "apitools.hxx"
-#include "CRowSetColumn.hxx"
-
-#include <com/sun/star/sdb/XColumn.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-
-#include <comphelper/types.hxx>
-#include <cppuhelper/typeprovider.hxx>
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::beans;
-
-namespace dbaccess
-{
-
-ORowSetColumn::ORowSetColumn( const Reference < XResultSetMetaData >& _xMetaData, const Reference < XRow >& _xRow, sal_Int32 _nPos,
- const Reference< XDatabaseMetaData >& _rxDBMeta, const ::rtl::OUString& _rDescription, const ::rtl::OUString& i_sLabel,ORowSetCacheIterator& _rColumnValue )
- :ORowSetDataColumn( _xMetaData, _xRow, NULL, _nPos, _rxDBMeta, _rDescription, i_sLabel,_rColumnValue )
-{
-}
-
-::cppu::IPropertyArrayHelper* ORowSetColumn::createArrayHelper( ) const
-{
- BEGIN_PROPERTY_SEQUENCE(21)
-
- DECL_PROP1( CATALOGNAME, ::rtl::OUString, READONLY );
- DECL_PROP1( DISPLAYSIZE, sal_Int32, READONLY );
- DECL_PROP1_BOOL( ISAUTOINCREMENT, READONLY );
- DECL_PROP1_BOOL( ISCASESENSITIVE, READONLY );
- DECL_PROP1_BOOL( ISCURRENCY, READONLY );
- DECL_PROP1_BOOL( ISDEFINITELYWRITABLE, READONLY );
- DECL_PROP1( ISNULLABLE, sal_Int32, READONLY );
- DECL_PROP1_BOOL( ISREADONLY, BOUND );
- DECL_PROP1_BOOL( ISROWVERSION, READONLY );
- DECL_PROP1_BOOL( ISSEARCHABLE, READONLY );
- DECL_PROP1_BOOL( ISSIGNED, READONLY );
- DECL_PROP1_BOOL( ISWRITABLE, READONLY );
- DECL_PROP1( LABEL, ::rtl::OUString, READONLY );
- DECL_PROP1( PRECISION, sal_Int32, READONLY );
- DECL_PROP1( SCALE, sal_Int32, READONLY );
- DECL_PROP1( SCHEMANAME, ::rtl::OUString, READONLY );
- DECL_PROP1( SERVICENAME, ::rtl::OUString, READONLY );
- DECL_PROP1( TABLENAME, ::rtl::OUString, READONLY );
- DECL_PROP1( TYPE, sal_Int32, READONLY );
- DECL_PROP1( TYPENAME, ::rtl::OUString, READONLY );
- DECL_PROP2( VALUE, Any, READONLY, BOUND );
-
- END_PROPERTY_SEQUENCE()
-
- Sequence< Property > aRegisteredProperties;
- describeProperties( aRegisteredProperties );
-
- return new ::cppu::OPropertyArrayHelper( ::comphelper::concatSequences( aDescriptor, aRegisteredProperties ), sal_False );
-}
-
-::cppu::IPropertyArrayHelper& ORowSetColumn::getInfoHelper()
-{
- return *static_cast< ::comphelper::OPropertyArrayUsageHelper< ORowSetColumn >* >(this)->getArrayHelper();
-}
-
-void SAL_CALL ORowSetColumn::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rValue )throw (Exception)
-{
- OSL_ENSURE( nHandle != PROPERTY_ID_VALUE, "ORowSetColumn::setFastPropertyValue_NoBroadcast: hmm? This property is marked as READONLY!" );
- if ( nHandle != PROPERTY_ID_VALUE )
- ORowSetDataColumn::setFastPropertyValue_NoBroadcast( nHandle, rValue );
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/CRowSetColumn.hxx b/dbaccess/source/core/api/CRowSetColumn.hxx
deleted file mode 100644
index f2c84a3b2..000000000
--- a/dbaccess/source/core/api/CRowSetColumn.hxx
+++ /dev/null
@@ -1,61 +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.
- *
- ************************************************************************/
-#ifndef DBACCESS_CORE_API_CROWSETCOLUMN_HXX
-#define DBACCESS_CORE_API_CROWSETCOLUMN_HXX
-
-#include "RowSetRow.hxx"
-#include <connectivity/CommonTools.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include "CRowSetDataColumn.hxx"
-
-namespace dbaccess
-{
- class ORowSetColumn;
- class ORowSetColumn :public ORowSetDataColumn
- ,public ::comphelper::OPropertyArrayUsageHelper< ORowSetColumn >
-
- {
- public:
- ORowSetColumn( const ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XResultSetMetaData >& _xMetaData,
- const ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XRow >& _xRow,
- sal_Int32 _nPos,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rxDBMeta,
- const ::rtl::OUString& _rDescription,
- const ::rtl::OUString& i_sLabel,
- ORowSetCacheIterator& _rColumnValue);
-
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle,const ::com::sun::star::uno::Any& rValue )throw (::com::sun::star::uno::Exception );
- };
-
-}
-
-#endif // DBACCESS_CORE_API_CROWSETCOLUMN_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/CRowSetDataColumn.cxx b/dbaccess/source/core/api/CRowSetDataColumn.cxx
deleted file mode 100644
index 0aa72ec7e..000000000
--- a/dbaccess/source/core/api/CRowSetDataColumn.cxx
+++ /dev/null
@@ -1,269 +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_dbaccess.hxx"
-
-#include "CRowSetDataColumn.hxx"
-#include "dbastrings.hrc"
-#include "apitools.hxx"
-#include <comphelper/types.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <tools/debug.hxx>
-
-using namespace dbaccess;
-using namespace comphelper;
-using namespace connectivity;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::util;
-using namespace cppu;
-using namespace osl;
-
-DBG_NAME(ORowSetDataColumn)
-
-ORowSetDataColumn::ORowSetDataColumn( const Reference < XResultSetMetaData >& _xMetaData,
- const Reference < XRow >& _xRow,
- const Reference < XRowUpdate >& _xRowUpdate,
- sal_Int32 _nPos,
- const Reference< XDatabaseMetaData >& _rxDBMeta,
- const ::rtl::OUString& _rDescription,
- const ::rtl::OUString& i_sLabel,
- const ORowSetCacheIterator& _rColumnValue)
- :ODataColumn(_xMetaData,_xRow,_xRowUpdate,_nPos,_rxDBMeta)
- ,m_aColumnValue(_rColumnValue)
- ,m_sLabel(i_sLabel)
- ,m_aDescription(_rDescription)
-{
- DBG_CTOR(ORowSetDataColumn,NULL);
- OColumnSettings::registerProperties( *this );
- registerProperty( PROPERTY_DESCRIPTION, PROPERTY_ID_DESCRIPTION, PropertyAttribute::READONLY, &m_aDescription, ::getCppuType( &m_aDescription ) );
-}
-
-ORowSetDataColumn::~ORowSetDataColumn()
-{
- DBG_DTOR(ORowSetDataColumn,NULL);
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* ORowSetDataColumn::createArrayHelper( ) const
-{
- BEGIN_PROPERTY_SEQUENCE(21)
-
- DECL_PROP1( CATALOGNAME, ::rtl::OUString, READONLY );
- DECL_PROP1( DISPLAYSIZE, sal_Int32, READONLY );
- DECL_PROP1_BOOL( ISAUTOINCREMENT, READONLY );
- DECL_PROP1_BOOL( ISCASESENSITIVE, READONLY );
- DECL_PROP1_BOOL( ISCURRENCY, READONLY );
- DECL_PROP1_BOOL( ISDEFINITELYWRITABLE, READONLY );
- DECL_PROP1( ISNULLABLE, sal_Int32, READONLY );
- DECL_PROP1_BOOL( ISREADONLY, BOUND );
- DECL_PROP1_BOOL( ISROWVERSION, READONLY );
- DECL_PROP1_BOOL( ISSEARCHABLE, READONLY );
- DECL_PROP1_BOOL( ISSIGNED, READONLY );
- DECL_PROP1_BOOL( ISWRITABLE, READONLY );
- DECL_PROP1( LABEL, ::rtl::OUString, READONLY );
- DECL_PROP1( PRECISION, sal_Int32, READONLY );
- DECL_PROP1( SCALE, sal_Int32, READONLY );
- DECL_PROP1( SCHEMANAME, ::rtl::OUString, READONLY );
- DECL_PROP1( SERVICENAME, ::rtl::OUString, READONLY );
- DECL_PROP1( TABLENAME, ::rtl::OUString, READONLY );
- DECL_PROP1( TYPE, sal_Int32, READONLY );
- DECL_PROP1( TYPENAME, ::rtl::OUString, READONLY );
- DECL_PROP1( VALUE, Any, BOUND );
-
- END_PROPERTY_SEQUENCE()
-
- Sequence< Property > aRegisteredProperties;
- describeProperties( aRegisteredProperties );
-
- return new ::cppu::OPropertyArrayHelper( ::comphelper::concatSequences( aDescriptor, aRegisteredProperties ), sal_False );
-}
-
-// cppu::OPropertySetHelper
-::cppu::IPropertyArrayHelper& ORowSetDataColumn::getInfoHelper()
-{
- return *static_cast< ::comphelper::OPropertyArrayUsageHelper< ORowSetDataColumn >* >(this)->getArrayHelper();
-}
-
-void SAL_CALL ORowSetDataColumn::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const
-{
- if ( PROPERTY_ID_VALUE == nHandle )
- {
- if ( !m_aColumnValue.isNull() && m_aColumnValue->is() )
- {
- ::osl::Mutex* pMutex = m_aColumnValue.getMutex();
- ::osl::MutexGuard aGuard( *pMutex );
-#if OSL_DEBUG_LEVEL > 0
- ORowSetRow aRow = *m_aColumnValue;
-#endif
- OSL_ENSURE((sal_Int32)aRow->get().size() > m_nPos,"Pos is greater than size of vector");
- rValue = ((*m_aColumnValue)->get())[m_nPos].makeAny();
- }
- }
- else if ( PROPERTY_ID_LABEL == nHandle && m_sLabel.getLength() )
- rValue <<= m_sLabel;
- else
- ODataColumn::getFastPropertyValue( rValue, nHandle );
-}
-
-void SAL_CALL ORowSetDataColumn::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rValue )throw (Exception)
-{
- switch( nHandle )
- {
- case PROPERTY_ID_VALUE:
- updateObject(rValue);
- break;
- case PROPERTY_ID_ISREADONLY:
- {
- sal_Bool bVal = sal_False;
- rValue >>= bVal;
- m_isReadOnly.reset(bVal);
- }
- break;
- default:
- ODataColumn::setFastPropertyValue_NoBroadcast( nHandle,rValue );
- break;
- }
-}
-
-sal_Bool SAL_CALL ORowSetDataColumn::convertFastPropertyValue( Any & rConvertedValue,
- Any & rOldValue,
- sal_Int32 nHandle,
- const Any& rValue ) throw (IllegalArgumentException)
-{
- sal_Bool bModified = sal_False;
- switch( nHandle )
- {
- case PROPERTY_ID_VALUE:
- {
- rConvertedValue = rValue;
- getFastPropertyValue(rOldValue, PROPERTY_ID_VALUE);
- bModified = rConvertedValue != rOldValue;
- }
- break;
- case PROPERTY_ID_ISREADONLY:
- {
- rConvertedValue = rValue;
- getFastPropertyValue(rOldValue, PROPERTY_ID_ISREADONLY);
- bModified = rConvertedValue != rOldValue;
- }
- break;
- default:
- bModified = ODataColumn::convertFastPropertyValue(rConvertedValue, rOldValue, nHandle, rValue);
- break;
- }
-
- return bModified;
-}
-
-Sequence< sal_Int8 > ORowSetDataColumn::getImplementationId() throw (RuntimeException)
-{
- static OImplementationId * pId = 0;
- if (! pId)
- {
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- if (! pId)
- {
- static OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-void ORowSetDataColumn::fireValueChange(const ORowSetValue& _rOldValue)
-{
- if ( !m_aColumnValue.isNull() && m_aColumnValue->is() && (((*m_aColumnValue)->get())[m_nPos] != _rOldValue) )
- {
- sal_Int32 nHandle = PROPERTY_ID_VALUE;
- m_aOldValue = _rOldValue.makeAny();
- Any aNew = ((*m_aColumnValue)->get())[m_nPos].makeAny();
-
- fire(&nHandle, &aNew, &m_aOldValue, 1, sal_False );
- }
- else if ( !m_aColumnValue.isNull() && !_rOldValue.isNull() )
- {
- sal_Int32 nHandle = PROPERTY_ID_VALUE;
- m_aOldValue = _rOldValue.makeAny();
- Any aNew;
-
- fire(&nHandle, &aNew, &m_aOldValue, 1, sal_False );
- }
-}
-
-DBG_NAME(ORowSetDataColumns )
-ORowSetDataColumns::ORowSetDataColumns(
- sal_Bool _bCase,
- const ::rtl::Reference< ::connectivity::OSQLColumns>& _rColumns,
- ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- const ::std::vector< ::rtl::OUString> &_rVector
- ) : connectivity::sdbcx::OCollection(_rParent,_bCase,_rMutex,_rVector)
- ,m_aColumns(_rColumns)
-{
- DBG_CTOR(ORowSetDataColumns ,NULL);
-}
-
-ORowSetDataColumns::~ORowSetDataColumns()
-{
- DBG_DTOR(ORowSetDataColumns ,NULL);
-}
-
-sdbcx::ObjectType ORowSetDataColumns::createObject(const ::rtl::OUString& _rName)
-{
- connectivity::sdbcx::ObjectType xNamed;
-
- ::comphelper::UStringMixEqual aCase(isCaseSensitive());
- ::connectivity::OSQLColumns::Vector::const_iterator first = ::connectivity::find(m_aColumns->get().begin(),m_aColumns->get().end(),_rName,aCase);
- if(first != m_aColumns->get().end())
- xNamed.set(*first,UNO_QUERY);
-
- return xNamed;
-}
-
-void SAL_CALL ORowSetDataColumns::disposing(void)
-{
- ORowSetDataColumns_BASE::disposing();
- m_aColumns = NULL;
-}
-
-void ORowSetDataColumns::assign(const ::rtl::Reference< ::connectivity::OSQLColumns>& _rColumns,const ::std::vector< ::rtl::OUString> &_rVector)
-{
- m_aColumns = _rColumns;
- reFill(_rVector);
-}
-
-void ORowSetDataColumns::impl_refresh() throw(::com::sun::star::uno::RuntimeException)
-{
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/CRowSetDataColumn.hxx b/dbaccess/source/core/api/CRowSetDataColumn.hxx
deleted file mode 100644
index 477328ef8..000000000
--- a/dbaccess/source/core/api/CRowSetDataColumn.hxx
+++ /dev/null
@@ -1,112 +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.
- *
- ************************************************************************/
-#ifndef DBACCESS_CORE_API_CROWSETDATACOLUMN_HXX
-#define DBACCESS_CORE_API_CROWSETDATACOLUMN_HXX
-
-#include "datacolumn.hxx"
-#include "RowSetRow.hxx"
-#include "RowSetCacheIterator.hxx"
-#include "columnsettings.hxx"
-
-#include <connectivity/CommonTools.hxx>
-#include <comphelper/proparrhlp.hxx>
-
-namespace dbaccess
-{
- class ORowSetDataColumn;
- typedef ::comphelper::OPropertyArrayUsageHelper<ORowSetDataColumn> ORowSetDataColumn_PROP;
-
- class ORowSetDataColumn : public ODataColumn,
- public OColumnSettings,
- public ORowSetDataColumn_PROP
- {
- protected:
- ORowSetCacheIterator m_aColumnValue;
- ::com::sun::star::uno::Any m_aOldValue;
-
- ::rtl::OUString m_sLabel;
- ::rtl::OUString m_aDescription; // description
- ORowSetBase* m_pRowSet;
-
- virtual ~ORowSetDataColumn();
- public:
- ORowSetDataColumn(const ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XResultSetMetaData >& _xMetaData,
- const ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XRow >& _xRow,
- const ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XRowUpdate >& _xRowUpdate,
- sal_Int32 _nPos,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rxDBMeta,
- const ::rtl::OUString& _rDescription,
- const ::rtl::OUString& i_sLabel,
- const ORowSetCacheIterator& _rColumnValue);
-
-
- // com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
- // comphelper::OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
- // cppu::OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- virtual sal_Bool SAL_CALL convertFastPropertyValue( ::com::sun::star::uno::Any & rConvertedValue,
- ::com::sun::star::uno::Any & rOldValue,
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue ) throw (::com::sun::star::lang::IllegalArgumentException);
- virtual void SAL_CALL getFastPropertyValue( ::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const;
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const ::com::sun::star::uno::Any& rValue )throw (::com::sun::star::uno::Exception);
-
- virtual void fireValueChange(const ::connectivity::ORowSetValue& _rOldValue);
- protected:
- using ODataColumn::getFastPropertyValue;
- };
-
- typedef connectivity::sdbcx::OCollection ORowSetDataColumns_BASE;
- class ORowSetDataColumns : public ORowSetDataColumns_BASE
- {
- ::rtl::Reference< ::connectivity::OSQLColumns> m_aColumns;
- protected:
- virtual connectivity::sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
- virtual void impl_refresh() throw(::com::sun::star::uno::RuntimeException);
- public:
- ORowSetDataColumns(
- sal_Bool _bCase,
- const ::rtl::Reference< ::connectivity::OSQLColumns>& _rColumns,
- ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- const ::std::vector< ::rtl::OUString> &_rVector
- );
- virtual ~ORowSetDataColumns();
- // only the name is identical to ::cppu::OComponentHelper
- virtual void SAL_CALL disposing(void);
- void assign(const ::rtl::Reference< ::connectivity::OSQLColumns>& _rColumns,const ::std::vector< ::rtl::OUString> &_rVector);
- };
-}
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/CacheSet.cxx b/dbaccess/source/core/api/CacheSet.cxx
deleted file mode 100644
index 39121e0c2..000000000
--- a/dbaccess/source/core/api/CacheSet.cxx
+++ /dev/null
@@ -1,716 +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_dbaccess.hxx"
-#include "CacheSet.hxx"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include <com/sun/star/sdbcx/CompareBookmark.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-#include <com/sun/star/sdbc/XPreparedStatement.hpp>
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <com/sun/star/sdbc/XParameters.hpp>
-#include "dbastrings.hrc"
-#include <com/sun/star/sdbcx/XKeysSupplier.hpp>
-#include <com/sun/star/sdbcx/XIndexesSupplier.hpp>
-
-#include <limits>
-
-#include <connectivity/dbtools.hxx>
-#include <com/sun/star/sdbcx/KeyType.hpp>
-#include <comphelper/extract.hxx>
-#include <com/sun/star/io/XInputStream.hpp>
-#include <comphelper/types.hxx>
-#include <tools/debug.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <rtl/logfile.hxx>
-
-using namespace comphelper;
-
-using namespace dbaccess;
-using namespace dbtools;
-using namespace connectivity;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::io;
-using namespace ::osl;
-
-DBG_NAME(OCacheSet)
-
-OCacheSet::OCacheSet(sal_Int32 i_nMaxRows)
- :m_nMaxRows(i_nMaxRows)
- ,m_bInserted(sal_False)
- ,m_bUpdated(sal_False)
- ,m_bDeleted(sal_False)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::OCacheSet" );
- DBG_CTOR(OCacheSet,NULL);
-
-}
-
-::rtl::OUString OCacheSet::getIdentifierQuoteString() const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getIdentifierQuoteString" );
- ::rtl::OUString sQuote;
- Reference<XDatabaseMetaData> xMeta;
- if ( m_xConnection.is() && (xMeta = m_xConnection->getMetaData()).is() )
- sQuote = xMeta->getIdentifierQuoteString();
- return sQuote;
-}
-
-void OCacheSet::construct( const Reference< XResultSet>& _xDriverSet,const ::rtl::OUString& /*i_sRowSetFilter*/)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::construct" );
- OSL_ENSURE(_xDriverSet.is(),"Invalid resultSet");
- if(_xDriverSet.is())
- {
- m_xDriverSet = _xDriverSet;
- m_xDriverRow.set(_xDriverSet,UNO_QUERY);
- m_xSetMetaData = Reference<XResultSetMetaDataSupplier>(_xDriverSet,UNO_QUERY)->getMetaData();
- if ( m_xSetMetaData.is() )
- {
- const sal_Int32 nCount = m_xSetMetaData->getColumnCount();
- m_aNullable.realloc(nCount);
- m_aSignedFlags.realloc(nCount);
- m_aColumnTypes.realloc(nCount);
- sal_Bool* pNullableIter = m_aNullable.getArray();
- sal_Bool* pSignedIter = m_aSignedFlags.getArray();
- sal_Int32* pColumnIter = m_aColumnTypes.getArray();
- for (sal_Int32 i=1; i <= nCount; ++i,++pSignedIter,++pColumnIter,++pNullableIter)
- {
- *pNullableIter = m_xSetMetaData->isNullable(i) != ColumnValue::NO_NULLS;
- *pSignedIter = m_xSetMetaData->isSigned(i);
- *pColumnIter = m_xSetMetaData->getColumnType(i);
- }
- }
- Reference< XStatement> xStmt(m_xDriverSet->getStatement(),UNO_QUERY);
- if(xStmt.is())
- m_xConnection = xStmt->getConnection();
- else
- {
- Reference< XPreparedStatement> xPrepStmt(m_xDriverSet->getStatement(),UNO_QUERY);
- if ( xPrepStmt.is() )
- m_xConnection = xPrepStmt->getConnection();
- }
- }
-}
-
-OCacheSet::~OCacheSet()
-{
- try
- {
- m_xDriverSet = NULL;
- m_xDriverRow = NULL;
- m_xSetMetaData = NULL;
- m_xConnection = NULL;
- }
- catch(Exception&)
- {
- OSL_FAIL("Exception occurred");
- }
- catch(...)
- {
- OSL_FAIL("Unknown Exception occurred");
- }
-
- DBG_DTOR(OCacheSet,NULL);
-}
-
-void OCacheSet::fillTableName(const Reference<XPropertySet>& _xTable) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::fillTableName" );
- OSL_ENSURE(_xTable.is(),"OCacheSet::fillTableName: PropertySet is empty!");
- if(!m_aComposedTableName.getLength() && _xTable.is() )
- {
- Reference<XDatabaseMetaData> xMeta(m_xConnection->getMetaData());
- m_aComposedTableName = composeTableName(xMeta
- ,comphelper::getString(_xTable->getPropertyValue(PROPERTY_CATALOGNAME))
- ,comphelper::getString(_xTable->getPropertyValue(PROPERTY_SCHEMANAME))
- ,comphelper::getString(_xTable->getPropertyValue(PROPERTY_NAME))
- ,sal_True
- ,::dbtools::eInDataManipulation);
- }
-}
-
-void SAL_CALL OCacheSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::insertRow" );
- ::rtl::OUStringBuffer aSql(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("INSERT INTO ")));
- Reference<XPropertySet> xSet(_xTable,UNO_QUERY);
- fillTableName(xSet);
-
- aSql.append(m_aComposedTableName);
- aSql.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" ( ")));
- // set values and column names
- ::rtl::OUStringBuffer aValues = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" VALUES ( "));
- static ::rtl::OUString aPara(RTL_CONSTASCII_USTRINGPARAM("?,"));
- ::rtl::OUString aQuote = getIdentifierQuoteString();
- static ::rtl::OUString aComma(RTL_CONSTASCII_USTRINGPARAM(","));
- sal_Int32 i = 1;
- ORowVector< ORowSetValue >::Vector::const_iterator aIter = _rInsertRow->get().begin()+1;
- connectivity::ORowVector< ORowSetValue > ::Vector::iterator aEnd = _rInsertRow->get().end();
- for(; aIter != aEnd;++aIter)
- {
- aSql.append(::dbtools::quoteName( aQuote,m_xSetMetaData->getColumnName(i++)));
- aSql.append(aComma);
- aValues.append(aPara);
- }
-
- aSql.setCharAt(aSql.getLength()-1,')');
- aValues.setCharAt(aValues.getLength()-1,')');
-
- aSql.append(aValues.makeStringAndClear());
- // now create end execute the prepared statement
- {
- Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(aSql.makeStringAndClear()));
- Reference< XParameters > xParameter(xPrep,UNO_QUERY);
- i = 1;
- for(aIter = _rInsertRow->get().begin()+1; aIter != aEnd;++aIter,++i)
- {
- if(aIter->isNull())
- xParameter->setNull(i,aIter->getTypeKind());
- else
- setParameter(i,xParameter,*aIter,m_xSetMetaData->getColumnType(i),m_xSetMetaData->getScale(i));
- }
-
- m_bInserted = xPrep->executeUpdate() > 0;
- }
-
- // TODO set the bookmark in the insert row
-}
-
-void OCacheSet::fillParameters( const ORowSetRow& _rRow
- ,const connectivity::OSQLTable& _xTable
- ,::rtl::OUStringBuffer& _sCondition
- ,::rtl::OUStringBuffer& _sParameter
- ,::std::list< sal_Int32>& _rOrgValues)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::fillParameters" );
- // use keys and indexes for exact positioning
- // first the keys
- Reference<XPropertySet> xSet(_xTable,UNO_QUERY);
- const Reference<XNameAccess> xPrimaryKeyColumns = getPrimaryKeyColumns_throw(xSet);
- // second the indexes
- Reference<XIndexesSupplier> xIndexSup(_xTable,UNO_QUERY);
- Reference<XIndexAccess> xIndexes;
- if(xIndexSup.is())
- xIndexes.set(xIndexSup->getIndexes(),UNO_QUERY);
-
- // Reference<XColumnsSupplier>
- Reference<XPropertySet> xIndexColsSup;
- Reference<XNameAccess> xIndexColumns;
- ::std::vector< Reference<XNameAccess> > aAllIndexColumns;
- if(xIndexes.is())
- {
- for(sal_Int32 j=0;j<xIndexes->getCount();++j)
- {
- xIndexColsSup.set(xIndexes->getByIndex(j),UNO_QUERY);
- if( xIndexColsSup.is()
- && comphelper::getBOOL(xIndexColsSup->getPropertyValue(PROPERTY_ISUNIQUE))
- && !comphelper::getBOOL(xIndexColsSup->getPropertyValue(PROPERTY_ISPRIMARYKEYINDEX))
- )
- aAllIndexColumns.push_back(Reference<XColumnsSupplier>(xIndexColsSup,UNO_QUERY)->getColumns());
- }
- }
-
- ::rtl::OUString aColumnName;
-
- static ::rtl::OUString aPara(RTL_CONSTASCII_USTRINGPARAM("?,"));
- static ::rtl::OUString aAnd(RTL_CONSTASCII_USTRINGPARAM(" AND "));
-
- ::rtl::OUString aQuote = getIdentifierQuoteString();
-
- sal_Int32 nCheckCount = 1; // index for the orginal values
- sal_Int32 i = 1;
-
- ::rtl::OUString sIsNull(RTL_CONSTASCII_USTRINGPARAM(" IS NULL"));
- ::rtl::OUString sParam(RTL_CONSTASCII_USTRINGPARAM(" = ?"));
- ORowVector< ORowSetValue >::Vector::const_iterator aIter = _rRow->get().begin()+1;
- ORowVector< ORowSetValue >::Vector::const_iterator aEnd = _rRow->get().end()+1;
- for(; aIter != aEnd;++aIter,++nCheckCount,++i)
- {
- aColumnName = m_xSetMetaData->getColumnName(i);
- if(xPrimaryKeyColumns.is() && xPrimaryKeyColumns->hasByName(aColumnName))
- {
- _sCondition.append(::dbtools::quoteName( aQuote,aColumnName));
- if(aIter->isNull())
- _sCondition.append(sIsNull);
- else
- _sCondition.append(sParam);
- _sCondition.append(aAnd);
- _rOrgValues.push_back(nCheckCount);
-
- }
- ::std::vector< Reference<XNameAccess> >::const_iterator aIndexEnd = aAllIndexColumns.end();
- for( ::std::vector< Reference<XNameAccess> >::const_iterator aIndexIter = aAllIndexColumns.begin();
- aIndexIter != aIndexEnd;++aIndexIter)
- {
- if((*aIndexIter)->hasByName(aColumnName))
- {
- _sCondition.append(::dbtools::quoteName( aQuote,aColumnName));
- if(aIter->isNull())
- _sCondition.append(sIsNull);
- else
- _sCondition.append(sParam);
- _sCondition.append(aAnd);
- _rOrgValues.push_back(nCheckCount);
- break;
- }
- }
- if(aIter->isModified())
- {
- _sParameter.append(::dbtools::quoteName( aQuote,aColumnName));
- _sParameter.append(aPara);
- }
- }
-}
-
-void SAL_CALL OCacheSet::updateRow(const ORowSetRow& _rInsertRow ,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& _xTable ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::updateRow" );
- Reference<XPropertySet> xSet(_xTable,UNO_QUERY);
- fillTableName(xSet);
-
- ::rtl::OUStringBuffer aSql = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UPDATE "));
- aSql.append(m_aComposedTableName);
- aSql.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" SET ")));
- // list all cloumns that should be set
-
- ::rtl::OUStringBuffer aCondition;
- ::std::list< sal_Int32> aOrgValues;
- fillParameters(_rInsertRow,_xTable,aCondition,aSql,aOrgValues);
- aSql.setCharAt(aSql.getLength()-1,' ');
- if ( aCondition.getLength() )
- {
- aCondition.setLength(aCondition.getLength()-5);
-
- aSql.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" WHERE ")));
- aSql.append(aCondition.makeStringAndClear());
- }
- else
- ::dbtools::throwSQLException(
- DBACORE_RESSTRING( RID_STR_NO_UPDATE_MISSING_CONDITION ), SQL_GENERAL_ERROR, *this );
-
- // now create end execute the prepared statement
- Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(aSql.makeStringAndClear()));
- Reference< XParameters > xParameter(xPrep,UNO_QUERY);
- sal_Int32 i = 1;
- connectivity::ORowVector< ORowSetValue > ::Vector::iterator aEnd = _rInsertRow->get().end();
- for(ORowVector< ORowSetValue >::Vector::const_iterator aIter = _rInsertRow->get().begin()+1; aIter != aEnd;++aIter)
- {
- if(aIter->isModified())
- {
- setParameter(i,xParameter,*aIter,m_xSetMetaData->getColumnType(i),m_xSetMetaData->getScale(i));
- ++i;
- }
- }
- ::std::list< sal_Int32>::const_iterator aOrgValueEnd = aOrgValues.end();
- for(::std::list< sal_Int32>::const_iterator aOrgValue = aOrgValues.begin(); aOrgValue != aOrgValueEnd;++aOrgValue,++i)
- {
- setParameter(i,xParameter,(_rOrginalRow->get())[*aOrgValue],m_xSetMetaData->getColumnType(i),m_xSetMetaData->getScale(i));
- }
-
- m_bUpdated = xPrep->executeUpdate() > 0;
-}
-
-void SAL_CALL OCacheSet::deleteRow(const ORowSetRow& _rDeleteRow ,const connectivity::OSQLTable& _xTable ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::deleteRow" );
- Reference<XPropertySet> xSet(_xTable,UNO_QUERY);
- fillTableName(xSet);
-
- ::rtl::OUStringBuffer aSql = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DELETE FROM "));
- aSql.append(m_aComposedTableName);
- aSql.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" WHERE ")));
-
- // list all cloumns that should be set
- ::rtl::OUString aQuote = getIdentifierQuoteString();
- static ::rtl::OUString aAnd(RTL_CONSTASCII_USTRINGPARAM(" AND "));
-
- // use keys and indexes for exact positioning
- // first the keys
- const Reference<XNameAccess> xPrimaryKeyColumns = getPrimaryKeyColumns_throw(xSet);
- // second the indexes
- Reference<XIndexesSupplier> xIndexSup(_xTable,UNO_QUERY);
- Reference<XIndexAccess> xIndexes;
- if(xIndexSup.is())
- xIndexes.set(xIndexSup->getIndexes(),UNO_QUERY);
-
- // Reference<XColumnsSupplier>
- Reference<XPropertySet> xIndexColsSup;
- Reference<XNameAccess> xIndexColumns;
- ::std::vector< Reference<XNameAccess> > aAllIndexColumns;
- if(xIndexes.is())
- {
- for(sal_Int32 j=0;j<xIndexes->getCount();++j)
- {
- xIndexColsSup.set(xIndexes->getByIndex(j),UNO_QUERY);
- if( xIndexColsSup.is()
- && comphelper::getBOOL(xIndexColsSup->getPropertyValue(PROPERTY_ISUNIQUE))
- && !comphelper::getBOOL(xIndexColsSup->getPropertyValue(PROPERTY_ISPRIMARYKEYINDEX))
- )
- aAllIndexColumns.push_back(Reference<XColumnsSupplier>(xIndexColsSup,UNO_QUERY)->getColumns());
- }
- }
-
- ::rtl::OUStringBuffer aColumnName;
- ::std::list< sal_Int32> aOrgValues;
- fillParameters(_rDeleteRow,_xTable,aSql,aColumnName,aOrgValues);
-
- aSql.setLength(aSql.getLength()-5);
-
- // now create and execute the prepared statement
- Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(aSql.makeStringAndClear()));
- Reference< XParameters > xParameter(xPrep,UNO_QUERY);
- sal_Int32 i = 1;
- ::std::list< sal_Int32>::const_iterator aOrgValueEnd = aOrgValues.end();
- for(::std::list< sal_Int32>::const_iterator j = aOrgValues.begin(); j != aOrgValueEnd;++j,++i)
- {
- setParameter(i,xParameter,(_rDeleteRow->get())[*j],m_xSetMetaData->getColumnType(i),m_xSetMetaData->getScale(i));
- }
-
- m_bDeleted = xPrep->executeUpdate() > 0;
-}
-
-void OCacheSet::setParameter(sal_Int32 nPos
- ,const Reference< XParameters >& _xParameter
- ,const ORowSetValue& _rValue
- ,sal_Int32 _nType
- ,sal_Int32 _nScale) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::setParameter" );
- sal_Int32 nType = ( _nType != DataType::OTHER ) ? _nType : _rValue.getTypeKind();
- ::dbtools::setObjectWithInfo(_xParameter,nPos,_rValue,nType,_nScale);
-}
-
-void OCacheSet::fillValueRow(ORowSetRow& _rRow,sal_Int32 _nPosition)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::fillValueRow" );
- Any aBookmark = getBookmark();
- if(!aBookmark.hasValue())
- aBookmark = makeAny(_nPosition);
-
- connectivity::ORowVector< ORowSetValue >::Vector::iterator aIter = _rRow->get().begin();
- connectivity::ORowVector< ORowSetValue >::Vector::iterator aEnd = _rRow->get().end();
- (*aIter) = aBookmark;
- ++aIter;
- for(sal_Int32 i=1;aIter != aEnd;++aIter,++i)
- {
- aIter->setSigned(m_aSignedFlags[i-1]);
- aIter->fill(i,m_aColumnTypes[i-1],m_aNullable[i-1],this);
- }
-}
-
-sal_Bool SAL_CALL OCacheSet::wasNull( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::wasNull" );
- return m_xDriverRow->wasNull();
-}
-
-::rtl::OUString SAL_CALL OCacheSet::getString( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getString" );
- return m_xDriverRow->getString(columnIndex);
-}
-
-sal_Bool SAL_CALL OCacheSet::getBoolean( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getBoolean" );
- return m_xDriverRow->getBoolean(columnIndex);
-}
-
-sal_Int8 SAL_CALL OCacheSet::getByte( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getByte" );
- return m_xDriverRow->getByte(columnIndex);
-}
-
-sal_Int16 SAL_CALL OCacheSet::getShort( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getShort" );
- return m_xDriverRow->getShort(columnIndex);
-}
-
-sal_Int32 SAL_CALL OCacheSet::getInt( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getInt" );
- return m_xDriverRow->getInt(columnIndex);
-}
-
-sal_Int64 SAL_CALL OCacheSet::getLong( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getLong" );
- return m_xDriverRow->getLong(columnIndex);
-}
-
-float SAL_CALL OCacheSet::getFloat( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getFloat" );
- return m_xDriverRow->getFloat(columnIndex);
-}
-
-double SAL_CALL OCacheSet::getDouble( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getDouble" );
- return m_xDriverRow->getDouble(columnIndex);
-}
-
-Sequence< sal_Int8 > SAL_CALL OCacheSet::getBytes( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getBytes" );
- return m_xDriverRow->getBytes(columnIndex);
-}
-
-::com::sun::star::util::Date SAL_CALL OCacheSet::getDate( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getDate" );
- return m_xDriverRow->getDate(columnIndex);
-}
-
-::com::sun::star::util::Time SAL_CALL OCacheSet::getTime( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getTime" );
- return m_xDriverRow->getTime(columnIndex);
-}
-
-::com::sun::star::util::DateTime SAL_CALL OCacheSet::getTimestamp( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getTimestamp" );
- return m_xDriverRow->getTimestamp(columnIndex);
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL OCacheSet::getBinaryStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getBinaryStream" );
- return m_xDriverRow->getBinaryStream(columnIndex);
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL OCacheSet::getCharacterStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getCharacterStream" );
- return m_xDriverRow->getCharacterStream(columnIndex);
-}
-
-Any SAL_CALL OCacheSet::getObject( sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getObject" );
- return m_xDriverRow->getObject(columnIndex,typeMap);
-}
-
-Reference< XRef > SAL_CALL OCacheSet::getRef( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getRef" );
- return m_xDriverRow->getRef(columnIndex);
-}
-
-Reference< XBlob > SAL_CALL OCacheSet::getBlob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getBlob" );
- return m_xDriverRow->getBlob(columnIndex);
-}
-
-Reference< XClob > SAL_CALL OCacheSet::getClob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getClob" );
- return m_xDriverRow->getClob(columnIndex);
-}
-
-Reference< XArray > SAL_CALL OCacheSet::getArray( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getArray" );
- return m_xDriverRow->getArray(columnIndex);
-}
-
-// XResultSet
-sal_Bool SAL_CALL OCacheSet::next( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::next" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- return m_xDriverSet->next();
-}
-
-sal_Bool SAL_CALL OCacheSet::isBeforeFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::isBeforeFirst" );
- return m_xDriverSet->isBeforeFirst();
-}
-
-sal_Bool SAL_CALL OCacheSet::isAfterLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::isAfterLast" );
- return m_xDriverSet->isAfterLast();
-}
-
-sal_Bool SAL_CALL OCacheSet::isFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::isFirst" );
- return m_xDriverSet->isFirst();
-}
-
-sal_Bool SAL_CALL OCacheSet::isLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::isLast" );
- return m_xDriverSet->isLast();
-}
-
-void SAL_CALL OCacheSet::beforeFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::beforeFirst" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- m_xDriverSet->beforeFirst();
-}
-
-void SAL_CALL OCacheSet::afterLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::afterLast" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- m_xDriverSet->afterLast();
-}
-
-sal_Bool SAL_CALL OCacheSet::first( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::first" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- return m_xDriverSet->first();
-}
-
-sal_Bool SAL_CALL OCacheSet::last( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::last" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- return m_xDriverSet->last();
-}
-
-sal_Int32 SAL_CALL OCacheSet::getRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getRow" );
- return m_xDriverSet->getRow();
-}
-
-sal_Bool SAL_CALL OCacheSet::absolute( sal_Int32 row ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::absolute" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- return m_xDriverSet->absolute(row);
-}
-
-sal_Bool SAL_CALL OCacheSet::relative( sal_Int32 rows ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::relative" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- return m_xDriverSet->relative(rows);
-}
-
-sal_Bool SAL_CALL OCacheSet::previous( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::previous" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- return m_xDriverSet->previous();
-}
-
-sal_Bool OCacheSet::last_checked( sal_Bool /*i_bFetchRow*/)
-{
- return last();
-}
-
-sal_Bool OCacheSet::previous_checked( sal_Bool /*i_bFetchRow*/ )
-{
- return previous();
-}
-
-sal_Bool OCacheSet::absolute_checked( sal_Int32 row,sal_Bool /*i_bFetchRow*/ )
-{
- return absolute(row);
-}
-
-void SAL_CALL OCacheSet::refreshRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::refreshRow" );
- m_xDriverSet->refreshRow();
-}
-
-sal_Bool SAL_CALL OCacheSet::rowUpdated( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::rowUpdated" );
- return m_xDriverSet->rowUpdated();
-}
-
-sal_Bool SAL_CALL OCacheSet::rowInserted( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::rowInserted" );
- return m_xDriverSet->rowInserted();
-}
-
-sal_Bool SAL_CALL OCacheSet::rowDeleted( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::rowDeleted" );
- return m_xDriverSet->rowDeleted();
-}
-
-Reference< XInterface > SAL_CALL OCacheSet::getStatement( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCacheSet::getStatement" );
- return m_xDriverSet->getStatement();
-}
-
-bool OCacheSet::isResultSetChanged() const
-{
- return false;
-}
-
-void OCacheSet::reset(const Reference< XResultSet>& /*_xDriverSet*/)
-{
- OSL_FAIL("Illegal call!");
-}
-
-void OCacheSet::mergeColumnValues(sal_Int32 i_nColumnIndex,ORowSetValueVector::Vector& /*io_aInsertRow*/,ORowSetValueVector::Vector& /*io_aRow*/,::std::vector<sal_Int32>& o_aChangedColumns)
-{
- o_aChangedColumns.push_back(i_nColumnIndex);
-}
-
-bool OCacheSet::columnValuesUpdated(ORowSetValueVector::Vector& /*io_aCachedRow*/,const ORowSetValueVector::Vector& /*io_aRow*/)
-{
- return false;
-}
-
-bool OCacheSet::updateColumnValues(const ORowSetValueVector::Vector& /*io_aCachedRow*/,ORowSetValueVector::Vector& /*io_aRow*/,const ::std::vector<sal_Int32>& /*i_aChangedColumns*/)
-{
- return true;
-}
-
-void OCacheSet::fillMissingValues(ORowSetValueVector::Vector& /*io_aRow*/) const
-{
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/CacheSet.hxx b/dbaccess/source/core/api/CacheSet.hxx
deleted file mode 100644
index 9fab5c212..000000000
--- a/dbaccess/source/core/api/CacheSet.hxx
+++ /dev/null
@@ -1,163 +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.
- *
- ************************************************************************/
-#ifndef DBACCESS_CORE_API_CACHESET_HXX
-#define DBACCESS_CORE_API_CACHESET_HXX
-
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/sdbc/XResultSet.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/sdbcx/XRowLocate.hpp>
-#include <com/sun/star/sdbcx/XDeleteRows.hpp>
-#include <com/sun/star/sdbcx/CompareBookmark.hpp>
-#include "RowSetRow.hxx"
-#include <cppuhelper/implbase1.hxx>
-
-#include <list>
-namespace rtl
-{
- class OUStringBuffer;
-}
-namespace com{ namespace sun { namespace star{namespace sdbc{ class XParameters; } } } }
-
-namespace dbaccess
-{
- class OCacheSet : public ::cppu::WeakImplHelper1< ::com::sun::star::sdbc::XRow>
- {
- protected:
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> m_xDriverSet;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow> m_xDriverRow;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData> m_xSetMetaData;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> m_xConnection;
-
- ::com::sun::star::uno::Sequence<sal_Bool> m_aNullable;
- ::com::sun::star::uno::Sequence<sal_Bool> m_aSignedFlags;
- ::com::sun::star::uno::Sequence<sal_Int32> m_aColumnTypes;
- ORowSetRow m_aInsertRow;
- ::rtl::OUString m_aComposedTableName;
- sal_Int32 m_nMaxRows;
- sal_Bool m_bInserted;
- sal_Bool m_bUpdated;
- sal_Bool m_bDeleted;
-
- OCacheSet(sal_Int32 i_nMaxRows);
- virtual ~OCacheSet();
-
- void setParameter(sal_Int32 nPos
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XParameters >& _xParameter
- ,const connectivity::ORowSetValue& _rValue
- ,sal_Int32 _nType
- ,sal_Int32 _nScale
- ) const;
- void fillParameters( const ORowSetRow& _rRow
- ,const connectivity::OSQLTable& _xTable
- ,::rtl::OUStringBuffer& _sCondition
- ,::rtl::OUStringBuffer& _sParameter
- ,::std::list< sal_Int32>& _rOrgValues);
- void fillTableName(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xTable) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- ::rtl::OUString getIdentifierQuoteString() const;
- public:
-
- // late constructor
- virtual void construct(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDriverSet,const ::rtl::OUString& i_sRowSetFilter);
- virtual void fillValueRow(ORowSetRow& _rRow,sal_Int32 _nPosition);
-
- // ::com::sun::star::sdbc::XRow
- virtual sal_Bool SAL_CALL wasNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getString( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL getBoolean( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int8 SAL_CALL getByte( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int16 SAL_CALL getShort( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getInt( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int64 SAL_CALL getLong( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual float SAL_CALL getFloat( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual double SAL_CALL getDouble( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Date SAL_CALL getDate( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Time SAL_CALL getTime( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbc::XResultSet
- virtual sal_Bool SAL_CALL next( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isBeforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isAfterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL beforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL afterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL first( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL last( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL absolute( sal_Int32 row ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL relative( sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL previous( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL refreshRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowUpdated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowInserted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowDeleted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbcx::XRowLocate
- virtual ::com::sun::star::uno::Any SAL_CALL getBookmark() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- virtual sal_Bool SAL_CALL moveToBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- virtual sal_Bool SAL_CALL moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- virtual sal_Int32 SAL_CALL compareBookmarks( const ::com::sun::star::uno::Any& first, const ::com::sun::star::uno::Any& second ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- virtual sal_Bool SAL_CALL hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- virtual sal_Int32 SAL_CALL hashBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- // ::com::sun::star::sdbcx::XDeleteRows
- virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rows,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- // ::com::sun::star::sdbc::XResultSetUpdate
- virtual void SAL_CALL insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateRow( const ORowSetRow& _rInsertRow,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- virtual void SAL_CALL deleteRow( const ORowSetRow& _rDeleteRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- virtual void SAL_CALL cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- virtual void SAL_CALL moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- virtual void SAL_CALL moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
-
- virtual bool isResultSetChanged() const;
- virtual void reset(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDriverSet);
- virtual void mergeColumnValues(sal_Int32 i_nColumnIndex,ORowSetValueVector::Vector& io_aInsertRow,ORowSetValueVector::Vector& io_aRow,::std::vector<sal_Int32>& o_aChangedColumns);
- virtual bool columnValuesUpdated(ORowSetValueVector::Vector& o_aCachedRow,const ORowSetValueVector::Vector& i_aRow);
- virtual bool updateColumnValues(const ORowSetValueVector::Vector& io_aCachedRow,ORowSetValueVector::Vector& io_aRow,const ::std::vector<sal_Int32>& i_aChangedColumns);
- virtual void fillMissingValues(ORowSetValueVector::Vector& io_aRow) const;
- virtual sal_Bool previous_checked( sal_Bool i_bFetchRow );
- virtual sal_Bool absolute_checked( sal_Int32 row,sal_Bool i_bFetchRow );
- virtual sal_Bool last_checked( sal_Bool i_bFetchRow);
- };
-}
-#endif //DBACCESS_CORE_API_CACHESET_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/FilteredContainer.cxx b/dbaccess/source/core/api/FilteredContainer.cxx
deleted file mode 100644
index fdee0412e..000000000
--- a/dbaccess/source/core/api/FilteredContainer.cxx
+++ /dev/null
@@ -1,485 +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_dbaccess.hxx"
-
-#include "dbastrings.hrc"
-#include "FilteredContainer.hxx"
-#include "RefreshListener.hxx"
-#include "sdbcoretools.hxx"
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <connectivity/dbtools.hxx>
-#include <tools/wldcrd.hxx>
-#include <tools/diagnose_ex.h>
-#include <rtl/logfile.hxx>
-#include <boost/optional.hpp>
-
-namespace dbaccess
-{
- using namespace dbtools;
- using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star::lang;
- using namespace ::com::sun::star::beans;
- using namespace ::com::sun::star::sdbc;
- using namespace ::com::sun::star::sdb;
- using namespace ::com::sun::star::sdbcx;
- using namespace ::com::sun::star::util;
- using namespace ::com::sun::star::container;
- using namespace ::osl;
- using namespace ::comphelper;
- using namespace ::cppu;
- using namespace ::connectivity::sdbcx;
-
-/** creates a vector of WildCards and reduce the _rTableFilter of the length of WildsCards
-*/
-sal_Int32 createWildCardVector(Sequence< ::rtl::OUString >& _rTableFilter, ::std::vector< WildCard >& _rOut)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OFilteredContainer::createWildCardVector" );
- // for wildcard search : remove all table filters which are a wildcard expression and build a WilCard
- // for them
- ::rtl::OUString* pTableFilters = _rTableFilter.getArray();
- ::rtl::OUString* pEnd = pTableFilters + _rTableFilter.getLength();
- sal_Int32 nShiftPos = 0;
- for (sal_Int32 i=0; pEnd != pTableFilters; ++pTableFilters,++i)
- {
- if (pTableFilters->indexOf('%') != -1)
- {
- _rOut.push_back(WildCard(pTableFilters->replace('%', '*')));
- }
- else
- {
- if (nShiftPos != i)
- {
- _rTableFilter.getArray()[nShiftPos] = _rTableFilter.getArray()[i];
- }
- ++nShiftPos;
- }
- }
- // now aTableFilter contains nShiftPos non-wc-strings and aWCSearch all wc-strings
- _rTableFilter.realloc(nShiftPos);
- return nShiftPos;
-}
-
- bool lcl_isElementAllowed( const ::rtl::OUString& _rName,
- const Sequence< ::rtl::OUString >& _rTableFilter,
- const ::std::vector< WildCard >& _rWCSearch )
- {
- sal_Int32 nTableFilterLen = _rTableFilter.getLength();
-
- const ::rtl::OUString* tableFilter = _rTableFilter.getConstArray();
- const ::rtl::OUString* tableFilterEnd = _rTableFilter.getConstArray() + nTableFilterLen;
- bool bFilterMatch = ::std::find( tableFilter, tableFilterEnd, _rName ) != tableFilterEnd;
- // the table is allowed to "pass" if we had no filters at all or any of the non-wildcard filters matches
- if (!bFilterMatch && !_rWCSearch.empty())
- { // or if one of the wildcrad expression matches
- for ( ::std::vector< WildCard >::const_iterator aLoop = _rWCSearch.begin();
- aLoop != _rWCSearch.end() && !bFilterMatch;
- ++aLoop
- )
- bFilterMatch = aLoop->Matches( _rName );
- }
-
- return bFilterMatch;
- }
-
- typedef ::boost::optional< ::rtl::OUString > OptionalString;
- struct TableInfo
- {
- OptionalString sComposedName;
- OptionalString sType;
- OptionalString sCatalog;
- OptionalString sSchema;
- OptionalString sName;
-
- TableInfo( const ::rtl::OUString& _composedName )
- :sComposedName( _composedName )
- {
- }
-
- TableInfo( const ::rtl::OUString& _catalog, const ::rtl::OUString& _schema, const ::rtl::OUString& _name,
- const ::rtl::OUString& _type )
- :sComposedName()
- ,sType( _type )
- ,sCatalog( _catalog )
- ,sSchema( _schema )
- ,sName( _name )
- {
- }
- };
- typedef ::std::vector< TableInfo > TableInfos;
-
- void lcl_ensureComposedName( TableInfo& _io_tableInfo, const Reference< XDatabaseMetaData >& _metaData )
- {
- if ( !_metaData.is() )
- throw RuntimeException();
-
- if ( !_io_tableInfo.sComposedName )
- {
- OSL_ENSURE( !!_io_tableInfo.sCatalog && !!_io_tableInfo.sSchema && !!_io_tableInfo.sName, "lcl_ensureComposedName: How should I composed the name from nothing!?" );
-
- _io_tableInfo.sComposedName = OptionalString(
- composeTableName( _metaData, *_io_tableInfo.sCatalog, *_io_tableInfo.sSchema, *_io_tableInfo.sName,
- sal_False, ::dbtools::eInDataManipulation )
- );
- }
- }
-
- void lcl_ensureType( TableInfo& _io_tableInfo, const Reference< XDatabaseMetaData >& _metaData, const Reference< XNameAccess >& _masterContainer )
- {
- if ( !!_io_tableInfo.sType )
- return;
-
- lcl_ensureComposedName( _io_tableInfo, _metaData );
-
- if ( !_masterContainer.is() )
- throw RuntimeException();
-
- ::rtl::OUString sTypeName;
- try
- {
- Reference< XPropertySet > xTable( _masterContainer->getByName( *_io_tableInfo.sComposedName ), UNO_QUERY_THROW );
- OSL_VERIFY( xTable->getPropertyValue( PROPERTY_TYPE ) >>= sTypeName );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- _io_tableInfo.sType = OptionalString( sTypeName );
- }
-
- connectivity::TStringVector lcl_filter( const TableInfos& _unfilteredTables,
- const Sequence< ::rtl::OUString >& _tableFilter, const Sequence< ::rtl::OUString >& _tableTypeFilter,
- const Reference< XDatabaseMetaData >& _metaData, const Reference< XNameAccess >& _masterContainer )
- {
- TableInfos aFilteredTables;
-
- // first, filter for the table names
- sal_Int32 nTableFilterCount = _tableFilter.getLength();
- sal_Bool dontFilterTableNames = ( ( nTableFilterCount == 1 ) && _tableFilter[0].equalsAsciiL( "%", 1 ) );
- if( dontFilterTableNames )
- {
- aFilteredTables = _unfilteredTables;
- }
- else
- {
- // for wildcard search : remove all table filters which are a wildcard expression and build a WildCard
- // for them
- ::std::vector< WildCard > aWildCardTableFilter;
- Sequence< ::rtl::OUString > aNonWildCardTableFilter = _tableFilter;
- nTableFilterCount = createWildCardVector( aNonWildCardTableFilter, aWildCardTableFilter );
-
- TableInfos aUnfilteredTables( _unfilteredTables );
- aUnfilteredTables.reserve( nTableFilterCount + ( aWildCardTableFilter.size() * 10 ) );
-
- for ( TableInfos::iterator table = aUnfilteredTables.begin();
- table != aUnfilteredTables.end();
- ++table
- )
- {
- lcl_ensureComposedName( *table, _metaData );
-
- if ( lcl_isElementAllowed( *table->sComposedName, aNonWildCardTableFilter, aWildCardTableFilter ) )
- aFilteredTables.push_back( *table );
- }
- }
-
- // second, filter for the table types
- sal_Int32 nTableTypeFilterCount = _tableTypeFilter.getLength();
- sal_Bool dontFilterTableTypes = ( ( nTableTypeFilterCount == 1 ) && _tableTypeFilter[0].equalsAsciiL( "%", 1 ) );
- dontFilterTableTypes = dontFilterTableTypes || ( nTableTypeFilterCount == 0 );
- // (for TableTypeFilter, unlike TableFilter, "empty" means "do not filter at all")
- if ( !dontFilterTableTypes )
- {
- TableInfos aUnfilteredTables;
- aUnfilteredTables.swap( aFilteredTables );
-
- const ::rtl::OUString* pTableTypeFilterBegin = _tableTypeFilter.getConstArray();
- const ::rtl::OUString* pTableTypeFilterEnd = pTableTypeFilterBegin + _tableTypeFilter.getLength();
-
- for ( TableInfos::iterator table = aUnfilteredTables.begin();
- table != aUnfilteredTables.end();
- ++table
- )
- {
- // ensure that we know the table type
- lcl_ensureType( *table, _metaData, _masterContainer );
-
- if ( ::std::find( pTableTypeFilterBegin, pTableTypeFilterEnd, *table->sType ) != pTableTypeFilterEnd )
- aFilteredTables.push_back( *table );
- }
- }
-
- connectivity::TStringVector aReturn;
- for ( TableInfos::iterator table = aFilteredTables.begin();
- table != aFilteredTables.end();
- ++table
- )
- {
- lcl_ensureComposedName( *table, _metaData );
- aReturn.push_back( *table->sComposedName );
- }
- return aReturn;
- }
-
- //==========================================================================
- //= OViewContainer
- //==========================================================================
- OFilteredContainer::OFilteredContainer(::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- const Reference< XConnection >& _xCon,
- sal_Bool _bCase,
- IRefreshListener* _pRefreshListener,
- ::dbtools::IWarningsContainer* _pWarningsContainer
- ,oslInterlockedCount& _nInAppend)
- :OCollection(_rParent,_bCase,_rMutex,::std::vector< ::rtl::OUString>())
- ,m_bConstructed(sal_False)
- ,m_pWarningsContainer(_pWarningsContainer)
- ,m_pRefreshListener(_pRefreshListener)
- ,m_nInAppend(_nInAppend)
- ,m_xConnection(_xCon)
- {
- }
-
- void OFilteredContainer::construct(const Reference< XNameAccess >& _rxMasterContainer,
- const Sequence< ::rtl::OUString >& _rTableFilter,
- const Sequence< ::rtl::OUString >& _rTableTypeFilter)
- {
- try
- {
- Reference<XConnection> xCon = m_xConnection;
- if ( xCon.is() )
- m_xMetaData = xCon->getMetaData();
- }
- catch(SQLException&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- m_xMasterContainer = _rxMasterContainer;
-
- if ( m_xMasterContainer.is() )
- {
- addMasterContainerListener();
-
- TableInfos aUnfilteredTables;
-
- Sequence< ::rtl::OUString > aNames = m_xMasterContainer->getElementNames();
- const ::rtl::OUString* name = aNames.getConstArray();
- const ::rtl::OUString* nameEnd = name + aNames.getLength();
- for ( ; name != nameEnd; ++name )
- aUnfilteredTables.push_back( TableInfo( *name ) );
-
- reFill( lcl_filter( aUnfilteredTables,
- _rTableFilter, _rTableTypeFilter, m_xMetaData, m_xMasterContainer ) );
-
- m_bConstructed = sal_True;
- }
- else
- {
- construct( _rTableFilter, _rTableTypeFilter );
- }
- }
-
- void OFilteredContainer::construct(const Sequence< ::rtl::OUString >& _rTableFilter, const Sequence< ::rtl::OUString >& _rTableTypeFilter)
- {
- // build sorted versions of the filter sequences, so the visibility decision is faster
- Sequence< ::rtl::OUString > aTableFilter(_rTableFilter);
-
- // for wildcard search : remove all table filters which are a wildcard expression and build a WildCard
- // for them
- ::std::vector< WildCard > aWCSearch;
- createWildCardVector(aTableFilter,aWCSearch);
-
- try
- {
- Reference< XConnection > xCon( m_xConnection, UNO_SET_THROW );
- m_xMetaData.set( xCon->getMetaData(), UNO_SET_THROW );
-
- // create a table table filter suitable for the XDatabaseMetaData::getTables call,
- // taking into account both the externally-provided table type filter, and any
- // table type restriction which is inherent to the container
- Sequence< ::rtl::OUString > aTableTypeFilter;
- ::rtl::OUString sInherentTableTypeRestriction( getTableTypeRestriction() );
- if ( sInherentTableTypeRestriction.getLength() )
- {
- if ( _rTableTypeFilter.getLength() != 0 )
- {
- const ::rtl::OUString* tableType = _rTableTypeFilter.getConstArray();
- const ::rtl::OUString* tableTypeEnd = tableType + _rTableTypeFilter.getLength();
- for ( ; tableType != tableTypeEnd; ++tableType )
- {
- if ( *tableType == sInherentTableTypeRestriction )
- break;
- }
- if ( tableType == tableTypeEnd )
- { // the only table type which can be part of this container is not allowed
- // by the externally provided table type filter.
- m_bConstructed = sal_True;
- return;
- }
- }
- aTableTypeFilter.realloc( 1 );
- aTableTypeFilter[0] = sInherentTableTypeRestriction;
- }
- else
- {
- // no container-inherent restriction for the table types
- if ( _rTableTypeFilter.getLength() == 0 )
- { // no externally-provided table type filter => use the default filter
- getAllTableTypeFilter( aTableTypeFilter );
- }
- else
- {
- aTableTypeFilter = _rTableTypeFilter;
- }
- }
-
- static const ::rtl::OUString sAll(RTL_CONSTASCII_USTRINGPARAM("%"));
- Reference< XResultSet > xTables = m_xMetaData->getTables( Any(), sAll, sAll, aTableTypeFilter );
- Reference< XRow > xCurrentRow( xTables, UNO_QUERY_THROW );
-
- TableInfos aUnfilteredTables;
-
- ::rtl::OUString sCatalog, sSchema, sName, sType;
- while ( xTables->next() )
- {
- sCatalog = xCurrentRow->getString(1);
- sSchema = xCurrentRow->getString(2);
- sName = xCurrentRow->getString(3);
- sType = xCurrentRow->getString(4);
-
- aUnfilteredTables.push_back( TableInfo( sCatalog, sSchema, sName, sType ) );
- }
-
- reFill( lcl_filter( aUnfilteredTables,
- _rTableFilter, aTableTypeFilter, m_xMetaData, NULL ) );
-
- disposeComponent( xTables );
- }
- catch (const Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- disposing();
- return;
- }
-
- m_bConstructed = sal_True;
- }
-
- void OFilteredContainer::disposing()
- {
- OCollection::disposing();
-
- if ( m_xMasterContainer.is() )
- removeMasterContainerListener();
-
- m_xMasterContainer = NULL;
- m_xMetaData = NULL;
- m_pWarningsContainer = NULL;
- m_pRefreshListener = NULL;
- m_bConstructed = sal_False;
- }
-
- void OFilteredContainer::impl_refresh() throw(RuntimeException)
- {
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OFilteredContainer::impl_refresh" );
- if ( m_pRefreshListener )
- {
- m_bConstructed = sal_False;
- Reference<XRefreshable> xRefresh(m_xMasterContainer,UNO_QUERY);
- if ( xRefresh.is() )
- xRefresh->refresh();
- m_pRefreshListener->refresh(this);
- }
- }
-
- ::rtl::OUString OFilteredContainer::getNameForObject(const ObjectType& _xObject)
- {
- OSL_ENSURE( _xObject.is(), "OFilteredContainer::getNameForObject: Object is NULL!" );
- return ::dbtools::composeTableName( m_xMetaData, _xObject, ::dbtools::eInDataManipulation, false, false, false );
- }
-
- // multiple to obtain all tables from XDatabaseMetaData::getTables, via passing a particular
- // table type filter:
- // adhere to the standard, which requests to pass a NULL table type filter, if
- // you want to retrieve all tables
- #define FILTER_MODE_STANDARD 0
- // only pass %, which is not allowed by the standard, but understood by some drivers
- #define FILTER_MODE_WILDCARD 1
- // only pass TABLE and VIEW
- #define FILTER_MODE_FIXED 2
- // do the thing which showed to be the safest way, understood by nearly all
- // drivers, even the ones which do not understand the standard
- #define FILTER_MODE_MIX_ALL 3
-
- void OFilteredContainer::getAllTableTypeFilter( Sequence< ::rtl::OUString >& /* [out] */ _rFilter ) const
- {
- sal_Int32 nFilterMode = FILTER_MODE_MIX_ALL;
- // for compatibility reasons, this is the default: we used this way before we
- // introduced the TableTypeFilterMode setting
-
- // obtain the data source we belong to, and the TableTypeFilterMode setting
- Any aFilterModeSetting;
- if ( getDataSourceSetting( getDataSource( (Reference< XInterface >)m_rParent ), "TableTypeFilterMode", aFilterModeSetting ) )
- {
- OSL_VERIFY( aFilterModeSetting >>= nFilterMode );
- }
-
- const ::rtl::OUString sAll( RTL_CONSTASCII_USTRINGPARAM( "%" ) );
- const ::rtl::OUString sView( RTL_CONSTASCII_USTRINGPARAM( "VIEW" ) );
- const ::rtl::OUString sTable( RTL_CONSTASCII_USTRINGPARAM( "TABLE" ) );
-
- switch ( nFilterMode )
- {
- default:
- OSL_FAIL( "OTableContainer::getAllTableTypeFilter: unknown TableTypeFilterMode!" );
- case FILTER_MODE_MIX_ALL:
- _rFilter.realloc( 3 );
- _rFilter[0] = sView;
- _rFilter[1] = sTable;
- _rFilter[2] = sAll;
- break;
- case FILTER_MODE_FIXED:
- _rFilter.realloc( 2 );
- _rFilter[0] = sView;
- _rFilter[1] = sTable;
- break;
- case FILTER_MODE_WILDCARD:
- _rFilter.realloc( 1 );
- _rFilter[0] = sAll;
- break;
- case FILTER_MODE_STANDARD:
- _rFilter.realloc( 0 );
- break;
- }
- }
-
-} // namespace
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/HelperCollections.cxx b/dbaccess/source/core/api/HelperCollections.cxx
deleted file mode 100644
index acc2d3ef3..000000000
--- a/dbaccess/source/core/api/HelperCollections.cxx
+++ /dev/null
@@ -1,119 +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_dbaccess.hxx"
-#include "HelperCollections.hxx"
-
-#include "dbastrings.hrc"
-
-namespace dbaccess
-{
- using namespace dbtools;
- using namespace comphelper;
- using namespace connectivity;
- using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star::beans;
- using namespace ::com::sun::star::sdbc;
- using namespace ::com::sun::star::sdb;
- using namespace ::com::sun::star::sdbcx;
- using namespace ::com::sun::star::container;
- using namespace ::com::sun::star::lang;
- using namespace ::com::sun::star::script;
- using namespace ::cppu;
- using namespace ::osl;
-
- OPrivateColumns::OPrivateColumns(const ::rtl::Reference< ::connectivity::OSQLColumns>& _rColumns,
- sal_Bool _bCase,
- ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- const ::std::vector< ::rtl::OUString> &_rVector,
- sal_Bool _bUseAsIndex
- ) : sdbcx::OCollection(_rParent,_bCase,_rMutex,_rVector,_bUseAsIndex)
- ,m_aColumns(_rColumns)
- {
- }
-
- OPrivateColumns* OPrivateColumns::createWithIntrinsicNames( const ::rtl::Reference< ::connectivity::OSQLColumns >& _rColumns,
- sal_Bool _bCase, ::cppu::OWeakObject& _rParent, ::osl::Mutex& _rMutex )
- {
- ::std::vector< ::rtl::OUString > aNames; aNames.reserve( _rColumns->get().size() );
-
- ::rtl::OUString sColumName;
- for ( ::connectivity::OSQLColumns::Vector::const_iterator column = _rColumns->get().begin();
- column != _rColumns->get().end();
- ++column
- )
- {
- Reference< XPropertySet > xColumn( *column, UNO_QUERY_THROW );
- xColumn->getPropertyValue( PROPERTY_NAME ) >>= sColumName;
- aNames.push_back( sColumName );
- }
- return new OPrivateColumns( _rColumns, _bCase, _rParent, _rMutex, aNames, sal_False );
- }
-
- void SAL_CALL OPrivateColumns::disposing(void)
- {
- m_aColumns = NULL;
- clear_NoDispose();
- // we're not owner of the objects we're holding, instead the object we got in our ctor is
- // So we're not allowed to dispose our elements.
- OPrivateColumns_Base::disposing();
- }
-
- connectivity::sdbcx::ObjectType OPrivateColumns::createObject(const ::rtl::OUString& _rName)
- {
- if ( m_aColumns.is() )
- {
- ::connectivity::OSQLColumns::Vector::const_iterator aIter = find(m_aColumns->get().begin(),m_aColumns->get().end(),_rName,isCaseSensitive());
- if(aIter == m_aColumns->get().end())
- aIter = findRealName(m_aColumns->get().begin(),m_aColumns->get().end(),_rName,isCaseSensitive());
-
- if(aIter != m_aColumns->get().end())
- return connectivity::sdbcx::ObjectType(*aIter,UNO_QUERY);
-
- OSL_FAIL("Column not found in collection!");
- }
- return NULL;
- }
-
- connectivity::sdbcx::ObjectType OPrivateTables::createObject(const ::rtl::OUString& _rName)
- {
- if ( !m_aTables.empty() )
- {
- OSQLTables::iterator aIter = m_aTables.find(_rName);
- OSL_ENSURE(aIter != m_aTables.end(),"Table not found!");
- OSL_ENSURE(aIter->second.is(),"Table is null!");
- (void)aIter;
- return connectivity::sdbcx::ObjectType(m_aTables.find(_rName)->second,UNO_QUERY);
- }
- return NULL;
- }
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/HelperCollections.hxx b/dbaccess/source/core/api/HelperCollections.hxx
deleted file mode 100644
index ec24c9cba..000000000
--- a/dbaccess/source/core/api/HelperCollections.hxx
+++ /dev/null
@@ -1,121 +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.
- *
- ************************************************************************/
-#ifndef DBA_HELPERCOLLECTIONS_HXX
-#define DBA_HELPERCOLLECTIONS_HXX
-
-#include "connectivity/sdbcx/VCollection.hxx"
-#include <connectivity/dbtools.hxx>
-#include <connectivity/dbconversion.hxx>
-#include <connectivity/PColumn.hxx>
-#include <rtl/ref.hxx>
-
-namespace dbaccess
-{
- using namespace dbtools;
- using namespace comphelper;
- using namespace connectivity;
- using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star::beans;
- using namespace ::com::sun::star::sdbc;
- using namespace ::com::sun::star::sdb;
- using namespace ::com::sun::star::sdbcx;
- using namespace ::com::sun::star::container;
- using namespace ::com::sun::star::lang;
- using namespace ::com::sun::star::script;
- using namespace ::cppu;
- using namespace ::osl;
-
- typedef connectivity::sdbcx::OCollection OPrivateColumns_Base;
- class OPrivateColumns : public OPrivateColumns_Base
- {
- ::rtl::Reference< ::connectivity::OSQLColumns> m_aColumns;
- protected:
- virtual connectivity::sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
- virtual void impl_refresh() throw(RuntimeException) {}
- virtual Reference< XPropertySet > createDescriptor()
- {
- return NULL;
- }
- public:
- OPrivateColumns(const ::rtl::Reference< ::connectivity::OSQLColumns>& _rColumns,
- sal_Bool _bCase,
- ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- const ::std::vector< ::rtl::OUString> &_rVector,
- sal_Bool _bUseAsIndex = sal_False
- );
-
- /** creates a columns instance as above, but taking the names from the columns itself
- */
- static OPrivateColumns* createWithIntrinsicNames(
- const ::rtl::Reference< ::connectivity::OSQLColumns >& _rColumns,
- sal_Bool _bCase,
- ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex
- );
-
- virtual void SAL_CALL disposing(void);
- };
- typedef connectivity::sdbcx::OCollection OPrivateTables_BASE;
-
- //==========================================================================
- //= OPrivateTables
- //==========================================================================
- class OPrivateTables : public OPrivateTables_BASE
- {
- OSQLTables m_aTables;
- protected:
- virtual connectivity::sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
- virtual void impl_refresh() throw(RuntimeException) {}
- virtual Reference< XPropertySet > createDescriptor()
- {
- return NULL;
- }
- public:
- OPrivateTables( const OSQLTables& _rTables,
- sal_Bool _bCase,
- ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- const ::std::vector< ::rtl::OUString> &_rVector
- ) : sdbcx::OCollection(_rParent,_bCase,_rMutex,_rVector)
- ,m_aTables(_rTables)
- {
- }
- virtual void SAL_CALL disposing(void)
- {
- clear_NoDispose();
- // we're not owner of the objects we're holding, instead the object we got in our ctor is
- // So we're not allowed to dispose our elements.
- m_aTables.clear();
- OPrivateTables_BASE::disposing();
- }
- };
-}
-#endif // DBA_HELPERCOLLECTIONS_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/KeySet.cxx b/dbaccess/source/core/api/KeySet.cxx
deleted file mode 100644
index eda1e4231..000000000
--- a/dbaccess/source/core/api/KeySet.cxx
+++ /dev/null
@@ -1,1689 +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 andor 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_dbaccess.hxx"
-
-#include "KeySet.hxx"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <com/sun/star/sdbc/XPreparedStatement.hpp>
-#include <com/sun/star/sdbc/XParameters.hpp>
-#include <com/sun/star/sdbc/XGeneratedResultSet.hpp>
-#include <com/sun/star/sdbc/XColumnLocate.hpp>
-#include <com/sun/star/container/XIndexAccess.hpp>
-#include "dbastrings.hrc"
-#include "apitools.hxx"
-#include <com/sun/star/sdbcx/XKeysSupplier.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
-#include <com/sun/star/sdbcx/XIndexesSupplier.hpp>
-#include <cppuhelper/typeprovider.hxx>
-#include <comphelper/types.hxx>
-#include <com/sun/star/sdbcx/KeyType.hpp>
-#include <connectivity/dbtools.hxx>
-#include <connectivity/dbexception.hxx>
-#include <list>
-#include <algorithm>
-#include <string.h>
-#include <com/sun/star/io/XInputStream.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include "querycomposer.hxx"
-#include "composertools.hxx"
-#include <tools/debug.hxx>
-#include <string.h>
-#include <rtl/logfile.hxx>
-#include "PrivateRow.hxx"
-
-using namespace dbaccess;
-using namespace ::connectivity;
-using namespace ::dbtools;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::io;
-using namespace ::com::sun::star;
-using namespace ::cppu;
-using namespace ::osl;
-
-namespace
-{
- void lcl_fillIndexColumns(const Reference<XIndexAccess>& _xIndexes, ::std::vector< Reference<XNameAccess> >& _rAllIndexColumns)
- {
- if ( _xIndexes.is() )
- {
- Reference<XPropertySet> xIndexColsSup;
- sal_Int32 nCount = _xIndexes->getCount();
- for(sal_Int32 j = 0 ; j < nCount ; ++j)
- {
- xIndexColsSup.set(_xIndexes->getByIndex(j),UNO_QUERY);
- if( xIndexColsSup.is()
- && comphelper::getBOOL(xIndexColsSup->getPropertyValue(PROPERTY_ISUNIQUE))
- && !comphelper::getBOOL(xIndexColsSup->getPropertyValue(PROPERTY_ISPRIMARYKEYINDEX))
- )
- _rAllIndexColumns.push_back(Reference<XColumnsSupplier>(xIndexColsSup,UNO_QUERY)->getColumns());
- }
- }
- }
-}
-DBG_NAME(OKeySet)
-
-OKeySet::OKeySet(const connectivity::OSQLTable& _xTable,
- const Reference< XIndexAccess>& _xTableKeys,
- const ::rtl::OUString& _rUpdateTableName, // this can be the alias or the full qualified name
- const Reference< XSingleSelectQueryAnalyzer >& _xComposer,
- const ORowSetValueVector& _aParameterValueForCache,
- sal_Int32 i_nMaxRows,
- sal_Int32& o_nRowCount)
- :OCacheSet(i_nMaxRows)
- ,m_aParameterValueForCache(_aParameterValueForCache)
- ,m_pKeyColumnNames(NULL)
- ,m_pColumnNames(NULL)
- ,m_pParameterNames(NULL)
- ,m_pForeignColumnNames(NULL)
- ,m_xTable(_xTable)
- ,m_xTableKeys(_xTableKeys)
- ,m_xComposer(_xComposer)
- ,m_sUpdateTableName(_rUpdateTableName)
- ,m_rRowCount(o_nRowCount)
- ,m_bRowCountFinal(sal_False)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::OKeySet" );
- DBG_CTOR(OKeySet,NULL);
-
-}
-
-OKeySet::~OKeySet()
-{
- try
- {
- ::comphelper::disposeComponent(m_xStatement);
- }
- catch(const Exception&)
- {
- m_xStatement = NULL;
- }
- catch(...)
- {
- OSL_FAIL("Unknown Exception occurred");
- }
- m_xComposer = NULL;
-
- DBG_DTOR(OKeySet,NULL);
-}
-void OKeySet::initColumns()
-{
- Reference<XDatabaseMetaData> xMeta = m_xConnection->getMetaData();
- bool bCase = (xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers()) ? true : false;
- m_pKeyColumnNames.reset( new SelectColumnsMetaData(bCase) );
- m_pColumnNames.reset( new SelectColumnsMetaData(bCase) );
- m_pParameterNames.reset( new SelectColumnsMetaData(bCase) );
- m_pForeignColumnNames.reset( new SelectColumnsMetaData(bCase) );
-}
-void OKeySet::findTableColumnsMatching_throw( const Any& i_aTable,
- const ::rtl::OUString& i_rUpdateTableName,
- const Reference<XDatabaseMetaData>& i_xMeta,
- const Reference<XNameAccess>& i_xQueryColumns,
- ::std::auto_ptr<SelectColumnsMetaData>& o_pKeyColumnNames)
-{
- // first ask the database itself for the best columns which can be used
- Sequence< ::rtl::OUString> aBestColumnNames;
- Reference<XNameAccess> xKeyColumns = getPrimaryKeyColumns_throw(i_aTable);
- if ( xKeyColumns.is() )
- aBestColumnNames = xKeyColumns->getElementNames();
-
- const Reference<XColumnsSupplier> xTblColSup(i_aTable,UNO_QUERY_THROW);
- const Reference<XNameAccess> xTblColumns = xTblColSup->getColumns();
- // locate parameter in select columns
- Reference<XParametersSupplier> xParaSup(m_xComposer,UNO_QUERY);
- Reference<XIndexAccess> xQueryParameters = xParaSup->getParameters();
- const sal_Int32 nParaCount = xQueryParameters->getCount();
- Sequence< ::rtl::OUString> aParameterColumns(nParaCount);
- for(sal_Int32 i = 0; i< nParaCount;++i)
- {
- Reference<XPropertySet> xPara(xQueryParameters->getByIndex(i),UNO_QUERY_THROW);
- xPara->getPropertyValue(PROPERTY_REALNAME) >>= aParameterColumns[i];
- }
-
- ::rtl::OUString sUpdateTableName( i_rUpdateTableName );
- if ( sUpdateTableName.getLength() == 0 )
- {
- OSL_FAIL( "OKeySet::findTableColumnsMatching_throw: This is a fallback only - it won't work when the table has an alias name." );
- // If i_aTable originates from a query composer, and is a table which appears with an alias in the SELECT statement,
- // then the below code will not produce correct results.
- // For instance, imagine a "SELECT alias.col FROM table AS alias". Now i_aTable would be the table named
- // "table", so our sUpdateTableName would be "table" as well - not the information about the "alias" is
- // already lost here.
- // now getColumnPositions would travers the columns, and check which of them belong to the table denoted
- // by sUpdateTableName. Since the latter is "table", but the columns only know that they belong to a table
- // named "alias", there will be no matching - so getColumnPositions wouldn't find anything.
-
- ::rtl::OUString sCatalog, sSchema, sTable;
- Reference<XPropertySet> xTableProp( i_aTable, UNO_QUERY_THROW );
- xTableProp->getPropertyValue( PROPERTY_CATALOGNAME )>>= sCatalog;
- xTableProp->getPropertyValue( PROPERTY_SCHEMANAME ) >>= sSchema;
- xTableProp->getPropertyValue( PROPERTY_NAME ) >>= sTable;
- sUpdateTableName = dbtools::composeTableName( i_xMeta, sCatalog, sSchema, sTable, sal_False, ::dbtools::eInDataManipulation );
- }
-
- ::dbaccess::getColumnPositions(i_xQueryColumns,aBestColumnNames,sUpdateTableName,(*o_pKeyColumnNames),true);
- ::dbaccess::getColumnPositions(i_xQueryColumns,xTblColumns->getElementNames(),sUpdateTableName,(*m_pColumnNames),true);
- ::dbaccess::getColumnPositions(i_xQueryColumns,aParameterColumns,sUpdateTableName,(*m_pParameterNames),true);
-
- if ( o_pKeyColumnNames->empty() )
- {
- ::dbtools::throwGenericSQLException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Could not find any key column." ) ), *this );
- }
-
- for ( SelectColumnsMetaData::const_iterator keyColumn = o_pKeyColumnNames->begin();
- keyColumn != o_pKeyColumnNames->end();
- ++keyColumn
- )
- {
- if ( !xTblColumns->hasByName( keyColumn->second.sRealName ) )
- continue;
-
- Reference<XPropertySet> xProp( xTblColumns->getByName( keyColumn->second.sRealName ), UNO_QUERY );
- sal_Bool bAuto = sal_False;
- if ( ( xProp->getPropertyValue( PROPERTY_ISAUTOINCREMENT ) >>= bAuto ) && bAuto )
- m_aAutoColumns.push_back( keyColumn->first );
- }
-}
-::rtl::OUStringBuffer OKeySet::createKeyFilter()
-{
- static ::rtl::OUString aAnd(RTL_CONSTASCII_USTRINGPARAM(" AND "));
- const ::rtl::OUString aQuote = getIdentifierQuoteString();
- ::rtl::OUStringBuffer aFilter;
- static ::rtl::OUString s_sDot(RTL_CONSTASCII_USTRINGPARAM("."));
- static ::rtl::OUString s_sParam(RTL_CONSTASCII_USTRINGPARAM(" = ?"));
- // create the where clause
- Reference<XDatabaseMetaData> xMeta = m_xConnection->getMetaData();
- SelectColumnsMetaData::iterator aPosEnd = m_pKeyColumnNames->end();
- for(SelectColumnsMetaData::iterator aPosIter = m_pKeyColumnNames->begin();aPosIter != aPosEnd;)
- {
- aFilter.append(::dbtools::quoteTableName( xMeta,aPosIter->second.sTableName,::dbtools::eInDataManipulation));
- aFilter.append(s_sDot);
- aFilter.append(::dbtools::quoteName( aQuote,aPosIter->second.sRealName));
- aFilter.append(s_sParam);
- ++aPosIter;
- if(aPosIter != aPosEnd)
- aFilter.append(aAnd);
- }
- return aFilter;
-}
-
-void OKeySet::construct(const Reference< XResultSet>& _xDriverSet,const ::rtl::OUString& i_sRowSetFilter)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::construct" );
- OCacheSet::construct(_xDriverSet,i_sRowSetFilter);
- initColumns();
-
- Reference<XNameAccess> xKeyColumns = getKeyColumns();
- Reference<XDatabaseMetaData> xMeta = m_xConnection->getMetaData();
- Reference<XColumnsSupplier> xQueryColSup(m_xComposer,UNO_QUERY);
- const Reference<XNameAccess> xQueryColumns = xQueryColSup->getColumns();
- findTableColumnsMatching_throw(makeAny(m_xTable),m_sUpdateTableName,xMeta,xQueryColumns,m_pKeyColumnNames);
-
- // the first row is empty because it's now easier for us to distinguish when we are beforefirst or first
- // without extra varaible to be set
- m_aKeyMap.insert(OKeySetMatrix::value_type(0,OKeySetValue(NULL,::std::pair<sal_Int32,Reference<XRow> >(0,NULL))));
- m_aKeyIter = m_aKeyMap.begin();
-
- ::rtl::OUStringBuffer aFilter = createKeyFilter();
-
- Reference< XSingleSelectQueryComposer> xSourceComposer(m_xComposer,UNO_QUERY);
- Reference< XMultiServiceFactory > xFactory(m_xConnection, UNO_QUERY_THROW);
- Reference<XSingleSelectQueryComposer> xAnalyzer(xFactory->createInstance(SERVICE_NAME_SINGLESELECTQUERYCOMPOSER),UNO_QUERY);
- xAnalyzer->setElementaryQuery(xSourceComposer->getElementaryQuery());
- Reference<XTablesSupplier> xTabSup(xAnalyzer,uno::UNO_QUERY);
- Reference<XNameAccess> xSelectTables(xTabSup->getTables(),uno::UNO_QUERY);
- const Sequence< ::rtl::OUString> aSeq = xSelectTables->getElementNames();
- if ( aSeq.getLength() > 1 ) // special handling for join
- {
- static ::rtl::OUString aAnd(RTL_CONSTASCII_USTRINGPARAM(" AND "));
- const ::rtl::OUString aQuote = getIdentifierQuoteString();
- static ::rtl::OUString s_sDot(RTL_CONSTASCII_USTRINGPARAM("."));
- static ::rtl::OUString s_sParam(RTL_CONSTASCII_USTRINGPARAM(" = ?"));
- const ::rtl::OUString* pIter = aSeq.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aSeq.getLength();
- for(;pIter != pEnd;++pIter)
- {
- if ( *pIter != m_sUpdateTableName )
- {
- connectivity::OSQLTable xSelColSup(xSelectTables->getByName(*pIter),uno::UNO_QUERY);
- Reference<XPropertySet> xProp(xSelColSup,uno::UNO_QUERY);
- ::rtl::OUString sSelectTableName = ::dbtools::composeTableName( xMeta, xProp, ::dbtools::eInDataManipulation, false, false, false );
-
- ::dbaccess::getColumnPositions(xQueryColumns,xSelColSup->getColumns()->getElementNames(),sSelectTableName,(*m_pForeignColumnNames));
-
- SelectColumnsMetaData::iterator aPosEnd = (*m_pForeignColumnNames).end();
- for(SelectColumnsMetaData::iterator aPosIter = (*m_pForeignColumnNames).begin();aPosIter != aPosEnd;++aPosIter)
- {
- // look for columns not in the source columns to use them as filter as well
- if ( aFilter.getLength() )
- aFilter.append(aAnd);
- aFilter.append(::dbtools::quoteName( aQuote,sSelectTableName));
- aFilter.append(s_sDot);
- aFilter.append(::dbtools::quoteName( aQuote,aPosIter->second.sRealName));
- aFilter.append(s_sParam);
- }
- break;
- }
- }
- }
- executeStatement(aFilter,i_sRowSetFilter,xAnalyzer);
-}
-void OKeySet::executeStatement(::rtl::OUStringBuffer& io_aFilter,const ::rtl::OUString& i_sRowSetFilter,Reference<XSingleSelectQueryComposer>& io_xAnalyzer)
-{
- bool bFilterSet = i_sRowSetFilter.getLength() != 0;
- if ( bFilterSet )
- {
- FilterCreator aFilterCreator;
- aFilterCreator.append( i_sRowSetFilter );
- aFilterCreator.append( io_aFilter.makeStringAndClear() );
- io_aFilter = aFilterCreator.getComposedAndClear();
- }
- io_xAnalyzer->setFilter(io_aFilter.makeStringAndClear());
- if ( bFilterSet )
- {
- Sequence< Sequence< PropertyValue > > aFilter2 = io_xAnalyzer->getStructuredFilter();
- const Sequence< PropertyValue >* pOr = aFilter2.getConstArray();
- const Sequence< PropertyValue >* pOrEnd = pOr + aFilter2.getLength();
- for(;pOr != pOrEnd;++pOr)
- {
- const PropertyValue* pAnd = pOr->getConstArray();
- const PropertyValue* pAndEnd = pAnd + pOr->getLength();
- for(;pAnd != pAndEnd;++pAnd)
- {
- ::rtl::OUString sValue;
- if ( !(pAnd->Value >>= sValue) || !(sValue.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("?")) || sValue.matchAsciiL(":",1,0)) )
- { // we have a criteria which has to be taken into account for updates
- m_aFilterColumns.push_back(pAnd->Name);
- }
- }
- }
- }
- m_xStatement = m_xConnection->prepareStatement(io_xAnalyzer->getQueryWithSubstitution());
- ::comphelper::disposeComponent(io_xAnalyzer);
-}
-
-Any SAL_CALL OKeySet::getBookmark() throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getBookmark" );
- OSL_ENSURE(m_aKeyIter != m_aKeyMap.end() && m_aKeyIter != m_aKeyMap.begin(),
- "getBookmark is only possible when we stand on a valid row!");
- return makeAny(m_aKeyIter->first);
-}
-
-sal_Bool SAL_CALL OKeySet::moveToBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::moveToBookmark" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- m_aKeyIter = m_aKeyMap.find(::comphelper::getINT32(bookmark));
- return m_aKeyIter != m_aKeyMap.end();
-}
-
-sal_Bool SAL_CALL OKeySet::moveRelativeToBookmark( const Any& bookmark, sal_Int32 rows ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::moveRelativeToBookmark" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- m_aKeyIter = m_aKeyMap.find(::comphelper::getINT32(bookmark));
- if(m_aKeyIter != m_aKeyMap.end())
- {
- relative(rows);
- }
-
- return !isBeforeFirst() && !isAfterLast();
-}
-
-sal_Int32 SAL_CALL OKeySet::compareBookmarks( const Any& _first, const Any& _second ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::compareBookmarks" );
- sal_Int32 nFirst = 0, nSecond = 0;
- _first >>= nFirst;
- _second >>= nSecond;
-
- return (nFirst != nSecond) ? CompareBookmark::NOT_EQUAL : CompareBookmark::EQUAL;
-}
-
-sal_Bool SAL_CALL OKeySet::hasOrderedBookmarks( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::hasOrderedBookmarks" );
- return sal_True;
-}
-
-sal_Int32 SAL_CALL OKeySet::hashBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::hashBookmark" );
- return ::comphelper::getINT32(bookmark);
-}
-
-// ::com::sun::star::sdbcx::XDeleteRows
-Sequence< sal_Int32 > SAL_CALL OKeySet::deleteRows( const Sequence< Any >& rows ,const connectivity::OSQLTable& _xTable) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::deleteRows" );
- Reference<XPropertySet> xSet(_xTable,UNO_QUERY);
- fillTableName(xSet);
-
- ::rtl::OUStringBuffer aSql = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DELETE FROM "));
- aSql.append(m_aComposedTableName);
- aSql.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" WHERE ")));
-
- // list all cloumns that should be set
- const ::rtl::OUString aQuote = getIdentifierQuoteString();
- static ::rtl::OUString aAnd(RTL_CONSTASCII_USTRINGPARAM(" AND "));
- static ::rtl::OUString aOr(RTL_CONSTASCII_USTRINGPARAM(" OR "));
- static ::rtl::OUString aEqual(RTL_CONSTASCII_USTRINGPARAM(" = ?"));
-
-
- // use keys and indexes for excat postioning
- // first the keys
- Reference<XNameAccess> xKeyColumns = getKeyColumns();
-
- ::rtl::OUStringBuffer aCondition = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("( "));
-
- SelectColumnsMetaData::const_iterator aIter = (*m_pKeyColumnNames).begin();
- SelectColumnsMetaData::const_iterator aPosEnd = (*m_pKeyColumnNames).end();
- for(;aIter != aPosEnd;++aIter)
- {
- aCondition.append(::dbtools::quoteName( aQuote,aIter->second.sRealName));
- aCondition.append(aEqual);
- aCondition.append(aAnd);
- }
- aCondition.setLength(aCondition.getLength()-5);
- const ::rtl::OUString sCon( aCondition.makeStringAndClear() );
-
- const Any* pBegin = rows.getConstArray();
- const Any* pEnd = pBegin + rows.getLength();
-
- Sequence< Any > aKeys;
- for(;pBegin != pEnd;++pBegin)
- {
- aSql.append(sCon);
- aSql.append(aOr);
- }
- aSql.setLength(aSql.getLength()-3);
-
- // now create end execute the prepared statement
-
- Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(aSql.makeStringAndClear()));
- Reference< XParameters > xParameter(xPrep,UNO_QUERY);
-
- pBegin = rows.getConstArray();
- sal_Int32 i=1;
- for(;pBegin != pEnd;++pBegin)
- {
- m_aKeyIter = m_aKeyMap.find(::comphelper::getINT32(*pBegin));
- if(m_aKeyIter != m_aKeyMap.end())
- {
- connectivity::ORowVector< ORowSetValue >::Vector::iterator aKeyIter = m_aKeyIter->second.first->get().begin();
- connectivity::ORowVector< ORowSetValue >::Vector::iterator aKeyEnd = m_aKeyIter->second.first->get().end();
- SelectColumnsMetaData::const_iterator aPosIter = (*m_pKeyColumnNames).begin();
- for(sal_uInt16 j = 0;aKeyIter != aKeyEnd;++aKeyIter,++j,++aPosIter)
- {
- setParameter(i++,xParameter,*aKeyIter,aPosIter->second.nType,aPosIter->second.nScale);
- }
- }
- }
-
- sal_Bool bOk = xPrep->executeUpdate() > 0;
- Sequence< sal_Int32 > aRet(rows.getLength());
- memset(aRet.getArray(),bOk,sizeof(sal_Int32)*aRet.getLength());
- if(bOk)
- {
- pBegin = rows.getConstArray();
- pEnd = pBegin + rows.getLength();
-
- for(;pBegin != pEnd;++pBegin)
- {
- sal_Int32 nPos = 0;
- *pBegin >>= nPos;
- if(m_aKeyIter == m_aKeyMap.find(nPos) && m_aKeyIter != m_aKeyMap.end())
- ++m_aKeyIter;
- m_aKeyMap.erase(nPos);
- m_bDeleted = sal_True;
- }
- }
- return aRet;
-}
-
-void SAL_CALL OKeySet::updateRow(const ORowSetRow& _rInsertRow ,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& _xTable ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::updateRow" );
- Reference<XPropertySet> xSet(_xTable,UNO_QUERY);
- fillTableName(xSet);
-
- ::rtl::OUStringBuffer aSql = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UPDATE "));
- aSql.append(m_aComposedTableName);
- aSql.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" SET ")));
- // list all cloumns that should be set
- static ::rtl::OUString aPara(RTL_CONSTASCII_USTRINGPARAM(" = ?,"));
- ::rtl::OUString aQuote = getIdentifierQuoteString();
- static ::rtl::OUString aAnd(RTL_CONSTASCII_USTRINGPARAM(" AND "));
- ::rtl::OUString sIsNull(RTL_CONSTASCII_USTRINGPARAM(" IS NULL"));
- ::rtl::OUString sParam(RTL_CONSTASCII_USTRINGPARAM(" = ?"));
-
- // use keys and indexes for excat postioning
- // first the keys
- Reference<XNameAccess> xKeyColumns = getKeyColumns();
-
- // second the indexes
- Reference<XIndexesSupplier> xIndexSup(_xTable,UNO_QUERY);
- Reference<XIndexAccess> xIndexes;
- if ( xIndexSup.is() )
- xIndexes.set(xIndexSup->getIndexes(),UNO_QUERY);
-
-
- ::std::vector< Reference<XNameAccess> > aAllIndexColumns;
- lcl_fillIndexColumns(xIndexes,aAllIndexColumns);
-
- ::rtl::OUString aColumnName;
- ::rtl::OUStringBuffer sKeyCondition,sIndexCondition;
- ::std::vector<sal_Int32> aIndexColumnPositions;
-
- const sal_Int32 nOldLength = aSql.getLength();
- sal_Int32 i = 1;
- // here we build the condition part for the update statement
- SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
- for(;aIter != aEnd;++aIter,++i)
- {
- if ( m_pKeyColumnNames->find(aIter->first) != m_pKeyColumnNames->end() )
- {
- sKeyCondition.append(::dbtools::quoteName( aQuote,aIter->second.sRealName));
- if((_rOrginalRow->get())[aIter->second.nPosition].isNull())
- sKeyCondition.append(sIsNull);
- else
- sKeyCondition.append(sParam);
- sKeyCondition.append(aAnd);
- }
- else
- {
- ::std::vector< Reference<XNameAccess> >::const_iterator aIndexEnd = aAllIndexColumns.end();
- for( ::std::vector< Reference<XNameAccess> >::const_iterator aIndexIter = aAllIndexColumns.begin();
- aIndexIter != aIndexEnd;++aIndexIter)
- {
- if((*aIndexIter)->hasByName(aIter->first))
- {
- sIndexCondition.append(::dbtools::quoteName( aQuote,aIter->second.sRealName));
- if((_rOrginalRow->get())[aIter->second.nPosition].isNull())
- sIndexCondition.append(sIsNull);
- else
- {
- sIndexCondition.append(sParam);
- aIndexColumnPositions.push_back(aIter->second.nPosition);
- }
- sIndexCondition.append(aAnd);
- break;
- }
- }
- }
- if((_rInsertRow->get())[aIter->second.nPosition].isModified())
- {
- aSql.append(::dbtools::quoteName( aQuote,aIter->second.sRealName));
- aSql.append(aPara);
- }
- }
-
- if( aSql.getLength() != nOldLength )
- {
- aSql.setLength(aSql.getLength()-1);
- }
- else
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_VALUE_CHANGED ), SQL_GENERAL_ERROR, m_xConnection );
-
- if(sKeyCondition.getLength() || sIndexCondition.getLength())
- {
- aSql.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" WHERE ")));
- if(sKeyCondition.getLength() && sIndexCondition.getLength())
- {
- aSql.append(sKeyCondition.makeStringAndClear());
- aSql.append(sIndexCondition.makeStringAndClear());
- }
- else if(sKeyCondition.getLength())
- {
- aSql.append(sKeyCondition.makeStringAndClear());
- }
- else if(sIndexCondition.getLength())
- {
- aSql.append(sIndexCondition.makeStringAndClear());
- }
- aSql.setLength(aSql.getLength()-5); // remove the last AND
- }
- else
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_CONDITION_FOR_PK ), SQL_GENERAL_ERROR, m_xConnection );
-
- // now create end execute the prepared statement
- ::rtl::OUString sEmpty;
- executeUpdate(_rInsertRow ,_rOrginalRow,aSql.makeStringAndClear(),sEmpty,aIndexColumnPositions);
-}
-
-void OKeySet::executeUpdate(const ORowSetRow& _rInsertRow ,const ORowSetRow& _rOrginalRow,const ::rtl::OUString& i_sSQL,const ::rtl::OUString& i_sTableName,const ::std::vector<sal_Int32>& _aIndexColumnPositions)
-{
- // now create end execute the prepared statement
- Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(i_sSQL));
- Reference< XParameters > xParameter(xPrep,UNO_QUERY);
-
- bool bRefetch = true;
- Reference<XRow> xRow;
- sal_Int32 i = 1;
- // first the set values
- SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
- sal_uInt16 j = 0;
- for(;aIter != aEnd;++aIter,++j)
- {
- if ( !i_sTableName.getLength() || aIter->second.sTableName == i_sTableName )
- {
- sal_Int32 nPos = aIter->second.nPosition;
- if((_rInsertRow->get())[nPos].isModified())
- {
- if ( bRefetch )
- {
- bRefetch = ::std::find(m_aFilterColumns.begin(),m_aFilterColumns.end(),aIter->second.sRealName) == m_aFilterColumns.end();
- }
- impl_convertValue_throw(_rInsertRow,aIter->second);
- (_rInsertRow->get())[nPos].setSigned((_rOrginalRow->get())[nPos].isSigned());
- setParameter(i++,xParameter,(_rInsertRow->get())[nPos],aIter->second.nType,aIter->second.nScale);
- }
- }
- }
- // and then the values of the where condition
- aIter = m_pKeyColumnNames->begin();
- aEnd = m_pKeyColumnNames->end();
- j = 0;
- for(;aIter != aEnd;++aIter,++j)
- {
- if ( !i_sTableName.getLength() || aIter->second.sTableName == i_sTableName )
- {
- setParameter(i++,xParameter,(_rOrginalRow->get())[aIter->second.nPosition],aIter->second.nType,aIter->second.nScale);
- }
- }
- if ( !_aIndexColumnPositions.empty() )
- {
- // now we have to set the index values
- ::std::vector<sal_Int32>::const_iterator aIdxColIter = _aIndexColumnPositions.begin();
- ::std::vector<sal_Int32>::const_iterator aIdxColEnd = _aIndexColumnPositions.end();
- j = 0;
- aIter = m_pColumnNames->begin();
- for(;aIdxColIter != aIdxColEnd;++aIdxColIter,++i,++j,++aIter)
- {
- setParameter(i,xParameter,(_rOrginalRow->get())[*aIdxColIter],(_rOrginalRow->get())[*aIdxColIter].getTypeKind(),aIter->second.nScale);
- }
- }
- const sal_Int32 nRowsUpdated = xPrep->executeUpdate();
- m_bUpdated = nRowsUpdated > 0;
- if(m_bUpdated)
- {
- const sal_Int32 nBookmark = ::comphelper::getINT32((_rInsertRow->get())[0].getAny());
- m_aKeyIter = m_aKeyMap.find(nBookmark);
- m_aKeyIter->second.second.first = 2;
- m_aKeyIter->second.second.second = xRow;
- copyRowValue(_rInsertRow,m_aKeyIter->second.first,nBookmark);
- tryRefetch(_rInsertRow,bRefetch);
- }
-}
-
-void SAL_CALL OKeySet::insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::insertRow" );
- ::rtl::OUStringBuffer aSql(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("INSERT INTO ")));
- Reference<XPropertySet> xSet(_xTable,UNO_QUERY);
- fillTableName(xSet);
-
- aSql.append(m_aComposedTableName);
- aSql.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" ( ")));
- // set values and column names
- ::rtl::OUStringBuffer aValues(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" VALUES ( ")));
- static ::rtl::OUString aPara(RTL_CONSTASCII_USTRINGPARAM("?,"));
- ::rtl::OUString aQuote = getIdentifierQuoteString();
- static ::rtl::OUString aComma(RTL_CONSTASCII_USTRINGPARAM(","));
-
- SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
- sal_Int32 j = 1;
- bool bRefetch = true;
- sal_Bool bModified = sal_False;
- for(;aIter != aEnd;++aIter,++j)
- {
- if((_rInsertRow->get())[aIter->second.nPosition].isModified())
- {
- if ( bRefetch )
- {
- bRefetch = ::std::find(m_aFilterColumns.begin(),m_aFilterColumns.end(),aIter->second.sRealName) == m_aFilterColumns.end();
- }
- aSql.append(::dbtools::quoteName( aQuote,aIter->second.sRealName));
- aSql.append(aComma);
- aValues.append(aPara);
- bModified = sal_True;
- }
- }
- if ( !bModified )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_VALUE_CHANGED ), SQL_GENERAL_ERROR, m_xConnection );
-
- aSql.setCharAt(aSql.getLength()-1,')');
- aValues.setCharAt(aValues.getLength()-1,')');
- aSql.append(aValues.makeStringAndClear());
- // now create,fill and execute the prepared statement
- ::rtl::OUString sEmpty;
- executeInsert(_rInsertRow,aSql.makeStringAndClear(),sEmpty,bRefetch);
-}
-
-void OKeySet::executeInsert( const ORowSetRow& _rInsertRow,const ::rtl::OUString& i_sSQL,const ::rtl::OUString& i_sTableName,bool bRefetch )
-{
- // now create,fill and execute the prepared statement
- Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(i_sSQL));
- Reference< XParameters > xParameter(xPrep,UNO_QUERY);
-
- SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
- for(sal_Int32 i = 1;aIter != aEnd;++aIter)
- {
- if ( !i_sTableName.getLength() || aIter->second.sTableName == i_sTableName )
- {
- const sal_Int32 nPos = aIter->second.nPosition;
- if((_rInsertRow->get())[nPos].isModified())
- {
- if((_rInsertRow->get())[nPos].isNull())
- xParameter->setNull(i++,(_rInsertRow->get())[nPos].getTypeKind());
- else
- {
- impl_convertValue_throw(_rInsertRow,aIter->second);
- (_rInsertRow->get())[nPos].setSigned(m_aSignedFlags[nPos-1]);
- setParameter(i++,xParameter,(_rInsertRow->get())[nPos],aIter->second.nType,aIter->second.nScale);
- }
- }
- }
- }
-
- m_bInserted = xPrep->executeUpdate() > 0;
- sal_Bool bAutoValuesFetched = sal_False;
- if ( m_bInserted )
- {
- // first insert the default values into the insertrow
- aIter = m_pColumnNames->begin();
- for(;aIter != aEnd;++aIter)
- {
- if ( !(_rInsertRow->get())[aIter->second.nPosition].isModified() )
- (_rInsertRow->get())[aIter->second.nPosition] = aIter->second.sDefaultValue;
- }
- try
- {
- Reference< XGeneratedResultSet > xGRes(xPrep, UNO_QUERY);
- if ( xGRes.is() )
- {
- Reference< XResultSet > xRes = xGRes->getGeneratedValues();
- Reference< XRow > xRow(xRes,UNO_QUERY);
- if ( xRow.is() && xRes->next() )
- {
- Reference< XResultSetMetaDataSupplier > xMdSup(xRes,UNO_QUERY);
- Reference< XResultSetMetaData > xMd = xMdSup->getMetaData();
- sal_Int32 nColumnCount = xMd->getColumnCount();
- ::std::vector< ::rtl::OUString >::iterator aAutoIter = m_aAutoColumns.begin();
- ::std::vector< ::rtl::OUString >::iterator aAutoEnd = m_aAutoColumns.end();
- for (sal_Int32 i = 1;aAutoIter != aAutoEnd && i <= nColumnCount; ++aAutoIter,++i)
- {
-#if OSL_DEBUG_LEVEL > 1
- ::rtl::OUString sColumnName( xMd->getColumnName(i) );
-#endif
- SelectColumnsMetaData::iterator aFind = m_pKeyColumnNames->find(*aAutoIter);
- if ( aFind != m_pKeyColumnNames->end() )
- (_rInsertRow->get())[aFind->second.nPosition].fill(i,aFind->second.nType,aFind->second.bNullable,xRow);
- }
- bAutoValuesFetched = sal_True;
- }
- }
- }
- catch(const Exception&)
- {
- OSL_FAIL("Could not execute GeneratedKeys() stmt");
- }
- }
-
- ::comphelper::disposeComponent(xPrep);
-
- if ( !i_sTableName.getLength() && !bAutoValuesFetched && m_bInserted )
- {
- // first check if all key column values were set
- const ::rtl::OUString sMax(RTL_CONSTASCII_USTRINGPARAM(" MAX("));
- const ::rtl::OUString sMaxEnd(RTL_CONSTASCII_USTRINGPARAM("),"));
- const ::rtl::OUString sQuote = getIdentifierQuoteString();
- ::rtl::OUString sMaxStmt;
- aEnd = m_pKeyColumnNames->end();
- ::std::vector< ::rtl::OUString >::iterator aAutoIter = m_aAutoColumns.begin();
- ::std::vector< ::rtl::OUString >::iterator aAutoEnd = m_aAutoColumns.end();
- for (;aAutoIter != aAutoEnd; ++aAutoIter)
- {
- // we will only fetch values which are keycolumns
- SelectColumnsMetaData::iterator aFind = m_pKeyColumnNames->find(*aAutoIter);
- if ( aFind != aEnd )
- {
- sMaxStmt += sMax;
- sMaxStmt += ::dbtools::quoteName( sQuote,aFind->second.sRealName
-);
- sMaxStmt += sMaxEnd;
- }
- }
-
- if(sMaxStmt.getLength())
- {
- sMaxStmt = sMaxStmt.replaceAt(sMaxStmt.getLength()-1,1,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" ")));
- ::rtl::OUString sStmt = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SELECT "));
- sStmt += sMaxStmt;
- sStmt += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FROM "));
- ::rtl::OUString sCatalog,sSchema,sTable;
- ::dbtools::qualifiedNameComponents(m_xConnection->getMetaData(),m_sUpdateTableName,sCatalog,sSchema,sTable,::dbtools::eInDataManipulation);
- sStmt += ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable );
- try
- {
- // now fetch the autoincrement values
- Reference<XStatement> xStatement = m_xConnection->createStatement();
- Reference<XResultSet> xRes = xStatement->executeQuery(sStmt);
- Reference<XRow> xRow(xRes,UNO_QUERY);
- if(xRow.is() && xRes->next())
- {
- aAutoIter = m_aAutoColumns.begin();
- for (sal_Int32 i=1;aAutoIter != aAutoEnd; ++aAutoIter,++i)
- {
- // we will only fetch values which are keycolumns
- SelectColumnsMetaData::iterator aFind = m_pKeyColumnNames->find(*aAutoIter);
- if ( aFind != aEnd )
- (_rInsertRow->get())[aFind->second.nPosition].fill(i,aFind->second.nType,aFind->second.bNullable,xRow);
- }
- }
- ::comphelper::disposeComponent(xStatement);
- }
- catch(SQLException&)
- {
- OSL_FAIL("Could not fetch with MAX() ");
- }
- }
- }
- if ( m_bInserted )
- {
- OKeySetMatrix::iterator aKeyIter = m_aKeyMap.end();
- --aKeyIter;
- ORowSetRow aKeyRow = new connectivity::ORowVector< ORowSetValue >(m_pKeyColumnNames->size());
- copyRowValue(_rInsertRow,aKeyRow,aKeyIter->first + 1);
-
- m_aKeyIter = m_aKeyMap.insert(OKeySetMatrix::value_type(aKeyIter->first + 1,OKeySetValue(aKeyRow,::std::pair<sal_Int32,Reference<XRow> >(1,NULL)))).first;
- // now we set the bookmark for this row
- (_rInsertRow->get())[0] = makeAny((sal_Int32)m_aKeyIter->first);
- tryRefetch(_rInsertRow,bRefetch);
- }
-}
-void OKeySet::tryRefetch(const ORowSetRow& _rInsertRow,bool bRefetch)
-{
- if ( bRefetch )
- {
- // we just areassign the base members
- try
- {
- Reference< XParameters > xParameter(m_xStatement,UNO_QUERY);
- OSL_ENSURE(xParameter.is(),"No Parameter interface!");
- xParameter->clearParameters();
-
- sal_Int32 nPos=1;
- connectivity::ORowVector< ORowSetValue >::Vector::const_iterator aParaIter;
- connectivity::ORowVector< ORowSetValue >::Vector::const_iterator aParaEnd;
- OUpdatedParameter::iterator aUpdateFind = m_aUpdatedParameter.find(m_aKeyIter->first);
- if ( aUpdateFind == m_aUpdatedParameter.end() )
- {
- aParaIter = m_aParameterValueForCache.get().begin();
- aParaEnd = m_aParameterValueForCache.get().end();
- }
- else
- {
- aParaIter = aUpdateFind->second.get().begin();
- aParaEnd = aUpdateFind->second.get().end();
- }
-
- for(++aParaIter;aParaIter != aParaEnd;++aParaIter,++nPos)
- {
- ::dbtools::setObjectWithInfo( xParameter, nPos, aParaIter->makeAny(), aParaIter->getTypeKind() );
- }
- connectivity::ORowVector< ORowSetValue >::Vector::const_iterator aIter2 = m_aKeyIter->second.first->get().begin();
- SelectColumnsMetaData::const_iterator aPosIter = (*m_pKeyColumnNames).begin();
- SelectColumnsMetaData::const_iterator aPosEnd = (*m_pKeyColumnNames).end();
- for(;aPosIter != aPosEnd;++aPosIter,++aIter2,++nPos)
- setParameter(nPos,xParameter,*aIter2,aPosIter->second.nType,aPosIter->second.nScale);
- aPosIter = (*m_pForeignColumnNames).begin();
- aPosEnd = (*m_pForeignColumnNames).end();
- for(;aPosIter != aPosEnd;++aPosIter,++aIter2,++nPos)
- setParameter(nPos,xParameter,*aIter2,aPosIter->second.nType,aPosIter->second.nScale);
-
- m_xSet = m_xStatement->executeQuery();
- OSL_ENSURE(m_xSet.is(),"No resultset form statement!");
- bRefetch = m_xSet->next();
- }
- catch(const Exception&)
- {
- bRefetch = false;
- }
- }
- if ( !bRefetch )
- {
- m_aKeyIter->second.second.second = new OPrivateRow(_rInsertRow->get());
- }
-}
-
-void OKeySet::copyRowValue(const ORowSetRow& _rInsertRow,ORowSetRow& _rKeyRow,sal_Int32 i_nBookmark)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::copyRowValue" );
- connectivity::ORowVector< ORowSetValue >::Vector::iterator aIter = _rKeyRow->get().begin();
-
- // check the if the parameter values have been changed
- OSL_ENSURE((m_aParameterValueForCache.get().size()-1) == m_pParameterNames->size(),"OKeySet::copyRowValue: Parameter values and names differ!");
- connectivity::ORowVector< ORowSetValue >::Vector::const_iterator aParaValuesIter = m_aParameterValueForCache.get().begin() +1;
-
- bool bChanged = false;
- SelectColumnsMetaData::const_iterator aParaIter = (*m_pParameterNames).begin();
- SelectColumnsMetaData::const_iterator aParaEnd = (*m_pParameterNames).end();
- for(sal_Int32 i = 1;aParaIter != aParaEnd;++aParaIter,++aParaValuesIter,++i)
- {
- ORowSetValue aValue(*aParaValuesIter);
- aValue.setSigned(m_aSignedFlags[aParaIter->second.nPosition]);
- if ( (_rInsertRow->get())[aParaIter->second.nPosition] != aValue )
- {
- ORowSetValueVector aCopy(m_aParameterValueForCache);
- (aCopy.get())[i] = (_rInsertRow->get())[aParaIter->second.nPosition];
- m_aUpdatedParameter[i_nBookmark] = aCopy;
- bChanged = true;
- }
- }
- if ( !bChanged )
- {
- m_aUpdatedParameter.erase(i_nBookmark);
- }
-
- // update the key values
- SelectColumnsMetaData::const_iterator aPosIter = (*m_pKeyColumnNames).begin();
- SelectColumnsMetaData::const_iterator aPosEnd = (*m_pKeyColumnNames).end();
- for(;aPosIter != aPosEnd;++aPosIter,++aIter)
- {
- impl_convertValue_throw(_rInsertRow,aPosIter->second);
- *aIter = (_rInsertRow->get())[aPosIter->second.nPosition];
- aIter->setTypeKind(aPosIter->second.nType);
- }
-}
-
-void SAL_CALL OKeySet::deleteRow(const ORowSetRow& _rDeleteRow,const connectivity::OSQLTable& _xTable ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::deleteRow" );
- Reference<XPropertySet> xSet(_xTable,UNO_QUERY);
- fillTableName(xSet);
-
- ::rtl::OUStringBuffer aSql = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DELETE FROM "));
- aSql.append(m_aComposedTableName);
- aSql.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" WHERE ")));
-
- // list all cloumns that should be set
- ::rtl::OUString aQuote = getIdentifierQuoteString();
- static ::rtl::OUString aAnd(RTL_CONSTASCII_USTRINGPARAM(" AND "));
-
- // use keys and indexes for excat postioning
- Reference<XNameAccess> xKeyColumns = getKeyColumns();
- // second the indexes
- Reference<XIndexesSupplier> xIndexSup(_xTable,UNO_QUERY);
- Reference<XIndexAccess> xIndexes;
- if ( xIndexSup.is() )
- xIndexes.set(xIndexSup->getIndexes(),UNO_QUERY);
-
- // Reference<XColumnsSupplier>
- ::std::vector< Reference<XNameAccess> > aAllIndexColumns;
- lcl_fillIndexColumns(xIndexes,aAllIndexColumns);
-
- ::rtl::OUString aColumnName;
- ::rtl::OUStringBuffer sIndexCondition;
- ::std::vector<sal_Int32> aIndexColumnPositions;
- SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
-
- sal_Int32 i = 1;
- for(i = 1;aIter != aEnd;++aIter,++i)
- {
- if ( m_pKeyColumnNames->find(aIter->first) != m_pKeyColumnNames->end() )
- {
- aSql.append(::dbtools::quoteName( aQuote,aIter->second.sRealName));
- if((_rDeleteRow->get())[aIter->second.nPosition].isNull())
- {
- OSL_FAIL("can a primary key be null");
- aSql.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" IS NULL")));
- }
- else
- aSql.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" = ?")));
- aSql.append(aAnd);
- }
- else
- {
- ::std::vector< Reference<XNameAccess> >::const_iterator aIndexEnd = aAllIndexColumns.end();
- for( ::std::vector< Reference<XNameAccess> >::const_iterator aIndexIter = aAllIndexColumns.begin();
- aIndexIter != aIndexEnd;++aIndexIter)
- {
- if((*aIndexIter)->hasByName(aIter->first))
- {
- sIndexCondition.append(::dbtools::quoteName( aQuote,aIter->second.sRealName));
- if((_rDeleteRow->get())[aIter->second.nPosition].isNull())
- sIndexCondition.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" IS NULL")));
- else
- {
- sIndexCondition.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" = ?")));
- aIndexColumnPositions.push_back(aIter->second.nPosition);
- }
- sIndexCondition.append(aAnd);
-
- break;
- }
- }
- }
- }
- aSql.append(sIndexCondition.makeStringAndClear());
- aSql.setLength(aSql.getLength()-5);
-
- // now create end execute the prepared statement
- Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(aSql.makeStringAndClear()));
- Reference< XParameters > xParameter(xPrep,UNO_QUERY);
-
- aIter = (*m_pKeyColumnNames).begin();
- aEnd = (*m_pKeyColumnNames).end();
- i = 1;
- for(;aIter != aEnd;++aIter,++i)
- {
- setParameter(i,xParameter,(_rDeleteRow->get())[aIter->second.nPosition],aIter->second.nType,aIter->second.nScale);
- }
-
- // now we have to set the index values
- ::std::vector<sal_Int32>::iterator aIdxColIter = aIndexColumnPositions.begin();
- ::std::vector<sal_Int32>::iterator aIdxColEnd = aIndexColumnPositions.end();
- aIter = m_pColumnNames->begin();
- for(;aIdxColIter != aIdxColEnd;++aIdxColIter,++i,++aIter)
- {
- setParameter(i,xParameter,(_rDeleteRow->get())[*aIdxColIter],(_rDeleteRow->get())[*aIdxColIter].getTypeKind(),aIter->second.nScale);
- }
-
- m_bDeleted = xPrep->executeUpdate() > 0;
-
- if(m_bDeleted)
- {
- sal_Int32 nBookmark = ::comphelper::getINT32((_rDeleteRow->get())[0].getAny());
- if(m_aKeyIter == m_aKeyMap.find(nBookmark) && m_aKeyIter != m_aKeyMap.end())
- ++m_aKeyIter;
- m_aKeyMap.erase(nBookmark);
- m_bDeleted = sal_True;
- }
-}
-
-void SAL_CALL OKeySet::cancelRowUpdates( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::cancelRowUpdates" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
-}
-
-void SAL_CALL OKeySet::moveToInsertRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::moveToInsertRow" );
-}
-
-void SAL_CALL OKeySet::moveToCurrentRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::moveToCurrentRow" );
-}
-
-Reference<XNameAccess> OKeySet::getKeyColumns() const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getKeyColumns" );
- // use keys and indexes for excat postioning
- // first the keys
-
- Reference<XIndexAccess> xKeys = m_xTableKeys;
- if ( !xKeys.is() )
- {
- Reference<XPropertySet> xSet(m_xTable,UNO_QUERY);
- const Reference<XNameAccess> xPrimaryKeyColumns = getPrimaryKeyColumns_throw(xSet);
- return xPrimaryKeyColumns;
- }
-
- Reference<XColumnsSupplier> xKeyColsSup;
- Reference<XNameAccess> xKeyColumns;
- if(xKeys.is())
- {
- Reference<XPropertySet> xProp;
- sal_Int32 nCount = xKeys->getCount();
- for(sal_Int32 i = 0;i< nCount;++i)
- {
- xProp.set(xKeys->getByIndex(i),UNO_QUERY);
- if ( xProp.is() )
- {
- sal_Int32 nKeyType = 0;
- xProp->getPropertyValue(PROPERTY_TYPE) >>= nKeyType;
- if(KeyType::PRIMARY == nKeyType)
- {
- xKeyColsSup.set(xProp,UNO_QUERY);
- OSL_ENSURE(xKeyColsSup.is(),"Columnsupplier is null!");
- xKeyColumns = xKeyColsSup->getColumns();
- break;
- }
- }
- }
- }
-
- return xKeyColumns;
-}
-
-sal_Bool SAL_CALL OKeySet::next( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::next" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
-
- if(isAfterLast())
- return sal_False;
- if(!m_bRowCountFinal) // not yet all records fetched
- {
- ++m_aKeyIter; // this is possible because we stand on begin() and this is the "beforefirst" row
- if(m_aKeyIter == m_aKeyMap.end() && !fetchRow())
- m_aKeyIter = m_aKeyMap.end();
- else
- {
- //m_aKeyIter->second.second.second = new OPrivateRow(_rInsertRow->get());
- m_xRow.set(m_xDriverRow,UNO_QUERY_THROW);
- return !isAfterLast();
- }
- }
- else if(!isAfterLast())
- ++m_aKeyIter;
-
- refreshRow();
- return !isAfterLast();
-}
-
-sal_Bool SAL_CALL OKeySet::isBeforeFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::isBeforeFirst" );
- return m_aKeyIter == m_aKeyMap.begin();
-}
-
-sal_Bool SAL_CALL OKeySet::isAfterLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::isAfterLast" );
- return m_bRowCountFinal && m_aKeyIter == m_aKeyMap.end();
-}
-
-sal_Bool SAL_CALL OKeySet::isFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::isFirst" );
- OKeySetMatrix::iterator aTemp = m_aKeyMap.begin();
- ++aTemp;
- return m_aKeyIter == aTemp && m_aKeyIter != m_aKeyMap.end();
-}
-
-sal_Bool SAL_CALL OKeySet::isLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::isLast" );
- if(!m_bRowCountFinal)
- return sal_False;
-
- OKeySetMatrix::iterator aTemp = m_aKeyMap.end();
- --aTemp;
- return m_aKeyIter == aTemp;
-}
-
-void SAL_CALL OKeySet::beforeFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::beforeFirst" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- m_aKeyIter = m_aKeyMap.begin();
- m_xRow = NULL;
- ::comphelper::disposeComponent(m_xSet);
-}
-
-void SAL_CALL OKeySet::afterLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::afterLast" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- fillAllRows();
- m_aKeyIter = m_aKeyMap.end();
- m_xRow = NULL;
- ::comphelper::disposeComponent(m_xSet);
-}
-
-sal_Bool SAL_CALL OKeySet::first( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::first" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- m_aKeyIter = m_aKeyMap.begin();
- ++m_aKeyIter;
- if(m_aKeyIter == m_aKeyMap.end() && !fetchRow())
- m_aKeyIter = m_aKeyMap.end();
- else
- refreshRow();
- return m_aKeyIter != m_aKeyMap.end() && m_aKeyIter != m_aKeyMap.begin();
-}
-
-sal_Bool SAL_CALL OKeySet::last( ) throw(SQLException, RuntimeException)
-{
- return last_checked(sal_True);
-}
-
-sal_Bool OKeySet::last_checked( sal_Bool i_bFetchRow)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::last_checked" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- fillAllRows();
-
- m_aKeyIter = m_aKeyMap.end();
- --m_aKeyIter;
- if ( i_bFetchRow )
- refreshRow();
- return m_aKeyIter != m_aKeyMap.end() && m_aKeyIter != m_aKeyMap.begin();
-}
-
-sal_Int32 SAL_CALL OKeySet::getRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getRow" );
- OSL_ENSURE(!isAfterLast(),"getRow is not allowed when afterlast record!");
- OSL_ENSURE(!isBeforeFirst(),"getRow is not allowed when beforefirst record!");
-
- return ::std::distance(m_aKeyMap.begin(),m_aKeyIter);
-}
-
-sal_Bool SAL_CALL OKeySet::absolute( sal_Int32 row ) throw(SQLException, RuntimeException)
-{
- return absolute_checked(row,sal_True);
-}
-sal_Bool OKeySet::absolute_checked( sal_Int32 row,sal_Bool i_bFetchRow )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::absolute" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- OSL_ENSURE(row,"absolute(0) isn't allowed!");
- if(row < 0)
- {
- if(!m_bRowCountFinal)
- fillAllRows();
-
- for(;row < 0 && m_aKeyIter != m_aKeyMap.begin();++row)
- m_aKeyIter--;
- }
- else
- {
- if(row >= (sal_Int32)m_aKeyMap.size())
- {
- if(!m_bRowCountFinal)
- {
- sal_Bool bNext = sal_True;
- for(sal_Int32 i=m_aKeyMap.size()-1;i < row && bNext;++i)
- bNext = fetchRow();
- if ( bNext )
- {
- m_xRow.set(m_xDriverRow,UNO_QUERY_THROW);
- return m_aKeyIter != m_aKeyMap.end() && m_aKeyIter != m_aKeyMap.begin();
- }
- }
- else
- m_aKeyIter = m_aKeyMap.end();
- }
- else
- {
- m_aKeyIter = m_aKeyMap.begin();
- for(;row > 0 && m_aKeyIter != m_aKeyMap.end();--row)
- ++m_aKeyIter;
- }
- }
- if ( i_bFetchRow )
- refreshRow();
-
- return m_aKeyIter != m_aKeyMap.end() && m_aKeyIter != m_aKeyMap.begin();
-}
-
-sal_Bool SAL_CALL OKeySet::relative( sal_Int32 rows ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::relative" );
- if(!rows)
- {
- refreshRow();
- return sal_True;
- }
- return absolute(getRow()+rows);
-}
-
-sal_Bool OKeySet::previous_checked( sal_Bool i_bFetchRow )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::previous" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- if(m_aKeyIter != m_aKeyMap.begin())
- {
- --m_aKeyIter;
- if ( i_bFetchRow )
- refreshRow();
- }
- return m_aKeyIter != m_aKeyMap.begin();
-}
-sal_Bool SAL_CALL OKeySet::previous( ) throw(SQLException, RuntimeException)
-{
- return previous_checked(sal_True);
-}
-
-// -----------------------------------------------------------------------------
-void SAL_CALL OKeySet::refreshRow() throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::refreshRow" );
- if(isBeforeFirst() || isAfterLast() || !m_xStatement.is())
- return;
-
- m_xRow = NULL;
- ::comphelper::disposeComponent(m_xSet);
-
- if ( m_aKeyIter->second.second.second.is() )
- {
- m_xRow = m_aKeyIter->second.second.second;
- return;
- }
- // we just areassign the base members
- Reference< XParameters > xParameter(m_xStatement,UNO_QUERY);
- OSL_ENSURE(xParameter.is(),"No Parameter interface!");
- xParameter->clearParameters();
-
- sal_Int32 nPos=1;
- connectivity::ORowVector< ORowSetValue >::Vector::const_iterator aParaIter;
- connectivity::ORowVector< ORowSetValue >::Vector::const_iterator aParaEnd;
- OUpdatedParameter::iterator aUpdateFind = m_aUpdatedParameter.find(m_aKeyIter->first);
- if ( aUpdateFind == m_aUpdatedParameter.end() )
- {
- aParaIter = m_aParameterValueForCache.get().begin();
- aParaEnd = m_aParameterValueForCache.get().end();
- }
- else
- {
- aParaIter = aUpdateFind->second.get().begin();
- aParaEnd = aUpdateFind->second.get().end();
- }
-
- for(++aParaIter;aParaIter != aParaEnd;++aParaIter,++nPos)
- {
- ::dbtools::setObjectWithInfo( xParameter, nPos, aParaIter->makeAny(), aParaIter->getTypeKind() );
- }
-
- // now set the primary key column values
- connectivity::ORowVector< ORowSetValue >::Vector::const_iterator aIter = m_aKeyIter->second.first->get().begin();
- SelectColumnsMetaData::const_iterator aPosIter = (*m_pKeyColumnNames).begin();
- SelectColumnsMetaData::const_iterator aPosEnd = (*m_pKeyColumnNames).end();
- for(;aPosIter != aPosEnd;++aPosIter,++aIter,++nPos)
- setParameter(nPos,xParameter,*aIter,aPosIter->second.nType,aPosIter->second.nScale);
- aPosIter = (*m_pForeignColumnNames).begin();
- aPosEnd = (*m_pForeignColumnNames).end();
- for(;aPosIter != aPosEnd;++aPosIter,++aIter,++nPos)
- setParameter(nPos,xParameter,*aIter,aPosIter->second.nType,aPosIter->second.nScale);
-
- m_xSet = m_xStatement->executeQuery();
- OSL_ENSURE(m_xSet.is(),"No resultset form statement!");
- sal_Bool bOK = m_xSet->next();
- if ( !bOK )
- {
- OKeySetMatrix::iterator aTemp = m_aKeyIter;
- ++m_aKeyIter;
- m_aKeyMap.erase(aTemp);
- --m_rRowCount;
- refreshRow();
- }
- else
- {
- m_xRow.set(m_xSet,UNO_QUERY);
- OSL_ENSURE(m_xRow.is(),"No row form statement!");
- }
-}
-
-sal_Bool OKeySet::fetchRow()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::fetchRow" );
- // fetch the next row and append on the keyset
- sal_Bool bRet = sal_False;
- if ( !m_bRowCountFinal && (!m_nMaxRows || sal_Int32(m_aKeyMap.size()) < m_nMaxRows) )
- bRet = m_xDriverSet->next();
- if ( bRet )
- {
- ORowSetRow aKeyRow = new connectivity::ORowVector< ORowSetValue >((*m_pKeyColumnNames).size() + m_pForeignColumnNames->size());
- connectivity::ORowVector< ORowSetValue >::Vector::iterator aIter = aKeyRow->get().begin();
- // first fetch the values needed for the key column
- SelectColumnsMetaData::const_iterator aPosIter = (*m_pKeyColumnNames).begin();
- SelectColumnsMetaData::const_iterator aPosEnd = (*m_pKeyColumnNames).end();
- for(;aPosIter != aPosEnd;++aPosIter,++aIter)
- {
- const SelectColumnDescription& rColDesc = aPosIter->second;
- aIter->fill(rColDesc.nPosition,rColDesc.nType,rColDesc.bNullable,m_xDriverRow);
- }
- // now fetch the values from the missing columns from other tables
- aPosIter = (*m_pForeignColumnNames).begin();
- aPosEnd = (*m_pForeignColumnNames).end();
- for(;aPosIter != aPosEnd;++aPosIter,++aIter)
- {
- const SelectColumnDescription& rColDesc = aPosIter->second;
- aIter->fill(rColDesc.nPosition,rColDesc.nType,rColDesc.bNullable,m_xDriverRow);
- }
- m_aKeyIter = m_aKeyMap.insert(OKeySetMatrix::value_type(m_aKeyMap.rbegin()->first+1,OKeySetValue(aKeyRow,::std::pair<sal_Int32,Reference<XRow> >(0,NULL)))).first;
- }
- else
- m_bRowCountFinal = sal_True;
- return bRet;
-}
-
-void OKeySet::fillAllRows()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::fillAllRows" );
- if(!m_bRowCountFinal)
- {
- while(fetchRow())
- ;
- }
-}
-// XRow
-sal_Bool SAL_CALL OKeySet::wasNull( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::wasNull" );
- return m_xRow->wasNull();
-}
-
-::rtl::OUString SAL_CALL OKeySet::getString( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getString" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getString(columnIndex);
-}
-
-sal_Bool SAL_CALL OKeySet::getBoolean( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getBoolean" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getBoolean(columnIndex);
-}
-
-sal_Int8 SAL_CALL OKeySet::getByte( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getByte" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getByte(columnIndex);
-}
-
-sal_Int16 SAL_CALL OKeySet::getShort( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getShort" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getShort(columnIndex);
-}
-
-sal_Int32 SAL_CALL OKeySet::getInt( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getInt" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getInt(columnIndex);
-}
-
-sal_Int64 SAL_CALL OKeySet::getLong( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getLong" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getLong(columnIndex);
-}
-
-float SAL_CALL OKeySet::getFloat( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getFloat" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getFloat(columnIndex);
-}
-
-double SAL_CALL OKeySet::getDouble( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getDouble" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getDouble(columnIndex);
-}
-
-Sequence< sal_Int8 > SAL_CALL OKeySet::getBytes( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getBytes" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getBytes(columnIndex);
-}
-
-::com::sun::star::util::Date SAL_CALL OKeySet::getDate( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getDate" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getDate(columnIndex);
-}
-
-::com::sun::star::util::Time SAL_CALL OKeySet::getTime( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getTime" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getTime(columnIndex);
-}
-
-::com::sun::star::util::DateTime SAL_CALL OKeySet::getTimestamp( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getTimestamp" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getTimestamp(columnIndex);
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL OKeySet::getBinaryStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getBinaryStream" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getBinaryStream(columnIndex);
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL OKeySet::getCharacterStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getCharacterStream" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getCharacterStream(columnIndex);
-}
-
-Any SAL_CALL OKeySet::getObject( sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getObject" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getObject(columnIndex,typeMap);
-}
-
-Reference< XRef > SAL_CALL OKeySet::getRef( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getRef" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getRef(columnIndex);
-}
-
-Reference< XBlob > SAL_CALL OKeySet::getBlob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getBlob" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getBlob(columnIndex);
-}
-
-Reference< XClob > SAL_CALL OKeySet::getClob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getClob" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getClob(columnIndex);
-}
-
-Reference< XArray > SAL_CALL OKeySet::getArray( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getArray" );
- OSL_ENSURE(m_xRow.is(),"m_xRow is null!");
- return m_xRow->getArray(columnIndex);
-}
-
-sal_Bool SAL_CALL OKeySet::rowUpdated( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::rowUpdated" );
- return m_aKeyIter != m_aKeyMap.begin() && m_aKeyIter != m_aKeyMap.end() && m_aKeyIter->second.second.first == 2;
-}
-
-sal_Bool SAL_CALL OKeySet::rowInserted( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::rowInserted" );
- return m_aKeyIter != m_aKeyMap.begin() && m_aKeyIter != m_aKeyMap.end() && m_aKeyIter->second.second.first == 1;
-}
-
-sal_Bool SAL_CALL OKeySet::rowDeleted( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::rowDeleted" );
- sal_Bool bDeleted = m_bDeleted;
- m_bDeleted = sal_False;
- return bDeleted;
-}
-
-::rtl::OUString OKeySet::getComposedTableName(const ::rtl::OUString& _sCatalog,
- const ::rtl::OUString& _sSchema,
- const ::rtl::OUString& _sTable)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OKeySet::getComposedTableName" );
- ::rtl::OUString aComposedName;
- Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData();
-
- if( xMetaData.is() && xMetaData->supportsTableCorrelationNames() )
- {
- aComposedName = ::dbtools::composeTableName( xMetaData, _sCatalog, _sSchema, _sTable, sal_False, ::dbtools::eInDataManipulation );
- // first we have to check if the composed tablename is in the select clause or if an alias is used
- Reference<XTablesSupplier> xTabSup(m_xComposer,UNO_QUERY);
- Reference<XNameAccess> xSelectTables = xTabSup->getTables();
- OSL_ENSURE(xSelectTables.is(),"No Select tables!");
- if(xSelectTables.is())
- {
- if(!xSelectTables->hasByName(aComposedName))
- { // the composed name isn't used in the select clause so we have to find out which name is used instead
- ::rtl::OUString sCatalog,sSchema,sTable;
- ::dbtools::qualifiedNameComponents(xMetaData,m_sUpdateTableName,sCatalog,sSchema,sTable,::dbtools::eInDataManipulation);
- aComposedName = ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable );
- }
- else
- aComposedName = ::dbtools::composeTableNameForSelect( m_xConnection, _sCatalog, _sSchema, _sTable );
- }
- }
- else
- aComposedName = ::dbtools::composeTableNameForSelect( m_xConnection, _sCatalog, _sSchema, _sTable );
-
- return aComposedName;
-}
-
-namespace dbaccess
-{
-
-void getColumnPositions(const Reference<XNameAccess>& _rxQueryColumns,
- const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _aColumnNames,
- const ::rtl::OUString& _rsUpdateTableName,
- SelectColumnsMetaData& o_rColumnNames,
- bool i_bAppendTableName)
- {
- // get the real name of the columns
- Sequence< ::rtl::OUString> aSelNames(_rxQueryColumns->getElementNames());
- const ::rtl::OUString* pSelIter = aSelNames.getConstArray();
- const ::rtl::OUString* pSelEnd = pSelIter + aSelNames.getLength();
-
- const ::rtl::OUString* pTblColumnIter = _aColumnNames.getConstArray();
- const ::rtl::OUString* pTblColumnEnd = pTblColumnIter + _aColumnNames.getLength();
-
-
- ::comphelper::UStringMixLess aTmp(o_rColumnNames.key_comp());
- ::comphelper::UStringMixEqual bCase(static_cast< ::comphelper::UStringMixLess*>(&aTmp)->isCaseSensitive());
-
- for(sal_Int32 nPos = 1;pSelIter != pSelEnd;++pSelIter,++nPos)
- {
- Reference<XPropertySet> xQueryColumnProp(_rxQueryColumns->getByName(*pSelIter),UNO_QUERY_THROW);
- ::rtl::OUString sRealName,sTableName;
- OSL_ENSURE(xQueryColumnProp->getPropertySetInfo()->hasPropertyByName(PROPERTY_REALNAME),"Property REALNAME not available!");
- OSL_ENSURE(xQueryColumnProp->getPropertySetInfo()->hasPropertyByName(PROPERTY_TABLENAME),"Property TABLENAME not available!");
- xQueryColumnProp->getPropertyValue(PROPERTY_REALNAME) >>= sRealName;
- xQueryColumnProp->getPropertyValue(PROPERTY_TABLENAME) >>= sTableName;
-
- for(;pTblColumnIter != pTblColumnEnd;++pTblColumnIter)
- {
- if(bCase(sRealName,*pTblColumnIter) && bCase(_rsUpdateTableName,sTableName) && o_rColumnNames.find(*pTblColumnIter) == o_rColumnNames.end())
- {
- sal_Int32 nType = 0;
- xQueryColumnProp->getPropertyValue(PROPERTY_TYPE) >>= nType;
- sal_Int32 nScale = 0;
- xQueryColumnProp->getPropertyValue(PROPERTY_SCALE) >>= nScale;
- ::rtl::OUString sColumnDefault;
- if ( xQueryColumnProp->getPropertySetInfo()->hasPropertyByName(PROPERTY_DEFAULTVALUE) )
- xQueryColumnProp->getPropertyValue(PROPERTY_DEFAULTVALUE) >>= sColumnDefault;
-
- sal_Int32 nNullable = ColumnValue::NULLABLE_UNKNOWN;
- OSL_VERIFY( xQueryColumnProp->getPropertyValue( PROPERTY_ISNULLABLE ) >>= nNullable );
-
- if ( i_bAppendTableName )
- {
- ::rtl::OUStringBuffer sName;
- sName.append(sTableName);
- sName.appendAscii(".");
- sName.append(sRealName);
- SelectColumnDescription aColDesc( nPos, nType,nScale,nNullable != sdbc::ColumnValue::NO_NULLS, sColumnDefault );
- aColDesc.sRealName = sRealName;
- aColDesc.sTableName = sTableName;
- o_rColumnNames[sName.makeStringAndClear()] = aColDesc;
- }
- else
- o_rColumnNames[sRealName] = SelectColumnDescription( nPos, nType,nScale,nNullable != sdbc::ColumnValue::NO_NULLS, sColumnDefault );
-
- break;
- }
- }
- pTblColumnIter = _aColumnNames.getConstArray();
- }
- }
-}
-
-void OKeySet::impl_convertValue_throw(const ORowSetRow& _rInsertRow,const SelectColumnDescription& i_aMetaData)
-{
- ORowSetValue& aValue((_rInsertRow->get())[i_aMetaData.nPosition]);
- switch(i_aMetaData.nType)
- {
- case DataType::DECIMAL:
- case DataType::NUMERIC:
- {
- ::rtl::OUString sValue = aValue.getString();
- sal_Int32 nIndex = sValue.indexOf('.');
- if ( nIndex != -1 )
- {
- aValue = sValue.copy(0,::std::min(sValue.getLength(),nIndex + (i_aMetaData.nScale > 0 ? i_aMetaData.nScale + 1 : 0)));
- }
- }
- break;
- default:
- break;
- }
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/KeySet.hxx b/dbaccess/source/core/api/KeySet.hxx
deleted file mode 100644
index 99326960c..000000000
--- a/dbaccess/source/core/api/KeySet.hxx
+++ /dev/null
@@ -1,233 +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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_CORE_API_KEYSET_HXX
-#define DBACCESS_CORE_API_KEYSET_HXX
-
-#include "CacheSet.hxx"
-
-#include <cppuhelper/implbase1.hxx>
-#include <memory>
-#include <map>
-
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryAnalyzer.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
-#include <comphelper/stl_types.hxx>
-
-namespace dbaccess
-{
- struct SelectColumnDescription
- {
- ::rtl::OUString sRealName; // may be empty
- ::rtl::OUString sTableName; // may be empty
- ::rtl::OUString sDefaultValue;
- sal_Int32 nPosition;
- sal_Int32 nType;
- sal_Int32 nScale;
- sal_Bool bNullable;
-
- SelectColumnDescription()
- :nPosition( 0 )
- ,nType( 0 )
- ,nScale( 0 )
- ,bNullable(sal_False)
- {
- }
-
- SelectColumnDescription( sal_Int32 _nPosition, sal_Int32 _nType, sal_Int32 _nScale,sal_Bool _bNullable, const ::rtl::OUString& _rDefaultValue )
- :sDefaultValue( _rDefaultValue )
- ,nPosition( _nPosition )
- ,nType( _nType )
- ,nScale( _nScale )
- ,bNullable(_bNullable)
- {
- }
- };
- typedef ::std::map< ::rtl::OUString, SelectColumnDescription, ::comphelper::UStringMixLess > SelectColumnsMetaData;
-
- // the elements of _rxQueryColumns must have the properties PROPERTY_REALNAME and PROPERTY_TABLENAME
- void getColumnPositions(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxQueryColumns,
- const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rColumnNames,
- const ::rtl::OUString& _rsUpdateTableName,
- SelectColumnsMetaData& o_rColumnNames /* out */,
- bool i_bAppendTableName = false);
-
- typedef ::std::pair<ORowSetRow,::std::pair<sal_Int32,::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow> > > OKeySetValue;
- typedef ::std::map<sal_Int32,OKeySetValue > OKeySetMatrix;
- typedef ::std::map<sal_Int32,ORowSetValueVector > OUpdatedParameter;
- // is used when the source supports keys
- class OKeySet : public OCacheSet
- {
- protected:
- OKeySetMatrix m_aKeyMap;
- OKeySetMatrix::iterator m_aKeyIter;
-
- ::std::vector< ::rtl::OUString > m_aAutoColumns; // contains all columns which are autoincrement ones
-
- OUpdatedParameter m_aUpdatedParameter; // contains all parameter which have been updated and are needed for refetching
- ORowSetValueVector m_aParameterValueForCache;
- ::std::auto_ptr<SelectColumnsMetaData> m_pKeyColumnNames; // contains all key column names
- ::std::auto_ptr<SelectColumnsMetaData> m_pColumnNames; // contains all column names
- ::std::auto_ptr<SelectColumnsMetaData> m_pParameterNames; // contains all parameter names
- ::std::auto_ptr<SelectColumnsMetaData> m_pForeignColumnNames; // contains all column names of the rest
- connectivity::OSQLTable m_xTable; // reference to our table
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess> m_xTableKeys;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement> m_xStatement;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet> m_xSet;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow> m_xRow;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryAnalyzer > m_xComposer;
- ::rtl::OUString m_sUpdateTableName;
- ::std::vector< ::rtl::OUString > m_aFilterColumns;
- sal_Int32& m_rRowCount;
-
- sal_Bool m_bRowCountFinal;
-
- /**
- getComposedTableName return the composed table name for the query
- @param _sCatalog the catalogname may be empty
- @param _sSchema the schemaname may be empty
- @param _sTable the tablename
-
- @return the composed name
- */
- ::rtl::OUString getComposedTableName( const ::rtl::OUString& _sCatalog,
- const ::rtl::OUString& _sSchema,
- const ::rtl::OUString& _sTable);
-
- /** copies the values from the insert row into the key row
- *
- * \param _rInsertRow the row which was inserted
- * \param _rKeyRow The current key row of the row set.
- + \param i_nBookmark The bookmark is used to update the parameter
- */
- void copyRowValue(const ORowSetRow& _rInsertRow,ORowSetRow& _rKeyRow,sal_Int32 i_nBookmark);
-
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > getKeyColumns() const;
- void fillAllRows();
- sal_Bool fetchRow();
-
- void impl_convertValue_throw(const ORowSetRow& _rInsertRow,const SelectColumnDescription& i_aMetaData);
- void initColumns();
- void findTableColumnsMatching_throw( const ::com::sun::star::uno::Any& i_aTable,
- const ::rtl::OUString& i_rUpdateTableName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData>& i_xMeta,
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& i_xQueryColumns,
- ::std::auto_ptr<SelectColumnsMetaData>& o_pKeyColumnNames);
- ::rtl::OUStringBuffer createKeyFilter();
- void tryRefetch(const ORowSetRow& _rInsertRow,bool bRefetch);
- void executeUpdate(const ORowSetRow& _rInsertRow ,const ORowSetRow& _rOrginalRow,const ::rtl::OUString& i_sSQL,const ::rtl::OUString& i_sTableName,const ::std::vector<sal_Int32>& _aIndexColumnPositions = ::std::vector<sal_Int32>());
- void executeInsert( const ORowSetRow& _rInsertRow,const ::rtl::OUString& i_sSQL,const ::rtl::OUString& i_sTableName = ::rtl::OUString(),bool bRefetch = false);
- void executeStatement(::rtl::OUStringBuffer& io_aFilter,const ::rtl::OUString& i_sRowSetFilter,::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryComposer>& io_xAnalyzer);
-
- virtual ~OKeySet();
- public:
- OKeySet(const connectivity::OSQLTable& _xTable,
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess>& _xTableKeys,
- const ::rtl::OUString& _rUpdateTableName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryAnalyzer >& _xComposer,
- const ORowSetValueVector& _aParameterValueForCache,
- sal_Int32 i_nMaxRows,
- sal_Int32& o_nRowCount);
-
- // late ctor which can throw exceptions
- virtual void construct(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDriverSet,const ::rtl::OUString& i_sRowSetFilter);
-
- // ::com::sun::star::sdbc::XRow
- virtual sal_Bool SAL_CALL wasNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getString( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL getBoolean( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int8 SAL_CALL getByte( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int16 SAL_CALL getShort( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getInt( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int64 SAL_CALL getLong( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual float SAL_CALL getFloat( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual double SAL_CALL getDouble( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Date SAL_CALL getDate( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Time SAL_CALL getTime( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-
- virtual sal_Bool SAL_CALL rowUpdated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowInserted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowDeleted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbc::XResultSet
- virtual sal_Bool SAL_CALL next( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isBeforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isAfterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL beforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL afterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL first( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL last( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL absolute( sal_Int32 row ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL relative( sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL previous( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL refreshRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbcx::XRowLocate
- virtual ::com::sun::star::uno::Any SAL_CALL getBookmark() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- virtual sal_Bool SAL_CALL moveToBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- virtual sal_Bool SAL_CALL moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- virtual sal_Int32 SAL_CALL compareBookmarks( const ::com::sun::star::uno::Any& first, const ::com::sun::star::uno::Any& second ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- virtual sal_Bool SAL_CALL hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- virtual sal_Int32 SAL_CALL hashBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XDeleteRows
- virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rows ,const connectivity::OSQLTable& _xTable) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbc::XResultSetUpdate
- virtual void SAL_CALL updateRow(const ORowSetRow& _rInsertRow,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL deleteRow(const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-
- virtual sal_Bool previous_checked( sal_Bool i_bFetchRow );
- virtual sal_Bool absolute_checked( sal_Int32 row,sal_Bool i_bFetchRow );
- virtual sal_Bool last_checked( sal_Bool i_bFetchRow);
- };
-}
-#endif // DBACCESS_CORE_API_KEYSET_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/OptimisticSet.cxx b/dbaccess/source/core/api/OptimisticSet.cxx
deleted file mode 100644
index 8e8fc2386..000000000
--- a/dbaccess/source/core/api/OptimisticSet.cxx
+++ /dev/null
@@ -1,739 +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 2008 by Sun Microsystems, Inc.
- *
- * 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_dbaccess.hxx"
-
-#include "OptimisticSet.hxx"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <com/sun/star/sdbc/XPreparedStatement.hpp>
-#include <com/sun/star/sdbc/XParameters.hpp>
-#include <com/sun/star/sdbc/XGeneratedResultSet.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
-#include <com/sun/star/sdb/SQLFilterOperator.hpp>
-#include <com/sun/star/sdbc/XColumnLocate.hpp>
-#include <com/sun/star/container/XIndexAccess.hpp>
-#include "dbastrings.hrc"
-#include "apitools.hxx"
-#include <com/sun/star/sdbcx/XKeysSupplier.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
-#include <com/sun/star/sdbcx/XIndexesSupplier.hpp>
-#include <cppuhelper/typeprovider.hxx>
-#include <comphelper/types.hxx>
-#include <com/sun/star/sdbcx/KeyType.hpp>
-#include <connectivity/dbtools.hxx>
-#include <connectivity/dbexception.hxx>
-#include <list>
-#include <algorithm>
-#include <string.h>
-#include <com/sun/star/io/XInputStream.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include "querycomposer.hxx"
-#include "composertools.hxx"
-#include <tools/debug.hxx>
-#include <string.h>
-#include <rtl/logfile.hxx>
-
-using namespace dbaccess;
-using namespace ::connectivity;
-using namespace ::dbtools;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::io;
-using namespace ::com::sun::star;
-using namespace ::cppu;
-using namespace ::osl;
-
-DECLARE_STL_USTRINGACCESS_MAP(::rtl::OUStringBuffer,TSQLStatements);
-namespace
-{
- void lcl_fillKeyCondition(const ::rtl::OUString& i_sTableName,const ::rtl::OUString& i_sQuotedColumnName,const ORowSetValue& i_aValue,TSQLStatements& io_aKeyConditions)
- {
- ::rtl::OUStringBuffer& rKeyCondition = io_aKeyConditions[i_sTableName];
- if ( rKeyCondition.getLength() )
- rKeyCondition.appendAscii(" AND ");
- rKeyCondition.append(i_sQuotedColumnName);
- if ( i_aValue.isNull() )
- rKeyCondition.appendAscii(" IS NULL");
- else
- rKeyCondition.appendAscii(" = ?");
- }
-}
-
-DBG_NAME(OptimisticSet)
-
-OptimisticSet::OptimisticSet(const ::comphelper::ComponentContext& _rContext,
- const Reference< XConnection>& i_xConnection,
- const Reference< XSingleSelectQueryAnalyzer >& _xComposer,
- const ORowSetValueVector& _aParameterValueForCache,
- sal_Int32 i_nMaxRows,
- sal_Int32& o_nRowCount)
- :OKeySet(NULL,NULL,::rtl::OUString(),_xComposer,_aParameterValueForCache,i_nMaxRows,o_nRowCount)
- ,m_aSqlParser( _rContext.getLegacyServiceFactory() )
- ,m_aSqlIterator( i_xConnection, Reference<XTablesSupplier>(_xComposer,UNO_QUERY)->getTables(), m_aSqlParser, NULL )
- ,m_bResultSetChanged(false)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OptimisticSet::OptimisticSet" );
- DBG_CTOR(OptimisticSet,NULL);
-}
-
-OptimisticSet::~OptimisticSet()
-{
- DBG_DTOR(OptimisticSet,NULL);
-}
-
-void OptimisticSet::construct(const Reference< XResultSet>& _xDriverSet,const ::rtl::OUString& i_sRowSetFilter)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OptimisticSet::construct" );
- OCacheSet::construct(_xDriverSet,i_sRowSetFilter);
- initColumns();
-
- Reference<XDatabaseMetaData> xMeta = m_xConnection->getMetaData();
- bool bCase = (xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers()) ? true : false;
- Reference<XColumnsSupplier> xQueryColSup(m_xComposer,UNO_QUERY);
- const Reference<XNameAccess> xQueryColumns = xQueryColSup->getColumns();
- const Reference<XTablesSupplier> xTabSup(m_xComposer,UNO_QUERY);
- const Reference<XNameAccess> xTables = xTabSup->getTables();
- const Sequence< ::rtl::OUString> aTableNames = xTables->getElementNames();
- const ::rtl::OUString* pTableNameIter = aTableNames.getConstArray();
- const ::rtl::OUString* pTableNameEnd = pTableNameIter + aTableNames.getLength();
- for( ; pTableNameIter != pTableNameEnd ; ++pTableNameIter)
- {
- ::std::auto_ptr<SelectColumnsMetaData> pKeyColumNames(new SelectColumnsMetaData(bCase));
- findTableColumnsMatching_throw(xTables->getByName(*pTableNameIter),*pTableNameIter,xMeta,xQueryColumns,pKeyColumNames);
- m_pKeyColumnNames->insert(pKeyColumNames->begin(),pKeyColumNames->end());
- }
-
- // the first row is empty because it's now easier for us to distinguish when we are beforefirst or first
- // without extra variable to be set
- m_aKeyMap.insert(OKeySetMatrix::value_type(0,OKeySetValue(NULL,::std::pair<sal_Int32,Reference<XRow> >(0,NULL))));
- m_aKeyIter = m_aKeyMap.begin();
-
- ::rtl::OUStringBuffer aFilter = createKeyFilter();
-
- Reference< XSingleSelectQueryComposer> xSourceComposer(m_xComposer,UNO_QUERY);
- Reference< XMultiServiceFactory > xFactory(m_xConnection, UNO_QUERY_THROW);
- Reference<XSingleSelectQueryComposer> xAnalyzer(xFactory->createInstance(SERVICE_NAME_SINGLESELECTQUERYCOMPOSER),UNO_QUERY);
- ::rtl::OUString sQuery = xSourceComposer->getQuery();
- xAnalyzer->setElementaryQuery(xSourceComposer->getElementaryQuery());
- // check for joins
- ::rtl::OUString aErrorMsg;
- ::std::auto_ptr<OSQLParseNode> pStatementNode( m_aSqlParser.parseTree( aErrorMsg, sQuery ) );
- m_aSqlIterator.setParseTree( pStatementNode.get() );
- m_aSqlIterator.traverseAll();
- fillJoinedColumns_throw(m_aSqlIterator.getJoinConditions());
-
- const ::rtl::OUString sComposerFilter = m_xComposer->getFilter();
- if ( i_sRowSetFilter.getLength() || (sComposerFilter.getLength() && sComposerFilter != i_sRowSetFilter) )
- {
- FilterCreator aFilterCreator;
- if ( sComposerFilter.getLength() && sComposerFilter != i_sRowSetFilter )
- aFilterCreator.append( sComposerFilter );
- aFilterCreator.append( i_sRowSetFilter );
- aFilterCreator.append( aFilter.makeStringAndClear() );
- aFilter = aFilterCreator.getComposedAndClear();
- }
- xAnalyzer->setFilter(aFilter.makeStringAndClear());
- m_xStatement = m_xConnection->prepareStatement(xAnalyzer->getQueryWithSubstitution());
- ::comphelper::disposeComponent(xAnalyzer);
-}
-
-// ::com::sun::star::sdbcx::XDeleteRows
-Sequence< sal_Int32 > SAL_CALL OptimisticSet::deleteRows( const Sequence< Any >& /*rows*/ ,const connectivity::OSQLTable& /*_xTable*/) throw(SQLException, RuntimeException)
-{
- Sequence< sal_Int32 > aRet;
- return aRet;
-}
-
-void SAL_CALL OptimisticSet::updateRow(const ORowSetRow& _rInsertRow ,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& /*_xTable*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OptimisticSet::updateRow" );
- if ( m_aJoinedKeyColumns.empty() )
- throw SQLException();
- // list all cloumns that should be set
- static ::rtl::OUString s_sPara(RTL_CONSTASCII_USTRINGPARAM(" = ?"));
- ::rtl::OUString aQuote = getIdentifierQuoteString();
- static ::rtl::OUString aAnd(RTL_CONSTASCII_USTRINGPARAM(" AND "));
- ::rtl::OUString sIsNull(RTL_CONSTASCII_USTRINGPARAM(" IS NULL"));
- ::rtl::OUString sParam(RTL_CONSTASCII_USTRINGPARAM(" = ?"));
-
- ::rtl::OUString aColumnName;
- ::rtl::OUStringBuffer sKeyCondition;
- ::std::map< ::rtl::OUString,bool > aResultSetChanged;
- TSQLStatements aKeyConditions;
- TSQLStatements aIndexConditions;
- TSQLStatements aSql;
-
- // here we build the condition part for the update statement
- SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
- for(;aIter != aEnd;++aIter)
- {
- if ( aResultSetChanged.find( aIter->second.sTableName ) == aResultSetChanged.end() )
- aResultSetChanged[aIter->second.sTableName] = false;
- const ::rtl::OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,aIter->second.sRealName);
- if ( m_pKeyColumnNames->find(aIter->first) != m_pKeyColumnNames->end() )
- {
- aResultSetChanged[aIter->second.sTableName] = m_aJoinedKeyColumns.find(aIter->second.nPosition) != m_aJoinedKeyColumns.end();
- lcl_fillKeyCondition(aIter->second.sTableName,sQuotedColumnName,(_rOrginalRow->get())[aIter->second.nPosition],aKeyConditions);
- }
- if((_rInsertRow->get())[aIter->second.nPosition].isModified())
- {
- if ( m_aJoinedKeyColumns.find(aIter->second.nPosition) != m_aJoinedKeyColumns.end() )
- throw SQLException();
-
- ::std::map<sal_Int32,sal_Int32>::const_iterator aJoinIter = m_aJoinedColumns.find(aIter->second.nPosition);
- if ( aJoinIter != m_aJoinedColumns.end() )
- {
- (_rInsertRow->get())[aJoinIter->second] = (_rInsertRow->get())[aIter->second.nPosition];
- }
- ::rtl::OUStringBuffer& rPart = aSql[aIter->second.sTableName];
- if ( rPart.getLength() )
- rPart.appendAscii(", ");
- rPart.append(sQuotedColumnName);
- rPart.append(s_sPara);
- }
- }
-
- if( aSql.empty() )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_VALUE_CHANGED ), SQL_GENERAL_ERROR, m_xConnection );
-
- if( aKeyConditions.empty() )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_CONDITION_FOR_PK ), SQL_GENERAL_ERROR, m_xConnection );
-
- static const ::rtl::OUString s_sUPDATE(RTL_CONSTASCII_USTRINGPARAM("UPDATE "));
- static const ::rtl::OUString s_sSET(RTL_CONSTASCII_USTRINGPARAM(" SET "));
-
- Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData();
-
- TSQLStatements::iterator aSqlIter = aSql.begin();
- TSQLStatements::iterator aSqlEnd = aSql.end();
- for(;aSqlIter != aSqlEnd ; ++aSqlIter)
- {
- if ( aSqlIter->second.getLength() )
- {
- m_bResultSetChanged = m_bResultSetChanged || aResultSetChanged[aSqlIter->first];
- ::rtl::OUStringBuffer sSql(s_sUPDATE);
- ::rtl::OUString sCatalog,sSchema,sTable;
- ::dbtools::qualifiedNameComponents(xMetaData,aSqlIter->first,sCatalog,sSchema,sTable,::dbtools::eInDataManipulation);
- sSql.append( ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable ) );
- sSql.append(s_sSET);
- sSql.append(aSqlIter->second);
- ::rtl::OUStringBuffer& rCondition = aKeyConditions[aSqlIter->first];
- if ( rCondition.getLength() )
- {
- sSql.appendAscii(" WHERE ");
- sSql.append( rCondition );
- }
- executeUpdate(_rInsertRow ,_rOrginalRow,sSql.makeStringAndClear(),aSqlIter->first);
- }
- }
-}
-
-void SAL_CALL OptimisticSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& /*_xTable*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OptimisticSet::insertRow" );
- TSQLStatements aSql;
- TSQLStatements aParameter;
- TSQLStatements aKeyConditions;
- ::std::map< ::rtl::OUString,bool > aResultSetChanged;
- ::rtl::OUString aQuote = getIdentifierQuoteString();
- static ::rtl::OUString aAnd(RTL_CONSTASCII_USTRINGPARAM(" AND "));
- ::rtl::OUString sIsNull(RTL_CONSTASCII_USTRINGPARAM(" IS NULL"));
- ::rtl::OUString sParam(RTL_CONSTASCII_USTRINGPARAM(" = ?"));
-
- // here we build the condition part for the update statement
- SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
- for(;aIter != aEnd;++aIter)
- {
- if ( aResultSetChanged.find( aIter->second.sTableName ) == aResultSetChanged.end() )
- aResultSetChanged[aIter->second.sTableName] = false;
-
- const ::rtl::OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,aIter->second.sRealName);
- if ( (_rInsertRow->get())[aIter->second.nPosition].isModified() )
- {
- if ( m_aJoinedKeyColumns.find(aIter->second.nPosition) != m_aJoinedKeyColumns.end() )
- {
- lcl_fillKeyCondition(aIter->second.sTableName,sQuotedColumnName,(_rInsertRow->get())[aIter->second.nPosition],aKeyConditions);
- aResultSetChanged[aIter->second.sTableName] = true;
- }
- ::std::map<sal_Int32,sal_Int32>::const_iterator aJoinIter = m_aJoinedColumns.find(aIter->second.nPosition);
- if ( aJoinIter != m_aJoinedColumns.end() )
- {
- (_rInsertRow->get())[aJoinIter->second] = (_rInsertRow->get())[aIter->second.nPosition];
- }
- ::rtl::OUStringBuffer& rPart = aSql[aIter->second.sTableName];
- if ( rPart.getLength() )
- rPart.appendAscii(", ");
- rPart.append(sQuotedColumnName);
- ::rtl::OUStringBuffer& rParam = aParameter[aIter->second.sTableName];
- if ( rParam.getLength() )
- rParam.appendAscii(", ");
- rParam.appendAscii("?");
- }
- }
- if ( aParameter.empty() )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_VALUE_CHANGED ), SQL_GENERAL_ERROR, m_xConnection );
-
- Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData();
- static const ::rtl::OUString s_sINSERT(RTL_CONSTASCII_USTRINGPARAM("INSERT INTO "));
- static const ::rtl::OUString s_sVALUES(RTL_CONSTASCII_USTRINGPARAM(") VALUES ( "));
- TSQLStatements::iterator aSqlIter = aSql.begin();
- TSQLStatements::iterator aSqlEnd = aSql.end();
- for(;aSqlIter != aSqlEnd ; ++aSqlIter)
- {
- if ( aSqlIter->second.getLength() )
- {
- m_bResultSetChanged = m_bResultSetChanged || aResultSetChanged[aSqlIter->first];
- ::rtl::OUStringBuffer sSql(s_sINSERT);
- ::rtl::OUString sCatalog,sSchema,sTable;
- ::dbtools::qualifiedNameComponents(xMetaData,aSqlIter->first,sCatalog,sSchema,sTable,::dbtools::eInDataManipulation);
- ::rtl::OUString sComposedTableName = ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable );
- sSql.append(sComposedTableName);
- sSql.appendAscii(" ( ");
- sSql.append(aSqlIter->second);
- sSql.append(s_sVALUES);
- sSql.append(aParameter[aSqlIter->first]);
- sSql.appendAscii(" )");
-
- ::rtl::OUStringBuffer& rCondition = aKeyConditions[aSqlIter->first];
- if ( rCondition.getLength() )
- {
- ::rtl::OUStringBuffer sQuery;
- sQuery.appendAscii("SELECT ");
- sQuery.append(aSqlIter->second);
- sQuery.appendAscii(" FROM ");
- sQuery.append(sComposedTableName);
- sQuery.appendAscii(" WHERE ");
- sQuery.append(rCondition);
-
- try
- {
- Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(sQuery.makeStringAndClear()));
- Reference< XParameters > xParameter(xPrep,UNO_QUERY);
- // and then the values of the where condition
- SelectColumnsMetaData::iterator aKeyCol = m_pKeyColumnNames->begin();
- SelectColumnsMetaData::iterator aKeysEnd = m_pKeyColumnNames->end();
- sal_Int32 i = 1;
- for(;aKeyCol != aKeysEnd;++aKeyCol)
- {
- if ( aKeyCol->second.sTableName == aSqlIter->first )
- {
- setParameter(i++,xParameter,(_rInsertRow->get())[aKeyCol->second.nPosition],aKeyCol->second.nType,aKeyCol->second.nScale);
- }
- }
- Reference<XResultSet> xRes = xPrep->executeQuery();
- Reference<XRow> xRow(xRes,UNO_QUERY);
- if ( xRow.is() && xRes->next() )
- {
- m_bResultSetChanged = true;
- continue;
- }
- }
- catch(const SQLException&)
- {
- }
- }
-
- executeInsert(_rInsertRow,sSql.makeStringAndClear(),aSqlIter->first);
- }
- }
-}
-
-void SAL_CALL OptimisticSet::deleteRow(const ORowSetRow& _rDeleteRow,const connectivity::OSQLTable& /*_xTable*/ ) throw(SQLException, RuntimeException)
-{
- ::rtl::OUString sParam(RTL_CONSTASCII_USTRINGPARAM(" = ?"));
- ::rtl::OUString sIsNull(RTL_CONSTASCII_USTRINGPARAM(" IS NULL"));
- static const ::rtl::OUString s_sAnd(RTL_CONSTASCII_USTRINGPARAM(" AND "));
- ::rtl::OUString aQuote = getIdentifierQuoteString();
- ::rtl::OUString aColumnName;
- ::rtl::OUStringBuffer sKeyCondition,sIndexCondition;
- ::std::vector<sal_Int32> aIndexColumnPositions;
- TSQLStatements aKeyConditions;
- TSQLStatements aIndexConditions;
- TSQLStatements aSql;
-
- // here we build the condition part for the update statement
- SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
- for(;aIter != aEnd;++aIter)
- {
- if ( m_aJoinedKeyColumns.find(aIter->second.nPosition) == m_aJoinedKeyColumns.end() && m_pKeyColumnNames->find(aIter->first) != m_pKeyColumnNames->end() )
- {
- // only delete rows which aren't the key in the join
- const ::rtl::OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,aIter->second.sRealName);
- lcl_fillKeyCondition(aIter->second.sTableName,sQuotedColumnName,(_rDeleteRow->get())[aIter->second.nPosition],aKeyConditions);
- }
- }
- Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData();
- TSQLStatements::iterator aSqlIter = aKeyConditions.begin();
- TSQLStatements::iterator aSqlEnd = aKeyConditions.end();
- for(;aSqlIter != aSqlEnd ; ++aSqlIter)
- {
- ::rtl::OUStringBuffer& rCondition = aSqlIter->second;
- if ( rCondition.getLength() )
- {
- ::rtl::OUStringBuffer sSql;
- sSql.appendAscii("DELETE FROM ");
- ::rtl::OUString sCatalog,sSchema,sTable;
- ::dbtools::qualifiedNameComponents(xMetaData,aSqlIter->first,sCatalog,sSchema,sTable,::dbtools::eInDataManipulation);
- sSql.append( ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable ) );
- sSql.appendAscii(" WHERE ");
- sSql.append( rCondition );
- executeDelete(_rDeleteRow,sSql.makeStringAndClear(),aSqlIter->first);
- }
- }
-}
-
-void OptimisticSet::executeDelete(const ORowSetRow& _rDeleteRow,const ::rtl::OUString& i_sSQL,const ::rtl::OUString& i_sTableName)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OptimisticSet::executeDelete" );
-
- // now create and execute the prepared statement
- Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(i_sSQL));
- Reference< XParameters > xParameter(xPrep,UNO_QUERY);
-
- SelectColumnsMetaData::const_iterator aIter = m_pKeyColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd = m_pKeyColumnNames->end();
- sal_Int32 i = 1;
- for(;aIter != aEnd;++aIter)
- {
- if ( aIter->second.sTableName == i_sTableName )
- setParameter(i++,xParameter,(_rDeleteRow->get())[aIter->second.nPosition],aIter->second.nType,aIter->second.nScale);
- }
- m_bDeleted = xPrep->executeUpdate() > 0;
-
- if(m_bDeleted)
- {
- sal_Int32 nBookmark = ::comphelper::getINT32((_rDeleteRow->get())[0].getAny());
- if(m_aKeyIter == m_aKeyMap.find(nBookmark) && m_aKeyIter != m_aKeyMap.end())
- ++m_aKeyIter;
- m_aKeyMap.erase(nBookmark);
- m_bDeleted = sal_True;
- }
-}
-
-::rtl::OUString OptimisticSet::getComposedTableName(const ::rtl::OUString& /*_sCatalog*/,
- const ::rtl::OUString& /*_sSchema*/,
- const ::rtl::OUString& /*_sTable*/)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OptimisticSet::getComposedTableName" );
- ::rtl::OUString aComposedName;
-
- return aComposedName;
-}
-
-void OptimisticSet::fillJoinedColumns_throw(const ::std::vector< TNodePair >& i_aJoinColumns)
-{
- ::std::vector< TNodePair >::const_iterator aIter = i_aJoinColumns.begin();
- for(;aIter != i_aJoinColumns.end();++aIter)
- {
- ::rtl::OUString sColumnName,sTableName;
- m_aSqlIterator.getColumnRange(aIter->first,sColumnName,sTableName);
- ::rtl::OUStringBuffer sLeft,sRight;
- sLeft.append(sTableName);
- sLeft.appendAscii(".");
- sLeft.append(sColumnName);
- m_aSqlIterator.getColumnRange(aIter->second,sColumnName,sTableName);
- sRight.append(sTableName);
- sRight.appendAscii(".");
- sRight.append(sColumnName);
- fillJoinedColumns_throw(sLeft.makeStringAndClear(),sRight.makeStringAndClear());
- }
-}
-
-void OptimisticSet::fillJoinedColumns_throw(const ::rtl::OUString& i_sLeftColumn,const ::rtl::OUString& i_sRightColumn)
-{
- sal_Int32 nLeft = 0,nRight = 0;
- SelectColumnsMetaData::const_iterator aLeftIter = m_pKeyColumnNames->find(i_sLeftColumn);
- SelectColumnsMetaData::const_iterator aRightIter = m_pKeyColumnNames->find(i_sRightColumn);
-
- bool bLeftKey = aLeftIter != m_pKeyColumnNames->end();
- if ( bLeftKey )
- {
- nLeft = aLeftIter->second.nPosition;
- }
- else
- {
- aLeftIter = m_pColumnNames->find(i_sLeftColumn);
- if ( aLeftIter != m_pColumnNames->end() )
- nLeft = aLeftIter->second.nPosition;
- }
-
- bool bRightKey = aRightIter != m_pKeyColumnNames->end();
- if ( bRightKey )
- {
- nRight = aRightIter->second.nPosition;
- }
- else
- {
- aRightIter = m_pColumnNames->find(i_sRightColumn);
- if ( aRightIter != m_pColumnNames->end() )
- nRight = aRightIter->second.nPosition;
- }
-
- if (bLeftKey)
- m_aJoinedKeyColumns[nLeft] = nRight;
- else
- m_aJoinedColumns[nLeft] = nRight;
- if (bRightKey)
- m_aJoinedKeyColumns[nRight] = nLeft;
- else
- m_aJoinedColumns[nRight] = nLeft;
-}
-
-bool OptimisticSet::isResultSetChanged() const
-{
- bool bOld = m_bResultSetChanged;
- m_bResultSetChanged = false;
- return bOld;
-}
-
-void OptimisticSet::reset(const Reference< XResultSet>& _xDriverSet)
-{
- OCacheSet::construct(_xDriverSet,::rtl::OUString());
- m_bRowCountFinal = sal_False;
- m_aKeyMap.clear();
- m_aKeyMap.insert(OKeySetMatrix::value_type(0,OKeySetValue(NULL,::std::pair<sal_Int32,Reference<XRow> >(0,NULL))));
- m_aKeyIter = m_aKeyMap.begin();
-}
-
-void OptimisticSet::mergeColumnValues(sal_Int32 i_nColumnIndex,ORowSetValueVector::Vector& io_aInsertRow,ORowSetValueVector::Vector& io_aRow,::std::vector<sal_Int32>& o_aChangedColumns)
-{
- o_aChangedColumns.push_back(i_nColumnIndex);
- ::std::map<sal_Int32,sal_Int32>::const_iterator aJoinIter = m_aJoinedColumns.find(i_nColumnIndex);
- if ( aJoinIter != m_aJoinedColumns.end() )
- {
- io_aRow[aJoinIter->second] = io_aRow[i_nColumnIndex];
- io_aInsertRow[aJoinIter->second] = io_aInsertRow[i_nColumnIndex];
- io_aRow[aJoinIter->second].setModified();
- o_aChangedColumns.push_back(aJoinIter->second);
- }
-}
-namespace
-{
- struct PositionFunctor : ::std::unary_function<SelectColumnsMetaData::value_type,bool>
- {
- sal_Int32 m_nPos;
- PositionFunctor(sal_Int32 i_nPos)
- : m_nPos(i_nPos)
- {
- }
-
- inline bool operator()(const SelectColumnsMetaData::value_type& _aType)
- {
- return m_nPos == _aType.second.nPosition;
- }
- };
- struct TableNameFunctor : ::std::unary_function<SelectColumnsMetaData::value_type,bool>
- {
- ::rtl::OUString m_sTableName;
- TableNameFunctor(const ::rtl::OUString& i_sTableName)
- : m_sTableName(i_sTableName)
- {
- }
-
- inline bool operator()(const SelectColumnsMetaData::value_type& _aType)
- {
- return m_sTableName == _aType.second.sTableName;
- }
- };
-}
-
-bool OptimisticSet::updateColumnValues(const ORowSetValueVector::Vector& io_aCachedRow,ORowSetValueVector::Vector& io_aRow,const ::std::vector<sal_Int32>& i_aChangedColumns)
-{
- bool bRet = false;
- ::std::vector<sal_Int32>::const_iterator aColIdxIter = i_aChangedColumns.begin();
- for(;aColIdxIter != i_aChangedColumns.end();++aColIdxIter)
- {
- SelectColumnsMetaData::const_iterator aFind = ::std::find_if(m_pKeyColumnNames->begin(),m_pKeyColumnNames->end(),PositionFunctor(*aColIdxIter));
- if ( aFind != m_pKeyColumnNames->end() )
- {
- const ::rtl::OUString sTableName = aFind->second.sTableName;
- aFind = ::std::find_if(m_pKeyColumnNames->begin(),m_pKeyColumnNames->end(),TableNameFunctor(sTableName));
- while( aFind != m_pKeyColumnNames->end() )
- {
- io_aRow[aFind->second.nPosition].setSigned(io_aCachedRow[aFind->second.nPosition].isSigned());
- if ( io_aCachedRow[aFind->second.nPosition] != io_aRow[aFind->second.nPosition] )
- break;
- ++aFind;
- }
- if ( aFind == m_pKeyColumnNames->end() )
- {
- bRet = true;
- SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
- for ( ;aIter != aEnd;++aIter )
- {
- if ( aIter->second.sTableName == sTableName )
- {
- io_aRow[aIter->second.nPosition] = io_aCachedRow[aIter->second.nPosition];
- io_aRow[aIter->second.nPosition].setModified();
- }
- }
- }
- }
- }
- return bRet;
-}
-
-bool OptimisticSet::columnValuesUpdated(ORowSetValueVector::Vector& o_aCachedRow,const ORowSetValueVector::Vector& i_aRow)
-{
- bool bRet = false;
- SelectColumnsMetaData::const_iterator aIter = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd = m_pColumnNames->end();
- for(;aIter != aEnd;++aIter)
- {
- SelectColumnsMetaData::const_iterator aFind = ::std::find_if(m_pKeyColumnNames->begin(),m_pKeyColumnNames->end(),PositionFunctor(aIter->second.nPosition));
- if ( aFind != m_pKeyColumnNames->end() )
- {
- const ::rtl::OUString sTableName = aFind->second.sTableName;
- aFind = ::std::find_if(m_pKeyColumnNames->begin(),m_pKeyColumnNames->end(),TableNameFunctor(sTableName));
- while( aFind != m_pKeyColumnNames->end() )
- {
- o_aCachedRow[aFind->second.nPosition].setSigned(i_aRow[aFind->second.nPosition].isSigned());
- if ( o_aCachedRow[aFind->second.nPosition] != i_aRow[aFind->second.nPosition] )
- break;
- ++aFind;
- }
- if ( aFind == m_pKeyColumnNames->end() )
- {
- bRet = true;
- SelectColumnsMetaData::const_iterator aIter2 = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aEnd2 = m_pColumnNames->end();
- for ( ;aIter2 != aEnd2;++aIter2 )
- {
- if ( aIter2->second.sTableName == sTableName )
- {
- o_aCachedRow[aIter2->second.nPosition] = i_aRow[aIter2->second.nPosition];
- o_aCachedRow[aIter2->second.nPosition].setModified();
- }
- }
- fillMissingValues(o_aCachedRow);
- }
- }
- }
- return bRet;
-}
-
-void OptimisticSet::fillMissingValues(ORowSetValueVector::Vector& io_aRow) const
-{
- TSQLStatements aSql;
- TSQLStatements aKeyConditions;
- ::std::map< ::rtl::OUString,bool > aResultSetChanged;
- ::rtl::OUString aQuote = getIdentifierQuoteString();
- static ::rtl::OUString aAnd(RTL_CONSTASCII_USTRINGPARAM(" AND "));
- ::rtl::OUString sIsNull(RTL_CONSTASCII_USTRINGPARAM(" IS NULL"));
- ::rtl::OUString sParam(RTL_CONSTASCII_USTRINGPARAM(" = ?"));
- // here we build the condition part for the update statement
- SelectColumnsMetaData::const_iterator aColIter = m_pColumnNames->begin();
- SelectColumnsMetaData::const_iterator aColEnd = m_pColumnNames->end();
- for(;aColIter != aColEnd;++aColIter)
- {
- const ::rtl::OUString sQuotedColumnName = ::dbtools::quoteName( aQuote,aColIter->second.sRealName);
- if ( m_aJoinedKeyColumns.find(aColIter->second.nPosition) != m_aJoinedKeyColumns.end() )
- {
- lcl_fillKeyCondition(aColIter->second.sTableName,sQuotedColumnName,io_aRow[aColIter->second.nPosition],aKeyConditions);
- }
- ::rtl::OUStringBuffer& rPart = aSql[aColIter->second.sTableName];
- if ( rPart.getLength() )
- rPart.appendAscii(", ");
- rPart.append(sQuotedColumnName);
- }
- Reference<XDatabaseMetaData> xMetaData = m_xConnection->getMetaData();
- TSQLStatements::iterator aSqlIter = aSql.begin();
- TSQLStatements::iterator aSqlEnd = aSql.end();
- for(;aSqlIter != aSqlEnd ; ++aSqlIter)
- {
- if ( aSqlIter->second.getLength() )
- {
- ::rtl::OUStringBuffer& rCondition = aKeyConditions[aSqlIter->first];
- if ( rCondition.getLength() )
- {
- ::rtl::OUString sCatalog,sSchema,sTable;
- ::dbtools::qualifiedNameComponents(xMetaData,aSqlIter->first,sCatalog,sSchema,sTable,::dbtools::eInDataManipulation);
- ::rtl::OUString sComposedTableName = ::dbtools::composeTableNameForSelect( m_xConnection, sCatalog, sSchema, sTable );
- ::rtl::OUStringBuffer sQuery;
- sQuery.appendAscii("SELECT ");
- sQuery.append(aSqlIter->second);
- sQuery.appendAscii(" FROM ");
- sQuery.append(sComposedTableName);
- sQuery.appendAscii(" WHERE ");
- sQuery.append(rCondition.makeStringAndClear());
-
- try
- {
- Reference< XPreparedStatement > xPrep(m_xConnection->prepareStatement(sQuery.makeStringAndClear()));
- Reference< XParameters > xParameter(xPrep,UNO_QUERY);
- // and then the values of the where condition
- SelectColumnsMetaData::iterator aKeyIter = m_pKeyColumnNames->begin();
- SelectColumnsMetaData::iterator aKeyEnd = m_pKeyColumnNames->end();
- sal_Int32 i = 1;
- for(;aKeyIter != aKeyEnd;++aKeyIter)
- {
- if ( aKeyIter->second.sTableName == aSqlIter->first )
- {
- setParameter(i++,xParameter,io_aRow[aKeyIter->second.nPosition],aKeyIter->second.nType,aKeyIter->second.nScale);
- }
- }
- Reference<XResultSet> xRes = xPrep->executeQuery();
- Reference<XRow> xRow(xRes,UNO_QUERY);
- if ( xRow.is() && xRes->next() )
- {
- i = 1;
- aColIter = m_pColumnNames->begin();
- for(;aColIter != aColEnd;++aColIter)
- {
- if ( aColIter->second.sTableName == aSqlIter->first )
- {
- io_aRow[aColIter->second.nPosition].fill(i++,aColIter->second.nType,aColIter->second.bNullable,xRow);
- io_aRow[aColIter->second.nPosition].setModified();
- }
- }
- }
- }
- catch(const SQLException&)
- {
- }
- }
- }
- }
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/OptimisticSet.hxx b/dbaccess/source/core/api/OptimisticSet.hxx
deleted file mode 100644
index b9b8fbe11..000000000
--- a/dbaccess/source/core/api/OptimisticSet.hxx
+++ /dev/null
@@ -1,108 +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 2008 by Sun Microsystems, Inc.
- *
- * 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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_CORE_API_OPTIMISTICSET_HXX
-#define DBACCESS_CORE_API_OPTIMISTICSET_HXX
-
-#include "KeySet.hxx"
-#include <cppuhelper/implbase1.hxx>
-
-#include <connectivity/sqlparse.hxx>
-#include <connectivity/sqliterator.hxx>
-
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryAnalyzer.hpp>
-#include <comphelper/stl_types.hxx>
-#include <comphelper/componentcontext.hxx>
-
-namespace dbaccess
-{
- // is used when the source supports keys
- class OptimisticSet : public OKeySet
- {
- ::connectivity::OSQLParser m_aSqlParser;
- ::connectivity::OSQLParseTreeIterator m_aSqlIterator;
-
- ::std::map<sal_Int32,sal_Int32> m_aJoinedColumns;
- ::std::map<sal_Int32,sal_Int32> m_aJoinedKeyColumns;
-
- mutable bool m_bResultSetChanged;
-
- /**
- getComposedTableName return the composed table name for the query
- @param _sCatalog the catalogname may be empty
- @param _sSchema the schemaname may be empty
- @param _sTable the tablename
-
- @return the composed name
- */
- ::rtl::OUString getComposedTableName( const ::rtl::OUString& _sCatalog,
- const ::rtl::OUString& _sSchema,
- const ::rtl::OUString& _sTable);
-
- void impl_convertValue_throw(const ORowSetRow& _rInsertRow,const SelectColumnDescription& i_aMetaData);
-
- void executeDelete(const ORowSetRow& _rDeleteRow,const ::rtl::OUString& i_sSQL,const ::rtl::OUString& i_sTableName);
- void fillJoinedColumns_throw(const ::std::vector< ::connectivity::TNodePair>& i_aJoinColumns);
- void fillJoinedColumns_throw(const ::rtl::OUString& i_sLeftColumn,const ::rtl::OUString& i_sRightColumn);
- protected:
- virtual ~OptimisticSet();
- public:
- OptimisticSet(const ::comphelper::ComponentContext& _rContext,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& i_xConnection,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryAnalyzer >& _xComposer,
- const ORowSetValueVector& _aParameterValueForCache,
- sal_Int32 i_nMaxRows,
- sal_Int32& o_nRowCount);
-
- // late ctor which can throw exceptions
- virtual void construct(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDriverSet,const ::rtl::OUString& i_sRowSetFilter);
-
- // ::com::sun::star::sdbcx::XDeleteRows
- virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rows ,const connectivity::OSQLTable& _xTable) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbc::XResultSetUpdate
- virtual void SAL_CALL updateRow(const ORowSetRow& _rInsertRow,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL deleteRow(const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // CacheSet
- virtual bool isResultSetChanged() const;
- virtual void reset(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDriverSet);
- virtual void mergeColumnValues(sal_Int32 i_nColumnIndex,ORowSetValueVector::Vector& io_aInsertRow,ORowSetValueVector::Vector& io_aRow,::std::vector<sal_Int32>& o_aChangedColumns);
- virtual bool columnValuesUpdated(ORowSetValueVector::Vector& o_aCachedRow,const ORowSetValueVector::Vector& i_aRow);
- virtual bool updateColumnValues(const ORowSetValueVector::Vector& io_aCachedRow,ORowSetValueVector::Vector& io_aRow,const ::std::vector<sal_Int32>& i_aChangedColumns);
- virtual void fillMissingValues(ORowSetValueVector::Vector& io_aRow) const;
-
- bool isReadOnly() const { return m_aJoinedKeyColumns.empty(); }
- const ::std::map<sal_Int32,sal_Int32>& getJoinedColumns() const { return m_aJoinedColumns; }
- const ::std::map<sal_Int32,sal_Int32>& getJoinedKeyColumns() const { return m_aJoinedKeyColumns; }
- };
-}
-#endif // DBACCESS_CORE_API_OPTIMISTICSET_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/PrivateRow.cxx b/dbaccess/source/core/api/PrivateRow.cxx
deleted file mode 100644
index 05eed3b2b..000000000
--- a/dbaccess/source/core/api/PrivateRow.cxx
+++ /dev/null
@@ -1,144 +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 andor 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_dbaccess.hxx"
-#include "PrivateRow.hxx"
-
-using namespace dbaccess;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star;
-
-::sal_Bool SAL_CALL OPrivateRow::wasNull( ) throw (SQLException, RuntimeException)
- {
- return m_aRow[m_nPos].isNull();
- }
- ::rtl::OUString SAL_CALL OPrivateRow::getString( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- ::sal_Bool SAL_CALL OPrivateRow::getBoolean( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- ::sal_Int8 SAL_CALL OPrivateRow::getByte( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- ::sal_Int16 SAL_CALL OPrivateRow::getShort( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- ::sal_Int32 SAL_CALL OPrivateRow::getInt( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- ::sal_Int64 SAL_CALL OPrivateRow::getLong( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- float SAL_CALL OPrivateRow::getFloat( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- double SAL_CALL OPrivateRow::getDouble( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- Sequence< ::sal_Int8 > SAL_CALL OPrivateRow::getBytes( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- ::com::sun::star::util::Date SAL_CALL OPrivateRow::getDate( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- ::com::sun::star::util::Time SAL_CALL OPrivateRow::getTime( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- ::com::sun::star::util::DateTime SAL_CALL OPrivateRow::getTimestamp( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos];
- }
- Reference< ::com::sun::star::io::XInputStream > SAL_CALL OPrivateRow::getBinaryStream( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return Reference< ::com::sun::star::io::XInputStream >(m_aRow[m_nPos].makeAny(),UNO_QUERY);
- }
- Reference< ::com::sun::star::io::XInputStream > SAL_CALL OPrivateRow::getCharacterStream( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return Reference< ::com::sun::star::io::XInputStream >(m_aRow[m_nPos].makeAny(),UNO_QUERY);
- }
- Any SAL_CALL OPrivateRow::getObject( ::sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess >& ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return m_aRow[m_nPos].makeAny();
- }
- Reference< XRef > SAL_CALL OPrivateRow::getRef( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return Reference< XRef >(m_aRow[m_nPos].makeAny(),UNO_QUERY);
- }
- Reference< XBlob > SAL_CALL OPrivateRow::getBlob( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return Reference< XBlob >(m_aRow[m_nPos].makeAny(),UNO_QUERY);
- }
- Reference< XClob > SAL_CALL OPrivateRow::getClob( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return Reference< XClob >(m_aRow[m_nPos].makeAny(),UNO_QUERY);
- }
- Reference< XArray > SAL_CALL OPrivateRow::getArray( ::sal_Int32 columnIndex ) throw (SQLException, RuntimeException)
- {
- m_nPos = columnIndex;
- return Reference< XArray >(m_aRow[m_nPos].makeAny(),UNO_QUERY);
- }
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/PrivateRow.hxx b/dbaccess/source/core/api/PrivateRow.hxx
deleted file mode 100644
index e03e8dcdc..000000000
--- a/dbaccess/source/core/api/PrivateRow.hxx
+++ /dev/null
@@ -1,69 +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 2008 by Sun Microsystems, Inc.
- *
- * 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.
- *
- ************************************************************************/
-#ifndef PRIVATE_ROW_HXX
-#define PRIVATE_ROW_HXX
-
-#include <cppuhelper/implbase1.hxx>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include "RowSetRow.hxx"
-
-namespace dbaccess
-{
- class OPrivateRow : public ::cppu::WeakImplHelper1< ::com::sun::star::sdbc::XRow>
- {
- ORowSetValueVector::Vector m_aRow;
- sal_Int32 m_nPos;
- public:
- OPrivateRow(const ORowSetValueVector::Vector& i_aRow) : m_aRow(i_aRow),m_nPos(0)
- {
- }
- virtual ::sal_Bool SAL_CALL wasNull( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getString( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::sal_Bool SAL_CALL getBoolean( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::sal_Int8 SAL_CALL getByte( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::sal_Int16 SAL_CALL getShort( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::sal_Int32 SAL_CALL getInt( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::sal_Int64 SAL_CALL getLong( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual float SAL_CALL getFloat( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual double SAL_CALL getDouble( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::sal_Int8 > SAL_CALL getBytes( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Date SAL_CALL getDate( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Time SAL_CALL getTime( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getObject( ::sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( ::sal_Int32 columnIndex ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- };
-} // dbaccess
-#endif // PRIVATE_ROW_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/RowSet.cxx b/dbaccess/source/core/api/RowSet.cxx
deleted file mode 100644
index 3825516e4..000000000
--- a/dbaccess/source/core/api/RowSet.cxx
+++ /dev/null
@@ -1,2977 +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_dbaccess.hxx"
-
-#include "RowSet.hxx"
-#include "dbastrings.hrc"
-#include "sdbcoretools.hxx"
-#include "SingleSelectQueryComposer.hxx"
-#include "module_dba.hxx"
-#include "sdbcoretools.hxx"
-#include "CRowSetColumn.hxx"
-#include "CRowSetDataColumn.hxx"
-#include "RowSetCache.hxx"
-#include "core_resource.hrc"
-#include "core_resource.hxx"
-#include "tablecontainer.hxx"
-#include "dbastrings.hrc"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdb/CommandType.hpp>
-#include <com/sun/star/sdb/ErrorCondition.hpp>
-#include <com/sun/star/sdb/RowChangeAction.hpp>
-#include <com/sun/star/sdb/RowSetVetoException.hpp>
-#include <com/sun/star/sdb/XCompletedConnection.hpp>
-#include <com/sun/star/sdb/XParametersSupplier.hpp>
-#include <com/sun/star/sdb/XQueriesSupplier.hpp>
-#include <com/sun/star/sdbc/FetchDirection.hpp>
-#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
-#include <com/sun/star/sdbc/XDataSource.hpp>
-#include <com/sun/star/sdbc/XDriverAccess.hpp>
-#include <com/sun/star/sdbcx/CompareBookmark.hpp>
-#include <com/sun/star/sdbcx/Privilege.hpp>
-#include <com/sun/star/sdbcx/XDataDefinitionSupplier.hpp>
-#include <com/sun/star/uno/XNamingService.hpp>
-#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/componentcontext.hxx>
-#include <comphelper/extract.hxx>
-#include <comphelper/interaction.hxx>
-#include <comphelper/property.hxx>
-#include <comphelper/seqstream.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/types.hxx>
-#include <comphelper/uno3.hxx>
-#include <connectivity/BlobHelper.hxx>
-#include <connectivity/dbconversion.hxx>
-#include <connectivity/dbexception.hxx>
-#include <connectivity/dbtools.hxx>
-#include <cppuhelper/exc_hlp.hxx>
-#include <cppuhelper/interfacecontainer.h>
-#include <cppuhelper/typeprovider.hxx>
-#include <rtl/logfile.hxx>
-#include <unotools/syslocale.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <unotools/configmgr.hxx>
-
-using namespace utl;
-using namespace dbaccess;
-using namespace connectivity;
-using namespace comphelper;
-using namespace dbtools;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::task;
-using namespace ::com::sun::star::util;
-using namespace ::cppu;
-using namespace ::osl;
-
-extern "C" void SAL_CALL createRegistryInfo_ORowSet()
-{
- static ::dba::OAutoRegistration< ORowSet > aAutoRegistration;
-}
-
-#define NOTIFY_LISTERNERS_CHECK(_rListeners,T,method) \
- Sequence< Reference< XInterface > > aListenerSeq = _rListeners.getElements(); \
- \
- const Reference< XInterface >* pxIntBegin = aListenerSeq.getConstArray(); \
- const Reference< XInterface >* pxInt = pxIntBegin + aListenerSeq.getLength(); \
- \
- _rGuard.clear(); \
- sal_Bool bCheck = sal_True; \
- while( pxInt > pxIntBegin && bCheck ) \
- { \
- try \
- { \
- while( pxInt > pxIntBegin && bCheck ) \
- { \
- --pxInt; \
- bCheck = static_cast< T* >( pxInt->get() )->method(aEvt); \
- } \
- } \
- catch( RuntimeException& ) \
- { \
- } \
- } \
- _rGuard.reset();
-
-
-namespace dbaccess
-{
-
-Reference< XInterface > ORowSet_CreateInstance(const Reference< XMultiServiceFactory >& _rxFactory)
-{
- return *(new ORowSet(_rxFactory));
-}
-
-ORowSet::ORowSet( const Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB )
- :ORowSet_BASE1(m_aMutex)
- ,ORowSetBase( _rxORB, ORowSet_BASE1::rBHelper, &m_aMutex )
- ,m_pParameters( NULL )
- ,m_aRowsetListeners(*m_pMutex)
- ,m_aApproveListeners(*m_pMutex)
- ,m_aRowsChangeListener(*m_pMutex)
- ,m_pTables(NULL)
- ,m_nFetchDirection(FetchDirection::FORWARD)
- ,m_nFetchSize(50)
- ,m_nMaxFieldSize(0)
- ,m_nMaxRows(0)
- ,m_nQueryTimeOut(0)
- ,m_nCommandType(CommandType::COMMAND)
- ,m_nTransactionIsolation(0)
- ,m_nPrivileges(0)
- ,m_nInAppend(0)
- ,m_bUseEscapeProcessing(sal_True)
- ,m_bApplyFilter(sal_False)
- ,m_bCommandFacetsDirty( sal_True )
- ,m_bModified(sal_False)
- ,m_bRebuildConnOnExecute(sal_False)
- ,m_bIsBookmarable(sal_True)
- ,m_bNew(sal_False)
- ,m_bCanUpdateInsertedRows(sal_True)
- ,m_bOwnConnection(sal_False)
- ,m_bPropChangeNotifyEnabled(sal_True)
-{
- m_nResultSetType = ResultSetType::SCROLL_SENSITIVE;
- m_nResultSetConcurrency = ResultSetConcurrency::UPDATABLE;
- m_pMySelf = this;
- m_aActiveConnection <<= m_xActiveConnection;
-
- sal_Int32 nRBT = PropertyAttribute::READONLY | PropertyAttribute::BOUND | PropertyAttribute::TRANSIENT;
- sal_Int32 nRT = PropertyAttribute::READONLY | PropertyAttribute::TRANSIENT;
- sal_Int32 nBT = PropertyAttribute::BOUND | PropertyAttribute::TRANSIENT;
-
- m_aPrematureParamValues.get().resize( 0 );
-
- // sdb.RowSet Properties
- registerMayBeVoidProperty(PROPERTY_ACTIVE_CONNECTION,PROPERTY_ID_ACTIVE_CONNECTION, PropertyAttribute::MAYBEVOID|PropertyAttribute::TRANSIENT|PropertyAttribute::BOUND, &m_aActiveConnection, ::getCppuType(reinterpret_cast< Reference< XConnection >* >(NULL)));
- registerProperty(PROPERTY_DATASOURCENAME, PROPERTY_ID_DATASOURCENAME, PropertyAttribute::BOUND, &m_aDataSourceName, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- registerProperty(PROPERTY_COMMAND, PROPERTY_ID_COMMAND, PropertyAttribute::BOUND, &m_aCommand, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- registerProperty(PROPERTY_COMMAND_TYPE, PROPERTY_ID_COMMAND_TYPE, PropertyAttribute::BOUND, &m_nCommandType, ::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerProperty(PROPERTY_ACTIVECOMMAND, PROPERTY_ID_ACTIVECOMMAND, nRBT, &m_aActiveCommand, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- registerProperty(PROPERTY_IGNORERESULT, PROPERTY_ID_IGNORERESULT, PropertyAttribute::BOUND, &m_bIgnoreResult, ::getBooleanCppuType());
- registerProperty(PROPERTY_FILTER, PROPERTY_ID_FILTER, PropertyAttribute::BOUND, &m_aFilter, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- registerProperty(PROPERTY_HAVING_CLAUSE, PROPERTY_ID_HAVING_CLAUSE, PropertyAttribute::BOUND, &m_aHavingClause, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- registerProperty(PROPERTY_GROUP_BY, PROPERTY_ID_GROUP_BY, PropertyAttribute::BOUND, &m_aGroupBy, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- registerProperty(PROPERTY_APPLYFILTER, PROPERTY_ID_APPLYFILTER, PropertyAttribute::BOUND, &m_bApplyFilter, ::getBooleanCppuType());
- registerProperty(PROPERTY_ORDER, PROPERTY_ID_ORDER, PropertyAttribute::BOUND, &m_aOrder, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- registerProperty(PROPERTY_PRIVILEGES, PROPERTY_ID_PRIVILEGES, nRT, &m_nPrivileges, ::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerProperty(PROPERTY_ISMODIFIED, PROPERTY_ID_ISMODIFIED, nBT, &m_bModified, ::getBooleanCppuType());
- registerProperty(PROPERTY_ISNEW, PROPERTY_ID_ISNEW, nRBT, &m_bNew, ::getBooleanCppuType());
- registerProperty(PROPERTY_SINGLESELECTQUERYCOMPOSER,PROPERTY_ID_SINGLESELECTQUERYCOMPOSER, nRT, &m_xComposer, ::getCppuType(reinterpret_cast< Reference< XSingleSelectQueryComposer >* >(NULL)));
-
- // sdbcx.ResultSet Properties
- registerProperty(PROPERTY_ISBOOKMARKABLE, PROPERTY_ID_ISBOOKMARKABLE, nRT, &m_bIsBookmarable, ::getBooleanCppuType());
- registerProperty(PROPERTY_CANUPDATEINSERTEDROWS,PROPERTY_ID_CANUPDATEINSERTEDROWS, nRT, &m_bCanUpdateInsertedRows, ::getBooleanCppuType());
- // sdbc.ResultSet Properties
- registerProperty(PROPERTY_RESULTSETCONCURRENCY, PROPERTY_ID_RESULTSETCONCURRENCY, PropertyAttribute::TRANSIENT, &m_nResultSetConcurrency,::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerProperty(PROPERTY_RESULTSETTYPE, PROPERTY_ID_RESULTSETTYPE, PropertyAttribute::TRANSIENT, &m_nResultSetType, ::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerProperty(PROPERTY_FETCHDIRECTION, PROPERTY_ID_FETCHDIRECTION, PropertyAttribute::TRANSIENT, &m_nFetchDirection, ::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerProperty(PROPERTY_FETCHSIZE, PROPERTY_ID_FETCHSIZE, PropertyAttribute::TRANSIENT, &m_nFetchSize, ::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
-
- // sdbc.RowSet Properties
- registerProperty(PROPERTY_URL, PROPERTY_ID_URL, 0, &m_aURL, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- registerProperty(PROPERTY_TRANSACTIONISOLATION, PROPERTY_ID_TRANSACTIONISOLATION, PropertyAttribute::TRANSIENT, &m_nTransactionIsolation,::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerMayBeVoidProperty(PROPERTY_TYPEMAP, PROPERTY_ID_TYPEMAP, PropertyAttribute::MAYBEVOID|PropertyAttribute::TRANSIENT, &m_aTypeMap, ::getCppuType(reinterpret_cast< Reference< XNameAccess >* >(NULL)));
- registerProperty(PROPERTY_ESCAPE_PROCESSING,PROPERTY_ID_ESCAPE_PROCESSING, PropertyAttribute::BOUND, &m_bUseEscapeProcessing,::getBooleanCppuType() );
- registerProperty(PROPERTY_QUERYTIMEOUT, PROPERTY_ID_QUERYTIMEOUT, PropertyAttribute::TRANSIENT, &m_nQueryTimeOut, ::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerProperty(PROPERTY_MAXFIELDSIZE, PROPERTY_ID_MAXFIELDSIZE, PropertyAttribute::TRANSIENT, &m_nMaxFieldSize, ::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerProperty(PROPERTY_MAXROWS, PROPERTY_ID_MAXROWS, 0, &m_nMaxRows, ::getCppuType(reinterpret_cast< sal_Int32*>(NULL)) );
- registerProperty(PROPERTY_USER, PROPERTY_ID_USER, PropertyAttribute::TRANSIENT, &m_aUser, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- registerProperty(PROPERTY_PASSWORD, PROPERTY_ID_PASSWORD, PropertyAttribute::TRANSIENT, &m_aPassword, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
-
- registerProperty(PROPERTY_UPDATE_CATALOGNAME, PROPERTY_ID_UPDATE_CATALOGNAME, PropertyAttribute::BOUND, &m_aUpdateCatalogName, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- registerProperty(PROPERTY_UPDATE_SCHEMANAME, PROPERTY_ID_UPDATE_SCHEMANAME, PropertyAttribute::BOUND, &m_aUpdateSchemaName, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- registerProperty(PROPERTY_UPDATE_TABLENAME, PROPERTY_ID_UPDATE_TABLENAME, PropertyAttribute::BOUND, &m_aUpdateTableName, ::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
-
- // ???
- registerProperty(PROPERTY_CHANGE_NOTIFICATION_ENABLED, PROPERTY_ID_PROPCHANGE_NOTIFY, PropertyAttribute::BOUND, &m_bPropChangeNotifyEnabled, ::getBooleanCppuType());
-}
-
-ORowSet::~ORowSet()
-{
- if ( !m_rBHelper.bDisposed && !m_rBHelper.bInDispose )
- {
- OSL_FAIL("Please check who doesn't dispose this component!");
- osl_incrementInterlockedCount( &m_refCount );
- dispose();
- }
-}
-
-void ORowSet::getPropertyDefaultByHandle( sal_Int32 _nHandle, Any& _rDefault ) const
-{
- switch( _nHandle )
- {
- case PROPERTY_ID_COMMAND_TYPE:
- _rDefault <<= static_cast<sal_Int32>(CommandType::COMMAND);
- break;
- case PROPERTY_ID_IGNORERESULT:
- _rDefault <<= sal_False;
- break;
- case PROPERTY_ID_APPLYFILTER:
- _rDefault <<= sal_False;
- break;
- case PROPERTY_ID_ISMODIFIED:
- _rDefault <<= sal_False;
- break;
- case PROPERTY_ID_ISBOOKMARKABLE:
- _rDefault <<= sal_True;
- break;
- case PROPERTY_ID_CANUPDATEINSERTEDROWS:
- _rDefault <<= sal_True;
- break;
- case PROPERTY_ID_RESULTSETTYPE:
- _rDefault <<= ResultSetType::SCROLL_INSENSITIVE;
- break;
- case PROPERTY_ID_RESULTSETCONCURRENCY:
- _rDefault <<= ResultSetConcurrency::UPDATABLE;
- break;
- case PROPERTY_ID_FETCHDIRECTION:
- _rDefault <<= FetchDirection::FORWARD;
- break;
- case PROPERTY_ID_FETCHSIZE:
- _rDefault <<= static_cast<sal_Int32>(1);
- break;
- case PROPERTY_ID_ESCAPE_PROCESSING:
- _rDefault <<= sal_True;
- break;
- case PROPERTY_ID_MAXROWS:
- _rDefault <<= sal_Int32( 0 );
- break;
- case PROPERTY_ID_FILTER:
- case PROPERTY_ID_HAVING_CLAUSE:
- case PROPERTY_ID_GROUP_BY:
- case PROPERTY_ID_ORDER:
- case PROPERTY_ID_UPDATE_CATALOGNAME:
- case PROPERTY_ID_UPDATE_SCHEMANAME:
- case PROPERTY_ID_UPDATE_TABLENAME:
- _rDefault <<= ::rtl::OUString();
- break;
- }
-}
-
-// typedef ::comphelper::OPropertyArrayUsageHelper<ORowSet> ORowSet_Prop;
-void SAL_CALL ORowSet::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rValue) throw (Exception)
-{
- switch(nHandle)
- {
- case PROPERTY_ID_ISMODIFIED:
- m_bModified = cppu::any2bool(rValue);
- break;
- case PROPERTY_ID_FETCHDIRECTION:
- if( m_nResultSetType == ResultSetType::FORWARD_ONLY)
- throw Exception(); // else run through
- default:
- OPropertyStateContainer::setFastPropertyValue_NoBroadcast(nHandle,rValue);
- }
-
- if ( ( nHandle == PROPERTY_ID_ACTIVE_CONNECTION )
- || ( nHandle == PROPERTY_ID_DATASOURCENAME )
- || ( nHandle == PROPERTY_ID_COMMAND )
- || ( nHandle == PROPERTY_ID_COMMAND_TYPE )
- || ( nHandle == PROPERTY_ID_IGNORERESULT )
- || ( nHandle == PROPERTY_ID_FILTER )
- || ( nHandle == PROPERTY_ID_HAVING_CLAUSE )
- || ( nHandle == PROPERTY_ID_GROUP_BY )
- || ( nHandle == PROPERTY_ID_APPLYFILTER )
- || ( nHandle == PROPERTY_ID_ORDER )
- || ( nHandle == PROPERTY_ID_URL )
- || ( nHandle == PROPERTY_ID_USER )
- )
- {
- m_bCommandFacetsDirty = sal_True;
- }
-
-
- switch(nHandle)
- {
- case PROPERTY_ID_ACTIVE_CONNECTION:
- // the new connection
- {
- Reference< XConnection > xNewConnection(m_aActiveConnection,UNO_QUERY);
- setActiveConnection(xNewConnection, sal_False);
- }
-
- m_bOwnConnection = sal_False;
- m_bRebuildConnOnExecute = sal_False;
- break;
-
- case PROPERTY_ID_DATASOURCENAME:
- if(!m_xStatement.is())
- {
- Reference< XConnection > xNewConn;
- Any aNewConn;
- aNewConn <<= xNewConn;
- setFastPropertyValue(PROPERTY_ID_ACTIVE_CONNECTION, aNewConn);
- }
- else
- m_bRebuildConnOnExecute = sal_True;
- break;
- case PROPERTY_ID_FETCHSIZE:
- if(m_pCache)
- {
- m_pCache->setFetchSize(m_nFetchSize);
- fireRowcount();
- }
- break;
- case PROPERTY_ID_URL:
- // is the connection-to-be-built determined by the url (which is the case if m_aDataSourceName is empty) ?
- if (!m_aDataSourceName.getLength())
- {
- // are we active at the moment ?
- if (m_xStatement.is())
- // yes -> the next execute needs to rebuild our connection because of this new property
- m_bRebuildConnOnExecute = sal_True;
- else
- { // no -> drop our active connection (if we have one) as it doesn't correspond to this new property value anymore
- Reference< XConnection > xNewConn;
- Any aNewConn;
- aNewConn <<= xNewConn;
- setFastPropertyValue(PROPERTY_ID_ACTIVE_CONNECTION, aNewConn);
- }
- }
- m_bOwnConnection = sal_True;
- break;
- case PROPERTY_ID_TYPEMAP:
- ::cppu::extractInterface(m_xTypeMap,m_aTypeMap);
- break;
- case PROPERTY_ID_PROPCHANGE_NOTIFY:
- m_bPropChangeNotifyEnabled = ::cppu::any2bool(rValue);
- break;
- default:
- break;
- };
-}
-
-void SAL_CALL ORowSet::getFastPropertyValue(Any& rValue,sal_Int32 nHandle) const
-{
- if(m_pCache)
- {
- switch(nHandle)
- {
- case PROPERTY_ID_ISMODIFIED:
- rValue.setValue(&m_bModified,::getCppuBooleanType());
- break;
- case PROPERTY_ID_ISNEW:
- rValue.setValue(&m_bNew,::getCppuBooleanType());
- break;
- case PROPERTY_ID_PRIVILEGES:
- rValue <<= m_pCache->m_nPrivileges;
- break;
- case PROPERTY_ID_ACTIVE_CONNECTION:
- rValue <<= m_xActiveConnection;
- break;
- case PROPERTY_ID_TYPEMAP:
- rValue <<= m_xTypeMap;
- break;
- default:
- ORowSetBase::getFastPropertyValue(rValue,nHandle);
- };
- }
- else
- {
- switch(nHandle)
- {
- case PROPERTY_ID_ACTIVE_CONNECTION:
- rValue <<= m_xActiveConnection;
- break;
- case PROPERTY_ID_TYPEMAP:
- rValue <<= m_xTypeMap;
- break;
- case PROPERTY_ID_PROPCHANGE_NOTIFY:
- rValue <<= m_bPropChangeNotifyEnabled;
- break;
- default:
- ORowSetBase::getFastPropertyValue(rValue,nHandle);
- }
- }
-}
-
-// com::sun::star::XTypeProvider
-Sequence< Type > SAL_CALL ORowSet::getTypes() throw (RuntimeException)
-{
- OTypeCollection aTypes(::getCppuType( (const Reference< XPropertySet > *)0 ),
- ::getCppuType( (const Reference< XFastPropertySet > *)0 ),
- ::getCppuType( (const Reference< XMultiPropertySet > *)0 ),
- ::comphelper::concatSequences(ORowSet_BASE1::getTypes(),ORowSetBase::getTypes()));
- return aTypes.getTypes();
-}
-
-Sequence< sal_Int8 > SAL_CALL ORowSet::getImplementationId() throw (RuntimeException)
-{
- static OImplementationId * pId = 0;
- if (! pId)
- {
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- if (! pId)
- {
- static OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-// com::sun::star::XInterface
-Any SAL_CALL ORowSet::queryInterface( const Type & rType ) throw (RuntimeException)
-{
- return ORowSet_BASE1::queryInterface( rType);
-}
-
-void SAL_CALL ORowSet::acquire() throw()
-{
- ORowSet_BASE1::acquire();
-}
-
-void SAL_CALL ORowSet::release() throw()
-{
- ORowSet_BASE1::release();
-}
-
-// com::sun::star::XUnoTunnel
-sal_Int64 SAL_CALL ORowSet::getSomething( const Sequence< sal_Int8 >& rId ) throw(RuntimeException)
-{
- if (rId.getLength() == 16 && 0 == rtl_compareMemory(getImplementationId().getConstArray(), rId.getConstArray(), 16 ) )
- return reinterpret_cast<sal_Int64>(this);
-
- return 0;
-}
-
-// com::sun::star::XAggregation
-Any SAL_CALL ORowSet::queryAggregation( const Type& rType ) throw(RuntimeException)
-{
- Any aRet(ORowSetBase::queryInterface(rType));
- if (!aRet.hasValue())
- aRet = ORowSet_BASE1::queryAggregation(rType);
- return aRet;
-}
-
-rtl::OUString ORowSet::getImplementationName_static( ) throw(RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.dba.ORowSet"));
-}
-
-// ::com::sun::star::XServiceInfo
-::rtl::OUString SAL_CALL ORowSet::getImplementationName( ) throw(RuntimeException)
-{
- return getImplementationName_static();
-}
-
-sal_Bool SAL_CALL ORowSet::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException)
-{
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > ORowSet::getSupportedServiceNames_static( ) throw (RuntimeException)
-{
- Sequence< rtl::OUString > aSNS( 5 );
- aSNS[0] = SERVICE_SDBC_RESULTSET;
- aSNS[1] = SERVICE_SDBC_ROWSET;
- aSNS[2] = SERVICE_SDBCX_RESULTSET;
- aSNS[3] = SERVICE_SDB_RESULTSET;
- aSNS[4] = SERVICE_SDB_ROWSET;
- return aSNS;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL ORowSet::getSupportedServiceNames( ) throw(RuntimeException)
-{
- return getSupportedServiceNames_static();
-}
-
-Reference< XInterface > ORowSet::Create(const Reference< XComponentContext >& _rxContext)
-{
- ::comphelper::ComponentContext aContext( _rxContext );
- return ORowSet_CreateInstance( aContext.getLegacyServiceFactory() );
-}
-
-// OComponentHelper
-void SAL_CALL ORowSet::disposing()
-{
- OPropertyStateContainer::disposing();
-
- MutexGuard aGuard(m_aMutex);
- EventObject aDisposeEvent;
- aDisposeEvent.Source = static_cast< XComponent* >(this);
- m_aRowsetListeners.disposeAndClear( aDisposeEvent );
- m_aApproveListeners.disposeAndClear( aDisposeEvent );
- m_aRowsChangeListener.disposeAndClear( aDisposeEvent );
-
- freeResources( true );
-
- // remove myself as dispose listener
- Reference< XComponent > xComponent(m_xActiveConnection, UNO_QUERY);
- if (xComponent.is())
- {
- Reference<XEventListener> xEvt;
- query_aggregation(this,xEvt);
- xComponent->removeEventListener(xEvt);
- }
-
- m_aActiveConnection = Any(); // the any conatains a reference too
- if(m_bOwnConnection)
- ::comphelper::disposeComponent(m_xActiveConnection);
- m_xActiveConnection = NULL;
-
-
- ORowSetBase::disposing();
-}
-
-void ORowSet::freeResources( bool _bComplete )
-{
- MutexGuard aGuard(m_aMutex);
-
- // free all clones
- connectivity::OWeakRefArray::iterator aEnd = m_aClones.end();
- for (connectivity::OWeakRefArray::iterator i = m_aClones.begin(); aEnd != i; ++i)
- {
- Reference< XComponent > xComp(i->get(), UNO_QUERY);
- if (xComp.is())
- xComp->dispose();
- }
- m_aClones.clear();
-
- if ( _bComplete )
- {
- // the columns must be disposed before the querycomposer is disposed because
- // their owner can be the composer
- TDataColumns().swap(m_aDataColumns);// clear and resize capacity
- m_xColumns = NULL;
- if ( m_pColumns )
- m_pColumns->disposing();
- // dispose the composer to avoid that everbody knows that the querycomposer is eol
- try { ::comphelper::disposeComponent( m_xComposer ); }
- catch(Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- m_xComposer = NULL;
- }
-
- // let our warnings container forget the reference to the (possibly disposed) old result set
- m_aWarnings.setExternalWarnings( NULL );
-
- DELETEZ(m_pCache);
-
- impl_resetTables_nothrow();
-
- m_xStatement = NULL;
- m_xTypeMap = NULL;
-
- m_aBookmark = Any();
- m_bBeforeFirst = sal_True;
- m_bAfterLast = sal_False;
- m_bNew = sal_False;
- m_bModified = sal_False;
- m_bIsInsertRow = sal_False;
- m_bLastKnownRowCountFinal = sal_False;
- m_nLastKnownRowCount = 0;
- if ( m_aOldRow.is() )
- m_aOldRow->clearRow();
-
- impl_disposeParametersContainer_nothrow();
-
- m_bCommandFacetsDirty = sal_True;
- }
-}
-
-void ORowSet::setActiveConnection( Reference< XConnection >& _rxNewConn, sal_Bool _bFireEvent )
-{
- if (_rxNewConn.get() == m_xActiveConnection.get())
- // nothing to do
- return;
-
- // remove the event listener for the old connection
- Reference< XComponent > xComponent(m_xActiveConnection, UNO_QUERY);
- if (xComponent.is())
- {
- Reference<XEventListener> xListener;
- query_aggregation(this, xListener);
- xComponent->removeEventListener(xListener);
- }
-
- // if we owned the connection, remember it for later disposing
- if(m_bOwnConnection)
- m_xOldConnection = m_xActiveConnection;
-
- // for firing the PropertyChangeEvent
- sal_Int32 nHandle = PROPERTY_ID_ACTIVE_CONNECTION;
- Any aOldConnection; aOldConnection <<= m_xActiveConnection;
- Any aNewConnection; aNewConnection <<= _rxNewConn;
-
- // set the new connection
- m_xActiveConnection = _rxNewConn;
- if (m_xActiveConnection.is())
- m_aActiveConnection <<= m_xActiveConnection;
- else
- m_aActiveConnection.clear();
-
- // fire the event
- if (_bFireEvent)
- fire(&nHandle, &aNewConnection, &aOldConnection, 1, sal_False);
-
- // register as event listener for the new connection
- xComponent.set(m_xActiveConnection,UNO_QUERY);
- if (xComponent.is())
- {
- Reference<XEventListener> xListener;
- query_aggregation(this, xListener);
- xComponent->addEventListener(xListener);
- }
-}
-
-// ::com::sun::star::XEventListener
-void SAL_CALL ORowSet::disposing( const ::com::sun::star::lang::EventObject& Source ) throw(RuntimeException)
-{
- // close rowset because the connection is going to be deleted (someone told me :-)
- Reference<XConnection> xCon(Source.Source,UNO_QUERY);
- if(m_xActiveConnection == xCon)
- {
- close();
- {
- MutexGuard aGuard( m_aMutex );
- Reference< XConnection > xXConnection;
- setActiveConnection( xXConnection );
- }
- }
-}
-
-// XCloseable
-void SAL_CALL ORowSet::close( ) throw(SQLException, RuntimeException)
-{
- {
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
- }
- // additionals things to set
- freeResources( true );
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* ORowSet::createArrayHelper( ) const
-{
- Sequence< Property > aProps;
- describeProperties(aProps);
- return new ::cppu::OPropertyArrayHelper(aProps);
-}
-
-// cppu::OPropertySetHelper
-::cppu::IPropertyArrayHelper& SAL_CALL ORowSet::getInfoHelper()
-{
- typedef ::comphelper::OPropertyArrayUsageHelper<ORowSet> ORowSet_PROP;
- return *ORowSet_PROP::getArrayHelper();
-}
-
-void ORowSet::updateValue(sal_Int32 columnIndex,const ORowSetValue& x)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkUpdateConditions(columnIndex);
- checkUpdateIterator();
-
- ORowSetValueVector::Vector& rRow = ((*m_aCurrentRow)->get());
- ORowSetNotifier aNotify(this,rRow);
- m_pCache->updateValue(columnIndex,x,rRow,aNotify.getChangedColumns());
- m_bModified = m_bModified || !aNotify.getChangedColumns().empty();
- aNotify.firePropertyChange();
-}
-
-// XRowUpdate
-void SAL_CALL ORowSet::updateNull( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkUpdateConditions(columnIndex);
- checkUpdateIterator();
-
- ORowSetValueVector::Vector& rRow = ((*m_aCurrentRow)->get());
- ORowSetNotifier aNotify(this,rRow);
- m_pCache->updateNull(columnIndex,rRow,aNotify.getChangedColumns());
- m_bModified = m_bModified || !aNotify.getChangedColumns().empty();
- aNotify.firePropertyChange();
-}
-
-void SAL_CALL ORowSet::updateBoolean( sal_Int32 columnIndex, sal_Bool x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateByte( sal_Int32 columnIndex, sal_Int8 x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateShort( sal_Int32 columnIndex, sal_Int16 x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateInt( sal_Int32 columnIndex, sal_Int32 x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateLong( sal_Int32 columnIndex, sal_Int64 x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateFloat( sal_Int32 columnIndex, float x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateDouble( sal_Int32 columnIndex, double x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateString( sal_Int32 columnIndex, const ::rtl::OUString& x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateBytes( sal_Int32 columnIndex, const Sequence< sal_Int8 >& x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateDate( sal_Int32 columnIndex, const ::com::sun::star::util::Date& x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateTime( sal_Int32 columnIndex, const ::com::sun::star::util::Time& x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateTimestamp( sal_Int32 columnIndex, const ::com::sun::star::util::DateTime& x ) throw(SQLException, RuntimeException)
-{
- updateValue(columnIndex,x);
-}
-
-void SAL_CALL ORowSet::updateBinaryStream( sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkUpdateConditions(columnIndex);
- checkUpdateIterator();
-
- {
- Sequence<sal_Int8> aSeq;
- if(x.is())
- x->readBytes(aSeq,length);
- updateValue(columnIndex,aSeq);
- }
-}
-
-void SAL_CALL ORowSet::updateCharacterStream( sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkUpdateConditions(columnIndex);
- checkUpdateIterator();
- ORowSetValueVector::Vector& rRow = ((*m_aCurrentRow)->get());
- ORowSetNotifier aNotify(this,rRow);
- m_pCache->updateCharacterStream(columnIndex,x,length,rRow,aNotify.getChangedColumns());
- m_bModified = m_bModified || !aNotify.getChangedColumns().empty();
- aNotify.firePropertyChange();
-}
-
-void SAL_CALL ORowSet::updateObject( sal_Int32 columnIndex, const Any& x ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkUpdateConditions(columnIndex);
- checkUpdateIterator();
-
- Any aNewValue = x;
-
- if ( m_pColumns )
- {
- Reference<XPropertySet> xColumn(m_pColumns->getByIndex(columnIndex-1),UNO_QUERY);
- sal_Int32 nColType = 0;
- xColumn->getPropertyValue(PROPERTY_TYPE) >>= nColType;
- switch( nColType )
- {
- case DataType::DATE:
- case DataType::TIME:
- case DataType::TIMESTAMP:
- {
- double nValue = 0;
- if ( x >>= nValue )
- {
- if ( DataType::TIMESTAMP == nColType )
- aNewValue <<= dbtools::DBTypeConversion::toDateTime( nValue );
- else if ( DataType::DATE == nColType )
- aNewValue <<= dbtools::DBTypeConversion::toDate( nValue );
- else
- aNewValue <<= dbtools::DBTypeConversion::toTime( nValue );
- }
- break;
- }
- }
- }
-
- if (!::dbtools::implUpdateObject(this, columnIndex, aNewValue))
- { // there is no other updateXXX call which can handle the value in x
- ORowSetValueVector::Vector& rRow = ((*m_aCurrentRow)->get());
- ORowSetNotifier aNotify(this,rRow);
- m_pCache->updateObject(columnIndex,aNewValue,rRow,aNotify.getChangedColumns());
- m_bModified = m_bModified || !aNotify.getChangedColumns().empty();
- aNotify.firePropertyChange();
- }
-}
-
-void SAL_CALL ORowSet::updateNumericObject( sal_Int32 columnIndex, const Any& x, sal_Int32 scale ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkUpdateConditions(columnIndex);
- checkUpdateIterator();
- ORowSetValueVector::Vector& rRow = ((*m_aCurrentRow)->get());
- ORowSetNotifier aNotify(this,rRow);
- m_pCache->updateNumericObject(columnIndex,x,scale,rRow,aNotify.getChangedColumns());
- m_bModified = m_bModified || !aNotify.getChangedColumns().empty();
- aNotify.firePropertyChange();
-}
-
-// XResultSetUpdate
-void SAL_CALL ORowSet::insertRow( ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
- // insertRow is not allowd when
- // standing not on the insert row nor
- // when the row isn't modified
- // or the concurency is read only
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- if(!m_pCache || !m_bNew || !m_bModified || m_nResultSetConcurrency == ResultSetConcurrency::READ_ONLY)
- throwFunctionSequenceException(*this);
-
- // remember old value for fire
- sal_Bool bOld = m_bNew;
-
- ORowSetRow aOldValues;
- if ( !m_aCurrentRow.isNull() )
- aOldValues = new ORowSetValueVector( *(*m_aCurrentRow));
- Sequence<Any> aChangedBookmarks;
- RowsChangeEvent aEvt(*this,RowChangeAction::INSERT,1,aChangedBookmarks);
- notifyAllListenersRowBeforeChange(aGuard,aEvt);
-
- ::std::vector< Any > aBookmarks;
- sal_Bool bInserted = m_pCache->insertRow(aBookmarks);
-
- // make sure that our row is set to the new inserted row before clearing the insert flags in the cache
- m_pCache->resetInsertRow(bInserted);
-
- // notification order
- // - column values
- setCurrentRow( sal_False, sal_True, aOldValues, aGuard ); // we don't move here
-
- // read-only flag restored
- impl_restoreDataColumnsWriteable_throw();
-
- // - rowChanged
- notifyAllListenersRowChanged(aGuard,aEvt);
-
- if ( !aBookmarks.empty() )
- {
- RowsChangeEvent aUpEvt(*this,RowChangeAction::UPDATE,aBookmarks.size(),Sequence<Any>(&(*aBookmarks.begin()),aBookmarks.size()));
- notifyAllListenersRowChanged(aGuard,aUpEvt);
- }
-
- // - IsModified
- if(!m_bModified)
- fireProperty(PROPERTY_ID_ISMODIFIED,sal_False,sal_True);
- OSL_ENSURE( !m_bModified, "ORowSet::insertRow: just updated, but _still_ modified?" );
-
- // - IsNew
- if(m_bNew != bOld)
- fireProperty(PROPERTY_ID_ISNEW,m_bNew,bOld);
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
-}
-
-sal_Int32 SAL_CALL ORowSet::getRow( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- // check if we are inserting a row
- return (m_pCache && isInsertRow()) ? 0 : ORowSetBase::getRow();
-}
-
-void SAL_CALL ORowSet::updateRow( ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
- // not allowed when standing on insert row
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- if ( !m_pCache || m_nResultSetConcurrency == ResultSetConcurrency::READ_ONLY || m_bNew || ((m_pCache->m_nPrivileges & Privilege::UPDATE ) != Privilege::UPDATE) )
- throwFunctionSequenceException(*this);
-
-
- if(m_bModified)
- {
- ORowSetRow aOldValues;
- if ( !m_aCurrentRow.isNull() )
- aOldValues = new ORowSetValueVector( *(*m_aCurrentRow) );
-
- Sequence<Any> aChangedBookmarks;
- RowsChangeEvent aEvt(*this,RowChangeAction::UPDATE,1,aChangedBookmarks);
- notifyAllListenersRowBeforeChange(aGuard,aEvt);
-
- ::std::vector< Any > aBookmarks;
- m_pCache->updateRow(m_aCurrentRow.operator ->(),aBookmarks);
- if ( !aBookmarks.empty() )
- aEvt.Bookmarks = Sequence<Any>(&(*aBookmarks.begin()),aBookmarks.size());
- aEvt.Rows += aBookmarks.size();
- m_aBookmark = m_pCache->getBookmark();
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- if ( m_pCache->m_aMatrixIter != m_pCache->getEnd() && (*m_pCache->m_aMatrixIter).is() )
- {
- if ( m_pCache->isResultSetChanged() )
- {
- impl_rebuild_throw(aGuard);
- }
- else
- {
- m_aOldRow->setRow(new ORowSetValueVector(*(*m_aCurrentRow)));
-
- // notification order
- // - column values
- ORowSetBase::firePropertyChange(aOldValues);
- }
- // - rowChanged
- notifyAllListenersRowChanged(aGuard,aEvt);
-
- // - IsModified
- if(!m_bModified)
- fireProperty(PROPERTY_ID_ISMODIFIED,sal_False,sal_True);
- OSL_ENSURE( !m_bModified, "ORowSet::updateRow: just updated, but _still_ modified?" );
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- else if ( !m_bAfterLast ) // the update went rong
- {
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_UPDATE_FAILED ), SQL_INVALID_CURSOR_POSITION, *this );
- }
- }
-}
-
-void SAL_CALL ORowSet::deleteRow( ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- checkCache();
-
- if ( m_bBeforeFirst || m_bAfterLast )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_DELETE_BEFORE_AFTER ), SQL_INVALID_CURSOR_POSITION, *this );
- if ( m_bNew )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_DELETE_INSERT_ROW ), SQL_INVALID_CURSOR_POSITION, *this );
- if ( m_nResultSetConcurrency == ResultSetConcurrency::READ_ONLY )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_RESULT_IS_READONLY ), SQL_FUNCTION_SEQUENCE_ERROR, *this );
- if ( ( m_pCache->m_nPrivileges & Privilege::DELETE ) != Privilege::DELETE )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_DELETE_PRIVILEGE ), SQL_FUNCTION_SEQUENCE_ERROR, *this );
- if ( rowDeleted() )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_ROW_ALREADY_DELETED ), SQL_FUNCTION_SEQUENCE_ERROR, *this );
-
- // this call position the cache indirect
- Any aBookmarkToDelete( m_aBookmark );
- positionCache( MOVE_NONE_REFRESH_ONLY );
- sal_Int32 nDeletePosition = m_pCache->getRow();
-
- notifyRowSetAndClonesRowDelete( aBookmarkToDelete );
-
- ORowSetRow aOldValues;
- if ( m_pCache->m_aMatrixIter != m_pCache->getEnd() && m_pCache->m_aMatrixIter->is() )
- aOldValues = new ORowSetValueVector( *(*(m_pCache->m_aMatrixIter)) );
-
- Sequence<Any> aChangedBookmarks;
- RowsChangeEvent aEvt(*this,RowChangeAction::DELETE,1,aChangedBookmarks);
- notifyAllListenersRowBeforeChange(aGuard,aEvt);
-
- m_pCache->deleteRow();
- notifyRowSetAndClonesRowDeleted( aBookmarkToDelete, nDeletePosition );
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- // notification order
- // - rowChanged
- notifyAllListenersRowChanged(aGuard,aEvt);
-
- // - IsModified
- // - IsNew
- aNotifier.fire( );
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
-}
-
-void ORowSet::implCancelRowUpdates( sal_Bool _bNotifyModified ) SAL_THROW( ( SQLException, RuntimeException ) )
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( *m_pMutex );
- if ( m_bBeforeFirst || m_bAfterLast || rowDeleted() )
- return; // nothing to do so return
-
- checkCache();
- // cancelRowUpdates is not allowed when:
- // - standing on the insert row
- // - the concurrency is read only
- // - the current row is deleted
- if ( m_bNew || m_nResultSetConcurrency == ResultSetConcurrency::READ_ONLY )
- throwFunctionSequenceException(*this);
-
- positionCache( MOVE_NONE_REFRESH_ONLY );
-
- ORowSetRow aOldValues;
- if ( !m_bModified && _bNotifyModified && !m_aCurrentRow.isNull() )
- aOldValues = new ORowSetValueVector( *(*m_aCurrentRow) );
-
- m_pCache->cancelRowUpdates();
-
- m_aBookmark = m_pCache->getBookmark();
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- m_bIsInsertRow = sal_False;
- m_aCurrentRow.setBookmark(m_aBookmark);
-
- // notification order
- // IsModified
- if( !m_bModified && _bNotifyModified )
- {
- // - column values
- ORowSetBase::firePropertyChange(aOldValues);
- fireProperty(PROPERTY_ID_ISMODIFIED,sal_False,sal_True);
- }
-}
-
-void SAL_CALL ORowSet::cancelRowUpdates( ) throw(SQLException, RuntimeException)
-{
- implCancelRowUpdates( sal_True );
-}
-
-void SAL_CALL ORowSet::addRowSetListener( const Reference< XRowSetListener >& listener ) throw(RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
- if(listener.is())
- m_aRowsetListeners.addInterface(listener);
-}
-
-void SAL_CALL ORowSet::removeRowSetListener( const Reference< XRowSetListener >& listener ) throw(RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
- if(listener.is())
- m_aRowsetListeners.removeInterface(listener);
-}
-
-void ORowSet::notifyAllListeners(::osl::ResettableMutexGuard& _rGuard)
-{
- EventObject aEvt(*m_pMySelf);
- _rGuard.clear();
- m_aRowsetListeners.notifyEach( &XRowSetListener::rowSetChanged, aEvt );
- _rGuard.reset();
-}
-
-void ORowSet::notifyAllListenersCursorMoved(::osl::ResettableMutexGuard& _rGuard)
-{
- EventObject aEvt(*m_pMySelf);
- _rGuard.clear();
- m_aRowsetListeners.notifyEach( &XRowSetListener::cursorMoved, aEvt );
- _rGuard.reset();
-}
-
-void ORowSet::notifyAllListenersRowChanged(::osl::ResettableMutexGuard& _rGuard, const RowsChangeEvent& aEvt)
-{
- _rGuard.clear();
- m_aRowsetListeners.notifyEach( &XRowSetListener::rowChanged, (EventObject)aEvt );
- m_aRowsChangeListener.notifyEach( &XRowsChangeListener::rowsChanged, aEvt );
- _rGuard.reset();
-}
-
-sal_Bool ORowSet::notifyAllListenersCursorBeforeMove(::osl::ResettableMutexGuard& _rGuard)
-{
- EventObject aEvt(*m_pMySelf);
- NOTIFY_LISTERNERS_CHECK(m_aApproveListeners,XRowSetApproveListener,approveCursorMove);
- return bCheck;
-}
-
-void ORowSet::notifyAllListenersRowBeforeChange(::osl::ResettableMutexGuard& _rGuard,const RowChangeEvent &aEvt)
-{
- NOTIFY_LISTERNERS_CHECK(m_aApproveListeners,XRowSetApproveListener,approveRowChange);
- if ( !bCheck )
- m_aErrors.raiseTypedException( sdb::ErrorCondition::ROW_SET_OPERATION_VETOED, *this, ::cppu::UnoType< RowSetVetoException >::get() );
-}
-
-void ORowSet::fireRowcount()
-{
- sal_Int32 nCurrentRowCount( impl_getRowCount() );
- sal_Bool bCurrentRowCountFinal( m_pCache->m_bRowCountFinal );
-
- if ( m_nLastKnownRowCount != nCurrentRowCount )
- {
- sal_Int32 nHandle = PROPERTY_ID_ROWCOUNT;
- Any aNew,aOld;
- aNew <<= nCurrentRowCount; aOld <<= m_nLastKnownRowCount;
- fire(&nHandle,&aNew,&aOld,1,sal_False);
- m_nLastKnownRowCount = nCurrentRowCount;
- }
- if ( !m_bLastKnownRowCountFinal && ( m_bLastKnownRowCountFinal != bCurrentRowCountFinal ) )
- {
- sal_Int32 nHandle = PROPERTY_ID_ISROWCOUNTFINAL;
- Any aNew,aOld;
- aNew <<= bCurrentRowCountFinal;
- aOld <<= m_bLastKnownRowCountFinal;
- fire(&nHandle,&aNew,&aOld,1,sal_False);
- m_bLastKnownRowCountFinal = bCurrentRowCountFinal;
- }
-}
-
-void SAL_CALL ORowSet::moveToInsertRow( ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- checkPositioningAllowed();
- if ( ( m_pCache->m_nPrivileges & Privilege::INSERT ) != Privilege::INSERT )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_INSERT_PRIVILEGE ), SQL_GENERAL_ERROR, *this );
-
- if ( notifyAllListenersCursorBeforeMove( aGuard ) )
- {
- // remember old value for fire
- ORowSetRow aOldValues;
- if ( rowDeleted() )
- {
- positionCache( MOVE_FORWARD );
- m_pCache->next();
- setCurrentRow( sal_True, sal_False, aOldValues, aGuard);
- }
- else
- positionCache( MOVE_NONE_REFRESH_ONLY );
-
- // check before because the resultset could be empty
- if ( !m_bBeforeFirst
- && !m_bAfterLast
- && m_pCache->m_aMatrixIter != m_pCache->getEnd()
- && m_pCache->m_aMatrixIter->is()
- )
- aOldValues = new ORowSetValueVector( *(*(m_pCache->m_aMatrixIter)) );
-
- const sal_Bool bNewState = m_bNew;
- const sal_Bool bModState = m_bModified;
-
- m_pCache->moveToInsertRow();
- m_aCurrentRow = m_pCache->m_aInsertRow;
- m_bIsInsertRow = sal_True;
-
- // set read-only flag to false
- impl_setDataColumnsWriteable_throw();
-
- // notification order
- // - column values
- ORowSetBase::firePropertyChange(aOldValues);
-
- // - cursorMoved
- notifyAllListenersCursorMoved(aGuard);
-
- // - IsModified
- if ( bModState != m_bModified )
- fireProperty( PROPERTY_ID_ISMODIFIED, m_bModified, bModState );
-
- // - IsNew
- if ( bNewState != m_bNew )
- fireProperty( PROPERTY_ID_ISNEW, m_bNew, bNewState );
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
-}
-
-void ORowSet::impl_setDataColumnsWriteable_throw()
-{
- impl_restoreDataColumnsWriteable_throw();
- TDataColumns::iterator aIter = m_aDataColumns.begin();
- m_aReadOnlyDataColumns.resize(m_aDataColumns.size(),false);
- ::std::vector<bool, std::allocator<bool> >::iterator aReadIter = m_aReadOnlyDataColumns.begin();
- for(;aIter != m_aDataColumns.end();++aIter,++aReadIter)
- {
- sal_Bool bReadOnly = sal_False;
- (*aIter)->getPropertyValue(PROPERTY_ISREADONLY) >>= bReadOnly;
- *aReadIter = bReadOnly;
-
- (*aIter)->setPropertyValue(PROPERTY_ISREADONLY,makeAny(sal_False));
- }
-}
-
-void ORowSet::impl_restoreDataColumnsWriteable_throw()
-{
- TDataColumns::iterator aIter = m_aDataColumns.begin();
- ::std::vector<bool, std::allocator<bool> >::iterator aReadIter = m_aReadOnlyDataColumns.begin();
- for(;aReadIter != m_aReadOnlyDataColumns.end();++aIter,++aReadIter)
- {
- (*aIter)->setPropertyValue(PROPERTY_ISREADONLY,makeAny((sal_Bool)*aReadIter ));
- }
- m_aReadOnlyDataColumns.clear();
-}
-
-void SAL_CALL ORowSet::moveToCurrentRow( ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- checkPositioningAllowed();
-
- if ( !m_pCache->m_bNew && !m_bModified )
- // nothing to do if we're not on the insertion row, and not modified otherwise
- return;
-
- if ( rowDeleted() )
- // this would perhaps even justify a RuntimeException ....
- // if the current row is deleted, then no write access to this row should be possible. So,
- // m_bModified should be true. Also, as soon as somebody calls moveToInsertRow,
- // our current row should not be deleted anymore. So, we should not have survived the above
- // check "if ( !m_pCache->m_bNew && !m_bModified )"
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_ROW_ALREADY_DELETED ), SQL_FUNCTION_SEQUENCE_ERROR, *this );
-
- if ( notifyAllListenersCursorBeforeMove( aGuard ) )
- {
- positionCache( MOVE_NONE_REFRESH_ONLY );
-
- ORowSetNotifier aNotifier( this );
-
- // notification order
- // - cursorMoved
- notifyAllListenersCursorMoved(aGuard);
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
- }
-}
-
-// XRow
-sal_Bool SAL_CALL ORowSet::wasNull( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- return ( m_pCache && isInsertRow() ) ? ((*m_pCache->m_aInsertRow)->get())[m_nLastColumnIndex].isNull() : ORowSetBase::wasNull();
-}
-
-const ORowSetValue& ORowSet::getInsertValue(sal_Int32 columnIndex)
-{
- checkCache();
-
- if ( m_pCache && isInsertRow() )
- return ((*m_pCache->m_aInsertRow)->get())[m_nLastColumnIndex = columnIndex];
-
- return getValue(columnIndex);
-}
-
-::rtl::OUString SAL_CALL ORowSet::getString( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-sal_Bool SAL_CALL ORowSet::getBoolean( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-sal_Int8 SAL_CALL ORowSet::getByte( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-sal_Int16 SAL_CALL ORowSet::getShort( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-sal_Int32 SAL_CALL ORowSet::getInt( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-sal_Int64 SAL_CALL ORowSet::getLong( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-float SAL_CALL ORowSet::getFloat( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-double SAL_CALL ORowSet::getDouble( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-Sequence< sal_Int8 > SAL_CALL ORowSet::getBytes( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-::com::sun::star::util::Date SAL_CALL ORowSet::getDate( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-::com::sun::star::util::Time SAL_CALL ORowSet::getTime( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-::com::sun::star::util::DateTime SAL_CALL ORowSet::getTimestamp( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex);
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL ORowSet::getBinaryStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- if ( m_pCache && isInsertRow() )
- {
- checkCache();
- return new ::comphelper::SequenceInputStream(((*m_pCache->m_aInsertRow)->get())[m_nLastColumnIndex = columnIndex].getSequence());
- }
-
- return ORowSetBase::getBinaryStream(columnIndex);
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL ORowSet::getCharacterStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- if(m_pCache && isInsertRow() )
- {
- checkCache();
- return new ::comphelper::SequenceInputStream(((*m_pCache->m_aInsertRow)->get())[m_nLastColumnIndex = columnIndex].getSequence());
- }
-
- return ORowSetBase::getCharacterStream(columnIndex);
-}
-
-Any SAL_CALL ORowSet::getObject( sal_Int32 columnIndex, const Reference< XNameAccess >& /*typeMap*/ ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getInsertValue(columnIndex).makeAny();
-}
-
-Reference< XRef > SAL_CALL ORowSet::getRef( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
-{
- return Reference< XRef >();
-}
-
-Reference< XBlob > SAL_CALL ORowSet::getBlob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- if ( m_pCache && isInsertRow() )
- {
- checkCache();
- return new ::connectivity::BlobHelper(((*m_pCache->m_aInsertRow)->get())[m_nLastColumnIndex = columnIndex].getSequence());
- }
- return ORowSetBase::getBlob(columnIndex);
-}
-
-Reference< XClob > SAL_CALL ORowSet::getClob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- return Reference< XClob >(getInsertValue(columnIndex).makeAny(),UNO_QUERY);
-}
-
-Reference< XArray > SAL_CALL ORowSet::getArray( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
-{
- return Reference< XArray >();
-}
-
-void SAL_CALL ORowSet::executeWithCompletion( const Reference< XInteractionHandler >& _rxHandler ) throw(SQLException, RuntimeException)
-{
- if (!_rxHandler.is())
- execute();
-
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- // tell everybody that we will change the result set
- approveExecution();
-
- ResettableMutexGuard aGuard( m_aMutex );
-
- try
- {
- freeResources( m_bCommandFacetsDirty );
-
- // calc the connection to be used
- if (m_xActiveConnection.is() && m_bRebuildConnOnExecute)
- {
- // there was a setProperty(ActiveConnection), but a setProperty(DataSource) _after_ that, too
- Reference< XConnection > xXConnection;
- setActiveConnection( xXConnection );
- }
- calcConnection( _rxHandler );
- m_bRebuildConnOnExecute = sal_False;
-
- Reference< XSingleSelectQueryComposer > xComposer = getCurrentSettingsComposer( this, m_aContext.getLegacyServiceFactory() );
- Reference<XParametersSupplier> xParameters(xComposer, UNO_QUERY);
-
- Reference<XIndexAccess> xParamsAsIndicies = xParameters.is() ? xParameters->getParameters() : Reference<XIndexAccess>();
- const sal_Int32 nParamCount = xParamsAsIndicies.is() ? xParamsAsIndicies->getCount() : 0;
- if ( m_aParametersSet.size() < (size_t)nParamCount )
- m_aParametersSet.resize( nParamCount ,false);
-
- ::dbtools::askForParameters( xComposer, this, m_xActiveConnection, _rxHandler,m_aParametersSet );
- }
- // ensure that only the allowed exceptions leave this block
- catch(SQLException&)
- {
- throw;
- }
- catch(RuntimeException&)
- {
- throw;
- }
- catch(Exception&)
- {
- OSL_FAIL("ORowSet::executeWithCompletion: caught an unexpected exception type while filling in the parameters!");
- }
-
- // we're done with the parameters, now for the real execution
-
- // do the real execute
- execute_NoApprove_NoNewConn(aGuard);
-}
-
-Reference< XIndexAccess > SAL_CALL ORowSet::getParameters( ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard( *m_pMutex );
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- if ( m_bCommandFacetsDirty )
- // need to rebuild the parameters, since some property which contributes to the
- // complete command, and thus the parameters, changed
- impl_disposeParametersContainer_nothrow();
-
- if ( !m_pParameters.get() && m_aCommand.getLength() )
- {
- try
- {
- ::rtl::OUString sNotInterestedIn;
- impl_initComposer_throw( sNotInterestedIn );
- }
- catch( const Exception& )
- {
- // silence it
- }
- }
-
- return m_pParameters.get();
-}
-
-void ORowSet::approveExecution() throw (RowSetVetoException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
- EventObject aEvt(*this);
-
- OInterfaceIteratorHelper aApproveIter( m_aApproveListeners );
- while ( aApproveIter.hasMoreElements() )
- {
- Reference< XRowSetApproveListener > xListener( static_cast< XRowSetApproveListener* >( aApproveIter.next() ) );
- try
- {
- if ( xListener.is() && !xListener->approveRowSetChange( aEvt ) )
- throw RowSetVetoException();
- }
- catch ( const DisposedException& e )
- {
- if ( e.Context == xListener )
- aApproveIter.remove();
- }
- catch ( const RuntimeException& ) { throw; }
- catch ( const RowSetVetoException& ) { throw; }
- catch ( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-}
-
-// XRowSet
-void SAL_CALL ORowSet::execute( ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- // tell everybody that we will change the result set
- approveExecution();
-
- ResettableMutexGuard aGuard( m_aMutex );
- freeResources( m_bCommandFacetsDirty );
-
- // calc the connection to be used
- if (m_xActiveConnection.is() && m_bRebuildConnOnExecute) {
- // there was a setProperty(ActiveConnection), but a setProperty(DataSource) _after_ that, too
- Reference< XConnection> xXConnection;
- setActiveConnection( xXConnection );
- }
-
- calcConnection(NULL);
- m_bRebuildConnOnExecute = sal_False;
-
- // do the real execute
- execute_NoApprove_NoNewConn(aGuard);
-}
-
-void ORowSet::setStatementResultSetType( const Reference< XPropertySet >& _rxStatement, sal_Int32 _nDesiredResultSetType, sal_Int32 _nDesiredResultSetConcurrency )
-{
- OSL_ENSURE( _rxStatement.is(), "ORowSet::setStatementResultSetType: invalid statement - this will crash!" );
-
- sal_Int32 nResultSetType( _nDesiredResultSetType );
- sal_Int32 nResultSetConcurrency( _nDesiredResultSetConcurrency );
-
- // there *might* be a data source setting which tells use to be more defensive with those settings
- // #i15113#
- sal_Bool bRespectDriverRST = sal_False;
- Any aSetting;
- if ( getDataSourceSetting( ::dbaccess::getDataSource( m_xActiveConnection ), "RespectDriverResultSetType", aSetting ) )
- {
- OSL_VERIFY( aSetting >>= bRespectDriverRST );
- }
-
- if ( bRespectDriverRST )
- {
- // try type/concurrency settings with decreasing usefullness, and rely on what the connection claims
- // to support
- Reference< XDatabaseMetaData > xMeta( m_xActiveConnection->getMetaData() );
-
- sal_Int32 nCharacteristics[5][2] =
- { { ResultSetType::SCROLL_SENSITIVE, ResultSetConcurrency::UPDATABLE },
- { ResultSetType::SCROLL_INSENSITIVE, ResultSetConcurrency::UPDATABLE },
- { ResultSetType::SCROLL_SENSITIVE, ResultSetConcurrency::READ_ONLY },
- { ResultSetType::SCROLL_INSENSITIVE, ResultSetConcurrency::READ_ONLY },
- { ResultSetType::FORWARD_ONLY, ResultSetConcurrency::READ_ONLY }
- };
- sal_Int32 i=0;
- if ( m_xActiveConnection->getMetaData()->isReadOnly() )
- i = 2; // if the database is read-only we only should use read-only concurrency
-
- for ( ; i<5; ++i )
- {
- nResultSetType = nCharacteristics[i][0];
- nResultSetConcurrency = nCharacteristics[i][1];
-
- // don't try type/concurrency pairs which are more featured than what our caller requested
- if ( nResultSetType > _nDesiredResultSetType )
- continue;
- if ( nResultSetConcurrency > _nDesiredResultSetConcurrency )
- continue;
-
- if ( xMeta.is() && xMeta->supportsResultSetConcurrency( nResultSetType, nResultSetConcurrency ) )
- break;
- }
- }
-
- _rxStatement->setPropertyValue( PROPERTY_RESULTSETTYPE, makeAny( nResultSetType ) );
- _rxStatement->setPropertyValue( PROPERTY_RESULTSETCONCURRENCY, makeAny( nResultSetConcurrency ) );
-}
-
-Reference< XResultSet > ORowSet::impl_prepareAndExecute_throw()
-{
- ::rtl::OUString sCommandToExecute;
- sal_Bool bUseEscapeProcessing = impl_initComposer_throw( sCommandToExecute );
-
- Reference< XResultSet> xResultSet;
- try
- {
- m_xStatement = m_xActiveConnection->prepareStatement( sCommandToExecute );
- if ( !m_xStatement.is() )
- {
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_INTERNAL_ERROR ), SQL_GENERAL_ERROR, *this );
- }
-
- Reference< XPropertySet > xStatementProps( m_xStatement, UNO_QUERY_THROW );
- // set the result set type and concurrency
- try
- {
- xStatementProps->setPropertyValue( PROPERTY_USEBOOKMARKS, makeAny( sal_True ) );
- xStatementProps->setPropertyValue( PROPERTY_MAXROWS, makeAny( m_nMaxRows ) );
-
- setStatementResultSetType( xStatementProps, m_nResultSetType, m_nResultSetConcurrency );
- }
- catch ( const Exception& )
- {
- // this exception doesn't matter here because when we catch an exception
- // then the driver doesn't support this feature
- }
- m_aParameterValueForCache.get().resize(1);
- Reference< XParameters > xParam( m_xStatement, UNO_QUERY_THROW );
- size_t nParamCount( m_pParameters.is() ? m_pParameters->size() : m_aPrematureParamValues.get().size() );
- for ( size_t i=1; i<=nParamCount; ++i )
- {
- ORowSetValue& rParamValue( getParameterStorage( (sal_Int32)i ) );
- ::dbtools::setObjectWithInfo( xParam, i, rParamValue.makeAny(), rParamValue.getTypeKind() );
- m_aParameterValueForCache.get().push_back(rParamValue);
- }
-
- xResultSet = m_xStatement->executeQuery();
- }
- catch( const SQLException& )
- {
- SQLExceptionInfo aError( ::cppu::getCaughtException() );
- OSL_ENSURE( aError.isValid(), "ORowSet::impl_prepareAndExecute_throw: caught an SQLException which we cannot analyze!" );
-
- // append information about what we were actually going to execute
- try
- {
- String sQuery = bUseEscapeProcessing && m_xComposer.is() ? m_xComposer->getQuery() : m_aActiveCommand;
- String sInfo( DBA_RES_PARAM( RID_STR_COMMAND_LEADING_TO_ERROR, "$command$", sQuery ) );
- aError.append( SQLExceptionInfo::SQL_CONTEXT, sInfo );
- }
- catch( const Exception& ) { DBG_UNHANDLED_EXCEPTION(); }
-
- // propagate
- aError.doThrow();
- }
-
- return xResultSet;
-}
-
-void ORowSet::impl_initializeColumnSettings_nothrow( const Reference< XPropertySet >& _rxTemplateColumn, const Reference< XPropertySet >& _rxRowSetColumn )
-{
- OSL_ENSURE( _rxTemplateColumn.is() && _rxRowSetColumn.is(),
- "ORowSet::impl_initializeColumnSettings_nothrow: this will crash!" );
-
- bool bHaveAnyColumnSetting = false;
- try
- {
- Reference< XPropertySetInfo > xInfo( _rxTemplateColumn->getPropertySetInfo(), UNO_QUERY_THROW );
-
- // a number of properties is plain copied
- const ::rtl::OUString aPropertyNames[] = {
- PROPERTY_ALIGN, PROPERTY_RELATIVEPOSITION, PROPERTY_WIDTH, PROPERTY_HIDDEN, PROPERTY_CONTROLMODEL,
- PROPERTY_HELPTEXT, PROPERTY_CONTROLDEFAULT
- };
- for ( size_t i=0; i < SAL_N_ELEMENTS( aPropertyNames ); ++i )
- {
- if ( xInfo->hasPropertyByName( aPropertyNames[i] ) )
- {
- _rxRowSetColumn->setPropertyValue( aPropertyNames[i], _rxTemplateColumn->getPropertyValue( aPropertyNames[i] ) );
- bHaveAnyColumnSetting = true;
- }
- }
-
- // the format key is slightly more complex
- sal_Int32 nFormatKey = 0;
- if( xInfo->hasPropertyByName( PROPERTY_NUMBERFORMAT ) )
- {
- _rxTemplateColumn->getPropertyValue( PROPERTY_NUMBERFORMAT ) >>= nFormatKey;
- bHaveAnyColumnSetting = true;
- }
- if ( !nFormatKey && m_xNumberFormatTypes.is() )
- nFormatKey = ::dbtools::getDefaultNumberFormat( _rxTemplateColumn, m_xNumberFormatTypes, SvtSysLocale().GetLocaleData().getLocale() );
- _rxRowSetColumn->setPropertyValue( PROPERTY_NUMBERFORMAT, makeAny( nFormatKey ) );
- }
- catch(Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- return;
- }
-
- if ( bHaveAnyColumnSetting )
- return;
-
- // the template column could not provide *any* setting. Okay, probably it's a parser column, which
- // does not offer those. However, perhaps the template column referes to a table column, which we
- // can use as new template column
- try
- {
- Reference< XPropertySetInfo > xInfo( _rxTemplateColumn->getPropertySetInfo(), UNO_QUERY_THROW );
- if ( !xInfo->hasPropertyByName( PROPERTY_TABLENAME ) )
- // no chance
- return;
-
- ::rtl::OUString sTableName;
- OSL_VERIFY( _rxTemplateColumn->getPropertyValue( PROPERTY_TABLENAME ) >>= sTableName );
-
- Reference< XNameAccess > xTables( impl_getTables_throw(), UNO_QUERY_THROW );
- if ( !xTables->hasByName( sTableName ) )
- // no chance
- return;
-
- Reference< XColumnsSupplier > xTableColSup( xTables->getByName( sTableName ), UNO_QUERY_THROW );
- Reference< XNameAccess > xTableCols( xTableColSup->getColumns(), UNO_QUERY_THROW );
-
- ::rtl::OUString sTableColumnName;
-
- // get the "Name" or (preferred) "RealName" property of the column
- ::rtl::OUString sNamePropertyName( PROPERTY_NAME );
- if ( xInfo->hasPropertyByName( PROPERTY_REALNAME ) )
- sNamePropertyName = PROPERTY_REALNAME;
- OSL_VERIFY( _rxTemplateColumn->getPropertyValue( sNamePropertyName ) >>= sTableColumnName );
-
- if ( !xTableCols->hasByName( sTableColumnName ) )
- return;
-
- Reference< XPropertySet > xTableColumn( xTableCols->getByName( sTableColumnName ), UNO_QUERY_THROW );
- impl_initializeColumnSettings_nothrow( xTableColumn, _rxRowSetColumn );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-void ORowSet::execute_NoApprove_NoNewConn(ResettableMutexGuard& _rClearForNotification)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "frank.schoenheit@sun.com", "ORowSet::execute_NoApprove_NoNewConn" );
-
- // now we can dispose our old connection
- ::comphelper::disposeComponent(m_xOldConnection);
- m_xOldConnection = NULL;
-
- // do we need a new statement
- if ( m_bCommandFacetsDirty )
- {
- m_xStatement = NULL;
- m_xComposer = NULL;
-
- Reference< XResultSet > xResultSet( impl_prepareAndExecute_throw() );
-
- // let our warnings container forget the reference to the (possibly disposed) old result set
- m_aWarnings.setExternalWarnings( NULL );
- // clear all current warnings
- m_aWarnings.clearWarnings();
- // let the warnings container know about the new "external warnings"
- m_aWarnings.setExternalWarnings( Reference< XWarningsSupplier >( xResultSet, UNO_QUERY ) );
-
- ::rtl::OUString aComposedUpdateTableName;
- if ( m_aUpdateTableName.getLength() )
- aComposedUpdateTableName = composeTableName( m_xActiveConnection->getMetaData(), m_aUpdateCatalogName, m_aUpdateSchemaName, m_aUpdateTableName, sal_False, ::dbtools::eInDataManipulation );
-
- {
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "frank.schoenheit@sun.com", "ORowSet::execute_NoApprove_NoNewConn: creating cache" );
- m_pCache = new ORowSetCache( xResultSet, m_xComposer.get(), m_aContext, aComposedUpdateTableName, m_bModified, m_bNew,m_aParameterValueForCache,m_aFilter,m_nMaxRows );
- if ( m_nResultSetConcurrency == ResultSetConcurrency::READ_ONLY )
- {
- m_nPrivileges = Privilege::SELECT;
- m_pCache->m_nPrivileges = Privilege::SELECT;
- }
- m_pCache->setFetchSize(m_nFetchSize);
- m_aCurrentRow = m_pCache->createIterator(this);
- m_bIsInsertRow = sal_False;
- m_aOldRow = m_pCache->registerOldRow();
- }
-
- // get the locale
- Locale aLocale = SvtSysLocale().GetLocaleData().getLocale();
-
- // get the numberformatTypes
- OSL_ENSURE(m_xActiveConnection.is(),"No ActiveConnection");
- Reference< XNumberFormatTypes> xNumberFormatTypes;
- Reference< XNumberFormatsSupplier> xNumberFormat = ::dbtools::getNumberFormats(m_xActiveConnection);
- if ( xNumberFormat.is() )
- m_xNumberFormatTypes.set(xNumberFormat->getNumberFormats(),UNO_QUERY);
-
- ::rtl::Reference< ::connectivity::OSQLColumns> aColumns = new ::connectivity::OSQLColumns();
- ::std::vector< ::rtl::OUString> aNames;
- ::rtl::OUString aDescription;
-
- const ::std::map<sal_Int32,sal_Int32>& rKeyColumns = m_pCache->getKeyColumns();
- if(!m_xColumns.is())
- {
- RTL_LOGFILE_CONTEXT_AUTHOR( aColumnCreateLog, "dbaccess", "frank.schoenheit@sun.com", "ORowSet::execute_NoApprove_NoNewConn::creating columns" );
- // use the meta data
- Reference<XResultSetMetaDataSupplier> xMetaSup(m_xStatement,UNO_QUERY);
- try
- {
- Reference<XResultSetMetaData> xMetaData = xMetaSup->getMetaData();
- if ( xMetaData.is() )
- {
- sal_Int32 nCount = xMetaData->getColumnCount();
- m_aDataColumns.reserve(nCount+1);
- aColumns->get().reserve(nCount+1);
- DECLARE_STL_USTRINGACCESS_MAP(int,StringMap);
- StringMap aColumnMap;
- for (sal_Int32 i = 0 ; i < nCount; ++i)
- {
- // retrieve the name of the column
- ::rtl::OUString sName = xMetaData->getColumnName(i + 1);
- // check for duplicate entries
- if(aColumnMap.find(sName) != aColumnMap.end())
- {
- ::rtl::OUString sAlias(sName);
- sal_Int32 searchIndex=1;
- while(aColumnMap.find(sAlias) != aColumnMap.end())
- {
- (sAlias = sName) += ::rtl::OUString::valueOf(searchIndex++);
- }
- sName = sAlias;
- }
- ORowSetDataColumn* pColumn = new ORowSetDataColumn( getMetaData(),
- this,
- this,
- i+1,
- m_xActiveConnection->getMetaData(),
- aDescription,
- ::rtl::OUString(),
- m_aCurrentRow);
- aColumnMap.insert(StringMap::value_type(sName,0));
- aColumns->get().push_back(pColumn);
- pColumn->setName(sName);
- aNames.push_back(sName);
- m_aDataColumns.push_back(pColumn);
-
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_ISREADONLY,makeAny(rKeyColumns.find(i+1) != rKeyColumns.end()));
-
- try
- {
- sal_Int32 nFormatKey = 0;
- if(m_xNumberFormatTypes.is())
- nFormatKey = ::dbtools::getDefaultNumberFormat(pColumn,m_xNumberFormatTypes,aLocale);
-
-
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_NUMBERFORMAT,makeAny(nFormatKey));
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_RELATIVEPOSITION,makeAny(sal_Int32(i+1)));
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_WIDTH,makeAny(sal_Int32(227)));
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_ALIGN,makeAny((sal_Int32)0));
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_HIDDEN,::cppu::bool2any(sal_False));
- }
- catch(Exception&)
- {
- }
- }
- }
- }
- catch (SQLException&)
- {
- }
- }
- else
- {
- // create the rowset columns
- Reference< XResultSetMetaData > xMeta( getMetaData(), UNO_QUERY_THROW );
- sal_Int32 nCount = xMeta->getColumnCount();
- m_aDataColumns.reserve(nCount+1);
- aColumns->get().reserve(nCount+1);
- ::std::set< Reference< XPropertySet > > aAllColumns;
-
- for(sal_Int32 i=1; i <= nCount ;++i)
- {
- ::rtl::OUString sName = xMeta->getColumnName(i);
- ::rtl::OUString sColumnLabel = xMeta->getColumnLabel(i);
-
- // retrieve the column number |i|
- Reference<XPropertySet> xColumn;
- {
- sal_Bool bReFetchName = sal_False;
- if (m_xColumns->hasByName(sColumnLabel))
- m_xColumns->getByName(sColumnLabel) >>= xColumn;
- if (!xColumn.is() && m_xColumns->hasByName(sName))
- m_xColumns->getByName(sName) >>= xColumn;
-
- // check if column already in the list we need another
- if ( aAllColumns.find( xColumn ) != aAllColumns.end() )
- {
- xColumn = NULL;
- bReFetchName = sal_True;
- sColumnLabel = ::rtl::OUString();
- }
- if(!xColumn.is())
- {
- // no column found so we could look at the position i
- Reference<XIndexAccess> xIndexAccess(m_xColumns,UNO_QUERY);
- if(xIndexAccess.is() && i <= xIndexAccess->getCount())
- {
- xIndexAccess->getByIndex(i-1) >>= xColumn;
- }
- else
- {
- Sequence< ::rtl::OUString> aSeq = m_xColumns->getElementNames();
- if( i <= aSeq.getLength())
- {
- m_xColumns->getByName(aSeq.getConstArray()[i-1]) >>= xColumn;
- }
- }
- }
- if(bReFetchName && xColumn.is())
- xColumn->getPropertyValue(PROPERTY_NAME) >>= sName;
- aAllColumns.insert( xColumn );
- }
-
- // create a RowSetDataColumn
- {
- Reference<XPropertySetInfo> xInfo = xColumn.is() ? xColumn->getPropertySetInfo() : Reference<XPropertySetInfo>();
- if(xInfo.is() && xInfo->hasPropertyByName(PROPERTY_DESCRIPTION))
- aDescription = comphelper::getString(xColumn->getPropertyValue(PROPERTY_DESCRIPTION));
-
- ::rtl::OUString sParseLabel;
- if ( xColumn.is() )
- {
- xColumn->getPropertyValue(PROPERTY_LABEL) >>= sParseLabel;
- }
- ORowSetDataColumn* pColumn = new ORowSetDataColumn( getMetaData(),
- this,
- this,
- i,
- m_xActiveConnection->getMetaData(),
- aDescription,
- sParseLabel,
- m_aCurrentRow);
- aColumns->get().push_back(pColumn);
-
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_ISREADONLY,makeAny(rKeyColumns.find(i) != rKeyColumns.end()));
-
- if(!sColumnLabel.getLength())
- {
- if(xColumn.is())
- xColumn->getPropertyValue(PROPERTY_NAME) >>= sColumnLabel;
- else
- sColumnLabel = DBACORE_RESSTRING( RID_STR_EXPRESSION1 );
- }
- pColumn->setName(sColumnLabel);
- aNames.push_back(sColumnLabel);
- m_aDataColumns.push_back(pColumn);
-
- if ( xColumn.is() )
- impl_initializeColumnSettings_nothrow( xColumn, pColumn );
- }
- }
- }
- // now create the columns we need
- if(m_pColumns)
- m_pColumns->assign(aColumns,aNames);
- else
- {
- Reference<XDatabaseMetaData> xMeta = m_xActiveConnection->getMetaData();
- m_pColumns = new ORowSetDataColumns(xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers(),
- aColumns,*this,m_aColumnsMutex,aNames);
- }
- }
- checkCache();
- // notify the rowset listeners
- notifyAllListeners(_rClearForNotification);
-}
-
-// XRowSetApproveBroadcaster
-void SAL_CALL ORowSet::addRowSetApproveListener( const Reference< XRowSetApproveListener >& listener ) throw(RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
-
- m_aApproveListeners.addInterface(listener);
-}
-
-void SAL_CALL ORowSet::removeRowSetApproveListener( const Reference< XRowSetApproveListener >& listener ) throw(RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
-
- m_aApproveListeners.removeInterface(listener);
-}
-// XRowsChangeBroadcaster
-void SAL_CALL ORowSet::addRowsChangeListener( const Reference< XRowsChangeListener >& listener ) throw(RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
-
- m_aRowsChangeListener.addInterface(listener);
-}
-
-void SAL_CALL ORowSet::removeRowsChangeListener( const Reference< XRowsChangeListener >& listener ) throw(RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
-
- m_aRowsChangeListener.removeInterface(listener);
-}
-
-// XResultSetAccess
-Reference< XResultSet > SAL_CALL ORowSet::createResultSet( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
-
- if(m_xStatement.is())
- {
- ORowSetClone* pClone = new ORowSetClone( m_aContext, *this, m_pMutex );
- Reference< XResultSet > xRet(pClone);
- m_aClones.push_back(WeakReferenceHelper(xRet));
- return xRet;
- }
- return Reference< XResultSet >();
-}
-
-// ::com::sun::star::util::XCancellable
-void SAL_CALL ORowSet::cancel( ) throw(RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-}
-
-// ::com::sun::star::sdbcx::XDeleteRows
-Sequence< sal_Int32 > SAL_CALL ORowSet::deleteRows( const Sequence< Any >& rows ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- if(!m_pCache || m_nResultSetConcurrency == ResultSetConcurrency::READ_ONLY)
- throwFunctionSequenceException(*this);
-
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- Sequence<Any> aChangedBookmarks;
- RowsChangeEvent aEvt(*this,RowChangeAction::DELETE,rows.getLength(),aChangedBookmarks);
- // notify the rowset listeners
- notifyAllListenersRowBeforeChange(aGuard,aEvt);
-
- Sequence< sal_Int32 > aResults( rows.getLength() );
- const Any* row = rows.getConstArray();
- const Any* rowEnd = rows.getConstArray() + rows.getLength();
- sal_Int32* result = aResults.getArray();
- for ( ; row != rowEnd; ++row, ++result )
- {
- *result = 0;
- if ( !m_pCache->moveToBookmark( *row ) )
- continue;
- sal_Int32 nDeletePosition = m_pCache->getRow();
-
- // first notify the clones so that they can save their position
- notifyRowSetAndClonesRowDelete( *row );
-
- // now delete the row
- if ( !m_pCache->deleteRow() )
- continue;
- *result = 1;
- // now notify that we have deleted
- notifyRowSetAndClonesRowDeleted( *row, nDeletePosition );
- }
- aEvt.Rows = aResults.getLength();
-
- // we have to check if we stand on the insert row and if so we have to reset it
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
- // notification order
- // - rowChanged
- notifyAllListenersRowChanged(aGuard,aEvt);
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
-
- return aResults;
-}
-
-void ORowSet::notifyRowSetAndClonesRowDelete( const Any& _rBookmark )
-{
- // notify ourself
- onDeleteRow( _rBookmark );
- // notify the clones
- connectivity::OWeakRefArray::iterator aEnd = m_aClones.end();
- for (connectivity::OWeakRefArray::iterator i = m_aClones.begin(); aEnd != i; ++i)
- {
- Reference< XUnoTunnel > xTunnel(i->get(),UNO_QUERY);
- if(xTunnel.is())
- {
- ORowSetClone* pClone = reinterpret_cast<ORowSetClone*>(xTunnel->getSomething(ORowSetClone::getUnoTunnelImplementationId()));
- if(pClone)
- pClone->onDeleteRow( _rBookmark );
- }
- }
-}
-
-void ORowSet::notifyRowSetAndClonesRowDeleted( const Any& _rBookmark, sal_Int32 _nPos )
-{
- // notify ourself
- onDeletedRow( _rBookmark, _nPos );
- // notify the clones
- connectivity::OWeakRefArray::iterator aEnd = m_aClones.end();
- for (connectivity::OWeakRefArray::iterator i = m_aClones.begin(); aEnd != i; ++i)
- {
- Reference< XUnoTunnel > xTunnel(i->get(),UNO_QUERY);
- if(xTunnel.is())
- {
- ORowSetClone* pClone = reinterpret_cast<ORowSetClone*>(xTunnel->getSomething(ORowSetClone::getUnoTunnelImplementationId()));
- if(pClone)
- pClone->onDeletedRow( _rBookmark, _nPos );
- }
- }
-}
-
-Reference< XConnection > ORowSet::calcConnection(const Reference< XInteractionHandler >& _rxHandler) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- if (!m_xActiveConnection.is())
- {
- Reference< XConnection > xNewConn;
- if ( m_aDataSourceName.getLength() )
- {
- Reference< XNameAccess > xDatabaseContext(
- m_aContext.createComponent( (::rtl::OUString)SERVICE_SDB_DATABASECONTEXT ),
- UNO_QUERY_THROW );
- try
- {
- Reference< XDataSource > xDataSource( xDatabaseContext->getByName( m_aDataSourceName ), UNO_QUERY_THROW );
-
- // try connecting with the interaction handler
- Reference< XCompletedConnection > xComplConn( xDataSource, UNO_QUERY );
- if ( _rxHandler.is() && xComplConn.is() )
- {
- xNewConn = xComplConn->connectWithCompletion( _rxHandler );
- }
- else
- {
- xNewConn = xDataSource->getConnection( m_aUser, m_aPassword );
- }
- }
- catch ( const SQLException& e )
- {
- throw;
- }
- catch ( const Exception& e )
- {
- Any aError = ::cppu::getCaughtException();
- ::rtl::OUString sMessage = ResourceManager::loadString( RID_NO_SUCH_DATA_SOURCE,
- "$name$", m_aDataSourceName, "$error$", extractExceptionMessage( m_aContext, aError ) );
- ::dbtools::throwGenericSQLException( sMessage, *this );
- }
- }
- setActiveConnection(xNewConn);
- m_bOwnConnection = sal_True;
- }
- return m_xActiveConnection;
-}
-
-Reference< XNameAccess > ORowSet::impl_getTables_throw()
-{
- Reference< XNameAccess > xTables;
-
- Reference< XTablesSupplier > xTablesAccess( m_xActiveConnection, UNO_QUERY );
- if ( xTablesAccess.is() )
- {
- xTables.set( xTablesAccess->getTables(), UNO_QUERY_THROW );
- }
- else if ( m_pTables )
- {
- xTables = m_pTables;
- }
- else
- {
- if ( !m_xActiveConnection.is() )
- throw SQLException(DBA_RES(RID_STR_CONNECTION_INVALID),*this,SQLSTATE_GENERAL,1000,Any() );
-
- sal_Bool bCase = sal_True;
- try
- {
- Reference<XDatabaseMetaData> xMeta = m_xActiveConnection->getMetaData();
- bCase = xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers();
- }
- catch(SQLException&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- m_pTables = new OTableContainer(*this,m_aMutex,m_xActiveConnection,bCase,NULL,NULL,NULL,m_nInAppend);
- xTables = m_pTables;
- Sequence< ::rtl::OUString> aTableFilter(1);
- aTableFilter[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%"));
- m_pTables->construct(aTableFilter,Sequence< ::rtl::OUString>());
- }
-
- return xTables;
-}
-
-void ORowSet::impl_resetTables_nothrow()
-{
- if ( !m_pTables )
- return;
-
- try
- {
- m_pTables->dispose();
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- DELETEZ( m_pTables );
-}
-
-sal_Bool ORowSet::impl_initComposer_throw( ::rtl::OUString& _out_rCommandToExecute )
-{
- sal_Bool bUseEscapeProcessing = impl_buildActiveCommand_throw( );
- _out_rCommandToExecute = m_aActiveCommand;
- if ( !bUseEscapeProcessing )
- return bUseEscapeProcessing;
-
- Reference< XMultiServiceFactory > xFactory( m_xActiveConnection, UNO_QUERY );
- if ( xFactory.is() )
- {
- try
- {
- ::comphelper::disposeComponent( m_xComposer );
- m_xComposer.set( xFactory->createInstance( SERVICE_NAME_SINGLESELECTQUERYCOMPOSER ), UNO_QUERY_THROW );
- }
- catch (const Exception& ) { m_xComposer = NULL; }
- }
- if ( !m_xComposer.is() )
- m_xComposer = new OSingleSelectQueryComposer( impl_getTables_throw(), m_xActiveConnection, m_aContext );
-
- m_xComposer->setCommand( m_aCommand,m_nCommandType );
- m_aActiveCommand = m_xComposer->getQuery();
-
- m_xComposer->setFilter( m_bApplyFilter ? m_aFilter : ::rtl::OUString() );
- m_xComposer->setHavingClause( m_bApplyFilter ? m_aHavingClause : ::rtl::OUString() );
-
- if ( m_bIgnoreResult )
- { // append a "0=1" filter
- // don't simply overwrite an existent filter, this would lead to problems if this existent
- // filter contains paramters (since a keyset may add parameters itself)
- m_xComposer->setElementaryQuery( m_xComposer->getQuery( ) );
- m_xComposer->setFilter( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "0 = 1" ) ) );
- }
-
- m_xComposer->setOrder( m_aOrder );
- m_xComposer->setGroup( m_aGroupBy );
-
- if ( !m_xColumns.is() )
- {
- Reference< XColumnsSupplier > xCols( m_xComposer, UNO_QUERY_THROW );
- m_xColumns = xCols->getColumns();
- }
-
- impl_initParametersContainer_nothrow();
-
- _out_rCommandToExecute = m_xComposer->getQueryWithSubstitution();
-
- return bUseEscapeProcessing;
-}
-
-sal_Bool ORowSet::impl_buildActiveCommand_throw()
-{
- // create the sql command
- // from a table name or get the command out of a query (not a view)
- // the last use the command as it is
- sal_Bool bDoEscapeProcessing = m_bUseEscapeProcessing;
-
- m_aActiveCommand = ::rtl::OUString();
- ::rtl::OUString sCommand;
-
- if ( !m_aCommand.getLength() )
- return bDoEscapeProcessing;
-
- switch (m_nCommandType)
- {
- case CommandType::TABLE:
- {
- impl_resetTables_nothrow();
- if ( bDoEscapeProcessing )
- {
- Reference< XNameAccess > xTables( impl_getTables_throw() );
- if ( xTables->hasByName(m_aCommand) )
- {
- }
- else
- {
- String sMessage( DBACORE_RESSTRING( RID_STR_TABLE_DOES_NOT_EXIST ) );
- sMessage.SearchAndReplaceAscii( "$table$", m_aCommand );
- throwGenericSQLException(sMessage,*this);
- }
- }
- else
- {
- sCommand = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SELECT * FROM "));
- ::rtl::OUString sCatalog, sSchema, sTable;
- ::dbtools::qualifiedNameComponents( m_xActiveConnection->getMetaData(), m_aCommand, sCatalog, sSchema, sTable, ::dbtools::eInDataManipulation );
- sCommand += ::dbtools::composeTableNameForSelect( m_xActiveConnection, sCatalog, sSchema, sTable );
- }
- }
- break;
-
- case CommandType::QUERY:
- {
- Reference< XQueriesSupplier > xQueriesAccess(m_xActiveConnection, UNO_QUERY);
- if (xQueriesAccess.is())
- {
- Reference< ::com::sun::star::container::XNameAccess > xQueries(xQueriesAccess->getQueries());
- if (xQueries->hasByName(m_aCommand))
- {
- Reference< XPropertySet > xQuery(xQueries->getByName(m_aCommand),UNO_QUERY);
- OSL_ENSURE(xQuery.is(),"ORowSet::impl_buildActiveCommand_throw: Query is NULL!");
- if ( xQuery.is() )
- {
- xQuery->getPropertyValue(PROPERTY_COMMAND) >>= sCommand;
- xQuery->getPropertyValue(PROPERTY_ESCAPE_PROCESSING) >>= bDoEscapeProcessing;
- if ( bDoEscapeProcessing != m_bUseEscapeProcessing )
- {
- sal_Bool bOldValue = m_bUseEscapeProcessing;
- m_bUseEscapeProcessing = bDoEscapeProcessing;
- fireProperty(PROPERTY_ID_ESCAPE_PROCESSING,bOldValue,bDoEscapeProcessing);
- }
-
- ::rtl::OUString aCatalog,aSchema,aTable;
- xQuery->getPropertyValue(PROPERTY_UPDATE_CATALOGNAME) >>= aCatalog;
- xQuery->getPropertyValue(PROPERTY_UPDATE_SCHEMANAME) >>= aSchema;
- xQuery->getPropertyValue(PROPERTY_UPDATE_TABLENAME) >>= aTable;
- if(aTable.getLength())
- m_aUpdateTableName = composeTableName( m_xActiveConnection->getMetaData(), aCatalog, aSchema, aTable, sal_False, ::dbtools::eInDataManipulation );
- }
- }
- else
- {
- String sMessage( DBACORE_RESSTRING( RID_STR_QUERY_DOES_NOT_EXIST ) );
- sMessage.SearchAndReplaceAscii( "$table$", m_aCommand );
- throwGenericSQLException(sMessage,*this);
- }
- }
- else
- throw SQLException(DBA_RES(RID_STR_NO_XQUERIESSUPPLIER),*this,::rtl::OUString(),0,Any());
- }
- break;
-
- default:
- sCommand = m_aCommand;
- break;
- }
-
- m_aActiveCommand = sCommand;
-
- if ( !m_aActiveCommand.getLength() && !bDoEscapeProcessing )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_SQL_COMMAND ), SQL_FUNCTION_SEQUENCE_ERROR, *this );
-
- return bDoEscapeProcessing;
-}
-
-void ORowSet::impl_initParametersContainer_nothrow()
-{
- OSL_PRECOND( !m_pParameters.is(), "ORowSet::impl_initParametersContainer_nothrow: already initialized the parameters!" );
-
- m_pParameters = new param::ParameterWrapperContainer( m_xComposer.get() );
- // copy the premature parameters into the final ones
- size_t nParamCount( ::std::min( m_pParameters->size(), m_aPrematureParamValues.get().size() ) );
- for ( size_t i=0; i<nParamCount; ++i )
- {
- (*m_pParameters)[i] = m_aPrematureParamValues.get()[i];
- }
-}
-
-void ORowSet::impl_disposeParametersContainer_nothrow()
-{
- if ( !m_pParameters.is() )
- return;
-
- // copy the actual values to our "premature" ones, to preserve them for later use
- size_t nParamCount( m_pParameters->size() );
- m_aPrematureParamValues.get().resize( nParamCount );
- for ( size_t i=0; i<nParamCount; ++i )
- {
- m_aPrematureParamValues.get()[i] = (*m_pParameters)[i];
- }
-
- m_pParameters->dispose();
- m_pParameters = NULL;
-}
-
-ORowSetValue& ORowSet::getParameterStorage(sal_Int32 parameterIndex)
-{
- ::connectivity::checkDisposed( ORowSet_BASE1::rBHelper.bDisposed );
- if ( parameterIndex < 1 )
- throwInvalidIndexException( *this );
-
- if ( m_aParametersSet.size() < (size_t)parameterIndex )
- m_aParametersSet.resize( parameterIndex ,false);
- m_aParametersSet[parameterIndex - 1] = true;
-
- if ( m_aParametersSet.size() < (size_t)parameterIndex )
- m_aParametersSet.resize( parameterIndex ,false);
- m_aParametersSet[parameterIndex - 1] = true;
-
- if ( m_pParameters.is() )
- {
- if ( m_bCommandFacetsDirty )
- // need to rebuild the parameters, since some property which contributes to the
- // complete command, and thus the parameters, changed
- impl_disposeParametersContainer_nothrow();
- if ( m_pParameters.is() )
- {
- if ( (size_t)parameterIndex > m_pParameters->size() )
- throwInvalidIndexException( *this );
- return (*m_pParameters)[ parameterIndex - 1 ];
- }
- }
-
- if ( m_aPrematureParamValues.get().size() < (size_t)parameterIndex )
- m_aPrematureParamValues.get().resize( parameterIndex );
- return m_aPrematureParamValues.get()[ parameterIndex - 1 ];
-}
-
-// XParameters
-void SAL_CALL ORowSet::setNull( sal_Int32 parameterIndex, sal_Int32 /*sqlType*/ ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
-
- getParameterStorage( parameterIndex ).setNull();
-}
-
-void SAL_CALL ORowSet::setObjectNull( sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& /*typeName*/ ) throw(SQLException, RuntimeException)
-{
- setNull( parameterIndex, sqlType );
-}
-
-void ORowSet::setParameter(sal_Int32 parameterIndex, const ORowSetValue& x)
-{
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
-
- getParameterStorage( parameterIndex ) = x;
-}
-
-void SAL_CALL ORowSet::setBoolean( sal_Int32 parameterIndex, sal_Bool x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setByte( sal_Int32 parameterIndex, sal_Int8 x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setShort( sal_Int32 parameterIndex, sal_Int16 x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setInt( sal_Int32 parameterIndex, sal_Int32 x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setLong( sal_Int32 parameterIndex, sal_Int64 x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setFloat( sal_Int32 parameterIndex, float x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setDouble( sal_Int32 parameterIndex, double x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setString( sal_Int32 parameterIndex, const ::rtl::OUString& x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setBytes( sal_Int32 parameterIndex, const Sequence< sal_Int8 >& x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setDate( sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setTime( sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setTimestamp( sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x ) throw(SQLException, RuntimeException)
-{
- setParameter(parameterIndex,x);
-}
-
-void SAL_CALL ORowSet::setBinaryStream( sal_Int32 parameterIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
- ORowSetValue& rParamValue( getParameterStorage( parameterIndex ) );
-
- try
- {
- Sequence <sal_Int8> aData;
- x->readBytes(aData, length);
- rParamValue = aData;
- x->closeInput();
- }
- catch( Exception& )
- {
- throw SQLException();
- }
-}
-
-void SAL_CALL ORowSet::setCharacterStream( sal_Int32 parameterIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
- ORowSetValue& rParamValue( getParameterStorage( parameterIndex ) );
- try
- {
- Sequence <sal_Int8> aData;
- rtl::OUString aDataStr;
- // the data is given as character data and the length defines the character length
- sal_Int32 nSize = x->readBytes(aData, length * sizeof(sal_Unicode));
- if (nSize / sizeof(sal_Unicode))
- aDataStr = rtl::OUString((sal_Unicode*)aData.getConstArray(), nSize / sizeof(sal_Unicode));
- rParamValue = aDataStr;
- rParamValue.setTypeKind( DataType::LONGVARCHAR );
- x->closeInput();
- }
- catch( Exception& )
- {
- throw SQLException();
- }
-}
-
-void SAL_CALL ORowSet::setObject( sal_Int32 parameterIndex, const Any& x ) throw(SQLException, RuntimeException)
-{
- if ( !::dbtools::implSetObject( this, parameterIndex, x ) )
- { // there is no other setXXX call which can handle the value in x
- throw SQLException();
- }
-}
-
-void SAL_CALL ORowSet::setObjectWithInfo( sal_Int32 parameterIndex, const Any& x, sal_Int32 targetSqlType, sal_Int32 /*scale*/ ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
- ORowSetValue& rParamValue( getParameterStorage( parameterIndex ) );
- setObject( parameterIndex, x );
- rParamValue.setTypeKind( targetSqlType );
-}
-
-void SAL_CALL ORowSet::setRef( sal_Int32 /*parameterIndex*/, const Reference< XRef >& /*x*/ ) throw(SQLException, RuntimeException)
-{
- ::dbtools::throwFeatureNotImplementedException( "XParameters::setRef", *this );
-}
-
-void SAL_CALL ORowSet::setBlob( sal_Int32 /*parameterIndex*/, const Reference< XBlob >& /*x*/ ) throw(SQLException, RuntimeException)
-{
- ::dbtools::throwFeatureNotImplementedException( "XParameters::setBlob", *this );
-}
-
-void SAL_CALL ORowSet::setClob( sal_Int32 /*parameterIndex*/, const Reference< XClob >& /*x*/ ) throw(SQLException, RuntimeException)
-{
- ::dbtools::throwFeatureNotImplementedException( "XParameters::setClob", *this );
-}
-
-void SAL_CALL ORowSet::setArray( sal_Int32 /*parameterIndex*/, const Reference< XArray >& /*x*/ ) throw(SQLException, RuntimeException)
-{
- ::dbtools::throwFeatureNotImplementedException( "XParameters::setArray", *this );
-}
-
-void SAL_CALL ORowSet::clearParameters( ) throw(SQLException, RuntimeException)
-{
- ::connectivity::checkDisposed(ORowSet_BASE1::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
-
- size_t nParamCount( m_pParameters.is() ? m_pParameters->size() : m_aPrematureParamValues.get().size() );
- for ( size_t i=1; i<=nParamCount; ++i )
- getParameterStorage( (sal_Int32)i ).setNull();
- m_aParametersSet.clear();
-}
-
-Any SAL_CALL ORowSet::getWarnings( ) throw (SQLException, RuntimeException)
-{
- return m_aWarnings.getWarnings();
-}
-
-void SAL_CALL ORowSet::clearWarnings( ) throw (SQLException, RuntimeException)
-{
- m_aWarnings.clearWarnings();
-}
-
-void ORowSet::doCancelModification( )
-{
- if ( isModification() )
- {
- // read-only flag restored
- impl_restoreDataColumnsWriteable_throw();
- m_pCache->cancelRowModification();
- }
- m_bModified = sal_False;
- m_bIsInsertRow = sal_False;
-}
-
-sal_Bool ORowSet::isModification( )
-{
- return isNew();
-}
-
-sal_Bool ORowSet::isModified( )
-{
- return m_bModified;
-}
-
-sal_Bool ORowSet::isNew( )
-{
- return m_bNew;
-}
-
-sal_Bool ORowSet::isPropertyChangeNotificationEnabled() const
-{
- return m_bPropChangeNotifyEnabled;
-}
-
-void ORowSet::checkUpdateIterator()
-{
- if(!m_bIsInsertRow)
- {
- m_pCache->setUpdateIterator(m_aCurrentRow);
- m_aCurrentRow = m_pCache->m_aInsertRow;
- m_bIsInsertRow = sal_True;
- }
-}
-
-void ORowSet::checkUpdateConditions(sal_Int32 columnIndex)
-{
- checkCache();
- if ( m_nResultSetConcurrency == ResultSetConcurrency::READ_ONLY)
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_RESULT_IS_READONLY ), SQL_GENERAL_ERROR, *this );
-
- if ( rowDeleted() )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_ROW_ALREADY_DELETED ), SQL_INVALID_CURSOR_POSITION, *this );
-
- if ( m_aCurrentRow.isNull() )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_INVALID_CURSOR_STATE ), SQL_INVALID_CURSOR_STATE, *this );
-
- if ( columnIndex <= 0 || sal_Int32((*m_aCurrentRow)->get().size()) <= columnIndex )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_INVALID_INDEX ), SQL_INVALID_DESCRIPTOR_INDEX, *this );
-}
-
-void SAL_CALL ORowSet::refreshRow( ) throw(SQLException, RuntimeException)
-{
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- // notification order:
- if ( m_bModified && m_pCache )
- implCancelRowUpdates( sal_False ); // do _not_ notify the IsModify - will do this ourself below
-
- // - column values
- ORowSetBase::refreshRow();
-
- // - IsModified
- // - IsNew
- aNotifier.fire( );
-}
-
-void ORowSet::impl_rebuild_throw(::osl::ResettableMutexGuard& _rGuard)
-{
- Reference< XResultSet > xResultSet( m_xStatement->executeQuery() );
- m_aWarnings.setExternalWarnings( Reference< XWarningsSupplier >( xResultSet, UNO_QUERY ) );
- m_pCache->reset(xResultSet);
- notifyAllListeners(_rGuard);
-}
-// ***********************************************************
-// ORowSetClone
-// ***********************************************************
-DBG_NAME(ORowSetClone);
-
-ORowSetClone::ORowSetClone( const ::comphelper::ComponentContext& _rContext, ORowSet& rParent, ::osl::Mutex* _pMutex )
- :OSubComponent(m_aMutex, rParent)
- ,ORowSetBase( _rContext, OComponentHelper::rBHelper, _pMutex )
- ,m_pParent(&rParent)
- ,m_nFetchDirection(rParent.m_nFetchDirection)
- ,m_nFetchSize(rParent.m_nFetchSize)
- ,m_bIsBookmarable(sal_True)
-{
- DBG_CTOR(ORowSetClone, NULL);
-
- m_nResultSetType = rParent.m_nResultSetType;
- m_nResultSetConcurrency = ResultSetConcurrency::READ_ONLY;
- m_pMySelf = this;
- m_bClone = sal_True;
- m_bBeforeFirst = rParent.m_bBeforeFirst;
- m_bAfterLast = rParent.m_bAfterLast;
- m_pCache = rParent.m_pCache;
- m_aBookmark = rParent.m_aBookmark;
- m_aCurrentRow = m_pCache->createIterator(this);
- m_xNumberFormatTypes = rParent.m_xNumberFormatTypes;
-
- m_aOldRow = m_pCache->registerOldRow();
-
- ::rtl::Reference< ::connectivity::OSQLColumns> aColumns = new ::connectivity::OSQLColumns();
- ::std::vector< ::rtl::OUString> aNames;
-
- ::rtl::OUString aDescription;
- Locale aLocale = SvtSysLocale().GetLocaleData().getLocale();
-
- if ( rParent.m_pColumns )
- {
- Sequence< ::rtl::OUString> aSeq = rParent.m_pColumns->getElementNames();
- const ::rtl::OUString* pIter = aSeq.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aSeq.getLength();
- aColumns->get().reserve(aSeq.getLength()+1);
- for(sal_Int32 i=1;pIter != pEnd ;++pIter,++i)
- {
- Reference<XPropertySet> xColumn;
- rParent.m_pColumns->getByName(*pIter) >>= xColumn;
- if(xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_DESCRIPTION))
- aDescription = comphelper::getString(xColumn->getPropertyValue(PROPERTY_DESCRIPTION));
-
- ::rtl::OUString sParseLabel;
- xColumn->getPropertyValue(PROPERTY_LABEL) >>= sParseLabel;
- ORowSetColumn* pColumn = new ORowSetColumn( rParent.getMetaData(),
- this,
- i,
- rParent.m_xActiveConnection->getMetaData(),
- aDescription,
- sParseLabel,
- m_aCurrentRow);
- aColumns->get().push_back(pColumn);
- pColumn->setName(*pIter);
- aNames.push_back(*pIter);
- m_aDataColumns.push_back(pColumn);
-
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_ALIGN,xColumn->getPropertyValue(PROPERTY_ALIGN));
- sal_Int32 nFormatKey = 0;
- xColumn->getPropertyValue(PROPERTY_NUMBERFORMAT) >>= nFormatKey;
- if(!nFormatKey && xColumn.is() && m_xNumberFormatTypes.is())
- nFormatKey = ::dbtools::getDefaultNumberFormat(xColumn,m_xNumberFormatTypes,aLocale);
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_NUMBERFORMAT,makeAny(nFormatKey));
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_RELATIVEPOSITION,xColumn->getPropertyValue(PROPERTY_RELATIVEPOSITION));
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_WIDTH,xColumn->getPropertyValue(PROPERTY_WIDTH));
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_HIDDEN,xColumn->getPropertyValue(PROPERTY_HIDDEN));
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_CONTROLMODEL,xColumn->getPropertyValue(PROPERTY_CONTROLMODEL));
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_HELPTEXT,xColumn->getPropertyValue(PROPERTY_HELPTEXT));
- pColumn->setFastPropertyValue_NoBroadcast(PROPERTY_ID_CONTROLDEFAULT,xColumn->getPropertyValue(PROPERTY_CONTROLDEFAULT));
-
- }
- }
- Reference<XDatabaseMetaData> xMeta = rParent.m_xActiveConnection->getMetaData();
- m_pColumns = new ORowSetDataColumns(xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers(),
- aColumns,*this,m_aMutex,aNames);
-
- sal_Int32 nRT = PropertyAttribute::READONLY | PropertyAttribute::TRANSIENT;
-
- // sdb.RowSet Properties
- registerMayBeVoidProperty(PROPERTY_ACTIVE_CONNECTION,PROPERTY_ID_ACTIVE_CONNECTION, PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY, &rParent.m_aActiveConnection, ::getCppuType(reinterpret_cast< Reference< XConnection >* >(NULL)));
- registerProperty(PROPERTY_RESULTSETCONCURRENCY, PROPERTY_ID_RESULTSETCONCURRENCY, PropertyAttribute::READONLY, &m_nResultSetConcurrency,::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerProperty(PROPERTY_RESULTSETTYPE, PROPERTY_ID_RESULTSETTYPE, PropertyAttribute::READONLY, &m_nResultSetType, ::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerProperty(PROPERTY_FETCHDIRECTION, PROPERTY_ID_FETCHDIRECTION, PropertyAttribute::TRANSIENT, &m_nFetchDirection, ::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerProperty(PROPERTY_FETCHSIZE, PROPERTY_ID_FETCHSIZE, PropertyAttribute::TRANSIENT, &m_nFetchSize, ::getCppuType(reinterpret_cast< sal_Int32*>(NULL)));
- registerProperty(PROPERTY_ISBOOKMARKABLE, PROPERTY_ID_ISBOOKMARKABLE, nRT, &m_bIsBookmarable, ::getBooleanCppuType());
-}
-
-ORowSetClone::~ORowSetClone()
-{
- DBG_DTOR(ORowSetClone, NULL);
-}
-
-// com::sun::star::XTypeProvider
-Sequence< Type > ORowSetClone::getTypes() throw (RuntimeException)
-{
- return ::comphelper::concatSequences(OSubComponent::getTypes(),ORowSetBase::getTypes());
-}
-
-// com::sun::star::XInterface
-Any ORowSetClone::queryInterface( const Type & rType ) throw (RuntimeException)
-{
- Any aRet = ORowSetBase::queryInterface(rType);
- if(!aRet.hasValue())
- aRet = OSubComponent::queryInterface(rType);
- return aRet;
-}
-
-void ORowSetClone::acquire() throw()
-{
- OSubComponent::acquire();
-}
-
-void ORowSetClone::release() throw()
-{
- OSubComponent::release();
-}
-
-// XServiceInfo
-rtl::OUString ORowSetClone::getImplementationName( ) throw(RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.ORowSetClone"));
-}
-
-sal_Bool ORowSetClone::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > ORowSetClone::getSupportedServiceNames( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aSNS( 2 );
- aSNS[0] = SERVICE_SDBC_RESULTSET;
- aSNS[1] = SERVICE_SDB_RESULTSET;
- return aSNS;
-}
-
-// OComponentHelper
-void ORowSetClone::disposing()
-{
- MutexGuard aGuard( m_aMutex );
- ORowSetBase::disposing();
-
- m_pParent = NULL;
- m_pMutex = &m_aMutex; // this must be done here because someone could hold a ref to us and try to do something
- OSubComponent::disposing();
-}
-
-// XCloseable
-void ORowSetClone::close(void) throw( SQLException, RuntimeException )
-{
- {
- MutexGuard aGuard( m_aMutex );
- if (OComponentHelper::rBHelper.bDisposed)
- throw DisposedException();
- }
- dispose();
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* ORowSetClone::createArrayHelper( ) const
-{
- Sequence< Property > aProps;
- describeProperties(aProps);
- return new ::cppu::OPropertyArrayHelper(aProps);
-}
-
-// cppu::OPropertySetHelper
-::cppu::IPropertyArrayHelper& SAL_CALL ORowSetClone::getInfoHelper()
-{
- typedef ::comphelper::OPropertyArrayUsageHelper<ORowSetClone> ORowSetClone_PROP;
- return *ORowSetClone_PROP::getArrayHelper();
-}
-
-Sequence< sal_Int8 > ORowSetClone::getUnoTunnelImplementationId()
-{
- static ::cppu::OImplementationId * pId = 0;
- if (! pId)
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- if (! pId)
- {
- static ::cppu::OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-// com::sun::star::XUnoTunnel
-sal_Int64 SAL_CALL ORowSetClone::getSomething( const Sequence< sal_Int8 >& rId ) throw(RuntimeException)
-{
- if (rId.getLength() == 16 && 0 == rtl_compareMemory(getUnoTunnelImplementationId().getConstArray(), rId.getConstArray(), 16 ) )
- return reinterpret_cast<sal_Int64>(this);
-
- return 0;
-}
-
-void SAL_CALL ORowSetClone::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rValue) throw (Exception)
-{
- if ( nHandle == PROPERTY_ID_FETCHSIZE )
- {
- if ( m_pParent )
- m_pParent->setFastPropertyValue_NoBroadcast( nHandle, rValue );
- }
-
- OPropertyStateContainer::setFastPropertyValue_NoBroadcast(nHandle,rValue);
-}
-
-void ORowSetClone::doCancelModification( )
-{
-}
-
-sal_Bool ORowSetClone::isModification( )
-{
- return sal_False;
-}
-
-sal_Bool ORowSetClone::isModified( )
-{
- return sal_False;
-}
-
-sal_Bool ORowSetClone::isNew( )
-{
- return sal_False;
-}
-
-void SAL_CALL ORowSetClone::execute( ) throw(SQLException, RuntimeException)
-{
- throwFunctionNotSupportedException( "RowSetClone::XRowSet::execute", *this );
-}
-
-void SAL_CALL ORowSetClone::addRowSetListener( const Reference< XRowSetListener >& ) throw(RuntimeException)
-{
- throwFunctionNotSupportedException( "RowSetClone::XRowSet", *this );
-}
-
-void SAL_CALL ORowSetClone::removeRowSetListener( const Reference< XRowSetListener >& ) throw(RuntimeException)
-{
- throwFunctionNotSupportedException( "RowSetClone::XRowSet", *this );
-}
-
-} // dbaccess
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/RowSet.hxx b/dbaccess/source/core/api/RowSet.hxx
deleted file mode 100644
index d4b92170a..000000000
--- a/dbaccess/source/core/api/RowSet.hxx
+++ /dev/null
@@ -1,548 +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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_CORE_API_ROWSET_HXX
-#define DBACCESS_CORE_API_ROWSET_HXX
-
-#include "apitools.hxx"
-#include "RowSetBase.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/sdbc/XPreparedStatement.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
-#include <com/sun/star/sdb/XResultSetAccess.hpp>
-#include <com/sun/star/sdbc/XRowSetListener.hpp>
-#include <com/sun/star/sdbc/XRowUpdate.hpp>
-#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
-#include <com/sun/star/sdbc/XParameters.hpp>
-#include <com/sun/star/sdb/XRowSetApproveBroadcaster.hpp>
-#include <com/sun/star/sdbc/ResultSetType.hpp>
-#include <com/sun/star/util/XCancellable.hpp>
-#include <com/sun/star/sdbcx/XDeleteRows.hpp>
-#include <com/sun/star/sdb/XCompletedExecution.hpp>
-#include <com/sun/star/sdb/RowSetVetoException.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryAnalyzer.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
-#include <com/sun/star/sdb/XParametersSupplier.hpp>
-#include <com/sun/star/sdb/XRowsChangeBroadcaster.hpp>
-/** === end UNO includes === **/
-
-#include <cppuhelper/compbase12.hxx>
-#include <connectivity/paramwrapper.hxx>
-#include <connectivity/FValue.hxx>
-#include <connectivity/warningscontainer.hxx>
-
-namespace dbaccess
-{
- typedef ::cppu::WeakAggComponentImplHelper12 < ::com::sun::star::sdb::XResultSetAccess
- , ::com::sun::star::sdb::XRowSetApproveBroadcaster
- , ::com::sun::star::sdb::XRowsChangeBroadcaster
- , ::com::sun::star::sdbcx::XDeleteRows
- , ::com::sun::star::sdbc::XParameters
- , ::com::sun::star::lang::XEventListener
- , ::com::sun::star::sdbc::XResultSetUpdate
- , ::com::sun::star::sdbc::XRowUpdate
- , ::com::sun::star::util::XCancellable
- , ::com::sun::star::sdb::XCompletedExecution
- , ::com::sun::star::sdb::XParametersSupplier
- , ::com::sun::star::sdbc::XWarningsSupplier
- > ORowSet_BASE1;
-
- class OTableContainer;
- class ORowSet : public comphelper::OBaseMutex
- , public ORowSet_BASE1
- , public ORowSetBase
- , public ::comphelper::OPropertyArrayUsageHelper<ORowSet>
- {
- friend class ORowSetClone;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xOldConnection;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xActiveConnection;
- ::com::sun::star::uno::Any m_aActiveConnection;
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xTypeMap;
- ::com::sun::star::uno::Any m_aTypeMap;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > m_xStatement;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryComposer > m_xComposer;
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xColumns; // the columns from a table or query
-
- connectivity::OWeakRefArray m_aClones;
- /** our parameters as XPropertySet instances and ORowSetValue instances
- */
- ::dbtools::param::ParametersContainerRef m_pParameters;
- /** our parameters values, used when we do not yet have a parameters container
- (since we have not been executed, yet)
- */
- ORowSetValueVector m_aPrematureParamValues;
- ORowSetValueVector m_aParameterValueForCache;
- ::std::vector<bool> m_aParametersSet;
- ::std::vector<bool> m_aReadOnlyDataColumns;
-
- ::cppu::OInterfaceContainerHelper m_aRowsetListeners;
- ::cppu::OInterfaceContainerHelper m_aApproveListeners;
- ::cppu::OInterfaceContainerHelper m_aRowsChangeListener;
-
- ::dbtools::WarningsContainer m_aWarnings;
-
- OTableContainer* m_pTables;
-
- rtl::OUString m_aCommand;
- rtl::OUString m_aDataSourceName;
- rtl::OUString m_aURL;
- rtl::OUString m_aUser;
- rtl::OUString m_aPassword;
- rtl::OUString m_aFilter;
- rtl::OUString m_aHavingClause;
- rtl::OUString m_aGroupBy;
- rtl::OUString m_aOrder;
- rtl::OUString m_aActiveCommand;
- rtl::OUString m_aCursorName;
- rtl::OUString m_aUpdateCatalogName; // is set by a query
- rtl::OUString m_aUpdateSchemaName; // is set by a query
- rtl::OUString m_aUpdateTableName; // is set by a query
-
- sal_Int32 m_nFetchDirection;
- sal_Int32 m_nFetchSize;
- sal_Int32 m_nMaxFieldSize;
- sal_Int32 m_nMaxRows;
- sal_Int32 m_nQueryTimeOut;
- sal_Int32 m_nCommandType;
- sal_Int32 m_nTransactionIsolation;
- sal_Int32 m_nPrivileges;
- sal_Int32 m_nLastKnownRowCount;
- oslInterlockedCount m_nInAppend;
- sal_Bool m_bLastKnownRowCountFinal;
- sal_Bool m_bUseEscapeProcessing ;
- sal_Bool m_bApplyFilter ;
- sal_Bool m_bCommandFacetsDirty; // any of the facets which define the active command is dirty
- sal_Bool m_bModified ;
- sal_Bool m_bRebuildConnOnExecute ;
- sal_Bool m_bIsBookmarable ;
- sal_Bool m_bNew ;
- sal_Bool m_bCanUpdateInsertedRows;
- sal_Bool m_bOwnConnection;
- sal_Bool m_bPropChangeNotifyEnabled;
-
- private:
- /** builds m_aActiveCommand from our settings
-
- @return
- whether we should use escape processing before executing the actual command. This is determined
- from our own EscapeProcessing property, and possibly overruled by the respective property
- of a query we're based on.
- */
- sal_Bool impl_buildActiveCommand_throw();
-
- /** initializes our query composer, and everything which has to do with it
-
- If we don't use escape processing, then we don't have a composer, and everything
- related to it. Nonetheless, _out_rCommandToExecute and the return value are properly
- initialized.
-
- @param _out_rCommandToExecute
- The command which is to be executed, according to the current settings -
- it is built from our active command plus our current filter/order criterions.
-
- @return
- whether we should use escape processing before executing the actual command. This is determined
- from our own EscapeProcessing property, and possibly overruled by the respective property
- of a query we're based on.
- Effectively, this value determines whether or not we actually have an composer (m_xComposer)
- and dependent information (such as the parameters container).
-
- @precond
- m_xActiveConnection points to a valid SDB-level connection
-
- @throws com::sun::star::sdb::SQLException
- if an database-related error occurred
-
- @throws com::sun::star::uno::RuntimeException
- if any of the components involved throws a com::sun::star::uno::RuntimeException
- */
- sal_Bool impl_initComposer_throw( ::rtl::OUString& _out_rCommandToExecute );
-
- /** returns the table container of our active connection
-
- If our connection is able to provide a tables container, this one is returned.
- Else, if m_pTables is not <NULL/>, this one will returned.
- Else, m_pTables will be constructed and returned.
-
- @precond m_xActiveConnection is not <NULL/>
- @throws ::com::sun::star::sdbc::SQLException
- if retrieving or constructing the tables container goes wrong
-
- @see impl_resetTables_nothrow
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >
- impl_getTables_throw();
-
- /** cleans up m_pTables, and resets it to <NULL/>
- */
- void impl_resetTables_nothrow();
-
- /** prepares and executes our command
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >
- impl_prepareAndExecute_throw();
-
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > calcConnection(const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& _rxHandler) throw( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException );
- // free clones and ParseTree. Plus, if _bComplete is <TRUE/>, *all* other associated resources
- void freeResources( bool _bComplete );
-
- /// informs the clones (and ourself) that we are going to delete a record with a given bookmark
- void notifyRowSetAndClonesRowDelete( const ::com::sun::star::uno::Any& _rBookmark );
-
- /// inform the clones (and ourself) that we have deleted a record with a given bookmark
- void notifyRowSetAndClonesRowDeleted( const ::com::sun::star::uno::Any& _rBookmark, sal_Int32 _nPos );
-
- void checkUpdateIterator();
- const connectivity::ORowSetValue& getInsertValue(sal_Int32 columnIndex);
- void setParameter(sal_Int32 parameterIndex, const connectivity::ORowSetValue& x);
- // resizes the parameter vector if nescessary
- ::connectivity::ORowSetValue& getParameterStorage( sal_Int32 parameterIndex );
-
- void updateValue(sal_Int32 columnIndex,const connectivity::ORowSetValue& x);
- void checkUpdateConditions(sal_Int32 columnIndex);
- void impl_rebuild_throw(::osl::ResettableMutexGuard& _rGuard);
- // set all data columns to writeable
- void impl_setDataColumnsWriteable_throw();
- // restore the old state of the data column read-only state
- void impl_restoreDataColumnsWriteable_throw();
-
- protected:
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
- virtual void SAL_CALL getFastPropertyValue(::com::sun::star::uno::Any& rValue,sal_Int32 nHandle) const;
- virtual void getPropertyDefaultByHandle( sal_Int32 _nHandle, ::com::sun::star::uno::Any& _rDefault ) const;
-
- virtual void fireRowcount();
- void notifyAllListenersRowBeforeChange(::osl::ResettableMutexGuard& _rGuard,const ::com::sun::star::sdb::RowChangeEvent &rEvt);
- void notifyAllListenersRowChanged(::osl::ResettableMutexGuard& _rGuard,const ::com::sun::star::sdb::RowsChangeEvent& rEvt);
- virtual sal_Bool notifyAllListenersCursorBeforeMove(::osl::ResettableMutexGuard& _rGuard);
- virtual void notifyAllListenersCursorMoved(::osl::ResettableMutexGuard& _rGuard);
- virtual void notifyAllListeners(::osl::ResettableMutexGuard& _rGuard);
-
- virtual void doCancelModification( );
- virtual sal_Bool isModification( );
- virtual sal_Bool isModified( );
- virtual sal_Bool isNew( );
- virtual sal_Bool isPropertyChangeNotificationEnabled() const;
-
- virtual ~ORowSet();
-
- public:
- ORowSet(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&);
-
- // com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
-
- // com::sun::star::lang::XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::uno::XAggregation
- virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation( const ::com::sun::star::uno::Type& aType ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::lang::XServiceInfo - static methods
- static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::rtl::OUString getImplementationName_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
- SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >&);
-
- // OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- // ::com::sun::star::lang::XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XCloseable
- virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // comphelper::OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
- // cppu::OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- // ::com::sun::star::sdbc::XResultSet
- virtual sal_Int32 SAL_CALL getRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL refreshRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // XCompletedExecution
- virtual void SAL_CALL executeWithCompletion( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& handler ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // XParametersSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL getParameters( ) throw (::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XRow
- virtual sal_Bool SAL_CALL wasNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getString( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL getBoolean( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int8 SAL_CALL getByte( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int16 SAL_CALL getShort( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getInt( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int64 SAL_CALL getLong( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual float SAL_CALL getFloat( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual double SAL_CALL getDouble( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Date SAL_CALL getDate( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Time SAL_CALL getTime( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XRowUpdate
- virtual void SAL_CALL updateNull( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateBoolean( sal_Int32 columnIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateByte( sal_Int32 columnIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateShort( sal_Int32 columnIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateInt( sal_Int32 columnIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateLong( sal_Int32 columnIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateFloat( sal_Int32 columnIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateDouble( sal_Int32 columnIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateString( sal_Int32 columnIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateBytes( sal_Int32 columnIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateDate( sal_Int32 columnIndex, const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateTime( sal_Int32 columnIndex, const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateTimestamp( sal_Int32 columnIndex, const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateBinaryStream( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateCharacterStream( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateNumericObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XResultSetUpdate
- virtual void SAL_CALL insertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL deleteRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XRowSet
- virtual void SAL_CALL execute( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL addRowSetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeRowSetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdb::XRowSetApproveBroadcaster
- virtual void SAL_CALL addRowSetApproveListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetApproveListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeRowSetApproveListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowSetApproveListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdb::XRowsChangeBroadcaster
- virtual void SAL_CALL addRowsChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowsChangeListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeRowsChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XRowsChangeListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdb::XResultSetAccess
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL createResultSet( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::util::XCancellable
- virtual void SAL_CALL cancel( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XDeleteRows
- virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // XParameters
- virtual void SAL_CALL setNull( sal_Int32 parameterIndex, sal_Int32 sqlType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setObjectNull( sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBoolean( sal_Int32 parameterIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setByte( sal_Int32 parameterIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setShort( sal_Int32 parameterIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setInt( sal_Int32 parameterIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setLong( sal_Int32 parameterIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setFloat( sal_Int32 parameterIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setDouble( sal_Int32 parameterIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setString( sal_Int32 parameterIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBytes( sal_Int32 parameterIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setDate( sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setTime( sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setTimestamp( sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBinaryStream( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setCharacterStream( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setObject( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setObjectWithInfo( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x, sal_Int32 targetSqlType, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setRef( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBlob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setClob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setArray( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearParameters( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // XWarningsSupplier
- virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearWarnings( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- protected:
- /** implement the <method>execute</method>, without calling the approve listeners and without building a new
- connection
- @param _rClearForNotification mutex to clear before doing the final notifications
- */
- void execute_NoApprove_NoNewConn(::osl::ResettableMutexGuard& _rClearForNotification);
-
- /** call the RowSetApproveListeners<p/>
- throws an RowSetVetoException if one of the listeners vetoed
- */
- void approveExecution() throw (::com::sun::star::sdb::RowSetVetoException, ::com::sun::star::uno::RuntimeException);
-
- /// set m_xActiveConnection, fire a PropertyChangeEvent if necessary, do the event listener handling etc
- void setActiveConnection( ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxNewConn, sal_Bool _bFireEvent = sal_True );
-
- void implCancelRowUpdates( sal_Bool _bNotifyModified ) SAL_THROW( ( ::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException ) );
-
- /** sets the given result set type/concurrency at the given statement, while respecting
- possibly related data source settings
- */
- void setStatementResultSetType(
- const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxStatement,
- sal_Int32 _nDesiredResultSetType,
- sal_Int32 _nDesiredResultSetConcurrency
- );
-
- /** initializes a given RowSet column with the ColumnSettings (width, format, hidden, etc.) from a
- template column.
-
- If the template column supports any of the known column settings, they're plain copied. If not,
- the template column is examined for a TableName and Name property, and the table column described
- by those is used to find and copy the column settings.
- */
- void impl_initializeColumnSettings_nothrow(
- const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxTemplateColumn,
- const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxRowSetColumn
- );
-
- /** initializes our parameters container (m_pParameters) according to the parameter columns as
- obtained from our composer
- */
- void impl_initParametersContainer_nothrow();
- /** disposes our parameters container
- */
- void impl_disposeParametersContainer_nothrow();
-
- protected:
- using ORowSetBase::getFastPropertyValue;
- using ORowSetBase::firePropertyChange;
- using ORowSetBase::doCancelModification;
- using ORowSetBase::isModification;
- using ORowSetBase::isModified;
- using ORowSetBase::isNew;
- };
-
-
- //************************************************************
- // ORowSetClone
- //************************************************************
- class ORowSetClone : public comphelper::OBaseMutex
- ,public OSubComponent
- ,public ORowSetBase
- ,public ::comphelper::OPropertyArrayUsageHelper < ORowSetClone >
- {
- protected:
- ORowSet* m_pParent;
- sal_Int32 m_nFetchDirection;
- sal_Int32 m_nFetchSize;
- sal_Bool m_bIsBookmarable;
-
- protected:
- // the clone can not insert anything
- virtual void doCancelModification( );
- virtual sal_Bool isModification( );
- virtual sal_Bool isModified( );
- virtual sal_Bool isNew( );
-
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
- public:
- ORowSetClone( const ::comphelper::ComponentContext& _rContext, ORowSet& rParent, ::osl::Mutex* _pMutex );
- virtual ~ORowSetClone();
-
- // com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException)
- {
- return getUnoTunnelImplementationId();
- }
-
- // com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::lang::XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
- static ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId();
-
- // OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- // ::com::sun::star::sdbc::XCloseable
- virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::beans::XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException)
- {
- return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
- }
-
- // ::com::sun::star::sdbc::XRowSet
- virtual void SAL_CALL execute( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL addRowSetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeRowSetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener >& listener ) throw(::com::sun::star::uno::RuntimeException);
-
- // comphelper::OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
- // cppu::OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- protected:
- using ORowSetBase::doCancelModification;
- using ORowSetBase::isModification;
- using ORowSetBase::isModified;
- using ORowSetBase::isNew;
- using ORowSetBase::rowDeleted;
- };
-
-}
-#endif // DBACCESS_CORE_API_ROWSET_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/RowSetBase.cxx b/dbaccess/source/core/api/RowSetBase.cxx
deleted file mode 100644
index 81fbd93ea..000000000
--- a/dbaccess/source/core/api/RowSetBase.cxx
+++ /dev/null
@@ -1,1584 +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_dbaccess.hxx"
-
-#include "RowSetBase.hxx"
-#include "CRowSetDataColumn.hxx"
-#include <connectivity/sdbcx/VCollection.hxx>
-#include "RowSetCache.hxx"
-#include "dbastrings.hrc"
-#include "core_resource.hrc"
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/sdbcx/CompareBookmark.hpp>
-#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
-#include <com/sun/star/lang/Locale.hpp>
-#include <com/sun/star/util/NumberFormat.hpp>
-#include <comphelper/sequence.hxx>
-#include <comphelper/extract.hxx>
-#include <comphelper/seqstream.hxx>
-#include <connectivity/dbexception.hxx>
-#include <osl/thread.h>
-#include <tools/debug.hxx>
-#include <rtl/logfile.hxx>
-
-using namespace dbaccess;
-using namespace connectivity;
-using namespace connectivity::sdbcx;
-using namespace comphelper;
-using namespace dbtools;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::util;
-using namespace ::cppu;
-using namespace ::osl;
-
-namespace dbaccess
-{
-
-// =========================================================================
-// = OEmptyCollection
-// =========================================================================
-class OEmptyCollection : public sdbcx::OCollection
-{
-protected:
- virtual void impl_refresh() throw(RuntimeException);
- virtual connectivity::sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
-public:
- OEmptyCollection(::cppu::OWeakObject& _rParent,::osl::Mutex& _rMutex) : OCollection(_rParent,sal_True,_rMutex,::std::vector< ::rtl::OUString>()){}
-};
-
-void OEmptyCollection::impl_refresh() throw(RuntimeException)
-{
-}
-
-connectivity::sdbcx::ObjectType OEmptyCollection::createObject(const ::rtl::OUString& /*_rName*/)
-{
- return connectivity::sdbcx::ObjectType();
-}
-
-// =========================================================================
-// = ORowSetBase
-// =========================================================================
-DBG_NAME(ORowSetBase)
-
-ORowSetBase::ORowSetBase( const ::comphelper::ComponentContext& _rContext, ::cppu::OBroadcastHelper& _rBHelper, ::osl::Mutex* _pMutex )
- :OPropertyStateContainer(_rBHelper)
- ,m_pMutex(_pMutex)
- ,m_pCache(NULL)
- ,m_pColumns(NULL)
- ,m_rBHelper(_rBHelper)
- ,m_pEmptyCollection( NULL )
- ,m_aContext( _rContext )
- ,m_aErrors( _rContext )
- ,m_nLastColumnIndex(-1)
- ,m_nDeletedPosition(-1)
- ,m_nResultSetType( ResultSetType::FORWARD_ONLY )
- ,m_nResultSetConcurrency( ResultSetConcurrency::READ_ONLY )
- ,m_bClone(sal_False)
- ,m_bIgnoreResult(sal_False)
- ,m_bBeforeFirst(sal_True) // changed from sal_False
- ,m_bAfterLast(sal_False)
- ,m_bIsInsertRow(sal_False)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::ORowSetBase" );
- DBG_CTOR(ORowSetBase,NULL);
-
- sal_Int32 nRBT = PropertyAttribute::READONLY | PropertyAttribute::BOUND | PropertyAttribute::TRANSIENT;
-
- sal_Int32 nInitialRowCountValue = 0;
- sal_Bool bInitialRowCountFinalValue( sal_False );
- registerPropertyNoMember( PROPERTY_ROWCOUNT, PROPERTY_ID_ROWCOUNT, nRBT, ::getCppuType( &nInitialRowCountValue ), &nInitialRowCountValue );
- registerPropertyNoMember( PROPERTY_ISROWCOUNTFINAL, PROPERTY_ID_ISROWCOUNTFINAL, nRBT, ::getBooleanCppuType(), &bInitialRowCountFinalValue );
-}
-
-ORowSetBase::~ORowSetBase()
-{
- if(m_pColumns)
- {
- TDataColumns().swap(m_aDataColumns);
- m_pColumns->acquire();
- m_pColumns->disposing();
- delete m_pColumns;
- m_pColumns = NULL;
- }
-
- if ( m_pEmptyCollection )
- delete m_pEmptyCollection;
-
- DBG_DTOR(ORowSetBase,NULL);
-}
-
-// com::sun::star::lang::XTypeProvider
-Sequence< Type > ORowSetBase::getTypes() throw (RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getTypes" );
- return ::comphelper::concatSequences(ORowSetBase_BASE::getTypes(),OPropertyStateContainer::getTypes());
-}
-
-// com::sun::star::uno::XInterface
-Any ORowSetBase::queryInterface( const Type & rType ) throw (RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::queryInterface" );
- Any aRet = ORowSetBase_BASE::queryInterface(rType);
- if(!aRet.hasValue())
- aRet = OPropertyStateContainer::queryInterface(rType);
- return aRet;
-}
-
-void SAL_CALL ORowSetBase::getFastPropertyValue(Any& rValue,sal_Int32 nHandle) const
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getFastPropertyValue" );
- if(m_pCache)
- {
- switch(nHandle)
- {
- case PROPERTY_ID_ROWCOUNT:
- rValue <<= impl_getRowCount();
- break;
- case PROPERTY_ID_ISROWCOUNTFINAL:
- rValue.setValue(&m_pCache->m_bRowCountFinal,::getCppuBooleanType());
- break;
- default:
- OPropertyStateContainer::getFastPropertyValue(rValue,nHandle);
- };
- }
- else
- OPropertyStateContainer::getFastPropertyValue(rValue,nHandle);
-}
-
-// OComponentHelper
-void SAL_CALL ORowSetBase::disposing(void)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::disposing" );
- MutexGuard aGuard(*m_pMutex);
-
- if ( m_pColumns )
- {
- TDataColumns().swap(m_aDataColumns);
- m_pColumns->disposing();
- }
- if ( m_pCache )
- {
- m_pCache->deregisterOldRow(m_aOldRow);
- m_pCache->deleteIterator(this);
- }
- m_pCache = NULL;
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* ORowSetBase::createArrayHelper( ) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::createArrayHelper" );
- Sequence< Property > aProps;
- describeProperties(aProps);
- return new ::cppu::OPropertyArrayHelper(aProps);
-}
-
-// cppu::OPropertySetHelper
-::cppu::IPropertyArrayHelper& SAL_CALL ORowSetBase::getInfoHelper()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getInfoHelper" );
- return *const_cast<ORowSetBase*>(this)->getArrayHelper();
-}
-
-// XRow
-sal_Bool SAL_CALL ORowSetBase::wasNull( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::wasNull" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- return impl_wasNull();
-}
-
-sal_Bool ORowSetBase::impl_wasNull()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::impl_wasNull" );
- return ((m_nLastColumnIndex != -1) && !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is()) ? ((*m_aCurrentRow)->get())[m_nLastColumnIndex].isNull() : sal_True;
-}
-
-const ORowSetValue& ORowSetBase::getValue(sal_Int32 columnIndex)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getValue" );
- checkCache();
- return impl_getValue(columnIndex);
-}
-
-const ORowSetValue& ORowSetBase::impl_getValue(sal_Int32 columnIndex)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::impl_getValue" );
- if ( m_bBeforeFirst || m_bAfterLast )
- {
- OSL_FAIL("ORowSetBase::getValue: Illegal call here (we're before first or after last)!");
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_CURSOR_BEFORE_OR_AFTER ), SQL_INVALID_CURSOR_POSITION, *m_pMySelf );
- }
-
- if ( impl_rowDeleted() )
- {
- return m_aEmptyValue;
- }
-
- bool bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is() );
- if ( !bValidCurrentRow )
- {
- // currentrow is null when the clone moves the window
- positionCache( MOVE_NONE_REFRESH_ONLY );
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- m_bIsInsertRow = sal_False;
- OSL_ENSURE(!m_aCurrentRow.isNull(),"ORowSetBase::getValue: we don't stand on a valid row! Row is null.");
-
- bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is() );
- }
-
- if ( bValidCurrentRow )
- {
-#if OSL_DEBUG_LEVEL > 0
- ORowSetMatrix::iterator aCacheEnd;
- ORowSetMatrix::iterator aCurrentRow;
- aCacheEnd = m_pCache->getEnd();
- aCurrentRow = m_aCurrentRow;
- ORowSetCacheMap::iterator aCacheIter = m_aCurrentRow.getIter();
- sal_Int32 n = aCacheIter->first;
- n = n;
- ORowSetCacheIterator_Helper aHelper = aCacheIter->second;
- ORowSetMatrix::iterator k = aHelper.aIterator;
- for (; k != m_pCache->getEnd(); ++k)
- {
- ORowSetValueVector* pTemp = k->get();
- OSL_ENSURE( pTemp != (void*)0xfeeefeee,"HALT!" );
- }
-#endif
- OSL_ENSURE(!m_aCurrentRow.isNull() && m_aCurrentRow < m_pCache->getEnd() && aCacheIter != m_pCache->m_aCacheIterators.end(),"Invalid iterator set for currentrow!");
-#if OSL_DEBUG_LEVEL > 0
- ORowSetRow rRow = (*m_aCurrentRow);
- OSL_ENSURE(rRow.is() && static_cast<sal_uInt16>(columnIndex) < (rRow->get()).size(),"Invalid size of vector!");
-#endif
- return ((*m_aCurrentRow)->get())[m_nLastColumnIndex = columnIndex];
- }
-
- // we should normally never reach this
- return m_aEmptyValue;
-}
-
-::rtl::OUString SAL_CALL ORowSetBase::getString( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getString" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-sal_Bool SAL_CALL ORowSetBase::getBoolean( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getBoolean" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-sal_Int8 SAL_CALL ORowSetBase::getByte( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getByte" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-sal_Int16 SAL_CALL ORowSetBase::getShort( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getShort" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-sal_Int32 SAL_CALL ORowSetBase::getInt( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getInt" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-sal_Int64 SAL_CALL ORowSetBase::getLong( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getLong" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-float SAL_CALL ORowSetBase::getFloat( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getFloat" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-double SAL_CALL ORowSetBase::getDouble( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getDouble" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-Sequence< sal_Int8 > SAL_CALL ORowSetBase::getBytes( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getBytes" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-::com::sun::star::util::Date SAL_CALL ORowSetBase::getDate( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getDate" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-::com::sun::star::util::Time SAL_CALL ORowSetBase::getTime( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getTime" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-::com::sun::star::util::DateTime SAL_CALL ORowSetBase::getTimestamp( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getTimestamp" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- return getValue(columnIndex);
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL ORowSetBase::getBinaryStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getBinaryStream" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- if ( m_bBeforeFirst || m_bAfterLast )
- {
- OSL_FAIL("ORowSetBase::getBinaryStream: Illegal call here (we're before first or after last)!");
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_CURSOR_BEFORE_OR_AFTER ), SQL_INVALID_CURSOR_POSITION, *m_pMySelf );
- }
-
- if ( impl_rowDeleted() )
- {
- return NULL;
- }
-
- bool bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is() );
- if ( !bValidCurrentRow )
- {
- positionCache( MOVE_NONE_REFRESH_ONLY );
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- m_bIsInsertRow = sal_False;
- OSL_ENSURE(!m_aCurrentRow.isNull(),"ORowSetBase::getBinaryStream: we don't stand on a valid row! Row is null.");
-
- bValidCurrentRow = ( !m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd() && m_aCurrentRow->is() );
- }
-
- if ( bValidCurrentRow )
- return new ::comphelper::SequenceInputStream(((*m_aCurrentRow)->get())[m_nLastColumnIndex = columnIndex].getSequence());
-
- // we should normally never reach this
- return Reference< ::com::sun::star::io::XInputStream >();
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL ORowSetBase::getCharacterStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getCharacterStream" );
- return getBinaryStream(columnIndex);
-}
-
-Any SAL_CALL ORowSetBase::getObject( sal_Int32 columnIndex, const Reference< XNameAccess >& /*typeMap*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getObject" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- return getValue(columnIndex).makeAny();
-}
-
-Reference< XRef > SAL_CALL ORowSetBase::getRef( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getRef" );
- ::dbtools::throwFeatureNotImplementedException( "XRow::getRef", *m_pMySelf );
- return NULL;
-}
-
-Reference< XBlob > SAL_CALL ORowSetBase::getBlob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getBlob" );
- return Reference< XBlob >(getValue(columnIndex).makeAny(),UNO_QUERY);
-}
-
-Reference< XClob > SAL_CALL ORowSetBase::getClob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getClob" );
- return Reference< XClob >(getValue(columnIndex).makeAny(),UNO_QUERY);
-}
-
-Reference< XArray > SAL_CALL ORowSetBase::getArray( sal_Int32 /*columnIndex*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getArray" );
- ::dbtools::throwFeatureNotImplementedException( "XRow::getArray", *m_pMySelf );
- return NULL;
-}
-
-// ::com::sun::star::sdbcx::XRowLocate
-Any SAL_CALL ORowSetBase::getBookmark( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getBookmark" );
- OSL_TRACE("DBACCESS ORowSetBase::getBookmark() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- if ( m_bBeforeFirst || m_bAfterLast )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_BOOKMARK_BEFORE_OR_AFTER ), SQL_INVALID_CURSOR_POSITION, *m_pMySelf );
-
- if ( impl_rowDeleted() )
- ::dbtools::throwSQLException( DBACORE_RESSTRING( RID_STR_NO_BOOKMARK_DELETED ), SQL_INVALID_CURSOR_POSITION, *m_pMySelf );
-
- OSL_ENSURE( m_aBookmark.hasValue(), "ORowSetBase::getBookmark: bookmark has no value!" );
- return m_aBookmark;
-}
-
-sal_Bool SAL_CALL ORowSetBase::moveToBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::moveToBookmark" );
- OSL_TRACE("DBACCESS ORowSetBase::moveToBookmark(Any) Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- OSL_ENSURE(bookmark.hasValue(),"ORowSetBase::moveToBookmark bookmark has no value!");
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- if(!bookmark.hasValue() || m_nResultSetType == ResultSetType::FORWARD_ONLY)
- {
- if(bookmark.hasValue())
- OSL_FAIL("MoveToBookmark is not possible when we are only forward");
- else
- OSL_FAIL("Bookmark is not valid");
- throwFunctionSequenceException(*m_pMySelf);
- }
-
-
- checkCache();
-
- sal_Bool bRet( notifyAllListenersCursorBeforeMove( aGuard ) );
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || impl_rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- bRet = m_pCache->moveToBookmark(bookmark);
- doCancelModification( );
- if(bRet)
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
- }
- else
- {
- movementFailed();
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire( );
- }
- OSL_TRACE("DBACCESS ORowSetBase::moveToBookmark(Any) = %i Clone = %i\n",bRet,m_bClone);
- return bRet;
-}
-
-sal_Bool SAL_CALL ORowSetBase::moveRelativeToBookmark( const Any& bookmark, sal_Int32 rows ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::moveRelativeToBookmark" );
- OSL_TRACE("DBACCESS ORowSetBase::moveRelativeToBookmark(Any,%i) Clone = %i\n",rows,m_bClone);
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- checkPositioningAllowed();
-
- sal_Bool bRet( notifyAllListenersCursorBeforeMove( aGuard ) );
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- bRet = m_pCache->moveRelativeToBookmark(bookmark,rows);
- doCancelModification( );
- if(bRet)
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
- }
- else
- movementFailed();
-
- // - IsModified
- // - IsNew
- aNotifier.fire( );
-
- // RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::moveRelativeToBookmark(Any,%i) = %i Clone = %i\n",rows,bRet,m_bClone);
- return bRet;
-}
-
-sal_Int32 SAL_CALL ORowSetBase::compareBookmarks( const Any& _first, const Any& _second ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::compareBookmarks" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- return m_pCache->compareBookmarks(_first,_second);
-}
-
-sal_Bool SAL_CALL ORowSetBase::hasOrderedBookmarks( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::hasOrderedBookmarks" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- return m_pCache->hasOrderedBookmarks();
-}
-
-sal_Int32 SAL_CALL ORowSetBase::hashBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::hashBookmark" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- return m_pCache->hashBookmark(bookmark);
-}
-
-// XResultSetMetaDataSupplier
-Reference< XResultSetMetaData > SAL_CALL ORowSetBase::getMetaData( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getMetaData" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- Reference< XResultSetMetaData > xMeta;
- if(m_pCache)
- xMeta = m_pCache->getMetaData();
-
- return xMeta;
-}
-
-// XColumnLocate
-sal_Int32 SAL_CALL ORowSetBase::findColumn( const ::rtl::OUString& columnName ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::findColumn" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
- // it is possible to save some time here when we remember the names - position relation in a map
- return m_pColumns ? m_pColumns->findColumn(columnName) : sal_Int32(0);
-}
-
-// ::com::sun::star::sdbcx::XColumnsSupplier
-Reference< XNameAccess > SAL_CALL ORowSetBase::getColumns( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getColumns" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aColumnsMutex );
- if(!m_pColumns)
- {
- if (!m_pEmptyCollection)
- m_pEmptyCollection = new OEmptyCollection(*m_pMySelf,m_aColumnsMutex);
- return m_pEmptyCollection;
- }
-
- return m_pColumns;
-}
-
-// XResultSet
-sal_Bool SAL_CALL ORowSetBase::next( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::next" );
- OSL_TRACE("DBACCESS ORowSetBase::next() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- checkCache();
-
- sal_Bool bRet( notifyAllListenersCursorBeforeMove( aGuard ) );
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || impl_rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- positionCache( MOVE_FORWARD );
- sal_Bool bAfterLast = m_pCache->isAfterLast();
- bRet = m_pCache->next();
- doCancelModification( );
-
- if ( bRet || bAfterLast != m_pCache->isAfterLast() )
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( bRet, sal_True, aOldValues, aGuard );
- OSL_ENSURE(!m_bBeforeFirst,"BeforeFirst is true. I don't know why?");
- }
- else
- {
- // moved after the last row
- movementFailed();
- OSL_ENSURE(m_bAfterLast,"AfterLast is false. I don't know why?");
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::next() = %i Clone = %i ID = %i\n",bRet,m_bClone,osl_getThreadIdentifier(NULL));
- return bRet;
-}
-
-sal_Bool SAL_CALL ORowSetBase::isBeforeFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isBeforeFirst" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- OSL_TRACE("DBACCESS ORowSetBase::isBeforeFirst() = %i Clone = %i\n",m_bBeforeFirst,m_bClone);
-
- return m_bBeforeFirst;
-}
-
-sal_Bool SAL_CALL ORowSetBase::isAfterLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isAfterLast" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- OSL_TRACE("DBACCESS ORowSetBase::isAfterLast() = %i Clone = %i\n",m_bAfterLast,m_bClone);
-
- return m_bAfterLast;
-}
-
-sal_Bool ORowSetBase::isOnFirst()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isOnFirst" );
- return isFirst();
-}
-
-sal_Bool SAL_CALL ORowSetBase::isFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isFirst" );
- OSL_TRACE("DBACCESS ORowSetBase::isFirst() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- if ( m_bBeforeFirst || m_bAfterLast )
- return sal_False;
-
- if ( impl_rowDeleted() )
- return ( m_nDeletedPosition == 1 );
-
- positionCache( MOVE_NONE_REFRESH_ONLY );
- sal_Bool bIsFirst = m_pCache->isFirst();
-
- OSL_TRACE("DBACCESS ORowSetBase::isFirst() = %i Clone = %i\n",bIsFirst,m_bClone);
- return bIsFirst;
-}
-
-sal_Bool ORowSetBase::isOnLast()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isOnLast" );
- return isLast();
-}
-
-sal_Bool SAL_CALL ORowSetBase::isLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::isLast" );
- OSL_TRACE("DBACCESS ORowSetBase::isLast() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- if ( m_bBeforeFirst || m_bAfterLast )
- return sal_False;
-
- if ( impl_rowDeleted() )
- {
- if ( !m_pCache->m_bRowCountFinal )
- return sal_False;
- else
- return ( m_nDeletedPosition == impl_getRowCount() );
- }
-
- positionCache( MOVE_NONE_REFRESH_ONLY );
- sal_Bool bIsLast = m_pCache->isLast();
-
- OSL_TRACE("DBACCESS ORowSetBase::isLast() = %i Clone = %i\n",bIsLast,m_bClone);
- return bIsLast;
-}
-
-void SAL_CALL ORowSetBase::beforeFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::beforeFirst" );
- OSL_TRACE("DBACCESS ORowSetBase::beforeFirst() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- checkPositioningAllowed();
-
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || impl_rowDeleted();
-
- if((bWasNew || !m_bBeforeFirst) && notifyAllListenersCursorBeforeMove(aGuard) )
- {
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- if ( !m_bBeforeFirst )
- {
- ORowSetRow aOldValues = getOldRow(bWasNew);
- m_pCache->beforeFirst();
- doCancelModification( );
-
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
-
- // - IsModified
- // - Isnew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
-
- // to be done _after_ the notifications!
- m_aOldRow->clearRow();
- }
- OSL_TRACE("DBACCESS ORowSetBase::beforeFirst() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-void SAL_CALL ORowSetBase::afterLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::afterLast" );
- OSL_TRACE("DBACCESS ORowSetBase::afterLast() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- checkPositioningAllowed();
-
- sal_Bool bWasNew = m_pCache->m_bNew || impl_rowDeleted();
-
- if((bWasNew || !m_bAfterLast) && notifyAllListenersCursorBeforeMove(aGuard) )
- {
- // check if we are inserting a row
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- if(!m_bAfterLast)
- {
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- m_pCache->afterLast();
- doCancelModification( );
-
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
-
- // - IsModified
- // - Isnew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- }
- OSL_TRACE("DBACCESS ORowSetBase::afterLast() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-sal_Bool SAL_CALL ORowSetBase::move( ::std::mem_fun_t<sal_Bool,ORowSetBase>& _aCheckFunctor,
- ::std::mem_fun_t<sal_Bool,ORowSetCache>& _aMovementFunctor)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::move" );
- OSL_TRACE("DBACCESS ORowSetBase::move() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- checkPositioningAllowed();
-
- sal_Bool bRet( notifyAllListenersCursorBeforeMove( aGuard ) );
- if( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- sal_Bool bMoved = ( bWasNew || !_aCheckFunctor(this) );
-
- bRet = _aMovementFunctor(m_pCache);
- doCancelModification( );
-
- if ( bRet )
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( bMoved, sal_True, aOldValues, aGuard );
- }
- else
- { // first goes wrong so there is no row
- movementFailed();
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::move() = %i Clone = %i\n",bRet,m_bClone);
- return bRet;
-}
-
-sal_Bool SAL_CALL ORowSetBase::first( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::first" );
- OSL_TRACE("DBACCESS ORowSetBase::first() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::std::mem_fun_t<sal_Bool,ORowSetBase> ioF_tmp(&ORowSetBase::isOnFirst);
- ::std::mem_fun_t<sal_Bool,ORowSetCache> F_tmp(&ORowSetCache::first);
- return move(ioF_tmp,F_tmp);
-}
-
-sal_Bool SAL_CALL ORowSetBase::last( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::last" );
- OSL_TRACE("DBACCESS ORowSetBase::last() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::std::mem_fun_t<sal_Bool,ORowSetBase> ioL_tmp(&ORowSetBase::isOnLast);
- ::std::mem_fun_t<sal_Bool,ORowSetCache> L_tmp(&ORowSetCache::last);
- return move(ioL_tmp,L_tmp);
-}
-
-sal_Int32 SAL_CALL ORowSetBase::getRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getRow" );
- OSL_TRACE("DBACCESS ORowSetBase::getRow() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::osl::MutexGuard aGuard( *m_pMutex );
-
- checkCache();
- return impl_getRow();
-}
-
-sal_Int32 ORowSetBase::impl_getRow()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::impl_getRow" );
- sal_Int32 nPos = 0;
- if ( m_bBeforeFirst )
- nPos = 0;
- else if ( m_bAfterLast )
- nPos = impl_getRowCount() + 1;
- else if ( impl_rowDeleted() )
- nPos = m_nDeletedPosition;
- else if ( !m_bClone && m_pCache->m_bNew )
- nPos = 0;
- else
- {
- if ( m_pCache->isAfterLast()
- || m_pCache->isBeforeFirst()
- || ( m_pCache->compareBookmarks( m_aBookmark, m_pCache->getBookmark() ) != CompareBookmark::EQUAL )
- )
- {
- positionCache( MOVE_NONE_REFRESH_ONLY );
- }
- nPos = m_pCache->getRow();
- }
- OSL_TRACE("DBACCESS ORowSetBase::impl_getRow() = %i Clone = %i ID = %i\n",nPos,m_bClone,osl_getThreadIdentifier(NULL));
- return nPos;
-}
-
-sal_Bool SAL_CALL ORowSetBase::absolute( sal_Int32 row ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::absolute" );
- OSL_TRACE("DBACCESS ORowSetBase::absolute(%i) Clone = %i\n",row,m_bClone);
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
- checkPositioningAllowed();
-
- sal_Bool bRet = ( row > 0 )
- && notifyAllListenersCursorBeforeMove( aGuard );
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- bRet = m_pCache->absolute(row);
- doCancelModification( );
-
- if(bRet)
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
- }
- else
- { // absolute movement goes wrong we stand left or right side of the rows
- movementFailed();
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::absolute(%i) = %i Clone = %i\n",row,bRet,m_bClone);
- return bRet;
-}
-
-sal_Bool SAL_CALL ORowSetBase::relative( sal_Int32 rows ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::relative" );
- OSL_TRACE("DBACCESS ORowSetBase::relative(%i) Clone = %i\n",rows,m_bClone);
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
-
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- if(!rows)
- return sal_True; // in this case do nothing
-
- checkPositioningAllowed();
-
- sal_Bool bRet =
- ( ( !m_bAfterLast || rows <= 0 )
- && ( !m_bBeforeFirst || rows >= 0 )
- && notifyAllListenersCursorBeforeMove( aGuard )
- );
-
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- positionCache( rows > 0 ? MOVE_FORWARD : MOVE_BACKWARD );
- bRet = m_pCache->relative(rows);
- doCancelModification( );
-
- if(bRet)
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
- }
- else
- {
- movementFailed();
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::relative(%i) = %i Clone = %i\n",rows,bRet,m_bClone);
- return bRet;
-}
-
-sal_Bool SAL_CALL ORowSetBase::previous( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::previous" );
- OSL_TRACE("DBACCESS ORowSetBase::previous() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::ResettableMutexGuard aGuard( *m_pMutex );
-
- checkPositioningAllowed();
-
- sal_Bool bRet = !m_bBeforeFirst
- && notifyAllListenersCursorBeforeMove(aGuard);
-
- if ( bRet )
- {
- // check if we are inserting a row
- sal_Bool bWasNew = m_pCache->m_bNew || rowDeleted();
-
- ORowSetNotifier aNotifier( this );
- // this will call cancelRowModification on the cache if necessary
-
- ORowSetRow aOldValues = getOldRow(bWasNew);
-
- positionCache( MOVE_BACKWARD );
- bRet = m_pCache->previous();
- doCancelModification( );
-
- // if m_bBeforeFirst is false and bRet is false than we stood on the first row
- if(!m_bBeforeFirst || bRet)
- {
- // notification order
- // - column values
- // - cursorMoved
- setCurrentRow( sal_True, sal_True, aOldValues, aGuard );
- }
- else
- {
- OSL_FAIL( "ORowSetBase::previous: inconsistency!" );
- // we should never reach this place, as we should not get into this whole branch if m_bBeforeFirst
- // was |true| from the beginning
- movementFailed();
- }
-
- // - IsModified
- // - IsNew
- aNotifier.fire();
-
- // - RowCount/IsRowCountFinal
- fireRowcount();
- }
- OSL_TRACE("DBACCESS ORowSetBase::previous() = %i Clone = %i\n",bRet,m_bClone);
- return bRet;
-}
-
-void ORowSetBase::setCurrentRow( sal_Bool _bMoved, sal_Bool _bDoNotify, const ORowSetRow& _rOldValues, ::osl::ResettableMutexGuard& _rGuard )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::setCurrentRow" );
- OSL_TRACE("DBACCESS ORowSetBase::setCurrentRow() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- m_bBeforeFirst = m_pCache->isBeforeFirst();
- m_bAfterLast = m_pCache->isAfterLast();
-
- if(!(m_bBeforeFirst || m_bAfterLast))
- {
- m_aBookmark = m_pCache->getBookmark();
- OSL_ENSURE(m_aBookmark.hasValue(),"Bookmark has no value!");
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- m_bIsInsertRow = sal_False;
- OSL_ENSURE(!m_aCurrentRow.isNull(),"CurrentRow is null!");
- m_aCurrentRow.setBookmark(m_aBookmark);
- OSL_ENSURE(!m_aCurrentRow.isNull() && m_aCurrentRow != m_pCache->getEnd(),"Position of matrix iterator isn't valid!");
- OSL_ENSURE(m_aCurrentRow->is(),"Currentrow isn't valid");
- OSL_ENSURE(m_aBookmark.hasValue(),"Bookmark has no value!");
-
-#if OSL_DEBUG_LEVEL > 0
- sal_Int32 nOldRow = m_pCache->getRow();
-#endif
- positionCache( MOVE_NONE_REFRESH_ONLY );
-#if OSL_DEBUG_LEVEL > 0
- sal_Int32 nNewRow = m_pCache->getRow();
-#endif
- OSL_ENSURE(nOldRow == nNewRow,"Old position is not equal to new postion");
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- m_bIsInsertRow = sal_False;
- OSL_ENSURE(!m_aCurrentRow.isNull(),"CurrentRow is nul after positionCache!");
-#if OSL_DEBUG_LEVEL > 0
- ORowSetRow rRow = (*m_aCurrentRow);
- OSL_ENSURE(rRow.is() ,"Invalid size of vector!");
-#endif
- // the cache could repositioned so we need to adjust the cache
- if ( _bMoved && m_aCurrentRow.isNull() )
- {
- positionCache( MOVE_NONE_REFRESH_ONLY );
- m_aCurrentRow = m_pCache->m_aMatrixIter;
- m_bIsInsertRow = sal_False;
- OSL_ENSURE(!m_aCurrentRow.isNull(),"CurrentRow is nul after positionCache!");
- }
- }
- else
- {
- m_aOldRow->clearRow();
- m_aCurrentRow = m_pCache->getEnd();
- m_aBookmark = Any();
- m_aCurrentRow.setBookmark(m_aBookmark);
- }
-
- // notification order
- // - column values
- if ( _bDoNotify )
- firePropertyChange(_rOldValues);
-
- // TODO: can this be done before the notifications?
- if(!(m_bBeforeFirst || m_bAfterLast) && !m_aCurrentRow.isNull() && m_aCurrentRow->is() && m_aCurrentRow != m_pCache->getEnd())
- m_aOldRow->setRow(new ORowSetValueVector( *(*m_aCurrentRow) ));
-
- if ( _bMoved && _bDoNotify )
- // - cursorMoved
- notifyAllListenersCursorMoved( _rGuard );
-
- OSL_TRACE("DBACCESS ORowSetBase::setCurrentRow() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-void ORowSetBase::checkPositioningAllowed() throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::checkPositioningAllowed" );
- if(!m_pCache || m_nResultSetType == ResultSetType::FORWARD_ONLY)
- throwFunctionSequenceException(*m_pMySelf);
-}
-
-Reference< XInterface > ORowSetBase::getStatement(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getStatement" );
- return NULL;
-}
-
-void SAL_CALL ORowSetBase::refreshRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::refreshRow" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- if ( impl_rowDeleted() )
- throwSQLException( "The current row is deleted", SQL_INVALID_CURSOR_STATE, Reference< XRowSet >( this ) );
-
- if(!(m_bBeforeFirst || m_bAfterLast))
- {
- sal_Bool bWasNew = m_pCache->m_bNew || impl_rowDeleted();
- ORowSetRow aOldValues = getOldRow(bWasNew);
- positionCache( MOVE_NONE_REFRESH_ONLY );
- m_pCache->refreshRow();
- firePropertyChange(aOldValues);
- }
-}
-
-sal_Bool SAL_CALL ORowSetBase::rowUpdated( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::rowUpdated" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
-
- if ( impl_rowDeleted() )
- return sal_False;
-
- return m_pCache->rowUpdated();
-}
-
-sal_Bool SAL_CALL ORowSetBase::rowInserted( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::rowInserted" );
- ::osl::MutexGuard aGuard( *m_pMutex );
-
- checkCache();
-
- if ( impl_rowDeleted() )
- return sal_False;
-
- return m_pCache->rowInserted();
-}
-
-sal_Bool SAL_CALL ORowSetBase::rowDeleted( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::rowDeleted" );
- ::osl::MutexGuard aGuard( *m_pMutex );
- checkCache();
- return impl_rowDeleted();
-}
-
-sal_Bool ORowSetBase::impl_rowDeleted( )
-{
- return !m_aBookmark.hasValue() && !m_bBeforeFirst && !m_bAfterLast;
-}
-
-// XWarningsSupplier
-Any SAL_CALL ORowSetBase::getWarnings( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getWarnings" );
- ::osl::MutexGuard aGuard( *m_pMutex );
-
- if ( m_pCache )
- {
- Reference< XWarningsSupplier > xWarnings( m_pCache->m_xSet.get(), UNO_QUERY );
- if ( xWarnings.is() )
- return xWarnings->getWarnings();
- }
-
- return Any();
-}
-
-void SAL_CALL ORowSetBase::clearWarnings( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::clearWarnings" );
- ::osl::MutexGuard aGuard( *m_pMutex );
-
- if ( m_pCache )
- {
- Reference< XWarningsSupplier > xWarnings( m_pCache->m_xSet.get(), UNO_QUERY );
- if ( xWarnings.is() )
- xWarnings->clearWarnings();
- }
-}
-
-void ORowSetBase::firePropertyChange(const ORowSetRow& _rOldRow)
-{
- if (!isPropertyChangeNotificationEnabled())
- return;
-
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::firePropertyChange" );
- OSL_TRACE("DBACCESS ORowSetBase::firePropertyChange() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- OSL_ENSURE(m_pColumns,"Columns can not be NULL here!");
-#if OSL_DEBUG_LEVEL > 1
- sal_Bool bNull;
- ORowSetMatrix::iterator atest;
- bNull = m_aCurrentRow.isNull();
- atest = m_aCurrentRow;
-#endif
- sal_Int32 i=0;
- try
- {
- TDataColumns::iterator aEnd = m_aDataColumns.end();
- for(TDataColumns::iterator aIter = m_aDataColumns.begin();aIter != aEnd;++aIter,++i)
- (*aIter)->fireValueChange(_rOldRow.is() ? (_rOldRow->get())[i+1] : ::connectivity::ORowSetValue());
- }
- catch(Exception&)
- {
- OSL_FAIL("firePropertyChange: Exception");
- }
- OSL_TRACE("DBACCESS ORowSetBase::firePropertyChange() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-void ORowSetBase::firePropertyChange(sal_Int32 _nPos,const ::connectivity::ORowSetValue& _rOldValue)
-{
- OSL_ENSURE(_nPos < (sal_Int32)m_aDataColumns.size(),"nPos is invalid!");
- m_aDataColumns[_nPos]->fireValueChange(_rOldValue);
-}
-
-void ORowSetBase::fireRowcount()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::fireRowcount" );
-}
-
-sal_Bool ORowSetBase::notifyAllListenersCursorBeforeMove(::osl::ResettableMutexGuard& /*_rGuard*/)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::notifyAllListenersCursorBeforeMove" );
- return sal_True;
-}
-
-void ORowSetBase::notifyAllListenersCursorMoved(::osl::ResettableMutexGuard& /*_rGuard*/)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::notifyAllListenersCursorMoved" );
-}
-
-void ORowSetBase::notifyAllListeners(::osl::ResettableMutexGuard& /*_rGuard*/)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::notifyAllListeners" );
-}
-
-sal_Bool ORowSetBase::isPropertyChangeNotificationEnabled() const
-{
- return sal_True;
-}
-
-void ORowSetBase::fireProperty( sal_Int32 _nProperty, sal_Bool _bNew, sal_Bool _bOld )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::fireProperty" );
- Any aNew = bool2any( _bNew );
- Any aOld = bool2any( _bOld );
- fire( &_nProperty, &aNew, &aOld, 1, sal_False );
-}
-
-void ORowSetBase::positionCache( CursorMoveDirection _ePrepareForDirection )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::positionCache" );
- OSL_TRACE("DBACCESS ORowSetBase::positionCache() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-
- sal_Bool bSuccess = sal_False;
- if ( m_aBookmark.hasValue() )
- {
- bSuccess = m_pCache->moveToBookmark( m_aBookmark );
- }
- else
- {
- if ( m_bBeforeFirst )
- {
- bSuccess = m_pCache->beforeFirst();
- }
- else if ( m_bAfterLast )
- {
- bSuccess = m_pCache->afterLast();
- }
- else
- {
- OSL_ENSURE( m_nDeletedPosition >= 1, "ORowSetBase::positionCache: no bookmark, and no valid 'deleted position'!" );
- switch ( _ePrepareForDirection )
- {
- case MOVE_FORWARD:
- if ( m_nDeletedPosition > 1 )
- bSuccess = m_pCache->absolute( m_nDeletedPosition - 1 );
- else
- {
- m_pCache->beforeFirst();
- bSuccess = sal_True;
- }
- break;
-
- case MOVE_BACKWARD:
- if ( m_pCache->m_bRowCountFinal && ( m_nDeletedPosition == impl_getRowCount() ) )
- {
- m_pCache->afterLast();
- bSuccess = sal_True;
- }
- else
- bSuccess = m_pCache->absolute( m_nDeletedPosition );
- break;
-
- case MOVE_NONE_REFRESH_ONLY:
- bSuccess = sal_False; // will be asserted below
- break;
- }
- }
- }
- OSL_ENSURE( bSuccess, "ORowSetBase::positionCache: failed!" );
- (void)bSuccess;
-
- OSL_TRACE("DBACCESS ORowSetBase::positionCache() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-void ORowSetBase::checkCache()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::checkCache" );
- ::connectivity::checkDisposed(m_rBHelper.bDisposed);
- if(!m_pCache)
- throwFunctionSequenceException(*m_pMySelf);
-}
-
-void ORowSetBase::movementFailed()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::movementFailed" );
- OSL_TRACE("DBACCESS ORowSetBase::movementFailed() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
- m_aOldRow->clearRow();
- m_aCurrentRow = m_pCache->getEnd();
- m_bBeforeFirst = m_pCache->isBeforeFirst();
- m_bAfterLast = m_pCache->isAfterLast();
- m_aBookmark = Any();
- m_aCurrentRow.setBookmark(m_aBookmark);
- OSL_ENSURE(m_bBeforeFirst || m_bAfterLast,"BeforeFirst or AfterLast is wrong!");
- OSL_TRACE("DBACCESS ORowSetBase::movementFailed() Clone = %i ID = %i\n",m_bClone,osl_getThreadIdentifier(NULL));
-}
-
-ORowSetRow ORowSetBase::getOldRow(sal_Bool _bWasNew)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getOldRow" );
- OSL_ENSURE(m_aOldRow.is(),"RowSetRowHElper isn't valid!");
- ORowSetRow aOldValues;
- if ( !_bWasNew && m_aOldRow->getRow().is() )
- aOldValues = new ORowSetValueVector( *(m_aOldRow->getRow())); // remember the old values
- return aOldValues;
-}
-
-void ORowSetBase::getPropertyDefaultByHandle( sal_Int32 /*_nHandle*/, Any& _rDefault ) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::getPropertyDefaultByHandle" );
- _rDefault.clear();
-}
-
-void ORowSetBase::onDeleteRow( const Any& _rBookmark )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::onDeleteRow" );
- if ( rowDeleted() )
- // not interested in
- return;
-
- ::osl::MutexGuard aGuard( *m_pMutex );
- //OSL_ENSURE( m_aBookmark.hasValue(), "ORowSetBase::onDeleteRow: Bookmark isn't valid!" );
- if ( compareBookmarks( _rBookmark, m_aBookmark ) == 0 )
- {
- positionCache( MOVE_NONE_REFRESH_ONLY );
- m_nDeletedPosition = m_pCache->getRow();
- }
-}
-
-void ORowSetBase::onDeletedRow( const Any& _rBookmark, sal_Int32 _nPos )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::onDeletedRow" );
- if ( rowDeleted() )
- {
- // if we're a clone, and on a deleted row, and the main RowSet deleted another
- // row (only the main RowSet can, clones can't), which is *before* our
- // deleted position, then we have to adjust this position
- if ( m_bClone && ( _nPos < m_nDeletedPosition ) )
- --m_nDeletedPosition;
- return;
- }
-
- ::osl::MutexGuard aGuard( *m_pMutex );
- if ( compareBookmarks( _rBookmark, m_aBookmark ) == 0 )
- {
- m_aOldRow->clearRow();
- m_aCurrentRow = m_pCache->getEnd();
- m_aBookmark = Any();
- m_aCurrentRow.setBookmark( m_aBookmark );
- }
-}
-
-sal_Int32 ORowSetBase::impl_getRowCount() const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetBase::impl_getRowCount" );
- sal_Int32 nRowCount( m_pCache->m_nRowCount );
- if ( const_cast< ORowSetBase* >( this )->rowDeleted() && !m_pCache->m_bNew )
- ++nRowCount;
- return nRowCount;
-}
-// =============================================================================
-struct ORowSetNotifierImpl
-{
- ::std::vector<sal_Int32> aChangedColumns;
- ::std::vector<Any> aChangedBookmarks;
- ORowSetValueVector::Vector aRow;
-
-};
-DBG_NAME(ORowSetNotifier)
-
-ORowSetNotifier::ORowSetNotifier( ORowSetBase* _pRowSet )
- :m_pRowSet( _pRowSet )
- ,m_bWasNew( sal_False )
- ,m_bWasModified( sal_False )
-#ifdef DBG_UTIL
- ,m_bNotifyCalled( sal_False )
-#endif
-{
- DBG_CTOR(ORowSetNotifier,NULL);
-
- OSL_ENSURE( m_pRowSet, "ORowSetNotifier::ORowSetNotifier: invalid row set. This wil crash." );
-
- // remember the "inserted" and "modified" state for later firing
- m_bWasNew = m_pRowSet->isNew( ORowSetBase::GrantNotifierAccess() );
- m_bWasModified = m_pRowSet->isModified( ORowSetBase::GrantNotifierAccess() );
-
- // if the row set is on the insert row, then we need to cancel this
- if ( m_pRowSet->isModification( ORowSetBase::GrantNotifierAccess() ) )
- m_pRowSet->doCancelModification( ORowSetBase::GrantNotifierAccess() );
-}
-
-ORowSetNotifier::ORowSetNotifier( ORowSetBase* _pRowSet,const ORowSetValueVector::Vector& i_aRow )
- :m_pImpl(new ORowSetNotifierImpl)
- ,m_pRowSet( _pRowSet )
- ,m_bWasNew( sal_False )
- ,m_bWasModified( sal_False )
-#ifdef DBG_UTIL
- ,m_bNotifyCalled( sal_False )
-#endif
-{
- DBG_CTOR(ORowSetNotifier,NULL);
-
- OSL_ENSURE( m_pRowSet, "ORowSetNotifier::ORowSetNotifier: invalid row set. This wil crash." );
- m_pImpl->aRow = i_aRow; // yes, create a copy to store the old values
-}
-
-ORowSetNotifier::~ORowSetNotifier( )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetNotifier::~ORowSetNotifier" );
- DBG_DTOR(ORowSetNotifier,NULL);
-}
-
-void ORowSetNotifier::fire()
-{
- // we're not interested in firing changes FALSE->TRUE, only TRUE->FALSE.
- // (the former would be quite pathological, e.g. after a failed movement)
-
- if ( m_bWasModified
- && ( m_bWasModified != m_pRowSet->isModified( ORowSetBase::GrantNotifierAccess() ) )
- )
- m_pRowSet->fireProperty( PROPERTY_ID_ISMODIFIED, sal_False, sal_True, ORowSetBase::GrantNotifierAccess() );
-
- if ( m_bWasNew
- && ( m_bWasNew != m_pRowSet->isNew( ORowSetBase::GrantNotifierAccess() ) )
- )
- m_pRowSet->fireProperty( PROPERTY_ID_ISNEW, sal_False, sal_True, ORowSetBase::GrantNotifierAccess() );
-
-#ifdef DBG_UTIL
- m_bNotifyCalled = sal_True;
-#endif
-}
-
-::std::vector<sal_Int32>& ORowSetNotifier::getChangedColumns() const
-{
- OSL_ENSURE(m_pImpl.get(),"Illegal CTor call, use the other one!");
- return m_pImpl->aChangedColumns;
-}
-
-::std::vector<Any>& ORowSetNotifier::getChangedBookmarks() const
-{
- OSL_ENSURE(m_pImpl.get(),"Illegal CTor call, use the other one!");
- return m_pImpl->aChangedBookmarks;
-}
-
-void ORowSetNotifier::firePropertyChange()
-{
- OSL_ENSURE(m_pImpl.get(),"Illegal CTor call, use the other one!");
- if( m_pImpl.get() )
- {
- ::std::vector<sal_Int32>::iterator aIter = m_pImpl->aChangedColumns.begin();
- for(;aIter != m_pImpl->aChangedColumns.end();++aIter)
- {
- m_pRowSet->firePropertyChange((*aIter)-1 ,m_pImpl->aRow[(*aIter)-1], ORowSetBase::GrantNotifierAccess());
- }
- if ( !m_pImpl->aChangedColumns.empty() )
- m_pRowSet->fireProperty(PROPERTY_ID_ISMODIFIED,sal_True,sal_False, ORowSetBase::GrantNotifierAccess());
- }
-}
-} // namespace dbaccess
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/RowSetBase.hxx b/dbaccess/source/core/api/RowSetBase.hxx
deleted file mode 100644
index 5b1f0d08e..000000000
--- a/dbaccess/source/core/api/RowSetBase.hxx
+++ /dev/null
@@ -1,427 +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.
- *
- ************************************************************************/
-#ifndef DBACCESS_CORE_API_ROWSETBASE_HXX
-#define DBACCESS_CORE_API_ROWSETBASE_HXX
-
-#include <cppuhelper/implbase10.hxx>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XColumnLocate.hpp>
-#include <com/sun/star/sdbc/XCloseable.hpp>
-#include <com/sun/star/sdbcx/XRowLocate.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <cppuhelper/interfacecontainer.h>
-#include <connectivity/sqlerror.hxx>
-#include <connectivity/CommonTools.hxx>
-#include <comphelper/propertystatecontainer.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include <com/sun/star/sdbc/XRowSet.hpp>
-#include <com/sun/star/util/XNumberFormatTypes.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include "RowSetRow.hxx"
-#include <comphelper/broadcasthelper.hxx>
-#include "RowSetCacheIterator.hxx"
-#include "core_resource.hxx"
-#include <comphelper/componentcontext.hxx>
-
-#include <functional>
-
-
-namespace com { namespace sun { namespace star {
- namespace sdb { struct RowChangeEvent; }
- namespace lang { struct Locale; }
-} } }
-
-namespace dbaccess
-{
- class OEmptyCollection;
-
- typedef ::cppu::ImplHelper10< ::com::sun::star::sdbcx::XRowLocate,
- ::com::sun::star::sdbc::XRow,
- ::com::sun::star::sdbc::XResultSetMetaDataSupplier,
- ::com::sun::star::sdbc::XWarningsSupplier,
- ::com::sun::star::sdbc::XColumnLocate,
- ::com::sun::star::sdbcx::XColumnsSupplier,
- ::com::sun::star::lang::XServiceInfo,
- ::com::sun::star::sdbc::XRowSet,
- ::com::sun::star::sdbc::XCloseable,
- ::com::sun::star::lang::XUnoTunnel> ORowSetBase_BASE;
-
- class ORowSetCache;
- class ORowSetDataColumns;
- class ORowSetCacheIterator;
- class ORowSetDataColumn;
- class ORowSetBase : public ORowSetBase_BASE,
- public ::comphelper::OPropertyStateContainer,
- public ::comphelper::OPropertyArrayUsageHelper<ORowSetBase> // this class hold the static property info
- {
- OModuleClient m_aModuleClient;
- protected:
- typedef ::std::vector<ORowSetDataColumn*> TDataColumns;
- ::osl::Mutex* m_pMutex; // this the mutex form the rowset itself
- ::osl::Mutex m_aRowCountMutex, // mutex for rowcount changes
- // we need a extra mutex for columns to prevend deadlock when setting new values
- // for a row
- m_aColumnsMutex;
-
- ::com::sun::star::uno::Any m_aBookmark;
- ORowSetCacheIterator m_aCurrentRow; // contains the actual fetched row
- TORowSetOldRowHelperRef m_aOldRow;
- TDataColumns m_aDataColumns; // holds the columns as m_pColumns but know the implementation class
- connectivity::ORowSetValue m_aEmptyValue; // only for error case
-
- ::cppu::OWeakObject* m_pMySelf; // set by derived classes
- ORowSetCache* m_pCache; // the cache is used by the rowset and his clone (shared)
- ORowSetDataColumns* m_pColumns; // represent the select columns
- ::cppu::OBroadcastHelper& m_rBHelper; // must be set from the derived classes
- // is used when the formatkey for database types is set
- ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatTypes> m_xNumberFormatTypes;
- OEmptyCollection* m_pEmptyCollection;
-
- ::comphelper::ComponentContext m_aContext;
- ::connectivity::SQLError m_aErrors;
-
- sal_Int32 m_nLastColumnIndex; // the last column ask for, used for wasNull()
- sal_Int32 m_nDeletedPosition; // is set only when a row was deleted
- sal_Int32 m_nResultSetType; // fetch property
- sal_Int32 m_nResultSetConcurrency;
- sal_Bool m_bClone; // I'm clone or not
- sal_Bool m_bIgnoreResult ;
- sal_Bool m_bBeforeFirst : 1;
- sal_Bool m_bAfterLast : 1;
- sal_Bool m_bIsInsertRow : 1;
-
- protected:
- ORowSetBase(
- const ::comphelper::ComponentContext& _rContext,
- ::cppu::OBroadcastHelper& _rBHelper,
- ::osl::Mutex* _pMutex
- );
-
- // fire a notification for all that are listening on column::VALUE property
- void firePropertyChange(const ORowSetRow& _rOldRow);
- // fire a change for one column
- // _nPos starts at zero
- void firePropertyChange(sal_Int32 _nPos,const ::connectivity::ORowSetValue& _rNewValue);
-
- // fire if rowcount changed
- virtual void fireRowcount();
- // notify row changed
- virtual sal_Bool notifyAllListenersCursorBeforeMove(::osl::ResettableMutexGuard& _rGuard);
- // notify cursor moved
- virtual void notifyAllListenersCursorMoved(::osl::ResettableMutexGuard& _rGuard);
- // notify all that rowset changed
- virtual void notifyAllListeners(::osl::ResettableMutexGuard& _rGuard);
-
- // cancel the insertion, if necessary (means if we're on the insert row)
- virtual void doCancelModification( ) = 0;
- // return <TRUE/> if and only if we're using the insert row (means: we're updating _or_ inserting)
- virtual sal_Bool isModification( ) = 0;
- // return <TRUE/> if and only if the current row is modified
- // TODO: isn't this the same as isModification?
- virtual sal_Bool isModified( ) = 0;
- // return <TRUE/> if and only if the current row is the insert row
- virtual sal_Bool isNew( ) = 0;
- // return <TRUE/> if the property change notification should be fired
- // upon property change.
- virtual sal_Bool isPropertyChangeNotificationEnabled() const;
- // notify the change of a boolean property
- void fireProperty( sal_Int32 _nProperty, sal_Bool _bNew, sal_Bool _bOld );
-
- // OPropertyStateContainer
- virtual void getPropertyDefaultByHandle( sal_Int32 _nHandle, ::com::sun::star::uno::Any& _rDefault ) const;
- virtual void SAL_CALL getFastPropertyValue(::com::sun::star::uno::Any& rValue,sal_Int32 nHandle) const;
-
- enum CursorMoveDirection
- {
- /// denotes a cursor move forward
- MOVE_FORWARD,
- /// denotes a cursor move backwards
- MOVE_BACKWARD,
- /// denotes no cursor move at all, used when the current row is to be refreshed only
- MOVE_NONE_REFRESH_ONLY
- };
- /** positions the cache in preparation of a cursor move
-
- Normally, the cache is simply moved to our bookmark (m_aBookmark). If however the current
- row is deleted, then the cache is properly positioned for a following cursor movement in the
- given direction.
-
- @param _ePrepareForDirection
- the direction into which the cursor should be moved after the call. If we're currently not on
- a deleted row, this parameter is ignored, since in this case the cache is simply moved to
- m_aBookmark.</br>
- If, however, we're currently on a deleted row, this is used to properly position the cache
- using <member>m_nDeletedPosition</member>.<br/>
- In this case, MOVE_NONE_REFRESH_ONLY is not supported. This is because the deleted row
- (to which the RowSet currently points to) is not present in the cache. So, you cannot move the
- cache to this row.
- */
- void positionCache( CursorMoveDirection _ePrepareForDirection );
-
- // returns a value of a column of the current row
- const connectivity::ORowSetValue& getValue(sal_Int32 columnIndex);
- // the cache has to be checked before calling this method
- const connectivity::ORowSetValue& impl_getValue(sal_Int32 columnIndex);
- // sets the current and the bookmark
- void setCurrentRow( sal_Bool _bMoved, sal_Bool _bDoNotify, const ORowSetRow& _rOldValues, ::osl::ResettableMutexGuard& _rGuard);
- void checkPositioningAllowed() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // checks if the cache is null
- void checkCache();
- // sets the bookmark to Any()
- // m_aCurrentRow to end of matrix
- // m_aOldRow to NULL
- void movementFailed();
-
- ORowSetRow getOldRow(sal_Bool _bWasNew);
- /** move the cache the postion defined by the member functor
- @param _aCheckFunctor
- Return <TRUE/> when we already stand on the row we want to.
- @param _aMovementFunctor
- The mehtod used to move.
- @return
- <TRUE/> if movement was successful.
- */
- sal_Bool SAL_CALL move( ::std::mem_fun_t<sal_Bool,ORowSetBase>& _aCheckFunctor,
- ::std::mem_fun_t<sal_Bool,ORowSetCache>& _aMovementFunctor);
-
- /** same meaning as isFirst. Only need by mem_fun
- @return
- <TRUE/> if so.
- */
- sal_Bool isOnFirst();
- /** same meaning as isLast. Only need by mem_fun
- @return
- <TRUE/> if so.
- */
- sal_Bool isOnLast();
-
- /** returns the current row count
-
- This function takes into account that we might actually be positioned on a
- deleted row, so that m_pCache->m_nRowCount does not really reflect the actual
- count.
-
- @precond
- Our mutext is locked.
- */
- sal_Int32 impl_getRowCount() const;
-
- // the checkCache has to be called before calling this methods
- sal_Bool impl_wasNull();
- sal_Int32 impl_getRow();
- sal_Bool impl_rowDeleted();
-
- public:
- virtual ~ORowSetBase();
-
- // OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- // com::sun::star::beans::XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException)
- {
- return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
- }
-
- // comphelper::OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
- // cppu::OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- // com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XWarningsSupplier
- virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XResultSetMetaDataSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XColumnLocate
- virtual sal_Int32 SAL_CALL findColumn( const ::rtl::OUString& columnName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XColumnsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getColumns( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XRow
- virtual sal_Bool SAL_CALL wasNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getString( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL getBoolean( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int8 SAL_CALL getByte( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int16 SAL_CALL getShort( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getInt( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int64 SAL_CALL getLong( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual float SAL_CALL getFloat( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual double SAL_CALL getDouble( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Date SAL_CALL getDate( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Time SAL_CALL getTime( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XRowLocate
- virtual ::com::sun::star::uno::Any SAL_CALL getBookmark( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveToBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL compareBookmarks( const ::com::sun::star::uno::Any& first, const ::com::sun::star::uno::Any& second ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL hashBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XResultSet
- virtual sal_Bool SAL_CALL next( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isBeforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isAfterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL beforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL afterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL first( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL last( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL absolute( sal_Int32 row ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL relative( sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL previous( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL refreshRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowUpdated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowInserted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowDeleted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XRowSet
- virtual void SAL_CALL execute( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException) = 0;
- virtual void SAL_CALL addRowSetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener >& listener ) throw(::com::sun::star::uno::RuntimeException) = 0;
- virtual void SAL_CALL removeRowSetListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener >& listener ) throw(::com::sun::star::uno::RuntimeException) = 0;
-
- // is called when the rowset is going to delete this bookmark _rBookmark
- void onDeleteRow( const ::com::sun::star::uno::Any& _rBookmark );
- // is called when the rowset has deleted this bookmark _rBookmark
- void onDeletedRow( const ::com::sun::star::uno::Any& _rBookmark, sal_Int32 _nPos );
-
- // ==========================================================
- // granular access control
- struct GrantNotifierAccess { friend class ORowSetNotifier; private: GrantNotifierAccess () { } };
-
- // cancel the insertion, if necessary (means if we're on the insert row)
- inline void doCancelModification( const GrantNotifierAccess& ) { doCancelModification(); }
- inline sal_Bool isModification( const GrantNotifierAccess& ) { return isModification(); }
- inline sal_Bool isModified( const GrantNotifierAccess& ) { return isModified(); }
- inline sal_Bool isNew( const GrantNotifierAccess& ) { return isNew(); }
- inline sal_Bool isInsertRow() { return m_bIsInsertRow; } // isNew() || isModified(); }
- inline void fireProperty( sal_Int32 _nProperty, sal_Bool _bNew, sal_Bool _bOld, const GrantNotifierAccess& )
- {
- fireProperty( _nProperty, _bNew, _bOld );
- }
- inline void firePropertyChange(sal_Int32 _nPos,const ::connectivity::ORowSetValue& _rNewValue, const GrantNotifierAccess& )
- {
- firePropertyChange(_nPos,_rNewValue);
- }
- using ::comphelper::OPropertyStateContainer::getFastPropertyValue;
-
- ::osl::Mutex* getMutex() const { return m_pMutex; }
- };
-
- // ========================================================================
- /** eases the handling of the doCancelModification and notifyCancelInsert methods
-
- <p>The class can only be used on the stack, within a method of ORowSetBase (or derivees)</p>
- */
- struct ORowSetNotifierImpl;
- class ORowSetNotifier
- {
- private:
- ::std::auto_ptr<ORowSetNotifierImpl> m_pImpl;
- ORowSetBase* m_pRowSet;
- // not aquired! This is not necessary because this class here is to be used on the stack within
- // a method of ORowSetBase (or derivees)
- sal_Bool m_bWasNew;
- sal_Bool m_bWasModified;
-
-#ifdef DBG_UTIL
- sal_Bool m_bNotifyCalled;
-#endif
-
- public:
- /** constructs the object, and cancels the insertion
-
- @see ORowSetBase::doCancelModification
- */
- ORowSetNotifier( ORowSetBase* m_pRowSet );
-
- /** use this one to consturct an vector for change value notification
- */
- ORowSetNotifier( ORowSetBase* m_pRowSet,const ORowSetValueVector::Vector& i_aRow );
-
- // destructs the object. <member>fire</member> has to be called before.
- ~ORowSetNotifier( );
-
- /** notifies the insertion
-
- <p>This has <em>not</em> been put into the destructor by intention!<br/>
-
- The destructor is called during stack unwinding in case of an exception, so if we would do
- listener notification there, this would have the potential of another exception during stack
- unwinding, which would terminate the application.</p>
-
- @see ORowSetBase::notifyCancelInsert
- */
- void fire();
-
- /** notifies value change events and notifies IsModified
- @param i_aChangedColumns the index of the changed value columns
- @param i_aRow the old values
- @see ORowSetBase::notifyCancelInsert
- */
- void firePropertyChange();
-
- /** use this one to store the inde of the changed column values
- */
- ::std::vector<sal_Int32>& getChangedColumns() const;
- ::std::vector<com::sun::star::uno::Any>& getChangedBookmarks() const;
-
- };
-
-} // end of namespace
-
-#endif // DBACCESS_CORE_API_ROWSETBASE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/RowSetCache.cxx b/dbaccess/source/core/api/RowSetCache.cxx
deleted file mode 100644
index 364bfbfb5..000000000
--- a/dbaccess/source/core/api/RowSetCache.cxx
+++ /dev/null
@@ -1,1703 +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_dbaccess.hxx"
-
-#include "BookmarkSet.hxx"
-#include "CRowSetColumn.hxx"
-#include "CRowSetDataColumn.hxx"
-#include "KeySet.hxx"
-#include "OptimisticSet.hxx"
-#include "RowSetBase.hxx"
-#include "RowSetCache.hxx"
-#include "StaticSet.hxx"
-#include "WrappedResultSet.hxx"
-#include "core_resource.hrc"
-#include "core_resource.hxx"
-#include "dbastrings.hrc"
-
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
-#include <com/sun/star/sdbcx/CompareBookmark.hpp>
-#include <com/sun/star/sdbcx/KeyType.hpp>
-#include <com/sun/star/sdbcx/Privilege.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdbcx/XKeysSupplier.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-
-#include <comphelper/extract.hxx>
-#include <comphelper/property.hxx>
-#include <comphelper/seqstream.hxx>
-#include <comphelper/uno3.hxx>
-#include <connectivity/dbexception.hxx>
-#include <connectivity/dbtools.hxx>
-#include <connectivity/sqliterator.hxx>
-#include <connectivity/sqlnode.hxx>
-#include <connectivity/sqlparse.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <osl/diagnose.h>
-
-#include <algorithm>
-
-using namespace dbaccess;
-using namespace dbtools;
-using namespace connectivity;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::cppu;
-using namespace ::osl;
-
-#define CHECK_MATRIX_POS(M) OSL_ENSURE(((M) >= static_cast<ORowSetMatrix::difference_type>(0)) && ((M) < static_cast<sal_Int32>(m_pMatrix->size())),"Position is invalid!")
-
-DBG_NAME(ORowSetCache)
-
-ORowSetCache::ORowSetCache(const Reference< XResultSet >& _xRs,
- const Reference< XSingleSelectQueryAnalyzer >& _xAnalyzer,
- const ::comphelper::ComponentContext& _rContext,
- const ::rtl::OUString& _rUpdateTableName,
- sal_Bool& _bModified,
- sal_Bool& _bNew,
- const ORowSetValueVector& _aParameterValueForCache,
- const ::rtl::OUString& i_sRowSetFilter,
- sal_Int32 i_nMaxRows)
- :m_xSet(_xRs)
- ,m_xMetaData(Reference< XResultSetMetaDataSupplier >(_xRs,UNO_QUERY)->getMetaData())
- ,m_aContext( _rContext )
- ,m_pCacheSet(NULL)
- ,m_pMatrix(NULL)
- ,m_pInsertMatrix(NULL)
- ,m_nLastColumnIndex(0)
- ,m_nFetchSize(0)
- ,m_nRowCount(0)
- ,m_nPrivileges( Privilege::SELECT )
- ,m_nPosition(0)
- ,m_nStartPos(0)
- ,m_nEndPos(0)
- ,m_bRowCountFinal(sal_False)
- ,m_bBeforeFirst(sal_True)
- ,m_bAfterLast( sal_False )
- ,m_bUpdated(sal_False)
- ,m_bModified(_bModified)
- ,m_bNew(_bNew)
-{
- DBG_CTOR(ORowSetCache,NULL);
-
- // first try if the result can be used to do inserts and updates
- Reference< XPropertySet> xProp(_xRs,UNO_QUERY);
- Reference< XPropertySetInfo > xPropInfo = xProp->getPropertySetInfo();
- sal_Bool bBookmarkable = sal_False;
- try
- {
- Reference< XResultSetUpdate> xUp(_xRs,UNO_QUERY_THROW);
- bBookmarkable = xPropInfo->hasPropertyByName(PROPERTY_ISBOOKMARKABLE) &&
- any2bool(xProp->getPropertyValue(PROPERTY_ISBOOKMARKABLE)) && Reference< XRowLocate >(_xRs, UNO_QUERY).is();
- if ( bBookmarkable )
- {
- xUp->moveToInsertRow();
- xUp->cancelRowUpdates();
- _xRs->beforeFirst();
- m_nPrivileges = Privilege::SELECT|Privilege::DELETE|Privilege::INSERT|Privilege::UPDATE;
- m_pCacheSet = new WrappedResultSet(i_nMaxRows);
- m_xCacheSet = m_pCacheSet;
- m_pCacheSet->construct(_xRs,i_sRowSetFilter);
- return;
- }
- }
- catch(const Exception& ex)
- {
- (void)ex;
- }
- try
- {
- if ( xPropInfo->hasPropertyByName(PROPERTY_RESULTSETTYPE) &&
- ::comphelper::getINT32(xProp->getPropertyValue(PROPERTY_RESULTSETTYPE)) != ResultSetType::FORWARD_ONLY)
- _xRs->beforeFirst();
- }
- catch(const SQLException& e)
- {
- (void)e;
- }
-
- // check if all keys of the updateable table are fetched
- sal_Bool bAllKeysFound = sal_False;
- sal_Int32 nTablesCount = 0;
-
- sal_Bool bNeedKeySet = !bBookmarkable || (xPropInfo->hasPropertyByName(PROPERTY_RESULTSETCONCURRENCY) &&
- ::comphelper::getINT32(xProp->getPropertyValue(PROPERTY_RESULTSETCONCURRENCY)) == ResultSetConcurrency::READ_ONLY);
-
- Reference< XIndexAccess> xUpdateTableKeys;
- ::rtl::OUString aUpdateTableName = _rUpdateTableName;
- Reference< XConnection> xConnection;
- // first we need a connection
- Reference< XStatement> xStmt(_xRs->getStatement(),UNO_QUERY);
- if(xStmt.is())
- xConnection = xStmt->getConnection();
- else
- {
- Reference< XPreparedStatement> xPrepStmt(_xRs->getStatement(),UNO_QUERY);
- xConnection = xPrepStmt->getConnection();
- }
- OSL_ENSURE(xConnection.is(),"No connection!");
- if(_xAnalyzer.is())
- {
- try
- {
- Reference<XTablesSupplier> xTabSup(_xAnalyzer,UNO_QUERY);
- OSL_ENSURE(xTabSup.is(),"ORowSet::execute composer isn't a tablesupplier!");
- Reference<XNameAccess> xTables = xTabSup->getTables();
- Sequence< ::rtl::OUString> aTableNames = xTables->getElementNames();
- if ( aTableNames.getLength() > 1 && !_rUpdateTableName.getLength() && bNeedKeySet )
- {// here we have a join or union and nobody told us which table to update, so we update them all
- m_nPrivileges = Privilege::SELECT|Privilege::DELETE|Privilege::INSERT|Privilege::UPDATE;
- OptimisticSet* pCursor = new OptimisticSet(m_aContext,xConnection,_xAnalyzer,_aParameterValueForCache,i_nMaxRows,m_nRowCount);
- m_pCacheSet = pCursor;
- m_xCacheSet = m_pCacheSet;
- try
- {
- m_pCacheSet->construct(_xRs,i_sRowSetFilter);
- if ( pCursor->isReadOnly() )
- m_nPrivileges = Privilege::SELECT;
- m_aKeyColumns = pCursor->getJoinedKeyColumns();
- return;
- }
- catch(const Exception&)
- {
- }
- m_pCacheSet = NULL;
- m_xCacheSet.clear();
- }
- else
- {
- if(_rUpdateTableName.getLength() && xTables->hasByName(_rUpdateTableName))
- xTables->getByName(_rUpdateTableName) >>= m_aUpdateTable;
- else if(xTables->getElementNames().getLength())
- {
- aUpdateTableName = xTables->getElementNames()[0];
- xTables->getByName(aUpdateTableName) >>= m_aUpdateTable;
- }
- Reference<XIndexAccess> xIndexAccess(xTables,UNO_QUERY);
- if(xIndexAccess.is())
- nTablesCount = xIndexAccess->getCount();
- else
- nTablesCount = xTables->getElementNames().getLength();
-
- if(m_aUpdateTable.is() && nTablesCount < 3) // for we can't handle more than 2 tables in our keyset
- {
- Reference<XPropertySet> xSet(m_aUpdateTable,UNO_QUERY);
- const Reference<XNameAccess> xPrimaryKeyColumns = dbtools::getPrimaryKeyColumns_throw(xSet);
- if ( xPrimaryKeyColumns.is() )
- {
- Reference<XColumnsSupplier> xColSup(_xAnalyzer,UNO_QUERY);
- if ( xColSup.is() )
- {
- Reference<XNameAccess> xSelColumns = xColSup->getColumns();
- Reference<XDatabaseMetaData> xMeta = xConnection->getMetaData();
- SelectColumnsMetaData aColumnNames(xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers() ? true : false);
- ::dbaccess::getColumnPositions(xSelColumns,xPrimaryKeyColumns->getElementNames(),aUpdateTableName,aColumnNames);
- bAllKeysFound = !aColumnNames.empty() && sal_Int32(aColumnNames.size()) == xPrimaryKeyColumns->getElementNames().getLength();
- }
- }
- }
- }
- }
- catch(Exception&)
- {
- }
- }
-
- // first check if resultset is bookmarkable
- if(!bNeedKeySet)
- {
- try
- {
- m_pCacheSet = new OBookmarkSet(i_nMaxRows);
- m_xCacheSet = m_pCacheSet;
- m_pCacheSet->construct(_xRs,i_sRowSetFilter);
-
- // check privileges
- m_nPrivileges = Privilege::SELECT;
- if(Reference<XResultSetUpdate>(_xRs,UNO_QUERY).is()) // this interface is optional so we have to check it
- {
- Reference<XPropertySet> xTable(m_aUpdateTable,UNO_QUERY);
- if(xTable.is() && xTable->getPropertySetInfo()->hasPropertyByName(PROPERTY_PRIVILEGES))
- {
- m_nPrivileges = 0;
- xTable->getPropertyValue(PROPERTY_PRIVILEGES) >>= m_nPrivileges;
- if(!m_nPrivileges)
- m_nPrivileges = Privilege::SELECT;
- }
- }
- }
- catch(const SQLException&)
- {
- bNeedKeySet = sal_True;
- }
-
- }
- if(bNeedKeySet)
- {
- // need to check if we could handle this select clause
- bAllKeysFound = bAllKeysFound && (nTablesCount == 1 || checkJoin(xConnection,_xAnalyzer,aUpdateTableName));
-
- if(!bAllKeysFound )
- {
- if ( bBookmarkable )
- {
- // here I know that we have a read only bookmarable cursor
- _xRs->beforeFirst();
- m_nPrivileges = Privilege::SELECT;
- m_pCacheSet = new WrappedResultSet(i_nMaxRows);
- m_xCacheSet = m_pCacheSet;
- m_pCacheSet->construct(_xRs,i_sRowSetFilter);
- return;
- }
- m_pCacheSet = new OStaticSet(i_nMaxRows);
- m_xCacheSet = m_pCacheSet;
- m_pCacheSet->construct(_xRs,i_sRowSetFilter);
- m_nPrivileges = Privilege::SELECT;
- }
- else
- {
- Reference<XDatabaseMetaData> xMeta = xConnection->getMetaData();
- SelectColumnsMetaData aColumnNames(xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers() ? true : false);
- Reference<XColumnsSupplier> xColSup(_xAnalyzer,UNO_QUERY);
- Reference<XNameAccess> xSelColumns = xColSup->getColumns();
- Reference<XNameAccess> xColumns = m_aUpdateTable->getColumns();
- ::dbaccess::getColumnPositions(xSelColumns,xColumns->getElementNames(),aUpdateTableName,aColumnNames);
-
- // check privileges
- m_nPrivileges = Privilege::SELECT;
- sal_Bool bNoInsert = sal_False;
-
- Sequence< ::rtl::OUString> aNames(xColumns->getElementNames());
- const ::rtl::OUString* pIter = aNames.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aNames.getLength();
- for(;pIter != pEnd;++pIter)
- {
- Reference<XPropertySet> xColumn(xColumns->getByName(*pIter),UNO_QUERY);
- OSL_ENSURE(xColumn.is(),"Column in table is null!");
- if(xColumn.is())
- {
- sal_Int32 nNullable = 0;
- xColumn->getPropertyValue(PROPERTY_ISNULLABLE) >>= nNullable;
- if(nNullable == ColumnValue::NO_NULLS && aColumnNames.find(*pIter) == aColumnNames.end())
- { // we found a column where null is not allowed so we can't insert new values
- bNoInsert = sal_True;
- break; // one column is enough
- }
- }
- }
-
- OKeySet* pKeySet = new OKeySet(m_aUpdateTable,xUpdateTableKeys,aUpdateTableName ,_xAnalyzer,_aParameterValueForCache,i_nMaxRows,m_nRowCount);
- try
- {
- m_pCacheSet = pKeySet;
- m_xCacheSet = m_pCacheSet;
- pKeySet->construct(_xRs,i_sRowSetFilter);
-
- if(Reference<XResultSetUpdate>(_xRs,UNO_QUERY).is()) // this interface is optional so we have to check it
- {
- Reference<XPropertySet> xTable(m_aUpdateTable,UNO_QUERY);
- if(xTable.is() && xTable->getPropertySetInfo()->hasPropertyByName(PROPERTY_PRIVILEGES))
- {
- m_nPrivileges = 0;
- xTable->getPropertyValue(PROPERTY_PRIVILEGES) >>= m_nPrivileges;
- if(!m_nPrivileges)
- m_nPrivileges = Privilege::SELECT;
- }
- }
- if(bNoInsert)
- m_nPrivileges |= ~Privilege::INSERT; // remove the insert privilege
- }
- catch(const SQLException&)
- {
- // we couldn't create a keyset here so we have to create a static cache
- if ( m_pCacheSet )
- m_pCacheSet = NULL;
- m_xCacheSet = NULL;
- m_pCacheSet = new OStaticSet(i_nMaxRows);
- m_xCacheSet = m_pCacheSet;
- m_pCacheSet->construct(_xRs,i_sRowSetFilter);
- m_nPrivileges = Privilege::SELECT;
- }
- }
-
- }
- // last check
- if(!bAllKeysFound && xProp->getPropertySetInfo()->hasPropertyByName(PROPERTY_RESULTSETCONCURRENCY) &&
- ::comphelper::getINT32(xProp->getPropertyValue(PROPERTY_RESULTSETCONCURRENCY)) == ResultSetConcurrency::READ_ONLY)
- m_nPrivileges = Privilege::SELECT;
-}
-
-ORowSetCache::~ORowSetCache()
-{
- m_pCacheSet = NULL;
- m_xCacheSet = NULL;
- if(m_pMatrix)
- {
- m_pMatrix->clear();
- delete m_pMatrix;
- }
-
- if(m_pInsertMatrix)
- {
- m_pInsertMatrix->clear();
- delete m_pInsertMatrix;
- }
- m_xSet = WeakReference< XResultSet>();
- m_xMetaData = NULL;
- m_aUpdateTable = NULL;
-
- DBG_DTOR(ORowSetCache,NULL);
-}
-
-void ORowSetCache::setFetchSize(sal_Int32 _nSize)
-{
- if(_nSize == m_nFetchSize)
- return;
-
- m_nFetchSize = _nSize;
- if(!m_pMatrix)
- {
- m_pMatrix = new ORowSetMatrix(_nSize);
- m_aMatrixIter = m_pMatrix->end();
- m_aMatrixEnd = m_pMatrix->end();
-
- m_pInsertMatrix = new ORowSetMatrix(1); // a little bit overkill but ??? :-)
- m_aInsertRow = m_pInsertMatrix->end();
- }
- else
- {
- // now correct the iterator in our iterator vector
- ::std::vector<sal_Int32> aPositions;
- ::std::map<sal_Int32,sal_Bool> aCacheIterToChange;
- // first get the positions where they stand now
- ORowSetCacheMap::iterator aCacheIter = m_aCacheIterators.begin();
- ORowSetCacheMap::iterator aCacheEnd = m_aCacheIterators.end();
- for(;aCacheIter != aCacheEnd;++aCacheIter)
- {
- aCacheIterToChange[aCacheIter->first] = sal_False;
- if ( !aCacheIter->second.pRowSet->isInsertRow()
- /*&& aCacheIter->second.aIterator != m_pMatrix->end()*/ && !m_bModified )
- {
- ptrdiff_t nDist = (aCacheIter->second.aIterator - m_pMatrix->begin());
- aPositions.push_back(nDist);
- aCacheIterToChange[aCacheIter->first] = sal_True;
- }
- }
- sal_Int32 nKeyPos = (m_aMatrixIter - m_pMatrix->begin());
- m_pMatrix->resize(_nSize);
-
- if ( nKeyPos < _nSize )
- m_aMatrixIter = m_pMatrix->begin() + nKeyPos;
- else
- m_aMatrixIter = m_pMatrix->end();
- m_aMatrixEnd = m_pMatrix->end();
-
- // now adjust their positions because a resize invalidates all iterators
- ::std::vector<sal_Int32>::const_iterator aIter = aPositions.begin();
- ::std::map<sal_Int32,sal_Bool>::const_iterator aPosChangeIter = aCacheIterToChange.begin();
- for( aCacheIter = m_aCacheIterators.begin();
- aPosChangeIter != aCacheIterToChange.end();
- ++aPosChangeIter,++aCacheIter)
- {
- if ( aPosChangeIter->second )
- {
- CHECK_MATRIX_POS(*aIter);
- if ( *aIter < _nSize )
- aCacheIter->second.aIterator = m_pMatrix->begin() + *aIter++;
- else
- aCacheIter->second.aIterator = m_pMatrix->end();
- }
- }
- }
- if(!m_nPosition)
- {
- sal_Int32 nNewSt = 1;
- fillMatrix(nNewSt,_nSize+1);
- m_nStartPos = 0;
- m_nEndPos = _nSize;
- }
- else if (m_nStartPos < m_nPosition && m_nPosition < m_nEndPos)
- {
- sal_Int32 nNewSt = -1;
- fillMatrix(nNewSt,_nSize+1);
- m_nStartPos = 0;
- m_nEndPos = _nSize;
- }
-}
-
-// XResultSetMetaDataSupplier
-Reference< XResultSetMetaData > ORowSetCache::getMetaData( )
-{
- return m_xMetaData;
-}
-
-Any lcl_getBookmark(ORowSetValue& i_aValue,OCacheSet* i_pCacheSet)
-{
- switch ( i_aValue.getTypeKind() )
- {
- case DataType::TINYINT:
- case DataType::SMALLINT:
- case DataType::INTEGER:
- return makeAny((sal_Int32)i_aValue);
- default:
- if ( i_pCacheSet && i_aValue.isNull())
- i_aValue = i_pCacheSet->getBookmark();
- return i_aValue.getAny();
- }
-}
-
-// ::com::sun::star::sdbcx::XRowLocate
-Any ORowSetCache::getBookmark( )
-{
- if(m_bAfterLast)
- throwFunctionSequenceException(m_xSet.get());
-
- if ( m_aMatrixIter >= m_pMatrix->end() || m_aMatrixIter < m_pMatrix->begin() || !(*m_aMatrixIter).is())
- {
- return Any(); // this is allowed here because the rowset knowns what it is doing
- }
-
- return lcl_getBookmark(((*m_aMatrixIter)->get())[0],m_pCacheSet);
-}
-
-sal_Bool ORowSetCache::moveToBookmark( const Any& bookmark )
-{
- if ( m_pCacheSet->moveToBookmark(bookmark) )
- {
- m_bBeforeFirst = sal_False;
- m_nPosition = m_pCacheSet->getRow();
-
- checkPositionFlags();
-
- if(!m_bAfterLast)
- {
- moveWindow();
- checkPositionFlags();
- if ( !m_bAfterLast )
- {
- m_aMatrixIter = calcPosition();
- OSL_ENSURE(m_aMatrixIter->is(),"Iterator after moveToBookmark not valid");
- }
- else
- m_aMatrixIter = m_pMatrix->end();
- }
- else
- m_aMatrixIter = m_pMatrix->end();
- }
- else
- return sal_False;
-
- return m_aMatrixIter != m_pMatrix->end() && (*m_aMatrixIter).is();
-}
-
-sal_Bool ORowSetCache::moveRelativeToBookmark( const Any& bookmark, sal_Int32 rows )
-{
- sal_Bool bRet( moveToBookmark( bookmark ) );
- if ( bRet )
- {
- m_nPosition = m_pCacheSet->getRow() + rows;
- absolute(m_nPosition);
-
- bRet = m_aMatrixIter != m_pMatrix->end() && (*m_aMatrixIter).is();
- }
-
- return bRet;
-}
-
-sal_Int32 ORowSetCache::compareBookmarks( const Any& _first, const Any& _second )
-{
- return (!_first.hasValue() || !_second.hasValue()) ? CompareBookmark::NOT_COMPARABLE : m_pCacheSet->compareBookmarks(_first,_second);
-}
-
-sal_Bool ORowSetCache::hasOrderedBookmarks( )
-{
- return m_pCacheSet->hasOrderedBookmarks();
-}
-
-sal_Int32 ORowSetCache::hashBookmark( const Any& bookmark )
-{
- return m_pCacheSet->hashBookmark(bookmark);
-}
-
-// XRowUpdate
-void ORowSetCache::updateNull(sal_Int32 columnIndex,ORowSetValueVector::Vector& io_aRow
- ,::std::vector<sal_Int32>& o_ChangedColumns
- )
-{
- checkUpdateConditions(columnIndex);
-
- ORowSetValueVector::Vector& rInsert = ((*m_aInsertRow)->get());
- if ( !rInsert[columnIndex].isNull() )
- {
- rInsert[columnIndex].setBound(sal_True);
- rInsert[columnIndex].setNull();
- rInsert[columnIndex].setModified();
- io_aRow[columnIndex].setNull();
-
- m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
- impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
- }
-}
-
-void ORowSetCache::updateValue(sal_Int32 columnIndex,const ORowSetValue& x
- ,ORowSetValueVector::Vector& io_aRow
- ,::std::vector<sal_Int32>& o_ChangedColumns
- )
-{
- checkUpdateConditions(columnIndex);
-
- ORowSetValueVector::Vector& rInsert = ((*m_aInsertRow)->get());
- if ( rInsert[columnIndex] != x )
- {
- rInsert[columnIndex].setBound(sal_True);
- rInsert[columnIndex] = x;
- rInsert[columnIndex].setModified();
- io_aRow[columnIndex] = rInsert[columnIndex];
-
- m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
- impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
- }
-}
-
-void ORowSetCache::updateCharacterStream( sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream >& x
- , sal_Int32 length,ORowSetValueVector::Vector& io_aRow
- ,::std::vector<sal_Int32>& o_ChangedColumns
- )
-{
- checkUpdateConditions(columnIndex);
-
- Sequence<sal_Int8> aSeq;
- if(x.is())
- x->readBytes(aSeq,length);
-
- ORowSetValueVector::Vector& rInsert = ((*m_aInsertRow)->get());
- rInsert[columnIndex].setBound(sal_True);
- rInsert[columnIndex] = aSeq;
- rInsert[columnIndex].setModified();
- io_aRow[columnIndex] = makeAny(x);
-
- m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
- impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
-}
-
-void ORowSetCache::updateObject( sal_Int32 columnIndex, const Any& x
- ,ORowSetValueVector::Vector& io_aRow
- ,::std::vector<sal_Int32>& o_ChangedColumns
- )
-{
- checkUpdateConditions(columnIndex);
-
- ORowSetValueVector::Vector& rInsert = ((*m_aInsertRow)->get());
- ORowSetValue aTemp;
- aTemp.fill(x);
- if ( rInsert[columnIndex] != aTemp )
- {
- rInsert[columnIndex].setBound(sal_True);
- rInsert[columnIndex] = aTemp;
- rInsert[columnIndex].setModified();
- io_aRow[columnIndex] = rInsert[columnIndex];
-
- m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
- impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
- }
-}
-
-void ORowSetCache::updateNumericObject( sal_Int32 columnIndex, const Any& x, sal_Int32 /*scale*/
- ,ORowSetValueVector::Vector& io_aRow
- ,::std::vector<sal_Int32>& o_ChangedColumns
- )
-{
- checkUpdateConditions(columnIndex);
-
- ORowSetValueVector::Vector& rInsert = ((*m_aInsertRow)->get());
- ORowSetValue aTemp;
- aTemp.fill(x);
- if ( rInsert[columnIndex] != aTemp )
- {
- rInsert[columnIndex].setBound(sal_True);
- rInsert[columnIndex] = aTemp;
- rInsert[columnIndex].setModified();
- io_aRow[columnIndex] = rInsert[columnIndex];
-
- m_pCacheSet->mergeColumnValues(columnIndex,rInsert,io_aRow,o_ChangedColumns);
- impl_updateRowFromCache_throw(io_aRow,o_ChangedColumns);
- }
-}
-
-// XResultSet
-sal_Bool ORowSetCache::next( )
-{
- if(!isAfterLast())
- {
- m_bBeforeFirst = sal_False;
- ++m_nPosition;
-
- // after we increment the position we have to check if we are already after the last row
- checkPositionFlags();
- if(!m_bAfterLast)
- {
- moveWindow();
-
- OSL_ENSURE(((m_nPosition - m_nStartPos) - 1) < (sal_Int32)m_pMatrix->size(),"Position is behind end()!");
- m_aMatrixIter = calcPosition();
- checkPositionFlags();
- }
- }
-
- return !m_bAfterLast;
-}
-
-sal_Bool ORowSetCache::isBeforeFirst( )
-{
- return m_bBeforeFirst;
-}
-
-sal_Bool ORowSetCache::isAfterLast( )
-{
- return m_bAfterLast;
-}
-
-sal_Bool ORowSetCache::isFirst( )
-{
- return m_nPosition == 1; // ask resultset for
-}
-
-sal_Bool ORowSetCache::isLast( )
-{
- return m_nPosition == m_nRowCount;
-}
-
-sal_Bool ORowSetCache::beforeFirst( )
-{
- if(!m_bBeforeFirst)
- {
- m_bAfterLast = sal_False;
- m_nPosition = 0;
- m_bBeforeFirst = sal_True;
- m_pCacheSet->beforeFirst();
- moveWindow();
- m_aMatrixIter = m_pMatrix->end();
- }
- return sal_True;
-}
-
-sal_Bool ORowSetCache::afterLast( )
-{
- if(!m_bAfterLast)
- {
- m_bBeforeFirst = sal_False;
- m_bAfterLast = sal_True;
-
- if(!m_bRowCountFinal)
- {
- m_pCacheSet->last_checked(sal_False);
- m_bRowCountFinal = sal_True;
- m_nRowCount = m_pCacheSet->getRow();// + 1 removed
- }
- m_pCacheSet->afterLast();
-
- m_nPosition = 0;
- m_aMatrixIter = m_pMatrix->end();
- }
- return sal_True;
-}
-
-sal_Bool ORowSetCache::fillMatrix(sal_Int32& _nNewStartPos,sal_Int32 _nNewEndPos)
-{
- OSL_ENSURE(_nNewStartPos != _nNewEndPos,"ORowSetCache::fillMatrix: StartPos and EndPos can not be equal!");
- // fill the whole window with new data
- ORowSetMatrix::iterator aIter;
- sal_Int32 i;
- sal_Bool bCheck;
- if ( _nNewStartPos == -1 )
- {
- aIter = m_pMatrix->begin() + m_nEndPos;
- i = m_nEndPos+1;
- }
- else
- {
- aIter = m_pMatrix->begin();
- i = _nNewStartPos;
- }
- bCheck = m_pCacheSet->absolute(i); // -1 no need to
-
-
- for(;i<_nNewEndPos;++i,++aIter)
- {
- if(bCheck)
- {
- if(!aIter->is())
- *aIter = new ORowSetValueVector(m_xMetaData->getColumnCount());
- m_pCacheSet->fillValueRow(*aIter,i);
- if(!m_bRowCountFinal)
- ++m_nRowCount;
- }
- else
- { // there are no more rows found so we can fetch some before start
-
- if(!m_bRowCountFinal)
- {
- if(m_pCacheSet->previous_checked(sal_False)) // because we stand after the last row
- m_nRowCount = m_pCacheSet->getRow(); // here we have the row count
- if(!m_nRowCount)
- m_nRowCount = i-1; // it can be that getRow return zero
- m_bRowCountFinal = sal_True;
- }
- if(m_nRowCount > m_nFetchSize)
- {
- ORowSetMatrix::iterator aEnd = aIter;
- ORowSetMatrix::iterator aRealEnd = m_pMatrix->end();
- sal_Int32 nPos = m_nRowCount - m_nFetchSize + 1;
- _nNewStartPos = nPos;
- bCheck = m_pCacheSet->absolute(_nNewStartPos);
-
- for(;bCheck && aIter != aRealEnd;++aIter)
- {
- if(bCheck)
- {
- if(!aIter->is())
- *aIter = new ORowSetValueVector(m_xMetaData->getColumnCount());
- m_pCacheSet->fillValueRow(*aIter,nPos++);
- }
- bCheck = m_pCacheSet->next();
- }
- if(aIter != aEnd)
- ::std::rotate(m_pMatrix->begin(),aEnd,aRealEnd);
- }
- break;
- }
- if ( i < (_nNewEndPos-1) )
- bCheck = m_pCacheSet->next();
- }
- // we have to read one row forward to ensure that we know when we are on last row
- // but only when we don't know it already
- /*
- if(!m_bRowCountFinal)
- {
- if(!m_pCacheSet->next())
- {
- if(m_pCacheSet->previous_checked(sal_False)) // because we stand after the last row
- m_nRowCount = m_pCacheSet->getRow(); // here we have the row count
- m_bRowCountFinal = sal_True;
- }
- else
- m_nRowCount = std::max(i,m_nRowCount);
-
- }
- */
- return bCheck;
-}
-
-sal_Bool ORowSetCache::moveWindow()
-{
- sal_Bool bRet = sal_True;
-
- sal_Int32 nDiff = (sal_Int32)(m_nFetchSize*0.5 -0.5);
- sal_Int32 nNewStartPos = (m_nPosition - nDiff);
- sal_Int32 nNewEndPos = nNewStartPos + m_nFetchSize;
-
- if ( m_nPosition <= m_nStartPos )
- { // the window is behind the new start pos
- if(!m_nStartPos)
- return sal_False;
- // the new position should be the nPos - nFetchSize/2
- if ( nNewEndPos > m_nStartPos )
- { // but the two regions are overlapping
- // fill the rows behind the new end
-
- ORowSetMatrix::iterator aEnd; // the iterator we need for rotate
- ORowSetMatrix::iterator aIter; // the iterator we fill with new values
-
- sal_Bool bCheck = sal_True;
- if ( nNewStartPos < 1 )
- {
- bCheck = m_pCacheSet->first();
- OSL_ENSURE((nNewEndPos - m_nStartPos - nNewStartPos) < (sal_Int32)m_pMatrix->size(),"Position is behind end()!");
- aEnd = m_pMatrix->begin() + (nNewEndPos - m_nStartPos - nNewStartPos);
- aIter = aEnd;
- m_nStartPos = 0;
- }
- else
- {
- OSL_ENSURE((nNewEndPos - m_nStartPos -1) < (sal_Int32)m_pMatrix->size(),"Position is behind end()!");
- aEnd = m_pMatrix->begin() + ((nNewEndPos - m_nStartPos)-1);
- aIter = m_pMatrix->begin() + ((nNewEndPos - m_nStartPos)-1);
- bCheck = m_pCacheSet->absolute(nNewStartPos);
- m_nStartPos = nNewStartPos -1;
- }
-
- if ( bCheck )
- {
- sal_Int32 nPos = m_nStartPos;
- bCheck = fill(aIter,m_pMatrix->end(),nPos,bCheck);
-
- ::std::rotate(m_pMatrix->begin(),aEnd,m_pMatrix->end());
- // now correct the iterator in our iterator vector
- // rotateCacheIterator(aEnd-m_pMatrix->begin()); //can't be used because they decrement and here we need to increment
- ptrdiff_t nNewDist = aEnd - m_pMatrix->begin();
- ptrdiff_t nOffSet = m_pMatrix->end() - aEnd;
- ORowSetCacheMap::iterator aCacheIter = m_aCacheIterators.begin();
- ORowSetCacheMap::iterator aCacheEnd = m_aCacheIterators.end();
- for(;aCacheIter != aCacheEnd;++aCacheIter)
- {
- if ( !aCacheIter->second.pRowSet->isInsertRow()
- && aCacheIter->second.aIterator != m_pMatrix->end() && !m_bModified )
- {
- ptrdiff_t nDist = (aCacheIter->second.aIterator - m_pMatrix->begin());
- if ( nDist >= nNewDist )
- {
- aCacheIter->second.aIterator = m_pMatrix->end();
- }
- else
- {
-#if OSL_DEBUG_LEVEL > 0
- ORowSetMatrix::iterator aOldPos;
- aOldPos = aCacheIter->second.aIterator;
-#endif
- CHECK_MATRIX_POS( ((aOldPos - m_pMatrix->begin()) + nOffSet) );
- aCacheIter->second.aIterator += nOffSet;
-#if OSL_DEBUG_LEVEL > 0
- ORowSetMatrix::iterator aCurrentPos;
- aCurrentPos = aCacheIter->second.aIterator;
-#endif
- OSL_ENSURE(aCacheIter->second.aIterator >= m_pMatrix->begin()
- && aCacheIter->second.aIterator < m_pMatrix->end(),"Iterator out of area!");
- }
- }
- }
- }
- else
- { // normally this should never happen
- OSL_FAIL("What the hell is happen here!");
- return sal_False;
- }
- }
- else
- {// no rows can be reused so fill again
- if(nNewStartPos < 1) // special case
- {
- m_nStartPos = 0;
-
- rotateCacheIterator(static_cast<sal_Int16>(m_nFetchSize+1)); // static_cast<sal_Int16>(m_nFetchSize+1)
-
- m_pCacheSet->beforeFirst();
-
- sal_Bool bCheck;
- ORowSetMatrix::iterator aIter = m_pMatrix->begin();
- for(sal_Int32 i=0;i<m_nFetchSize;++i,++aIter)
- {
- bCheck = m_pCacheSet->next();
- if ( bCheck )
- {
- if(!aIter->is())
- *aIter = new ORowSetValueVector(m_xMetaData->getColumnCount());
- m_pCacheSet->fillValueRow(*aIter,i+1);
- }
- else
- *aIter = NULL;
- }
- }
- else
- bRet = reFillMatrix(nNewStartPos,nNewEndPos);
- }
- }
- else if(m_nPosition > m_nStartPos)
- { // the new start pos is above the startpos of the window
-
- if(m_nPosition <= (m_nStartPos+m_nFetchSize))
- { // position in window
- OSL_ENSURE((m_nPosition - m_nStartPos -1) < (sal_Int32)m_pMatrix->size(),"Position is behind end()!");
- m_aMatrixIter = calcPosition();
- if(!m_aMatrixIter->is())
- {
- sal_Bool bOk( m_pCacheSet->absolute( m_nPosition ) );
- if ( bOk )
- {
- *m_aMatrixIter = new ORowSetValueVector(m_xMetaData->getColumnCount());
- m_pCacheSet->fillValueRow(*m_aMatrixIter,m_nPosition);
- // we have to read one row forward to ensure that we know when we are on last row
- // but only when we don't know it already
- if ( !m_bRowCountFinal )
- {
- bOk = m_pCacheSet->absolute_checked( m_nPosition + 1,sal_False );
- if ( bOk )
- m_nRowCount = std::max(sal_Int32(m_nPosition+1),m_nRowCount);
- }
- }
- if(!bOk && !m_bRowCountFinal)
- {
- // because we stand after the last row
- m_nRowCount = m_pCacheSet->previous_checked(sal_False) ? m_pCacheSet->getRow() : 0;// + 1 removed
- m_bRowCountFinal = sal_True;
- }
- }
- }
- else if(nNewStartPos < (m_nStartPos+m_nFetchSize))
- { // position behind window but the region is overlapping
- // the rows from begin() to (begin + nNewStartPos - m_nStartPos) can be refilled with the new rows
- // the rows behind this can be reused
- ORowSetMatrix::iterator aIter = m_pMatrix->begin();
- CHECK_MATRIX_POS(nNewStartPos - m_nStartPos - 1);
- ORowSetMatrix::iterator aEnd = m_pMatrix->begin() + (nNewStartPos - m_nStartPos - 1);
-
- sal_Int32 nPos = m_nStartPos + m_nFetchSize + 1;
- sal_Bool bCheck = m_pCacheSet->absolute(nPos);
- bCheck = fill(aIter,aEnd,nPos,bCheck); // refill the region wew don't need anymore
-
- // we have to read one row forward to enshure that we know when we are on last row
- // but only when we don't know it already
- sal_Bool bOk = sal_True;
- if(bCheck && !m_bRowCountFinal)
- bOk = m_pCacheSet->next();
- // bind end to front
- if(bCheck)
- { // rotate the end to the front
- ::std::rotate(m_pMatrix->begin(),aIter,m_pMatrix->end());
- // now correct the iterator in our iterator vector
- rotateCacheIterator( (sal_Int16)( aIter - m_pMatrix->begin() ) );
- m_nStartPos = nNewStartPos - 1; // must be -1
- // now I can say how many rows we have
- if(!bOk)
- {
- m_pCacheSet->previous_checked(sal_False); // because we stand after the last row
- m_nRowCount = nPos; // here we have the row count
- m_bRowCountFinal = sal_True;
- }
- else if(!m_bRowCountFinal)
- m_nRowCount = std::max(++nPos,m_nRowCount);
- }
- else
- { // the end was reached before end() so we can set the start before nNewStartPos
-
- m_nStartPos += (aIter - m_pMatrix->begin());
- ::std::rotate(m_pMatrix->begin(),aIter,m_pMatrix->end());
- // now correct the iterator in our iterator vector
- rotateCacheIterator( (sal_Int16)( aIter - m_pMatrix->begin() ) );
-
- if ( !m_bRowCountFinal )
- {
- m_pCacheSet->previous_checked(sal_False); // because we stand after the last row
- m_nRowCount = std::max(m_nRowCount,--nPos); // here we have the row count
- OSL_ENSURE(nPos == m_pCacheSet->getRow(),"nPos isn't valid!");
- m_bRowCountFinal = sal_True;
- }
- // TODO check
- // m_nStartPos = (nNewStartPos+m_nRowCount) - m_nFetchSize ;
- if(m_nStartPos < 0)
- m_nStartPos = 0;
- }
- // here we need only to check if the begining row is valid. If not we have to fetch it.
- if(!m_pMatrix->begin()->is())
- {
- aIter = m_pMatrix->begin();
-
- nPos = m_nStartPos;
- bCheck = m_pCacheSet->absolute_checked(m_nStartPos,sal_False);
- for(; !aIter->is() && bCheck;++aIter)
- {
- OSL_ENSURE(aIter != m_pMatrix->end(),"Invalid iterator");
- bCheck = m_pCacheSet->next();
- if ( bCheck ) // resultset stands on right position
- {
- *aIter = new ORowSetValueVector(m_xMetaData->getColumnCount());
- m_pCacheSet->fillValueRow(*aIter,++nPos);
- }
- }
- }
- }
- else // no rows can be reused so fill again
- bRet = reFillMatrix(nNewStartPos,nNewEndPos);
- }
-
- if(!m_bRowCountFinal)
- m_nRowCount = std::max(m_nPosition,m_nRowCount);
- OSL_ENSURE(m_nStartPos >= 0,"ORowSetCache::moveWindow: m_nStartPos is less than 0!");
-
- return bRet;
-}
-
-sal_Bool ORowSetCache::first( )
-{
- // first move to the first row
- // then check if the cache window is at the begining
- // when not postionize the window and fill it with data
- // smart moving of the window -> clear only the rows whom are out of range
- sal_Bool bRet = m_pCacheSet->first();
- if(bRet)
- {
- m_bBeforeFirst = m_bAfterLast = sal_False;
- m_nPosition = 1;
- moveWindow();
- m_aMatrixIter = m_pMatrix->begin();
- }
- else
- {
- m_bRowCountFinal = m_bBeforeFirst = m_bAfterLast = sal_True;
- m_nRowCount = m_nPosition = 0;
-
- OSL_ENSURE(m_bBeforeFirst || m_bNew,"ORowSetCache::first return false and BeforeFirst isn't true");
- m_aMatrixIter = m_pMatrix->end();
- }
- return bRet;
-}
-
-sal_Bool ORowSetCache::last( )
-{
- sal_Bool bRet = m_pCacheSet->last();
- if(bRet)
- {
- m_bBeforeFirst = m_bAfterLast = sal_False;
- if(!m_bRowCountFinal)
- {
- m_bRowCountFinal = sal_True;
- m_nRowCount = m_nPosition = m_pCacheSet->getRow(); // not + 1
- }
- m_nPosition = m_pCacheSet->getRow();
- moveWindow();
- // we have to repositioning because moveWindow can modify the cache
- m_pCacheSet->last();
- OSL_ENSURE(((m_nPosition - m_nStartPos) - 1) < (sal_Int32)m_pMatrix->size(),"Position is behind end()!");
- m_aMatrixIter = calcPosition();
- }
- else
- {
- m_bRowCountFinal = m_bBeforeFirst = m_bAfterLast = sal_True;
- m_nRowCount = m_nPosition = 0;
- OSL_ENSURE(m_bBeforeFirst,"ORowSetCache::last return false and BeforeFirst isn't true");
- m_aMatrixIter = m_pMatrix->end();
- }
-#if OSL_DEBUG_LEVEL > 1
- if(bRet)
- {
- OSL_ENSURE((*m_aMatrixIter).is(),"ORowSetCache::last: Row not valid!");
- }
-#endif
-
- return bRet;
-}
-
-sal_Int32 ORowSetCache::getRow( )
-{
- return (isBeforeFirst() || isAfterLast()) ? 0 : m_nPosition;
-}
-
-sal_Bool ORowSetCache::absolute( sal_Int32 row )
-{
- if(!row )
- throw SQLException(DBACORE_RESSTRING(RID_STR_NO_ABS_ZERO),NULL,SQLSTATE_GENERAL,1000,Any() );
-
- if(row < 0)
- {
- // here we have to scroll from the last row to backward so we have to go to last row and
- // and two the previous
- if(m_bRowCountFinal || last())
- {
- m_nPosition = m_nRowCount + row + 1; // + row because row is negative and +1 because row==-1 means last row
- if(m_nPosition < 1)
- {
- m_bBeforeFirst = sal_True;
- m_bAfterLast = sal_False;
- m_aMatrixIter = m_pMatrix->end();
- }
- else
- {
- m_bBeforeFirst = sal_False;
- m_bAfterLast = m_nPosition > m_nRowCount;
- moveWindow();
- OSL_ENSURE(((m_nPosition - m_nStartPos) - 1) < (sal_Int32)m_pMatrix->size(),"Position is behind end()!");
- m_aMatrixIter = calcPosition();
- }
- }
- else
- m_aMatrixIter = m_pMatrix->end();
- }
- else
- {
- m_nPosition = row;
- // the position flags
- m_bBeforeFirst = sal_False;
- checkPositionFlags();
-
- if(!m_bAfterLast)
- {
- moveWindow();
- checkPositionFlags();
- if(!m_bAfterLast)
- m_aMatrixIter = calcPosition();
- else
- m_aMatrixIter = m_pMatrix->end();
- }
- else
- m_aMatrixIter = m_pMatrix->end();
- }
-
- return !(m_bAfterLast || m_bBeforeFirst);
-}
-
-sal_Bool ORowSetCache::relative( sal_Int32 rows )
-{
- sal_Bool bErg = sal_True;
- if(rows)
- {
- sal_Int32 nNewPosition = m_nPosition + rows;
-
- if ( m_bBeforeFirst && rows > 0 )
- nNewPosition = rows;
- else if ( m_bRowCountFinal && m_bAfterLast && rows < 0 )
- nNewPosition = m_nRowCount + 1 + rows;
- else
- if ( m_bBeforeFirst || ( m_bRowCountFinal && m_bAfterLast ) )
- throw SQLException( DBACORE_RESSTRING( RID_STR_NO_RELATIVE ), NULL, SQLSTATE_GENERAL, 1000, Any() );
- if ( nNewPosition )
- {
- bErg = absolute( nNewPosition );
- bErg = bErg && !isAfterLast() && !isBeforeFirst();
- }
- else
- {
- m_bBeforeFirst = sal_True;
- bErg = sal_False;
- }
- }
- return bErg;
-}
-
-sal_Bool ORowSetCache::previous( )
-{
- sal_Bool bRet = sal_False;
- if(!isBeforeFirst())
- {
- if(m_bAfterLast) // we stand after the last row so one before is the last row
- bRet = last();
- else
- {
- m_bAfterLast = sal_False;
- --m_nPosition;
- moveWindow();
- OSL_ENSURE(((m_nPosition - m_nStartPos) - 1) < (sal_Int32)m_pMatrix->size(),"Position is behind end()!");
-
- checkPositionFlags();
-
- if(!m_nPosition)
- {
- m_bBeforeFirst = sal_True;
- m_aMatrixIter = m_pMatrix->end();
- }
- else
- {
- m_aMatrixIter = calcPosition();
- bRet = (*m_aMatrixIter).is();
- }
- }
- }
- return bRet;
-}
-
-void ORowSetCache::refreshRow( )
-{
- if(isAfterLast())
- throw SQLException(DBACORE_RESSTRING(RID_STR_NO_REFESH_AFTERLAST),NULL,SQLSTATE_GENERAL,1000,Any() );
- OSL_ENSURE(m_aMatrixIter != m_pMatrix->end(),"refreshRow() called for invalid row!");
- m_pCacheSet->refreshRow();
- m_pCacheSet->fillValueRow(*m_aMatrixIter,m_nPosition);
- if ( m_bNew )
- {
- cancelRowModification();
- }
-}
-
-sal_Bool ORowSetCache::rowUpdated( )
-{
- return m_pCacheSet->rowUpdated();
-}
-
-sal_Bool ORowSetCache::rowInserted( )
-{
- return m_pCacheSet->rowInserted();
-}
-
-// XResultSetUpdate
-sal_Bool ORowSetCache::insertRow(::std::vector< Any >& o_aBookmarks)
-{
- if ( !m_bNew || !m_aInsertRow->is() )
- throw SQLException(DBACORE_RESSTRING(RID_STR_NO_MOVETOINSERTROW_CALLED),NULL,SQLSTATE_GENERAL,1000,Any() );
-
- m_pCacheSet->insertRow(*m_aInsertRow,m_aUpdateTable);
-
- sal_Bool bRet( rowInserted() );
- if ( bRet )
- {
- ++m_nRowCount;
- Any aBookmark = ((*m_aInsertRow)->get())[0].makeAny();
- m_bAfterLast = m_bBeforeFirst = sal_False;
- if(aBookmark.hasValue())
- {
- moveToBookmark(aBookmark);
- // update the cached values
- ORowSetValueVector::Vector& rCurrentRow = ((*m_aMatrixIter))->get();
- ORowSetMatrix::iterator aIter = m_pMatrix->begin();
- for(;aIter != m_pMatrix->end();++aIter)
- {
- if ( m_aMatrixIter != aIter && aIter->is() && m_pCacheSet->columnValuesUpdated((*aIter)->get(),rCurrentRow) )
- {
- o_aBookmarks.push_back(lcl_getBookmark((*aIter)->get()[0],m_pCacheSet));
- }
- }
- }
- else
- {
- OSL_FAIL("There must be a bookmark after the row was inserted!");
- }
- }
- return bRet;
-}
-
-void ORowSetCache::resetInsertRow(sal_Bool _bClearInsertRow)
-{
- if ( _bClearInsertRow )
- clearInsertRow();
- m_bNew = sal_False;
- m_bModified = sal_False;
-}
-
-void ORowSetCache::cancelRowModification()
-{
- // clear the insertrow references -> implies that the current row of the rowset changes as well
- ORowSetCacheMap::iterator aCacheIter = m_aCacheIterators.begin();
- ORowSetCacheMap::iterator aCacheEnd = m_aCacheIterators.end();
- for(;aCacheIter != aCacheEnd;++aCacheIter)
- {
- if ( aCacheIter->second.pRowSet->isInsertRow() && aCacheIter->second.aIterator == m_aInsertRow )
- aCacheIter->second.aIterator = m_pMatrix->end();
- }
- resetInsertRow(sal_False);
-}
-
-void ORowSetCache::updateRow( ORowSetMatrix::iterator& _rUpdateRow,::std::vector< Any >& o_aBookmarks )
-{
- if(isAfterLast() || isBeforeFirst())
- throw SQLException(DBACORE_RESSTRING(RID_STR_NO_UPDATEROW),NULL,SQLSTATE_GENERAL,1000,Any() );
-
- Any aBookmark = ((*_rUpdateRow)->get())[0].makeAny();
- OSL_ENSURE(aBookmark.hasValue(),"Bookmark must have a value!");
- // here we don't have to reposition our CacheSet, when we try to update a row,
- // the row was already fetched
- moveToBookmark(aBookmark);
- m_pCacheSet->updateRow(*_rUpdateRow,*m_aMatrixIter,m_aUpdateTable);
- // refetch the whole row
- (*m_aMatrixIter) = NULL;
-
- if ( moveToBookmark(aBookmark) )
- {
- // update the cached values
- ORowSetValueVector::Vector& rCurrentRow = ((*m_aMatrixIter))->get();
- ORowSetMatrix::iterator aIter = m_pMatrix->begin();
- for(;aIter != m_pMatrix->end();++aIter)
- {
- if ( m_aMatrixIter != aIter && aIter->is() && m_pCacheSet->columnValuesUpdated((*aIter)->get(),rCurrentRow) )
- {
- o_aBookmarks.push_back(lcl_getBookmark((*aIter)->get()[0],m_pCacheSet));
- }
- }
- }
-
- m_bModified = sal_False;
-}
-
-bool ORowSetCache::deleteRow( )
-{
- if(isAfterLast() || isBeforeFirst())
- throw SQLException(DBACORE_RESSTRING(RID_STR_NO_DELETEROW),NULL,SQLSTATE_GENERAL,1000,Any() );
-
- m_pCacheSet->deleteRow(*m_aMatrixIter,m_aUpdateTable);
- if ( !m_pCacheSet->rowDeleted() )
- return false;
-
- --m_nRowCount;
- OSL_ENSURE(((m_nPosition - m_nStartPos) - 1) < (sal_Int32)m_pMatrix->size(),"Position is behind end()!");
- ORowSetMatrix::iterator aPos = calcPosition();
- (*aPos) = NULL;
-
- ORowSetMatrix::iterator aEnd = m_pMatrix->end();
- for(++aPos;aPos != aEnd && aPos->is();++aPos)
- {
- *(aPos-1) = *aPos;
- (*aPos) = NULL;
- }
- m_aMatrixIter = m_pMatrix->end();
-
- --m_nPosition;
- return true;
-}
-
-void ORowSetCache::cancelRowUpdates( )
-{
- m_bNew = m_bModified = sal_False;
- if(!m_nPosition)
- {
- OSL_FAIL("cancelRowUpdates:Invalid positions pos == 0");
- ::dbtools::throwFunctionSequenceException(NULL);
- }
-
- if(m_pCacheSet->absolute(m_nPosition))
- m_pCacheSet->fillValueRow(*m_aMatrixIter,m_nPosition);
- else
- {
- OSL_FAIL("cancelRowUpdates couldn't position right with absolute");
- ::dbtools::throwFunctionSequenceException(NULL);
- }
-}
-
-void ORowSetCache::moveToInsertRow( )
-{
- m_bNew = sal_True;
- m_bUpdated = m_bAfterLast = sal_False;
-
- m_aInsertRow = m_pInsertMatrix->begin();
- if(!m_aInsertRow->is())
- *m_aInsertRow = new ORowSetValueVector(m_xMetaData->getColumnCount());
-
- // we don't unbound the bookmark column
- ORowSetValueVector::Vector::iterator aIter = (*m_aInsertRow)->get().begin()+1;
- ORowSetValueVector::Vector::iterator aEnd = (*m_aInsertRow)->get().end();
- for(sal_Int32 i = 1;aIter != aEnd;++aIter,++i)
- {
- aIter->setBound(sal_False);
- aIter->setModified(sal_False);
- aIter->setNull();
- aIter->setTypeKind(m_xMetaData->getColumnType(i));
- }
-}
-
-ORowSetCacheIterator ORowSetCache::createIterator(ORowSetBase* _pRowSet)
-{
- ORowSetCacheIterator_Helper aHelper;
- aHelper.aIterator = m_pMatrix->end();
- aHelper.pRowSet = _pRowSet;
- return ORowSetCacheIterator(m_aCacheIterators.insert(m_aCacheIterators.begin(),ORowSetCacheMap::value_type(m_aCacheIterators.size()+1,aHelper)),this,_pRowSet);
-}
-
-void ORowSetCache::deleteIterator(const ORowSetBase* _pRowSet)
-{
- ORowSetCacheMap::iterator aCacheIter = m_aCacheIterators.begin();
- for(;aCacheIter != m_aCacheIterators.end();)
- {
- if ( aCacheIter->second.pRowSet == _pRowSet )
- {
- m_aCacheIterators.erase(aCacheIter);
- aCacheIter = m_aCacheIterators.begin();
- }
- else
- ++aCacheIter;
- }
-}
-
-void ORowSetCache::rotateCacheIterator(ORowSetMatrix::difference_type _nDist)
-{
- if(_nDist)
- {
- // now correct the iterator in our iterator vector
- ORowSetCacheMap::iterator aCacheIter = m_aCacheIterators.begin();
- ORowSetCacheMap::iterator aCacheEnd = m_aCacheIterators.end();
- for(;aCacheIter != aCacheEnd;++aCacheIter)
- {
- if ( !aCacheIter->second.pRowSet->isInsertRow()
- && aCacheIter->second.aIterator != m_pMatrix->end() && !m_bModified )
- {
- ptrdiff_t nDist = (aCacheIter->second.aIterator - m_pMatrix->begin());
- if(nDist < _nDist)
- {
- aCacheIter->second.aIterator = m_pMatrix->end();
- }
- else
- {
- OSL_ENSURE((aCacheIter->second.aIterator - m_pMatrix->begin()) >= _nDist,"Invalid Dist value!");
- aCacheIter->second.aIterator -= _nDist;
- OSL_ENSURE(aCacheIter->second.aIterator >= m_pMatrix->begin()
- && aCacheIter->second.aIterator < m_pMatrix->end(),"Iterator out of area!");
- }
- }
- }
- }
-}
-
-void ORowSetCache::setUpdateIterator(const ORowSetMatrix::iterator& _rOriginalRow)
-{
- m_aInsertRow = m_pInsertMatrix->begin();
- if(!m_aInsertRow->is())
- *m_aInsertRow = new ORowSetValueVector(m_xMetaData->getColumnCount());
-
- (*(*m_aInsertRow)) = (*(*_rOriginalRow));
- // we don't unbound the bookmark column
- ORowSetValueVector::Vector::iterator aIter = (*m_aInsertRow)->get().begin();
- ORowSetValueVector::Vector::iterator aEnd = (*m_aInsertRow)->get().end();
- for(;aIter != aEnd;++aIter)
- aIter->setModified(sal_False);
-}
-
-void ORowSetCache::checkPositionFlags()
-{
- if(m_bRowCountFinal)
- {
- m_bAfterLast = m_nPosition > m_nRowCount;
- if(m_bAfterLast)
- m_nPosition = 0;//m_nRowCount;
- }
-}
-
-void ORowSetCache::checkUpdateConditions(sal_Int32 columnIndex)
-{
- if(m_bAfterLast || columnIndex >= (sal_Int32)(*m_aInsertRow)->get().size())
- throwFunctionSequenceException(m_xSet.get());
-}
-
-sal_Bool ORowSetCache::checkInnerJoin(const ::connectivity::OSQLParseNode *pNode,const Reference< XConnection>& _xConnection,const ::rtl::OUString& _sUpdateTableName)
-{
- sal_Bool bOk = sal_False;
- if (pNode->count() == 3 && // Ausdruck is geklammert
- SQL_ISPUNCTUATION(pNode->getChild(0),"(") &&
- SQL_ISPUNCTUATION(pNode->getChild(2),")"))
- {
- bOk = checkInnerJoin(pNode->getChild(1),_xConnection,_sUpdateTableName);
- }
- else if ((SQL_ISRULE(pNode,search_condition) || SQL_ISRULE(pNode,boolean_term)) && // AND/OR link
- pNode->count() == 3)
- {
- // only allow an AND link
- if ( SQL_ISTOKEN(pNode->getChild(1),AND) )
- bOk = checkInnerJoin(pNode->getChild(0),_xConnection,_sUpdateTableName)
- && checkInnerJoin(pNode->getChild(2),_xConnection,_sUpdateTableName);
- }
- else if (SQL_ISRULE(pNode,comparison_predicate))
- {
- // only the comparison of columns is allowed
- OSL_ENSURE(pNode->count() == 3,"checkInnerJoin: Fehler im Parse Tree");
- if (!(SQL_ISRULE(pNode->getChild(0),column_ref) &&
- SQL_ISRULE(pNode->getChild(2),column_ref) &&
- pNode->getChild(1)->getNodeType() == SQL_NODE_EQUAL))
- {
- bOk = sal_False;
- }
- ::rtl::OUString sColumnName,sTableRange;
- OSQLParseTreeIterator::getColumnRange( pNode->getChild(0), _xConnection, sColumnName, sTableRange );
- bOk = sTableRange == _sUpdateTableName;
- if ( !bOk )
- {
- OSQLParseTreeIterator::getColumnRange( pNode->getChild(2), _xConnection, sColumnName, sTableRange );
- bOk = sTableRange == _sUpdateTableName;
- }
- }
- return bOk;
-}
-
-sal_Bool ORowSetCache::checkJoin(const Reference< XConnection>& _xConnection,
- const Reference< XSingleSelectQueryAnalyzer >& _xAnalyzer,
- const ::rtl::OUString& _sUpdateTableName )
-{
- sal_Bool bOk = sal_False;
- ::rtl::OUString sSql = _xAnalyzer->getQuery();
- ::rtl::OUString sErrorMsg;
- ::connectivity::OSQLParser aSqlParser( m_aContext.getLegacyServiceFactory() );
- ::std::auto_ptr< ::connectivity::OSQLParseNode> pSqlParseNode( aSqlParser.parseTree(sErrorMsg,sSql));
- if ( pSqlParseNode.get() && SQL_ISRULE(pSqlParseNode, select_statement) )
- {
- OSQLParseNode* pTableRefCommalist = pSqlParseNode->getByRule(::connectivity::OSQLParseNode::table_ref_commalist);
- OSL_ENSURE(pTableRefCommalist,"NO tables why!?");
- if(pTableRefCommalist && pTableRefCommalist->count() == 1)
- {
- // we found only one element so it must some kind of join here
- OSQLParseNode* pJoin = pTableRefCommalist->getByRule(::connectivity::OSQLParseNode::qualified_join);
- if(pJoin)
- { // we are only intereseted in qualified joins like RIGHT or LEFT
- OSQLParseNode* pJoinType = pJoin->getChild(1);
- OSQLParseNode* pOuterType = NULL;
- if(SQL_ISRULE(pJoinType,join_type) && pJoinType->count() == 2)
- pOuterType = pJoinType->getChild(0);
- else if(SQL_ISRULE(pJoinType,outer_join_type))
- pOuterType = pJoinType;
-
- sal_Bool bCheck = sal_False;
- sal_Bool bLeftSide = sal_False;
- if(pOuterType)
- { // found outer join
- bLeftSide = SQL_ISTOKEN(pOuterType->getChild(0),LEFT);
- bCheck = bLeftSide || SQL_ISTOKEN(pOuterType->getChild(0),RIGHT);
- }
-
- if(bCheck)
- { // here we know that we have to check on which side our table resides
- const OSQLParseNode* pTableRef = pJoin->getByRule(::connectivity::OSQLParseNode::qualified_join);
- if(bLeftSide)
- pTableRef = pJoin->getChild(0);
- else
- pTableRef = pJoin->getChild(3);
- OSL_ENSURE(SQL_ISRULE(pTableRef,table_ref),"Must be a tableref here!");
-
- ::rtl::OUString sTableRange = OSQLParseNode::getTableRange(pTableRef);
- if(!sTableRange.getLength())
- pTableRef->getChild(0)->parseNodeToStr( sTableRange, _xConnection, NULL, sal_False, sal_False );
- bOk = sTableRange == _sUpdateTableName;
- }
- }
- }
- else
- {
- OSQLParseNode* pWhereOpt = pSqlParseNode->getChild(3)->getChild(1);
- if ( pWhereOpt && !pWhereOpt->isLeaf() )
- bOk = checkInnerJoin(pWhereOpt->getChild(1),_xConnection,_sUpdateTableName);
- }
- }
- return bOk;
-}
-
-void ORowSetCache::clearInsertRow()
-{
- // we don't unbound the bookmark column
- if ( m_aInsertRow != m_pInsertMatrix->end() && m_aInsertRow->is() )
- {
- ORowSetValueVector::Vector::iterator aIter = (*m_aInsertRow)->get().begin()+1;
- ORowSetValueVector::Vector::iterator aEnd = (*m_aInsertRow)->get().end();
- for(;aIter != aEnd;++aIter)
- {
- aIter->setBound(sal_False);
- aIter->setModified(sal_False);
- aIter->setNull();
- }
- }
-}
-
-ORowSetMatrix::iterator ORowSetCache::calcPosition() const
-{
- sal_Int32 nValue = (m_nPosition - m_nStartPos) - 1;
- CHECK_MATRIX_POS(nValue);
- return ( nValue < 0 || nValue >= static_cast<sal_Int32>(m_pMatrix->size()) ) ? m_pMatrix->end() : (m_pMatrix->begin() + nValue);
-}
-
-TORowSetOldRowHelperRef ORowSetCache::registerOldRow()
-{
- TORowSetOldRowHelperRef pRef = new ORowSetOldRowHelper(ORowSetRow());
- m_aOldRows.push_back(pRef);
- return pRef;
-}
-
-void ORowSetCache::deregisterOldRow(const TORowSetOldRowHelperRef& _rRow)
-{
- TOldRowSetRows::iterator aOldRowEnd = m_aOldRows.end();
- for (TOldRowSetRows::iterator aOldRowIter = m_aOldRows.begin(); aOldRowIter != aOldRowEnd; ++aOldRowIter)
- {
- if ( aOldRowIter->get() == _rRow.get() )
- {
- m_aOldRows.erase(aOldRowIter);
- break;
- }
-
- }
-}
-
-sal_Bool ORowSetCache::reFillMatrix(sal_Int32 _nNewStartPos,sal_Int32 _nNewEndPos)
-{
- TOldRowSetRows::iterator aOldRowEnd = m_aOldRows.end();
- for (TOldRowSetRows::iterator aOldRowIter = m_aOldRows.begin(); aOldRowIter != aOldRowEnd; ++aOldRowIter)
- {
- if ( aOldRowIter->is() && (*aOldRowIter)->getRow().is() )
- (*aOldRowIter)->setRow(new ORowSetValueVector( *((*aOldRowIter)->getRow()) ) );
- }
- sal_Int32 nNewSt = _nNewStartPos;
- sal_Bool bRet = fillMatrix(nNewSt,_nNewEndPos);
- m_nStartPos = nNewSt - 1;
- rotateCacheIterator(static_cast<sal_Int16>(m_nFetchSize+1)); // forces every iterator to null
- return bRet;
-}
-
-sal_Bool ORowSetCache::fill(ORowSetMatrix::iterator& _aIter,const ORowSetMatrix::iterator& _aEnd,sal_Int32& _nPos,sal_Bool _bCheck)
-{
- sal_Int32 nColumnCount = m_xMetaData->getColumnCount();
- for(; _bCheck && _aIter != _aEnd;)
- {
- if ( !_aIter->is() )
- *_aIter = new ORowSetValueVector(nColumnCount);
- else
- {
- TOldRowSetRows::iterator aOldRowEnd = m_aOldRows.end();
- for (TOldRowSetRows::iterator aOldRowIter = m_aOldRows.begin(); aOldRowIter != aOldRowEnd; ++aOldRowIter)
- {
- if ( (*aOldRowIter)->getRow() == *_aIter )
- *_aIter = new ORowSetValueVector(nColumnCount);
- }
- }
- m_pCacheSet->fillValueRow(*_aIter++,++_nPos);
- _bCheck = m_pCacheSet->next();
- }
- return _bCheck;
-}
-
-bool ORowSetCache::isResultSetChanged() const
-{
- return m_pCacheSet->isResultSetChanged();
-}
-
-void ORowSetCache::reset(const Reference< XResultSet>& _xDriverSet)
-{
- m_xMetaData.set(Reference< XResultSetMetaDataSupplier >(_xDriverSet,UNO_QUERY)->getMetaData());
- m_pCacheSet->reset(_xDriverSet);
-
- m_bRowCountFinal = sal_False;
- m_nRowCount = 0;
- reFillMatrix(m_nStartPos+1,m_nEndPos+1);
-}
-
-void ORowSetCache::impl_updateRowFromCache_throw(ORowSetValueVector::Vector& io_aRow
- ,::std::vector<sal_Int32>& o_ChangedColumns)
-{
- if ( o_ChangedColumns.size() > 1 )
- {
- ORowSetMatrix::iterator aIter = m_pMatrix->begin();
- for(;aIter != m_pMatrix->end();++aIter)
- {
- if ( aIter->is() && m_pCacheSet->updateColumnValues((*aIter)->get(),io_aRow,o_ChangedColumns))
- {
- break;
- }
- }
-
- if ( aIter == m_pMatrix->end() )
- {
- m_pCacheSet->fillMissingValues(io_aRow);
- }
- }
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/RowSetCache.hxx b/dbaccess/source/core/api/RowSetCache.hxx
deleted file mode 100644
index 0ce22af54..000000000
--- a/dbaccess/source/core/api/RowSetCache.hxx
+++ /dev/null
@@ -1,227 +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.
- *
- ************************************************************************/
-#ifndef DBACCESS_CORE_API_ROWSETCACHE_HXX
-#define DBACCESS_CORE_API_ROWSETCACHE_HXX
-
-#include <connectivity/CommonTools.hxx>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/sdbc/XPreparedStatement.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryAnalyzer.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryAnalyzer.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
-#include <com/sun/star/sdb/XResultSetAccess.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XColumnLocate.hpp>
-#include <com/sun/star/sdbcx/XRowLocate.hpp>
-#include <com/sun/star/sdbc/XRowUpdate.hpp>
-#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
-#include <com/sun/star/sdb/XRowSetApproveBroadcaster.hpp>
-#include <com/sun/star/sdbc/ResultSetType.hpp>
-#include <com/sun/star/sdbcx/XDeleteRows.hpp>
-#include <cppuhelper/compbase11.hxx>
-#include <comphelper/propertycontainer.hxx>
-#include <comphelper/componentcontext.hxx>
-#include <cppuhelper/implbase5.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include "RowSetRow.hxx"
-#include "RowSetCacheIterator.hxx"
-
-namespace connectivity
-{
- class OSQLParseNode;
-}
-namespace dbaccess
-{
- class OCacheSet;
- class ORowSetDataColumns;
- class ORowSetCacheClone;
-
- class ORowSetCache
- {
- friend class ORowSetBase;
- friend class ORowSet;
- friend class ORowSetClone;
- friend class ORowSetCacheIterator;
-
- typedef ::std::vector< TORowSetOldRowHelperRef > TOldRowSetRows;
-
- ::std::map<sal_Int32,sal_Int32> m_aKeyColumns;
- //the set can be static, bookmarkable or keyset
- ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XResultSet> m_xSet;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > m_xMetaData; // must be before m_aInsertRow
- ::comphelper::ComponentContext m_aContext;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow> m_xCacheSet;
-
- OCacheSet* m_pCacheSet; // is a bookmarkable, keyset or static resultset
- ORowSetMatrix* m_pMatrix; // represent the table struct
- ORowSetMatrix::iterator m_aMatrixIter; // represent a row of the table
- ORowSetMatrix::iterator m_aMatrixEnd; // present the row behind the last row of the table
- ORowSetCacheMap m_aCacheIterators;
- TOldRowSetRows m_aOldRows;
-
- ORowSetMatrix* m_pInsertMatrix; // represent the rows which should be inserted normally this is only one
- ORowSetMatrix::iterator m_aInsertRow; // represent a insert row
-
- sal_Int32 m_nLastColumnIndex; // the last column ask for, used for wasNull()
-
- connectivity::OSQLTable m_aUpdateTable; // used for updates/deletes and inserts
-
- sal_Int32 m_nFetchSize;
- sal_Int32 m_nRowCount;
- sal_Int32 m_nPrivileges;
- sal_Int32 m_nPosition; // 0 means beforefirst
-
- sal_Int32 m_nStartPos; // start pos of the window zero based
- sal_Int32 m_nEndPos; // end pos of the window zero based
-
- sal_Bool m_bRowCountFinal ;
- sal_Bool m_bBeforeFirst ;
- sal_Bool m_bAfterLast ;
- sal_Bool m_bUpdated ;
- sal_Bool& m_bModified ; // points to the rowset member m_bModified
- sal_Bool& m_bNew ; // points to the rowset member m_bNew
-
- sal_Bool fill(ORowSetMatrix::iterator& _aIter,const ORowSetMatrix::iterator& _aEnd,sal_Int32& _nPos,sal_Bool _bCheck);
- sal_Bool reFillMatrix(sal_Int32 _nNewStartPos,sal_Int32 nNewEndPos);
- sal_Bool fillMatrix(sal_Int32 &_nNewStartPos,sal_Int32 _nNewEndPos);
- sal_Bool moveWindow();
- // returns true when a keyset needs to be created.
- sal_Bool impl_createBookmarkSet_nothrow(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& _xRs);
-
- void firePropertyChange(sal_Int32 _nColumnIndex,const ::connectivity::ORowSetValue& _rOldValue);
-
- void rotateCacheIterator(ORowSetMatrix::difference_type _nDist);
- void updateValue(sal_Int32 columnIndex
- ,const connectivity::ORowSetValue& x
- ,ORowSetValueVector::Vector& io_aRow
- ,::std::vector<sal_Int32>& o_ChangedColumns
- );
-
- void impl_updateRowFromCache_throw(ORowSetValueVector::Vector& io_aRow
- ,::std::vector<sal_Int32>& o_ChangedColumns
- );
- // checks and set the flags isAfterLast isLast and position when afterlast is true
- void checkPositionFlags();
- void checkUpdateConditions(sal_Int32 columnIndex);
- sal_Bool checkJoin( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryAnalyzer >& _xComposer,
- const ::rtl::OUString& _sUpdateTableName);
- sal_Bool checkInnerJoin(const ::connectivity::OSQLParseNode *pNode
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection
- ,const ::rtl::OUString& _sUpdateTableName);
-
- // clears the insert row
- void clearInsertRow();
- ORowSetMatrix::iterator calcPosition() const;
-
- protected:
- ORowSetMatrix::iterator& getEnd() { return m_aMatrixEnd;}
- // is called when after a moveToInsertRow a movement (next, etc) was called
- void cancelRowModification();
- public:
- ORowSetCache(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& _xRs,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryAnalyzer >& _xAnalyzer,
- const ::comphelper::ComponentContext& _rContext,
- const ::rtl::OUString& _rUpdateTableName,
- sal_Bool& _bModified,
- sal_Bool& _bNew,
- const ORowSetValueVector& _aParameterValueForCache,
- const ::rtl::OUString& i_sRowSetFilter,
- sal_Int32 i_nMaxRows);
- ~ORowSetCache();
-
-
- // called from the rowset when a updateXXX was called for the first time
- void setUpdateIterator(const ORowSetMatrix::iterator& _rOriginalRow);
- ORowSetCacheIterator createIterator(ORowSetBase* _pRowSet);
- void deleteIterator(const ORowSetBase* _pRowSet);
- // sets the size of the matrix
- void setFetchSize(sal_Int32 _nSize);
-
- TORowSetOldRowHelperRef registerOldRow();
- void deregisterOldRow(const TORowSetOldRowHelperRef& _rRow);
-
- // ::com::sun::star::sdbc::XResultSetMetaDataSupplier
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > getMetaData( );
-
- // ::com::sun::star::sdbcx::XRowLocate
- ::com::sun::star::uno::Any getBookmark( );
- sal_Bool moveToBookmark( const ::com::sun::star::uno::Any& bookmark );
- sal_Bool moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows );
- sal_Int32 compareBookmarks( const ::com::sun::star::uno::Any& first, const ::com::sun::star::uno::Any& second );
- sal_Bool hasOrderedBookmarks( );
- sal_Int32 hashBookmark( const ::com::sun::star::uno::Any& bookmark );
-
- // ::com::sun::star::sdbc::XRowUpdate
- void updateCharacterStream( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length,ORowSetValueVector::Vector& io_aRow,::std::vector<sal_Int32>& o_ChangedColumns
- );
- void updateObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x,ORowSetValueVector::Vector& io_aRow ,::std::vector<sal_Int32>& o_ChangedColumns);
- void updateNumericObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x, sal_Int32 scale,ORowSetValueVector::Vector& io_aRow ,::std::vector<sal_Int32>& o_ChangedColumns);
- void updateNull(sal_Int32 columnIndex
- ,ORowSetValueVector::Vector& io_aRow
- ,::std::vector<sal_Int32>& o_ChangedColumns
- );
-
- // ::com::sun::star::sdbc::XResultSet
- sal_Bool next( );
- sal_Bool isBeforeFirst( );
- sal_Bool isAfterLast( );
- sal_Bool isFirst( );
- sal_Bool isLast( );
- sal_Bool beforeFirst( );
- sal_Bool afterLast( );
- sal_Bool first( );
- sal_Bool last( );
- sal_Int32 getRow( );
- sal_Bool absolute( sal_Int32 row );
- sal_Bool relative( sal_Int32 rows );
- sal_Bool previous( );
- void refreshRow( );
- sal_Bool rowUpdated( );
- sal_Bool rowInserted( );
-
- // ::com::sun::star::sdbc::XResultSetUpdate
- sal_Bool insertRow(::std::vector< ::com::sun::star::uno::Any >& o_aBookmarks);
- void resetInsertRow(sal_Bool _bClearInsertRow);
-
- void updateRow( ORowSetMatrix::iterator& _rUpdateRow,::std::vector< ::com::sun::star::uno::Any >& o_aBookmarks );
- bool deleteRow();
- void cancelRowUpdates( );
- void moveToInsertRow( );
-
- const ::std::map<sal_Int32,sal_Int32>& getKeyColumns() const { return m_aKeyColumns; }
- bool isResultSetChanged() const;
- void reset(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDriverSet);
- };
-}
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/RowSetCacheIterator.cxx b/dbaccess/source/core/api/RowSetCacheIterator.cxx
deleted file mode 100644
index 986a9bb5d..000000000
--- a/dbaccess/source/core/api/RowSetCacheIterator.cxx
+++ /dev/null
@@ -1,149 +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_dbaccess.hxx"
-#include "RowSetCacheIterator.hxx"
-#include "RowSetCache.hxx"
-#include "RowSetBase.hxx"
-#include <rtl/logfile.hxx>
-
-using namespace dbaccess;
-ORowSetCacheIterator::ORowSetCacheIterator(const ORowSetCacheIterator& _rRH)
-: m_aIter(_rRH.m_aIter)
-, m_pCache(_rRH.m_pCache)
-,m_pRowSet(_rRH.m_pRowSet)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetCacheIterator::ORowSetCacheIterator" );
-}
-
-ORowSetCacheIterator::operator ORowSetMatrix::iterator()
-{
- return m_aIter->second.aIterator;
-}
-
-ORowSetCacheIterator& ORowSetCacheIterator::operator =(const ORowSetCacheIterator& _rRH)
-{
- if(this == &_rRH)
- return *this;
-
- m_pCache = _rRH.m_pCache;
- m_aIter = _rRH.m_aIter;
- m_pRowSet = _rRH.m_pRowSet;
-
- return *this;
-}
-
-ORowSetCacheIterator& ORowSetCacheIterator::operator =(const ORowSetMatrix::iterator& _rIter)
-{
- m_aIter->second.aIterator = _rIter;
- return *this;
-}
-
-ORowSetRow& ORowSetCacheIterator::operator *()
-{
- return *m_aIter->second.aIterator;
-}
-
-const ORowSetRow& ORowSetCacheIterator::operator *() const
-{
- if ( !m_pRowSet->isInsertRow() && m_aIter->second.aIterator == m_pCache->m_pMatrix->end() )
- {
- OSL_ENSURE(m_aIter->second.aBookmark.hasValue(),"bookmark has no value!");
- OSL_VERIFY(m_pCache->moveToBookmark(m_aIter->second.aBookmark));
- m_aIter->second.aIterator = m_pCache->m_aMatrixIter;
- }
- return *m_aIter->second.aIterator;
-}
-
-ORowSetMatrix::iterator& ORowSetCacheIterator::operator ->()
-{
- return m_aIter->second.aIterator;
-}
-
-const ORowSetMatrix::iterator& ORowSetCacheIterator::operator ->() const
-{
- if ( !m_pRowSet->isInsertRow() && m_aIter->second.aIterator == m_pCache->m_pMatrix->end() )
- {
- OSL_ENSURE(m_aIter->second.aBookmark.hasValue(),"bookmark has no value!");
- OSL_VERIFY(m_pCache->moveToBookmark(m_aIter->second.aBookmark));
- m_aIter->second.aIterator = m_pCache->m_aMatrixIter;
- }
- return m_aIter->second.aIterator;
-}
-
-bool ORowSetCacheIterator::operator <=(const ORowSetMatrix::iterator& _rRH) const
-{
- return m_aIter->second.aIterator <= _rRH;
-}
-
-bool ORowSetCacheIterator::operator <(const ORowSetMatrix::iterator& _rRH) const
-{
- return m_aIter->second.aIterator < _rRH;
-}
-
-bool ORowSetCacheIterator::operator !=(const ORowSetMatrix::iterator& _rRH) const
-{
- return m_aIter->second.aIterator != _rRH;
-}
-
-bool ORowSetCacheIterator::operator ==(const ORowSetMatrix::iterator& _rRH) const
-{
- return m_aIter->second.aIterator == _rRH;
-}
-
-void ORowSetCacheIterator::setBookmark(const ::com::sun::star::uno::Any& _rBookmark)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetCacheIterator::setBookmark" );
- m_aIter->second.aBookmark = _rBookmark;
-}
-
-sal_Bool ORowSetCacheIterator::isNull() const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetCacheIterator::isNull" );
- sal_Bool bRet = !m_pCache || !m_pRowSet || m_aIter == m_pCache->m_aCacheIterators.end();
- if ( !bRet )
- {
- ORowSetCacheIterator_Helper aHelper = m_aIter->second;
- bRet = ( m_pRowSet->isInsertRow()
- ?
- m_aIter->second.aIterator == m_pCache->m_pInsertMatrix->end()
- :
- m_aIter->second.aIterator == m_pCache->m_pMatrix->end()
- );
- }
- return bRet;
-}
-
-::osl::Mutex* ORowSetCacheIterator::getMutex() const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ORowSetCacheIterator::getMutex" );
- return m_pRowSet ? m_pRowSet->getMutex() : NULL;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/RowSetCacheIterator.hxx b/dbaccess/source/core/api/RowSetCacheIterator.hxx
deleted file mode 100644
index 1387635d4..000000000
--- a/dbaccess/source/core/api/RowSetCacheIterator.hxx
+++ /dev/null
@@ -1,89 +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.
- *
- ************************************************************************/
-#ifndef DBACCESS_ROWSETCACHEITERATOR_HXX
-#define DBACCESS_ROWSETCACHEITERATOR_HXX
-
-#include "RowSetRow.hxx"
-#include <comphelper/stl_types.hxx>
-
-namespace dbaccess
-{
- class ORowSetBase;
- typedef struct
- {
- ORowSetMatrix::iterator aIterator;
- ::com::sun::star::uno::Any aBookmark;
- ORowSetBase* pRowSet;
- } ORowSetCacheIterator_Helper;
-
- DECLARE_STL_STDKEY_MAP(sal_Int32,ORowSetCacheIterator_Helper,ORowSetCacheMap);
-
- class ORowSetCache;
- class ORowSetCacheIterator
- {
- friend class ORowSetCache;
- ORowSetCacheMap::iterator m_aIter;
- ORowSetCache* m_pCache;
- ORowSetBase* m_pRowSet;
- protected:
- ORowSetCacheIterator(const ORowSetCacheMap::iterator& _rIter,ORowSetCache* _pCache,ORowSetBase* _pRowSet)
- : m_aIter(_rIter)
- ,m_pCache(_pCache)
- ,m_pRowSet(_pRowSet)
- {
- }
- public:
- ORowSetCacheIterator() :m_aIter(),m_pCache(NULL),m_pRowSet(NULL){}
- ORowSetCacheIterator(const ORowSetCacheIterator& _rRH);
- ORowSetCacheIterator& operator =(const ORowSetCacheIterator&);
-
- sal_Bool isNull() const;
- ORowSetCacheIterator& operator =(const ORowSetMatrix::iterator&);
- operator ORowSetMatrix::iterator();
-
- ORowSetRow& operator *();
- const ORowSetRow& operator *() const;
-
- ORowSetMatrix::iterator& operator ->();
- const ORowSetMatrix::iterator& operator ->() const;
-
- bool operator <=(const ORowSetMatrix::iterator& _rRH) const;
- bool operator <(const ORowSetMatrix::iterator& _rRH) const;
- bool operator !=(const ORowSetMatrix::iterator& _rRH) const;
- bool operator ==(const ORowSetMatrix::iterator& _rRH) const;
-
- void setBookmark(const ::com::sun::star::uno::Any& _rBookmark);
- ::com::sun::star::uno::Any getBookmark() const { return m_aIter->second.aBookmark; }
- ::osl::Mutex* getMutex() const;
-
- ORowSetCacheMap::iterator getIter() const { return m_aIter; }
- };
-}
-#endif // DBACCESS_ROWSETCACHEITERATOR_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/RowSetRow.hxx b/dbaccess/source/core/api/RowSetRow.hxx
deleted file mode 100644
index 88e53ea5f..000000000
--- a/dbaccess/source/core/api/RowSetRow.hxx
+++ /dev/null
@@ -1,98 +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.
- *
- ************************************************************************/
-#ifndef DBACCESS_CORE_API_ROWSETROW_HXX
-#define DBACCESS_CORE_API_ROWSETROW_HXX
-
-#include <rtl/ref.hxx>
-#include <connectivity/CommonTools.hxx>
-#include "connectivity/FValue.hxx"
-#include <comphelper/types.hxx>
-
-namespace dbaccess
-{
- typedef connectivity::ORowVector< connectivity::ORowSetValue > ORowSetValueVector;
- typedef ::rtl::Reference< ORowSetValueVector > ORowSetRow;
- typedef ::std::vector< ORowSetRow > ORowSetMatrix;
-
- class ORowSetOldRowHelper
- {
- oslInterlockedCount m_refCount;
- ORowSetRow m_aRow;
-
- ORowSetOldRowHelper& operator=(const ORowSetOldRowHelper& _rRH);
- ORowSetOldRowHelper(const ORowSetOldRowHelper& _rRh);
- public:
- ORowSetOldRowHelper() : m_refCount(0){}
- ORowSetOldRowHelper(const ORowSetRow& _rRow)
- : m_refCount(0)
- , m_aRow(_rRow)
- {}
-
- void acquire()
- {
- osl_incrementInterlockedCount( &m_refCount );
- }
- void release()
- {
- if (! osl_decrementInterlockedCount( &m_refCount ))
- delete this;
- }
- inline ORowSetRow getRow() const { return m_aRow; }
- inline void clearRow() { m_aRow = NULL; }
- inline void setRow(const ORowSetRow& _rRow) { m_aRow = _rRow; }
- };
-
- typedef ::rtl::Reference< ORowSetOldRowHelper > TORowSetOldRowHelperRef;
-
- class ORowSetValueCompare
- {
- const ::com::sun::star::uno::Any& m_rAny;
- public:
- ORowSetValueCompare(const ::com::sun::star::uno::Any& _rAny) : m_rAny(_rAny){}
-
- sal_Bool operator ()(const ORowSetRow& _rRH)
- {
- switch((_rRH->get())[0].getTypeKind())
- {
- case ::com::sun::star::sdbc::DataType::TINYINT:
- case ::com::sun::star::sdbc::DataType::SMALLINT:
- case ::com::sun::star::sdbc::DataType::INTEGER:
- return comphelper::getINT32(m_rAny) == (sal_Int32)(_rRH->get())[0];
- default:
- {
- ::com::sun::star::uno::Sequence<sal_Int8> aSeq;
- m_rAny >>= aSeq;
- return aSeq == (_rRH->get())[0];
- }
- }
- }
- };
-}
-#endif // DBACCESS_CORE_API_ROWSETROW_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/SingleSelectQueryComposer.cxx b/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
deleted file mode 100644
index 518a41912..000000000
--- a/dbaccess/source/core/api/SingleSelectQueryComposer.cxx
+++ /dev/null
@@ -1,1850 +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_dbaccess.hxx"
-
-#include "composertools.hxx"
-#include "core_resource.hrc"
-#include "core_resource.hxx"
-#include "dbastrings.hrc"
-#include "HelperCollections.hxx"
-#include "SingleSelectQueryComposer.hxx"
-#include "sdbcoretools.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/i18n/XLocaleData.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdb/BooleanComparisonMode.hpp>
-#include <com/sun/star/sdb/SQLFilterOperator.hpp>
-#include <com/sun/star/sdb/XQueriesSupplier.hpp>
-#include <com/sun/star/sdb/CommandType.hpp>
-#include <com/sun/star/sdbc/ColumnSearch.hpp>
-#include <com/sun/star/sdbc/DataType.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/sdbc/XParameters.hpp>
-#include <com/sun/star/uno/XAggregation.hpp>
-#include <com/sun/star/util/XNumberFormatter.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/processfactory.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/types.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <connectivity/predicateinput.hxx>
-#include <rtl/logfile.hxx>
-#include <unotools/syslocale.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <osl/diagnose.h>
-#include <unotools/configmgr.hxx>
-#include <unotools/sharedunocomponent.hxx>
-
-#include <memory>
-
-using namespace ::dbaccess;
-using namespace ::dbtools;
-using namespace ::comphelper;
-using namespace ::connectivity;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::i18n;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::script;
-using namespace ::com::sun::star::util;
-using namespace ::cppu;
-using namespace ::osl;
-using namespace ::utl;
-
-namespace dbaccess {
-namespace BooleanComparisonMode = ::com::sun::star::sdb::BooleanComparisonMode;
-}
-
-#define STR_SELECT ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SELECT "))
-#define STR_FROM ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" FROM "))
-#define STR_WHERE ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" WHERE "))
-#define STR_GROUP_BY ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" GROUP BY "))
-#define STR_HAVING ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" HAVING "))
-#define STR_ORDER_BY ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" ORDER BY "))
-#define STR_AND ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" AND "))
-#define STR_OR ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" OR "))
-#define STR_LIKE ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" LIKE "))
-#define STR_EQUAL ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" = "))
-#define L_BRACKET ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("("))
-#define R_BRACKET ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(")"))
-#define COMMA ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(","))
-
-namespace
-{
- /** parses the given statement, using the given parser, returns a parse node representing
- the statement
-
- If the statement cannot be parsed, an error is thrown.
- */
- const OSQLParseNode* parseStatement_throwError( OSQLParser& _rParser, const ::rtl::OUString& _rStatement, const Reference< XInterface >& _rxContext )
- {
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "frank.schoenheit@sun.com", "SingleSelectQueryComposer.cxx::parseStatement_throwError" );
- ::rtl::OUString aErrorMsg;
- const OSQLParseNode* pNewSqlParseNode = _rParser.parseTree( aErrorMsg, _rStatement );
- if ( !pNewSqlParseNode )
- {
- ::rtl::OUString sSQLStateGeneralError( getStandardSQLState( SQL_GENERAL_ERROR ) );
- SQLException aError2( aErrorMsg, _rxContext, sSQLStateGeneralError, 1000, Any() );
- SQLException aError1( _rStatement, _rxContext, sSQLStateGeneralError, 1000, makeAny( aError2 ) );
- throw SQLException(_rParser.getContext().getErrorMessage(OParseContext::ERROR_GENERAL),_rxContext,sSQLStateGeneralError,1000,makeAny(aError1));
- }
- return pNewSqlParseNode;
- }
-
- // .....................................................................
- /** checks whether the given parse node describes a valid single select statement, throws
- an error if not
- */
- void checkForSingleSelect_throwError( const OSQLParseNode* pStatementNode, OSQLParseTreeIterator& _rIterator,
- const Reference< XInterface >& _rxContext, const ::rtl::OUString& _rOriginatingCommand )
- {
- const OSQLParseNode* pOldNode = _rIterator.getParseTree();
-
- // determine the statement type
- _rIterator.setParseTree( pStatementNode );
- _rIterator.traverseAll();
- bool bIsSingleSelect = ( _rIterator.getStatementType() == SQL_STATEMENT_SELECT );
-
- // throw the error, if necessary
- if ( !bIsSingleSelect || SQL_ISRULE( pStatementNode, union_statement ) ) // #i4229# OJ
- {
- // restore the old node before throwing the exception
- _rIterator.setParseTree( pOldNode );
- // and now really ...
- SQLException aError1( _rOriginatingCommand, _rxContext, getStandardSQLState( SQL_GENERAL_ERROR ), 1000, Any() );
- throw SQLException( DBACORE_RESSTRING( RID_STR_ONLY_QUERY ), _rxContext,
- getStandardSQLState( SQL_GENERAL_ERROR ), 1000, makeAny( aError1 ) );
- }
-
- delete pOldNode;
- }
-
- // .....................................................................
- /** combines parseStatement_throwError and checkForSingleSelect_throwError
- */
- void parseAndCheck_throwError( OSQLParser& _rParser, const ::rtl::OUString& _rStatement,
- OSQLParseTreeIterator& _rIterator, const Reference< XInterface >& _rxContext )
- {
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "frank.schoenheit@sun.com", "SingleSelectQueryComposer.cxx::parseAndCheck_throwError" );
- const OSQLParseNode* pNode = parseStatement_throwError( _rParser, _rStatement, _rxContext );
- checkForSingleSelect_throwError( pNode, _rIterator, _rxContext, _rStatement );
- }
-
- // .....................................................................
- /** transforms a parse node describing a complete statement into a pure select
- statement, without any filter/order/groupby/having clauses
- */
- ::rtl::OUString getPureSelectStatement( const OSQLParseNode* _pRootNode, Reference< XConnection > _rxConnection )
- {
- ::rtl::OUString sSQL = STR_SELECT;
- _pRootNode->getChild(1)->parseNodeToStr( sSQL, _rxConnection );
- _pRootNode->getChild(2)->parseNodeToStr( sSQL, _rxConnection );
- sSQL += STR_FROM;
- _pRootNode->getChild(3)->getChild(0)->getChild(1)->parseNodeToStr( sSQL, _rxConnection );
- return sSQL;
- }
-
- /** resets an SQL iterator, including deletion of the parse tree, and disposal if desired
- */
- void resetIterator( OSQLParseTreeIterator& _rIterator, bool _bDispose )
- {
- const OSQLParseNode* pSqlParseNode = _rIterator.getParseTree();
- _rIterator.setParseTree(NULL);
- delete pSqlParseNode;
- if ( _bDispose )
- _rIterator.dispose();
- }
- void lcl_addFilterCriteria_throw(sal_Int32 i_nFilterOperator,const ::rtl::OUString& i_sValue,::rtl::OUStringBuffer& o_sRet)
- {
- switch( i_nFilterOperator )
- {
- case SQLFilterOperator::EQUAL:
- o_sRet.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" = ")));
- o_sRet.append(i_sValue);
- break;
- case SQLFilterOperator::NOT_EQUAL:
- o_sRet.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" <> ")));
- o_sRet.append(i_sValue);
- break;
- case SQLFilterOperator::LESS:
- o_sRet.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" < ")));
- o_sRet.append(i_sValue);
- break;
- case SQLFilterOperator::GREATER:
- o_sRet.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" > ")));
- o_sRet.append(i_sValue);
- break;
- case SQLFilterOperator::LESS_EQUAL:
- o_sRet.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" <= ")));
- o_sRet.append(i_sValue);
- break;
- case SQLFilterOperator::GREATER_EQUAL:
- o_sRet.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" >= ")));
- o_sRet.append(i_sValue);
- break;
- case SQLFilterOperator::LIKE:
- o_sRet.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" LIKE ")));
- o_sRet.append(i_sValue);
- break;
- case SQLFilterOperator::NOT_LIKE:
- o_sRet.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" NOT LIKE ")));
- o_sRet.append(i_sValue);
- break;
- case SQLFilterOperator::SQLNULL:
- o_sRet.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" IS NULL")) );
- break;
- case SQLFilterOperator::NOT_SQLNULL:
- o_sRet.append(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" IS NOT NULL")) );
- break;
- default:
- throw SQLException();
- }
- }
-
-}
-
-DBG_NAME(OSingleSelectQueryComposer)
-
-OSingleSelectQueryComposer::OSingleSelectQueryComposer(const Reference< XNameAccess>& _rxTables,
- const Reference< XConnection>& _xConnection,
- const ::comphelper::ComponentContext& _rContext )
- :OSubComponent(m_aMutex,_xConnection)
- ,OPropertyContainer(m_aBHelper)
- ,m_aSqlParser( _rContext.getLegacyServiceFactory() )
- ,m_aSqlIterator( _xConnection, _rxTables, m_aSqlParser, NULL )
- ,m_aAdditiveIterator( _xConnection, _rxTables, m_aSqlParser, NULL )
- ,m_aElementaryParts( (size_t)SQLPartCount )
- ,m_xConnection(_xConnection)
- ,m_xMetaData(_xConnection->getMetaData())
- ,m_xConnectionTables( _rxTables )
- ,m_aContext( _rContext )
- ,m_pTables(NULL)
- ,m_nBoolCompareMode( BooleanComparisonMode::EQUAL_INTEGER )
- ,m_nCommandType(CommandType::COMMAND)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::OSingleSelectQueryComposer" );
- DBG_CTOR(OSingleSelectQueryComposer,NULL);
-
- if ( !m_aContext.is() || !m_xConnection.is() || !m_xConnectionTables.is() )
- throw IllegalArgumentException();
-
- registerProperty(PROPERTY_ORIGINAL,PROPERTY_ID_ORIGINAL,PropertyAttribute::BOUND|PropertyAttribute::READONLY,&m_sOrignal,::getCppuType(&m_sOrignal));
-
- m_aCurrentColumns.resize(4);
-
- m_aLocale = SvtSysLocale().GetLocaleData().getLocale();
- m_xNumberFormatsSupplier = dbtools::getNumberFormats( m_xConnection, sal_True, m_aContext.getLegacyServiceFactory() );
- Reference< XLocaleData > xLocaleData;
- m_aContext.createComponent( "com.sun.star.i18n.LocaleData", xLocaleData );
- LocaleDataItem aData = xLocaleData->getLocaleItem(m_aLocale);
- m_sDecimalSep = aData.decimalSeparator;
- OSL_ENSURE(m_sDecimalSep.getLength() == 1,"OSingleSelectQueryComposer::OSingleSelectQueryComposer decimal separator is not 1 length");
- try
- {
- Any aValue;
- Reference<XInterface> xDs = dbaccess::getDataSource(_xConnection);
- if ( dbtools::getDataSourceSetting(xDs,static_cast <rtl::OUString> (PROPERTY_BOOLEANCOMPARISONMODE),aValue) )
- {
- OSL_VERIFY( aValue >>= m_nBoolCompareMode );
- }
- Reference< XQueriesSupplier > xQueriesAccess(m_xConnection, UNO_QUERY);
- if (xQueriesAccess.is())
- m_xConnectionQueries = xQueriesAccess->getQueries();
- }
- catch(Exception&)
- {
- }
-}
-
-OSingleSelectQueryComposer::~OSingleSelectQueryComposer()
-{
- DBG_DTOR(OSingleSelectQueryComposer,NULL);
- ::std::vector<OPrivateColumns*>::iterator aColIter = m_aColumnsCollection.begin();
- ::std::vector<OPrivateColumns*>::iterator aEnd = m_aColumnsCollection.end();
- for(;aColIter != aEnd;++aColIter)
- delete *aColIter;
-
- ::std::vector<OPrivateTables*>::iterator aTabIter = m_aTablesCollection.begin();
- ::std::vector<OPrivateTables*>::iterator aTabEnd = m_aTablesCollection.end();
- for(;aTabIter != aTabEnd;++aTabIter)
- delete *aTabIter;
-}
-
-// OComponentHelper
-void SAL_CALL OSingleSelectQueryComposer::disposing(void)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::disposing" );
- OSubComponent::disposing();
-
- MutexGuard aGuard(m_aMutex);
-
- resetIterator( m_aSqlIterator, true );
- resetIterator( m_aAdditiveIterator, true );
-
- m_xConnectionTables = NULL;
- m_xConnection = NULL;
-
- clearCurrentCollections();
-}
-IMPLEMENT_FORWARD_XINTERFACE3(OSingleSelectQueryComposer,OSubComponent,OSingleSelectQueryComposer_BASE,OPropertyContainer)
-IMPLEMENT_SERVICE_INFO1(OSingleSelectQueryComposer,"org.openoffice.comp.dba.OSingleSelectQueryComposer",SERVICE_NAME_SINGLESELECTQUERYCOMPOSER)
-IMPLEMENT_TYPEPROVIDER3(OSingleSelectQueryComposer,OSubComponent,OSingleSelectQueryComposer_BASE,OPropertyContainer)
-IMPLEMENT_PROPERTYCONTAINER_DEFAULTS(OSingleSelectQueryComposer)
-
-// com::sun::star::lang::XUnoTunnel
-sal_Int64 SAL_CALL OSingleSelectQueryComposer::getSomething( const Sequence< sal_Int8 >& rId ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getSomething" );
- if (rId.getLength() == 16 && 0 == rtl_compareMemory(getImplementationId().getConstArray(), rId.getConstArray(), 16 ) )
- return reinterpret_cast<sal_Int64>(this);
-
- return sal_Int64(0);
-}
-
-// XSingleSelectQueryAnalyzer
-::rtl::OUString SAL_CALL OSingleSelectQueryComposer::getQuery( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getQuery" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( m_aMutex );
-
- TGetParseNode F_tmp(&OSQLParseTreeIterator::getParseTree);
- return getStatementPart(F_tmp,m_aSqlIterator);
-}
-
-void SAL_CALL OSingleSelectQueryComposer::setQuery( const ::rtl::OUString& command ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "frank.schoenheit@sun.com", "OSingleSelectQueryComposer::setQuery" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
- m_nCommandType = CommandType::COMMAND;
- // first clear the tables and columns
- clearCurrentCollections();
- // now set the new one
- setQuery_Impl(command);
- m_sOrignal = command;
-
- // reset the additive iterator to the same statement
- parseAndCheck_throwError( m_aSqlParser, m_sOrignal, m_aAdditiveIterator, *this );
-
- // we have no "elementary" parts anymore (means filter/groupby/having/order clauses)
- for ( SQLPart eLoopParts = Where; eLoopParts != SQLPartCount; incSQLPart( eLoopParts ) )
- m_aElementaryParts[ eLoopParts ] = ::rtl::OUString();
-}
-
-void SAL_CALL OSingleSelectQueryComposer::setCommand( const ::rtl::OUString& Command,sal_Int32 _nCommandType ) throw(SQLException, RuntimeException)
-{
- ::rtl::OUStringBuffer sSQL;
- switch(_nCommandType)
- {
- case CommandType::COMMAND:
- setElementaryQuery(Command);
- return;
- case CommandType::TABLE:
- if ( m_xConnectionTables->hasByName(Command) )
- {
- sSQL.appendAscii("SELECT * FROM ");
- Reference< XPropertySet > xTable;
- try
- {
- m_xConnectionTables->getByName( Command ) >>= xTable;
- }
- catch(const WrappedTargetException& e)
- {
- SQLException e2;
- if ( e.TargetException >>= e2 )
- throw e2;
- }
- catch(Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- sSQL.append(dbtools::composeTableNameForSelect(m_xConnection,xTable));
- }
- else
- {
- String sMessage( DBACORE_RESSTRING( RID_STR_TABLE_DOES_NOT_EXIST ) );
- sMessage.SearchAndReplaceAscii( "$table$", Command );
- throwGenericSQLException(sMessage,*this);
- }
- break;
- case CommandType::QUERY:
- if ( m_xConnectionQueries->hasByName(Command) )
- {
-
- Reference<XPropertySet> xQuery(m_xConnectionQueries->getByName(Command),UNO_QUERY);
- ::rtl::OUString sCommand;
- xQuery->getPropertyValue(PROPERTY_COMMAND) >>= sCommand;
- sSQL.append(sCommand);
- }
- else
- {
- String sMessage( DBACORE_RESSTRING( RID_STR_QUERY_DOES_NOT_EXIST ) );
- sMessage.SearchAndReplaceAscii( "$table$", Command );
- throwGenericSQLException(sMessage,*this);
- }
-
- break;
- default:
- break;
- }
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
- m_nCommandType = _nCommandType;
- m_sCommand = Command;
- // first clear the tables and columns
- clearCurrentCollections();
- // now set the new one
- ::rtl::OUString sCommand = sSQL.makeStringAndClear();
- setElementaryQuery(sCommand);
- m_sOrignal = sCommand;
-}
-
-void OSingleSelectQueryComposer::setQuery_Impl( const ::rtl::OUString& command )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "frank.schoenheit@sun.com", "OSingleSelectQueryComposer::setQuery_Impl" );
- // parse this
- parseAndCheck_throwError( m_aSqlParser, command, m_aSqlIterator, *this );
-
- // strip it from all clauses, to have the pure SELECT statement
- m_aPureSelectSQL = getPureSelectStatement( m_aSqlIterator.getParseTree(), m_xConnection );
-
- // update tables
- getTables();
-}
-
-Sequence< Sequence< PropertyValue > > SAL_CALL OSingleSelectQueryComposer::getStructuredHavingClause( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getStructuredHavingClause" );
- TGetParseNode F_tmp(&OSQLParseTreeIterator::getSimpleHavingTree);
- return getStructuredCondition(F_tmp);
-}
-
-Sequence< Sequence< PropertyValue > > SAL_CALL OSingleSelectQueryComposer::getStructuredFilter( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getStructuredFilter" );
- TGetParseNode F_tmp(&OSQLParseTreeIterator::getSimpleWhereTree);
- return getStructuredCondition(F_tmp);
-}
-
-void SAL_CALL OSingleSelectQueryComposer::appendHavingClauseByColumn( const Reference< XPropertySet >& column, sal_Bool andCriteria,sal_Int32 filterOperator ) throw (SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::appendHavingClauseByColumn" );
- ::std::mem_fun1_t<bool,OSingleSelectQueryComposer,::rtl::OUString> F_tmp(&OSingleSelectQueryComposer::implSetHavingClause);
- setConditionByColumn(column,andCriteria,F_tmp,filterOperator);
-}
-
-void SAL_CALL OSingleSelectQueryComposer::appendFilterByColumn( const Reference< XPropertySet >& column, sal_Bool andCriteria,sal_Int32 filterOperator ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::appendFilterByColumn" );
- ::std::mem_fun1_t<bool,OSingleSelectQueryComposer,::rtl::OUString> F_tmp(&OSingleSelectQueryComposer::implSetFilter);
- setConditionByColumn(column,andCriteria,F_tmp,filterOperator);
-}
-
-::rtl::OUString OSingleSelectQueryComposer::impl_getColumnName_throw(const Reference< XPropertySet >& column)
-{
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- getColumns();
- if ( !column.is()
- || !m_aCurrentColumns[SelectColumns]
- || !column->getPropertySetInfo()->hasPropertyByName(PROPERTY_NAME)
- )
- {
- String sError(DBACORE_RESSTRING(RID_STR_COLUMN_UNKNOWN_PROP));
- sError.SearchAndReplaceAscii("%value", ::rtl::OUString(PROPERTY_NAME));
- SQLException aErr(sError,*this,SQLSTATE_GENERAL,1000,Any() );
- throw SQLException(DBACORE_RESSTRING(RID_STR_COLUMN_NOT_VALID),*this,SQLSTATE_GENERAL,1000,makeAny(aErr) );
- }
-
- ::rtl::OUString aName,aNewName;
- column->getPropertyValue(PROPERTY_NAME) >>= aName;
-
- if ( !m_xMetaData->supportsOrderByUnrelated() && m_aCurrentColumns[SelectColumns] && !m_aCurrentColumns[SelectColumns]->hasByName(aName))
- {
- String sError(DBACORE_RESSTRING(RID_STR_COLUMN_MUST_VISIBLE));
- sError.SearchAndReplaceAscii("%name", aName);
- throw SQLException(sError,*this,SQLSTATE_GENERAL,1000,Any() );
- }
-
- // filter anhaengen
- // select ohne where und order by aufbauen
- ::rtl::OUString aQuote = m_xMetaData->getIdentifierQuoteString();
- if ( m_aCurrentColumns[SelectColumns]->hasByName(aName) )
- {
- Reference<XPropertySet> xColumn;
- m_aCurrentColumns[SelectColumns]->getByName(aName) >>= xColumn;
- OSL_ENSURE(xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_REALNAME),"Property REALNAME not available!");
- OSL_ENSURE(xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_TABLENAME),"Property TABLENAME not available!");
- OSL_ENSURE(xColumn->getPropertySetInfo()->hasPropertyByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Function"))),"Property FUNCTION not available!");
-
- ::rtl::OUString sRealName,sTableName;
- xColumn->getPropertyValue(PROPERTY_REALNAME) >>= sRealName;
- xColumn->getPropertyValue(PROPERTY_TABLENAME) >>= sTableName;
- sal_Bool bFunction = sal_False;
- xColumn->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Function"))) >>= bFunction;
- if ( sRealName == aName )
- {
- if ( bFunction )
- aNewName = aName;
- else
- {
- if(sTableName.indexOf('.',0) != -1)
- {
- ::rtl::OUString aCatlog,aSchema,aTable;
- ::dbtools::qualifiedNameComponents(m_xMetaData,sTableName,aCatlog,aSchema,aTable,::dbtools::eInDataManipulation);
- sTableName = ::dbtools::composeTableName( m_xMetaData, aCatlog, aSchema, aTable, sal_True, ::dbtools::eInDataManipulation );
- }
- else
- sTableName = ::dbtools::quoteName(aQuote,sTableName);
-
- aNewName = sTableName;
- aNewName += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("."));
- aNewName += ::dbtools::quoteName(aQuote,sRealName);
- }
- }
- else
- aNewName = ::dbtools::quoteName(aQuote,aName);
- }
- else
- aNewName = getTableAlias(column) + ::dbtools::quoteName(aQuote,aName);
- return aNewName;
-}
-
-void SAL_CALL OSingleSelectQueryComposer::appendOrderByColumn( const Reference< XPropertySet >& column, sal_Bool ascending ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::appendOrderByColumn" );
- ::osl::MutexGuard aGuard( m_aMutex );
- ::rtl::OUString sColumnName( impl_getColumnName_throw(column) );
- ::rtl::OUString sOrder = getOrder();
- if ( (sOrder.getLength() != 0) && sColumnName.getLength() )
- sOrder += COMMA;
- sOrder += sColumnName;
- if ( !ascending && sColumnName.getLength() )
- sOrder += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" DESC "));
-
- setOrder(sOrder);
-}
-
-void SAL_CALL OSingleSelectQueryComposer::appendGroupByColumn( const Reference< XPropertySet >& column) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::appendGroupByColumn" );
- ::osl::MutexGuard aGuard( m_aMutex );
- ::rtl::OUString sColumnName( impl_getColumnName_throw(column) );
- OrderCreator aComposer;
- aComposer.append( getGroup() );
- aComposer.append( sColumnName );
- setGroup( aComposer.getComposedAndClear() );
-}
-
-::rtl::OUString OSingleSelectQueryComposer::composeStatementFromParts( const ::std::vector< ::rtl::OUString >& _rParts )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::composeStatementFromParts" );
- OSL_ENSURE( _rParts.size() == (size_t)SQLPartCount, "OSingleSelectQueryComposer::composeStatementFromParts: invalid parts array!" );
-
- ::rtl::OUStringBuffer aSql( m_aPureSelectSQL );
- for ( SQLPart eLoopParts = Where; eLoopParts != SQLPartCount; incSQLPart( eLoopParts ) )
- if ( _rParts[ eLoopParts ].getLength() )
- {
- aSql.append( getKeyword( eLoopParts ) );
- aSql.append( _rParts[ eLoopParts ] );
- }
-
- return aSql.makeStringAndClear();
-}
-
-::rtl::OUString SAL_CALL OSingleSelectQueryComposer::getElementaryQuery() throw (::com::sun::star::uno::RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getElementaryQuery" );
- return composeStatementFromParts( m_aElementaryParts );
-}
-
-void SAL_CALL OSingleSelectQueryComposer::setElementaryQuery( const ::rtl::OUString& _rElementary ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "frank.schoenheit@sun.com", "OSingleSelectQueryComposer::setElementaryQuery" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( m_aMutex );
-
- // remember the 4 current "additive" clauses
- ::std::vector< ::rtl::OUString > aAdditiveClauses( SQLPartCount );
- for ( SQLPart eLoopParts = Where; eLoopParts != SQLPartCount; incSQLPart( eLoopParts ) )
- aAdditiveClauses[ eLoopParts ] = getSQLPart( eLoopParts, m_aAdditiveIterator, sal_False );
-
- // clear the tables and columns
- clearCurrentCollections();
- // set and parse the new query
- setQuery_Impl( _rElementary );
-
- // get the 4 elementary parts of the statement
- for ( SQLPart eLoopParts = Where; eLoopParts != SQLPartCount; incSQLPart( eLoopParts ) )
- m_aElementaryParts[ eLoopParts ] = getSQLPart( eLoopParts, m_aSqlIterator, sal_False );
-
- // reset the the AdditiveIterator: m_aPureSelectSQL may have changed
- try
- {
- parseAndCheck_throwError( m_aSqlParser, composeStatementFromParts( aAdditiveClauses ), m_aAdditiveIterator, *this );
- }
- catch( const Exception& e )
- {
- (void)e;
- OSL_FAIL( "OSingleSelectQueryComposer::setElementaryQuery: there should be no error anymore for the additive statement!" );
- // every part of the additive statement should have passed other tests already, and should not
- // be able to cause any errors ... me thinks
- }
-}
-
-namespace
-{
- ::rtl::OUString getComposedClause( const ::rtl::OUString _rElementaryClause, const ::rtl::OUString _rAdditionalClause,
- TokenComposer& _rComposer, const ::rtl::OUString _rKeyword )
- {
- _rComposer.clear();
- _rComposer.append( _rElementaryClause );
- _rComposer.append( _rAdditionalClause );
- ::rtl::OUString sComposed = _rComposer.getComposedAndClear();
- if ( sComposed.getLength() )
- sComposed = _rKeyword + sComposed;
- return sComposed;
- }
-}
-
-void OSingleSelectQueryComposer::setSingleAdditiveClause( SQLPart _ePart, const ::rtl::OUString& _rClause )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setSingleAdditiveClause" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( m_aMutex );
-
- // if nothing is changed, do nothing
- if ( getSQLPart( _ePart, m_aAdditiveIterator, sal_False ) == _rClause )
- return;
-
- // collect the 4 single parts as they're currently set
- ::std::vector< ::rtl::OUString > aClauses;
- aClauses.reserve( (size_t)SQLPartCount );
- for ( SQLPart eLoopParts = Where; eLoopParts != SQLPartCount; incSQLPart( eLoopParts ) )
- aClauses.push_back( getSQLPart( eLoopParts, m_aSqlIterator, sal_True ) );
-
- // overwrite the one part in question here
- ::std::auto_ptr< TokenComposer > pComposer;
- if ( ( _ePart == Where ) || ( _ePart == Having ) )
- pComposer.reset( new FilterCreator );
- else
- pComposer.reset( new OrderCreator );
- aClauses[ _ePart ] = getComposedClause( m_aElementaryParts[ _ePart ], _rClause,
- *pComposer, getKeyword( _ePart ) );
-
- // construct the complete statement
- ::rtl::OUStringBuffer aSql(m_aPureSelectSQL);
- for ( SQLPart eLoopParts = Where; eLoopParts != SQLPartCount; incSQLPart( eLoopParts ) )
- aSql.append(aClauses[ eLoopParts ]);
-
- // set the query
- setQuery_Impl(aSql.makeStringAndClear());
-
- // clear column collections which (might) have changed
- clearColumns( ParameterColumns );
- if ( _ePart == Order )
- clearColumns( OrderColumns );
- if ( _ePart == Group )
- clearColumns( GroupByColumns );
-
- // also, since the "additive filter" change, we need to rebuild our "additive" statement
- aSql = m_aPureSelectSQL;
- // again, first get all the old additive parts
- for ( SQLPart eLoopParts = Where; eLoopParts != SQLPartCount; incSQLPart( eLoopParts ) )
- aClauses[ eLoopParts ] = getSQLPart( eLoopParts, m_aAdditiveIterator, sal_True );
- // then overwrite the one in question
- aClauses[ _ePart ] = getComposedClause( ::rtl::OUString(), _rClause, *pComposer, getKeyword( _ePart ) );
- // and parse it, so that m_aAdditiveIterator is up to date
- for ( SQLPart eLoopParts = Where; eLoopParts != SQLPartCount; incSQLPart( eLoopParts ) )
- aSql.append(aClauses[ eLoopParts ]);
- try
- {
- parseAndCheck_throwError( m_aSqlParser, aSql.makeStringAndClear(), m_aAdditiveIterator, *this );
- }
- catch( const Exception& e )
- {
- (void)e;
- OSL_FAIL( "OSingleSelectQueryComposer::setSingleAdditiveClause: there should be no error anymore for the additive statement!" );
- // every part of the additive statement should have passed other tests already, and should not
- // be able to cause any errors ... me thinks
- }
-}
-
-void SAL_CALL OSingleSelectQueryComposer::setFilter( const ::rtl::OUString& filter ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setFilter" );
- setSingleAdditiveClause( Where, filter );
-}
-
-void SAL_CALL OSingleSelectQueryComposer::setOrder( const ::rtl::OUString& order ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setOrder" );
- setSingleAdditiveClause( Order, order );
-}
-
-void SAL_CALL OSingleSelectQueryComposer::setGroup( const ::rtl::OUString& group ) throw (SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setGroup" );
- setSingleAdditiveClause( Group, group );
-}
-
-void SAL_CALL OSingleSelectQueryComposer::setHavingClause( const ::rtl::OUString& filter ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setHavingClause" );
- setSingleAdditiveClause( Having, filter );
-}
-
-// XTablesSupplier
-Reference< XNameAccess > SAL_CALL OSingleSelectQueryComposer::getTables( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getTables" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
- if ( !m_pTables )
- {
- const OSQLTables& aTables = m_aSqlIterator.getTables();
- ::std::vector< ::rtl::OUString> aNames;
- OSQLTables::const_iterator aEnd = aTables.end();
- for(OSQLTables::const_iterator aIter = aTables.begin(); aIter != aEnd;++aIter)
- aNames.push_back(aIter->first);
-
- m_pTables = new OPrivateTables(aTables,m_xMetaData->supportsMixedCaseQuotedIdentifiers(),*this,m_aMutex,aNames);
- }
-
- return m_pTables;
-}
-
-// XColumnsSupplier
-Reference< XNameAccess > SAL_CALL OSingleSelectQueryComposer::getColumns( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getColumns" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( m_aMutex );
- if ( !!m_aCurrentColumns[SelectColumns] )
- return m_aCurrentColumns[SelectColumns];
-
- ::std::vector< ::rtl::OUString> aNames;
- ::rtl::Reference< OSQLColumns> aSelectColumns;
- sal_Bool bCase = sal_True;
- Reference< XNameAccess> xQueryColumns;
- if ( m_nCommandType == CommandType::QUERY )
- {
- Reference<XColumnsSupplier> xSup(m_xConnectionQueries->getByName(m_sCommand),UNO_QUERY);
- if(xSup.is())
- xQueryColumns = xSup->getColumns();
- }
-
- do {
-
- try
- {
- SharedUNOComponent< XStatement, DisposableComponent > xStatement;
- SharedUNOComponent< XPreparedStatement, DisposableComponent > xPreparedStatement;
-
- bCase = m_xMetaData->supportsMixedCaseQuotedIdentifiers();
- aSelectColumns = m_aSqlIterator.getSelectColumns();
-
- ::rtl::OUStringBuffer aSQL;
- aSQL.append( m_aPureSelectSQL );
- aSQL.append( STR_WHERE );
-
- // preserve the original WHERE clause
- // #i102234#
- ::rtl::OUString sOriginalWhereClause = getSQLPart( Where, m_aSqlIterator, sal_False );
- if ( sOriginalWhereClause.getLength() )
- {
- aSQL.appendAscii( " ( 0 = 1 ) AND ( " );
- aSQL.append( sOriginalWhereClause );
- aSQL.appendAscii( " ) " );
- }
- else
- {
- aSQL.appendAscii( " ( 0 = 1 ) " );
- }
-
- ::rtl::OUString sGroupBy = getSQLPart( Group, m_aSqlIterator, sal_True );
- if ( sGroupBy.getLength() )
- aSQL.append( sGroupBy );
-
- ::rtl::OUString sSQL( aSQL.makeStringAndClear() );
- // normalize the statement so that it doesn't contain any application-level features anymore
- ::rtl::OUString sError;
- const ::std::auto_ptr< OSQLParseNode > pStatementTree( m_aSqlParser.parseTree( sError, sSQL, false ) );
- OSL_ENSURE( pStatementTree.get(), "OSingleSelectQueryComposer::getColumns: could not parse the column retrieval statement!" );
- if ( pStatementTree.get() )
- if ( !pStatementTree->parseNodeToExecutableStatement( sSQL, m_xConnection, m_aSqlParser, NULL ) )
- break;
-
- Reference< XResultSetMetaData > xResultSetMeta;
- Reference< XResultSetMetaDataSupplier > xResMetaDataSup;
- try
- {
- xPreparedStatement.set( m_xConnection->prepareStatement( sSQL ), UNO_QUERY_THROW );
- xResMetaDataSup.set( xPreparedStatement, UNO_QUERY_THROW );
- xResultSetMeta.set( xResMetaDataSup->getMetaData(), UNO_QUERY_THROW );
- }
- catch( const Exception& ) { }
-
- try
- {
- if ( !xResultSetMeta.is() )
- {
- xStatement.reset( Reference< XStatement >( m_xConnection->createStatement(), UNO_QUERY_THROW ) );
- Reference< XPropertySet > xStatementProps( xStatement, UNO_QUERY_THROW );
- try { xStatementProps->setPropertyValue( PROPERTY_ESCAPE_PROCESSING, makeAny( sal_False ) ); }
- catch ( const Exception& ) { DBG_UNHANDLED_EXCEPTION(); }
- xResMetaDataSup.set( xStatement->executeQuery( sSQL ), UNO_QUERY_THROW );
- xResultSetMeta.set( xResMetaDataSup->getMetaData(), UNO_QUERY_THROW );
- }
- }
- catch( const Exception& )
- {
- //@see issue http://qa.openoffice.org/issues/show_bug.cgi?id=110111
- // access returns a different order of column names when executing select * from
- // and asking the columns from the metadata.
- Reference< XParameters > xParameters( xPreparedStatement, UNO_QUERY_THROW );
- Reference< XIndexAccess > xPara = getParameters();
- for(sal_Int32 i = 1;i <= xPara->getCount();++i)
- xParameters->setNull(i,DataType::VARCHAR);
- xResMetaDataSup.set(xPreparedStatement->executeQuery(), UNO_QUERY_THROW );
- xResultSetMeta.set( xResMetaDataSup->getMetaData(), UNO_QUERY_THROW );
- }
-
- if ( aSelectColumns->get().empty() )
- {
- // This is a valid case. If we can syntactically parse the query, but not semantically
- // (e.g. because it is based on a table we do not know), then there will be no SelectColumns
- aSelectColumns = ::connectivity::parse::OParseColumn::createColumnsForResultSet( xResultSetMeta, m_xMetaData ,xQueryColumns);
- break;
- }
-
- const ::comphelper::UStringMixEqual aCaseCompare( bCase );
- const ::comphelper::TStringMixEqualFunctor aCaseCompareFunctor( bCase );
- typedef ::std::set< size_t > SizeTSet;
- SizeTSet aUsedSelectColumns;
- ::connectivity::parse::OParseColumn::StringMap aColumnNames;
-
- sal_Int32 nCount = xResultSetMeta->getColumnCount();
- OSL_ENSURE( (size_t) nCount == aSelectColumns->get().size(), "OSingleSelectQueryComposer::getColumns: inconsistent column counts, this might result in wrong columns!" );
- for(sal_Int32 i=1;i<=nCount;++i)
- {
- ::rtl::OUString sColumnName = xResultSetMeta->getColumnName(i);
- ::rtl::OUString sColumnLabel;
- if ( xQueryColumns.is() && xQueryColumns->hasByName(sColumnName) )
- {
- Reference<XPropertySet> xQueryColumn(xQueryColumns->getByName(sColumnName),UNO_QUERY_THROW);
- xQueryColumn->getPropertyValue(PROPERTY_LABEL) >>= sColumnLabel;
- }
- else
- sColumnLabel = xResultSetMeta->getColumnLabel(i);
- sal_Bool bFound = sal_False;
- OSQLColumns::Vector::const_iterator aFind = ::connectivity::find(aSelectColumns->get().begin(),aSelectColumns->get().end(),sColumnLabel,aCaseCompare);
- size_t nFoundSelectColumnPos = aFind - aSelectColumns->get().begin();
- if ( aFind != aSelectColumns->get().end() )
- {
- if ( aUsedSelectColumns.find( nFoundSelectColumnPos ) != aUsedSelectColumns.end() )
- { // we found a column name which exists twice
- // so we start after the first found
- do
- {
- aFind = ::connectivity::findRealName(++aFind,aSelectColumns->get().end(),sColumnName,aCaseCompare);
- nFoundSelectColumnPos = aFind - aSelectColumns->get().begin();
- }
- while ( ( aUsedSelectColumns.find( nFoundSelectColumnPos ) != aUsedSelectColumns.end() )
- && ( aFind != aSelectColumns->get().end() )
- );
- }
- if ( aFind != aSelectColumns->get().end() )
- {
- (*aFind)->getPropertyValue(PROPERTY_NAME) >>= sColumnName;
- aUsedSelectColumns.insert( nFoundSelectColumnPos );
- aNames.push_back(sColumnName);
- bFound = sal_True;
- }
- }
-
- if ( bFound )
- continue;
-
- OSQLColumns::Vector::const_iterator aRealFind = ::connectivity::findRealName(
- aSelectColumns->get().begin(), aSelectColumns->get().end(), sColumnName, aCaseCompare );
-
- if ( i > static_cast< sal_Int32>( aSelectColumns->get().size() ) )
- {
- aSelectColumns->get().push_back(
- ::connectivity::parse::OParseColumn::createColumnForResultSet( xResultSetMeta, m_xMetaData, i ,aColumnNames)
- );
- OSL_ENSURE( aSelectColumns->get().size() == (size_t)i, "OSingleSelectQueryComposer::getColumns: inconsistency!" );
- }
- else if ( aRealFind == aSelectColumns->get().end() )
- {
- // we can now only look if we found it under the realname propertery
- // here we have to make the assumption that the position is correct
- OSQLColumns::Vector::iterator aFind2 = aSelectColumns->get().begin() + i-1;
- Reference<XPropertySet> xProp(*aFind2,UNO_QUERY);
- if ( !xProp.is() || !xProp->getPropertySetInfo()->hasPropertyByName( PROPERTY_REALNAME ) )
- continue;
-
- ::connectivity::parse::OParseColumn* pColumn = new ::connectivity::parse::OParseColumn(xProp,bCase);
- pColumn->setFunction(::comphelper::getBOOL(xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Function")))));
- pColumn->setAggregateFunction(::comphelper::getBOOL(xProp->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AggregateFunction")))));
-
- ::rtl::OUString sRealName;
- xProp->getPropertyValue(PROPERTY_REALNAME) >>= sRealName;
- ::std::vector< ::rtl::OUString>::iterator aFindName;
- if ( !sColumnName.getLength() )
- xProp->getPropertyValue(PROPERTY_NAME) >>= sColumnName;
-
- aFindName = ::std::find_if(aNames.begin(),aNames.end(),::std::bind2nd(aCaseCompareFunctor,sColumnName));
- sal_Int32 j = 0;
- while ( aFindName != aNames.end() )
- {
- sColumnName += ::rtl::OUString::valueOf(++j);
- aFindName = ::std::find_if(aNames.begin(),aNames.end(),::std::bind2nd(aCaseCompareFunctor,sColumnName));
- }
-
- pColumn->setName(sColumnName);
- pColumn->setRealName(sRealName);
- pColumn->setTableName(::comphelper::getString(xProp->getPropertyValue(PROPERTY_TABLENAME)));
-
- (aSelectColumns->get())[i-1] = pColumn;
- }
- else
- continue;
-
- aUsedSelectColumns.insert( (size_t)(i - 1) );
- aNames.push_back( sColumnName );
- }
- }
- catch(const Exception&)
- {
- }
-
- } while ( false );
-
- if ( aNames.empty() )
- m_aCurrentColumns[ SelectColumns ] = OPrivateColumns::createWithIntrinsicNames( aSelectColumns, bCase, *this, m_aMutex );
- else
- m_aCurrentColumns[ SelectColumns ] = new OPrivateColumns( aSelectColumns, bCase, *this, m_aMutex, aNames );
-
- return m_aCurrentColumns[SelectColumns];
-}
-
-sal_Bool OSingleSelectQueryComposer::setORCriteria(OSQLParseNode* pCondition, OSQLParseTreeIterator& _rIterator,
- ::std::vector< ::std::vector < PropertyValue > >& rFilters, const Reference< ::com::sun::star::util::XNumberFormatter > & xFormatter) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setORCriteria" );
- // Runde Klammern um den Ausdruck
- if (pCondition->count() == 3 &&
- SQL_ISPUNCTUATION(pCondition->getChild(0),"(") &&
- SQL_ISPUNCTUATION(pCondition->getChild(2),")"))
- {
- return setORCriteria(pCondition->getChild(1), _rIterator, rFilters, xFormatter);
- }
- // oder Verknuepfung
- // a searchcondition can only look like this: search_condition SQL_TOKEN_OR boolean_term
- else if (SQL_ISRULE(pCondition,search_condition))
- {
- sal_Bool bResult = sal_True;
- for (int i = 0; bResult && i < 3; i+=2)
- {
- // Ist das erste Element wieder eine OR-Verknuepfung?
- // Dann rekursiv absteigen ...
- if (SQL_ISRULE(pCondition->getChild(i),search_condition))
- bResult = setORCriteria(pCondition->getChild(i), _rIterator, rFilters, xFormatter);
- else
- {
- rFilters.push_back( ::std::vector < PropertyValue >());
- bResult = setANDCriteria(pCondition->getChild(i), _rIterator, rFilters[rFilters.size() - 1], xFormatter);
- }
- }
- return bResult;
- }
- else
- {
- rFilters.push_back(::std::vector < PropertyValue >());
- return setANDCriteria(pCondition, _rIterator, rFilters[rFilters.size() - 1], xFormatter);
- }
-}
-
-sal_Bool OSingleSelectQueryComposer::setANDCriteria( OSQLParseNode * pCondition,
- OSQLParseTreeIterator& _rIterator, ::std::vector < PropertyValue >& rFilter, const Reference< XNumberFormatter > & xFormatter) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setANDCriteria" );
- // Runde Klammern
- if (SQL_ISRULE(pCondition,boolean_primary))
- {
- // this should not occur
- OSL_FAIL("boolean_primary in And-Criteria");
- return sal_False;
- }
- // Das erste Element ist (wieder) eine AND-Verknuepfung
- else if ( SQL_ISRULE(pCondition,boolean_term) && pCondition->count() == 3 )
- {
- return setANDCriteria(pCondition->getChild(0), _rIterator, rFilter, xFormatter) &&
- setANDCriteria(pCondition->getChild(2), _rIterator, rFilter, xFormatter);
- }
- else if (SQL_ISRULE(pCondition, comparison_predicate))
- {
- return setComparsionPredicate(pCondition,_rIterator,rFilter,xFormatter);
- }
- else if (SQL_ISRULE(pCondition,like_predicate) ||
- SQL_ISRULE(pCondition,test_for_null) ||
- SQL_ISRULE(pCondition,in_predicate) ||
- SQL_ISRULE(pCondition,all_or_any_predicate) ||
- SQL_ISRULE(pCondition,between_predicate))
- {
- if (SQL_ISRULE(pCondition->getChild(0), column_ref))
- {
- PropertyValue aItem;
- ::rtl::OUString aValue;
- ::rtl::OUString aColumnName;
-
-
- pCondition->parseNodeToStr( aValue, m_xConnection, NULL );
- pCondition->getChild(0)->parseNodeToStr( aColumnName, m_xConnection, NULL );
-
- // don't display the column name
- aValue = aValue.copy(aColumnName.getLength());
- aValue = aValue.trim();
-
- aItem.Name = getColumnName(pCondition->getChild(0),_rIterator);
- aItem.Value <<= aValue;
- aItem.Handle = 0; // just to know that this is not one the known ones
- if ( SQL_ISRULE(pCondition,like_predicate) )
- {
- if ( SQL_ISTOKEN(pCondition->getChild(1)->getChild(0),NOT) )
- aItem.Handle = SQLFilterOperator::NOT_LIKE;
- else
- aItem.Handle = SQLFilterOperator::LIKE;
- }
- else if (SQL_ISRULE(pCondition,test_for_null))
- {
- if (SQL_ISTOKEN(pCondition->getChild(1)->getChild(1),NOT) )
- aItem.Handle = SQLFilterOperator::NOT_SQLNULL;
- else
- aItem.Handle = SQLFilterOperator::SQLNULL;
- }
- else if (SQL_ISRULE(pCondition,in_predicate))
- {
- OSL_FAIL( "OSingleSelectQueryComposer::setANDCriteria: in_predicate not implemented!" );
- }
- else if (SQL_ISRULE(pCondition,all_or_any_predicate))
- {
- OSL_FAIL( "OSingleSelectQueryComposer::setANDCriteria: all_or_any_predicate not implemented!" );
- }
- else if (SQL_ISRULE(pCondition,between_predicate))
- {
- OSL_FAIL( "OSingleSelectQueryComposer::setANDCriteria: between_predicate not implemented!" );
- }
-
- rFilter.push_back(aItem);
- }
- else
- return sal_False;
- }
- else if (SQL_ISRULE(pCondition,existence_test) ||
- SQL_ISRULE(pCondition,unique_test))
- {
- // this couldn't be handled here, too complex
- // as we need a field name
- return sal_False;
- }
- else
- return sal_False;
-
- return sal_True;
-}
-
-sal_Int32 OSingleSelectQueryComposer::getPredicateType(OSQLParseNode * _pPredicate) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getPredicateType" );
- sal_Int32 nPredicate = SQLFilterOperator::EQUAL;
- switch (_pPredicate->getNodeType())
- {
- case SQL_NODE_EQUAL:
- nPredicate = SQLFilterOperator::EQUAL;
- break;
- case SQL_NODE_NOTEQUAL:
- nPredicate = SQLFilterOperator::NOT_EQUAL;
- break;
- case SQL_NODE_LESS:
- nPredicate = SQLFilterOperator::LESS;
- break;
- case SQL_NODE_LESSEQ:
- nPredicate = SQLFilterOperator::LESS_EQUAL;
- break;
- case SQL_NODE_GREAT:
- nPredicate = SQLFilterOperator::GREATER;
- break;
- case SQL_NODE_GREATEQ:
- nPredicate = SQLFilterOperator::GREATER_EQUAL;
- break;
- default:
- OSL_FAIL("Wrong NodeType!");
- }
- return nPredicate;
-}
-
-sal_Bool OSingleSelectQueryComposer::setComparsionPredicate(OSQLParseNode * pCondition, OSQLParseTreeIterator& _rIterator,
- ::std::vector < PropertyValue >& rFilter, const Reference< ::com::sun::star::util::XNumberFormatter > & xFormatter) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setComparsionPredicate" );
- OSL_ENSURE(SQL_ISRULE(pCondition, comparison_predicate),"setComparsionPredicate: pCondition ist kein ComparsionPredicate");
- if (SQL_ISRULE(pCondition->getChild(0), column_ref) ||
- SQL_ISRULE(pCondition->getChild(pCondition->count()-1), column_ref))
- {
- PropertyValue aItem;
- ::rtl::OUString aValue;
- sal_uInt32 nPos;
- if (SQL_ISRULE(pCondition->getChild(0), column_ref))
- {
- nPos = 0;
- sal_uInt32 i=1;
-
- aItem.Handle = getPredicateType(pCondition->getChild(i));
- // don't display the equal
- if (pCondition->getChild(i)->getNodeType() == SQL_NODE_EQUAL)
- i++;
-
- // go forward
- for (;i < pCondition->count();i++)
- pCondition->getChild(i)->parseNodeToPredicateStr(
- aValue, m_xConnection, xFormatter, m_aLocale, static_cast<sal_Char>(m_sDecimalSep.toChar() ) );
- }
- else if (SQL_ISRULE(pCondition->getChild(pCondition->count()-1), column_ref))
- {
- nPos = pCondition->count()-1;
-
- sal_Int32 i = pCondition->count() - 2;
- switch (pCondition->getChild(i)->getNodeType())
- {
- case SQL_NODE_EQUAL:
- // don't display the equal
- i--;
- aItem.Handle = SQLFilterOperator::EQUAL;
- break;
- case SQL_NODE_NOTEQUAL:
- i--;
- aItem.Handle = SQLFilterOperator::NOT_EQUAL;
- break;
- case SQL_NODE_LESS:
- // take the opposite as we change the order
- i--;
- aValue = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(">="));
- aItem.Handle = SQLFilterOperator::GREATER_EQUAL;
- break;
- case SQL_NODE_LESSEQ:
- // take the opposite as we change the order
- i--;
- aValue = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(">"));
- aItem.Handle = SQLFilterOperator::GREATER;
- break;
- case SQL_NODE_GREAT:
- // take the opposite as we change the order
- i--;
- aValue = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("<="));
- aItem.Handle = SQLFilterOperator::LESS_EQUAL;
- break;
- case SQL_NODE_GREATEQ:
- // take the opposite as we change the order
- i--;
- aValue = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("<"));
- aItem.Handle = SQLFilterOperator::LESS;
- break;
- default:
- break;
- }
-
- // go backward
- for (; i >= 0; i--)
- pCondition->getChild(i)->parseNodeToPredicateStr(
- aValue, m_xConnection, xFormatter, m_aLocale, static_cast<sal_Char>( m_sDecimalSep.toChar() ) );
- }
- else
- return sal_False;
-
- aItem.Name = getColumnName(pCondition->getChild(nPos),_rIterator);
- aItem.Value <<= aValue;
- rFilter.push_back(aItem);
- }
- else if (SQL_ISRULE(pCondition->getChild(0), set_fct_spec ) ||
- SQL_ISRULE(pCondition->getChild(0), general_set_fct))
- {
- PropertyValue aItem;
- ::rtl::OUString aValue;
- ::rtl::OUString aColumnName;
-
- pCondition->getChild(2)->parseNodeToPredicateStr(aValue, m_xConnection, xFormatter, m_aLocale, static_cast<sal_Char>( m_sDecimalSep.toChar() ) );
- pCondition->getChild(0)->parseNodeToPredicateStr( aColumnName, m_xConnection, xFormatter, m_aLocale, static_cast<sal_Char>( m_sDecimalSep .toChar() ) );
-
- aItem.Name = getColumnName(pCondition->getChild(0),_rIterator);
- aItem.Value <<= aValue;
- aItem.Handle = getPredicateType(pCondition->getChild(1));
- rFilter.push_back(aItem);
- }
- else // kann sich nur um einen Expr. Ausdruck handeln
- {
- PropertyValue aItem;
- ::rtl::OUString aName, aValue;
-
- OSQLParseNode *pLhs = pCondition->getChild(0);
- OSQLParseNode *pRhs = pCondition->getChild(2);
-
- // Feldnamen
- sal_uInt16 i;
- for (i=0;i< pLhs->count();i++)
- pLhs->getChild(i)->parseNodeToPredicateStr( aName, m_xConnection, xFormatter, m_aLocale, static_cast<sal_Char>( m_sDecimalSep.toChar() ) );
-
- // Kriterium
- aItem.Handle = getPredicateType(pCondition->getChild(1));
- aValue = pCondition->getChild(1)->getTokenValue();
- for(i=0;i< pRhs->count();i++)
- pRhs->getChild(i)->parseNodeToPredicateStr(aValue, m_xConnection, xFormatter, m_aLocale, static_cast<sal_Char>( m_sDecimalSep.toChar() ) );
-
- aItem.Name = aName;
- aItem.Value <<= aValue;
- rFilter.push_back(aItem);
- }
- return sal_True;
-}
-
-// functions for analysing SQL
-::rtl::OUString OSingleSelectQueryComposer::getColumnName( ::connectivity::OSQLParseNode* pColumnRef, OSQLParseTreeIterator& _rIterator ) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getColumnName" );
- ::rtl::OUString aTableRange, aColumnName;
- _rIterator.getColumnRange(pColumnRef,aColumnName,aTableRange);
- return aColumnName;
-}
-
-::rtl::OUString SAL_CALL OSingleSelectQueryComposer::getFilter( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getFilter" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( m_aMutex );
- return getSQLPart(Where,m_aAdditiveIterator,sal_False);
-}
-
-::rtl::OUString SAL_CALL OSingleSelectQueryComposer::getOrder( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getOrder" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( m_aMutex );
- return getSQLPart(Order,m_aAdditiveIterator,sal_False);
-}
-
-::rtl::OUString SAL_CALL OSingleSelectQueryComposer::getGroup( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getGroup" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( m_aMutex );
- return getSQLPart(Group,m_aAdditiveIterator,sal_False);
-}
-
-::rtl::OUString OSingleSelectQueryComposer::getHavingClause() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getHavingClause" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( m_aMutex );
- return getSQLPart(Having,m_aAdditiveIterator,sal_False);
-}
-
-::rtl::OUString OSingleSelectQueryComposer::getTableAlias(const Reference< XPropertySet >& column) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getTableAlias" );
- ::rtl::OUString sReturn;
- if(m_pTables && m_pTables->getCount() > 1)
- {
- ::rtl::OUString aCatalog,aSchema,aTable,aComposedName,aColumnName;
- column->getPropertyValue(PROPERTY_CATALOGNAME) >>= aCatalog;
- column->getPropertyValue(PROPERTY_SCHEMANAME) >>= aSchema;
- column->getPropertyValue(PROPERTY_TABLENAME) >>= aTable;
- column->getPropertyValue(PROPERTY_NAME) >>= aColumnName;
-
- Sequence< ::rtl::OUString> aNames(m_pTables->getElementNames());
- const ::rtl::OUString* pBegin = aNames.getConstArray();
- const ::rtl::OUString* pEnd = pBegin + aNames.getLength();
-
- if(!aTable.getLength())
- { // we haven't found a table name, now we must search every table for this column
- for(;pBegin != pEnd;++pBegin)
- {
- Reference<XColumnsSupplier> xColumnsSupp;
- m_pTables->getByName(*pBegin) >>= xColumnsSupp;
-
- if(xColumnsSupp.is() && xColumnsSupp->getColumns()->hasByName(aColumnName))
- {
- aTable = *pBegin;
- break;
- }
- }
- }
- else
- {
- aComposedName = ::dbtools::composeTableName( m_xMetaData, aCatalog, aSchema, aTable, sal_False, ::dbtools::eInDataManipulation );
-
- // first check if this is the table we want to or has it a tablealias
-
- if(!m_pTables->hasByName(aComposedName))
- {
- ::comphelper::UStringMixLess aTmp(m_aAdditiveIterator.getTables().key_comp());
- ::comphelper::UStringMixEqual aComp(static_cast< ::comphelper::UStringMixLess*>(&aTmp)->isCaseSensitive());
- for(;pBegin != pEnd;++pBegin)
- {
- Reference<XPropertySet> xTableProp;
- m_pTables->getByName(*pBegin) >>= xTableProp;
- OSL_ENSURE(xTableProp.is(),"Table isn't a propertyset!");
- if(xTableProp.is())
- {
- ::rtl::OUString aCatalog2,aSchema2,aTable2;
- xTableProp->getPropertyValue(PROPERTY_CATALOGNAME) >>= aCatalog2;
- xTableProp->getPropertyValue(PROPERTY_SCHEMANAME) >>= aSchema2;
- xTableProp->getPropertyValue(PROPERTY_NAME) >>= aTable2;
- if(aComp(aCatalog,aCatalog2) && aComp(aSchema,aSchema2) && aComp(aTable,aTable2))
- {
- aCatalog = aCatalog2;
- aSchema = aSchema2;
- aTable = aTable2;
- break;
- }
- }
- }
- }
- }
- if(pBegin != pEnd)
- {
- sReturn = ::dbtools::composeTableName( m_xMetaData, aCatalog, aSchema, aTable, sal_True, ::dbtools::eInDataManipulation );
- sReturn += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("."));
- }
- }
- return sReturn;
-}
-
-Reference< XIndexAccess > SAL_CALL OSingleSelectQueryComposer::getParameters( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getParameters" );
- // now set the Parameters
- if ( !m_aCurrentColumns[ParameterColumns] )
- {
- ::rtl::Reference< OSQLColumns> aCols = m_aSqlIterator.getParameters();
- ::std::vector< ::rtl::OUString> aNames;
- OSQLColumns::Vector::const_iterator aEnd = aCols->get().end();
- for(OSQLColumns::Vector::const_iterator aIter = aCols->get().begin(); aIter != aEnd;++aIter)
- aNames.push_back(getString((*aIter)->getPropertyValue(PROPERTY_NAME)));
- m_aCurrentColumns[ParameterColumns] = new OPrivateColumns(aCols,m_xMetaData->supportsMixedCaseQuotedIdentifiers(),*this,m_aMutex,aNames,sal_True);
- }
-
- return m_aCurrentColumns[ParameterColumns];
-}
-
-void OSingleSelectQueryComposer::clearColumns( const EColumnType _eType )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::clearColumns" );
- OPrivateColumns* pColumns = m_aCurrentColumns[ _eType ];
- if ( pColumns != NULL )
- {
- pColumns->disposing();
- m_aColumnsCollection.push_back( pColumns );
- m_aCurrentColumns[ _eType ] = NULL;
- }
-}
-
-void OSingleSelectQueryComposer::clearCurrentCollections()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::clearCurrentCollections" );
- ::std::vector<OPrivateColumns*>::iterator aIter = m_aCurrentColumns.begin();
- ::std::vector<OPrivateColumns*>::iterator aEnd = m_aCurrentColumns.end();
- for (;aIter != aEnd;++aIter)
- {
- if ( *aIter )
- {
- (*aIter)->disposing();
- m_aColumnsCollection.push_back(*aIter);
- *aIter = NULL;
- }
- }
-
- if(m_pTables)
- {
- m_pTables->disposing();
- m_aTablesCollection.push_back(m_pTables);
- m_pTables = NULL;
- }
-}
-
-Reference< XIndexAccess > OSingleSelectQueryComposer::setCurrentColumns( EColumnType _eType,
- const ::rtl::Reference< OSQLColumns >& _rCols )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setCurrentColumns" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
- // now set the group columns
- if ( !m_aCurrentColumns[_eType] )
- {
- ::std::vector< ::rtl::OUString> aNames;
- OSQLColumns::Vector::const_iterator aEnd = _rCols->get().end();
- for(OSQLColumns::Vector::const_iterator aIter = _rCols->get().begin(); aIter != aEnd;++aIter)
- aNames.push_back(getString((*aIter)->getPropertyValue(PROPERTY_NAME)));
- m_aCurrentColumns[_eType] = new OPrivateColumns(_rCols,m_xMetaData->supportsMixedCaseQuotedIdentifiers(),*this,m_aMutex,aNames,sal_True);
- }
-
- return m_aCurrentColumns[_eType];
-}
-
-Reference< XIndexAccess > SAL_CALL OSingleSelectQueryComposer::getGroupColumns( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getGroupColumns" );
- return setCurrentColumns( GroupByColumns, m_aAdditiveIterator.getGroupColumns() );
-}
-
-Reference< XIndexAccess > SAL_CALL OSingleSelectQueryComposer::getOrderColumns( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getOrderColumns" );
- return setCurrentColumns( OrderColumns, m_aAdditiveIterator.getOrderColumns() );
-}
-
-::rtl::OUString SAL_CALL OSingleSelectQueryComposer::getQueryWithSubstitution( ) throw (SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getQueryWithSubstitution" );
- ::osl::MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::rtl::OUString sSqlStatement( getQuery() );
-
- const OSQLParseNode* pStatementNode = m_aSqlIterator.getParseTree();
- if ( pStatementNode )
- {
- SQLException aError;
- if ( !pStatementNode->parseNodeToExecutableStatement( sSqlStatement, m_xConnection, m_aSqlParser, &aError ) )
- throw SQLException( aError );
- }
-
- return sSqlStatement;
-}
-
-::rtl::OUString OSingleSelectQueryComposer::getStatementPart( TGetParseNode& _aGetFunctor, OSQLParseTreeIterator& _rIterator )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getStatementPart" );
- ::rtl::OUString sResult;
-
- const OSQLParseNode* pNode = _aGetFunctor( &_rIterator );
- if ( pNode )
- pNode->parseNodeToStr( sResult, m_xConnection );
-
- return sResult;
-}
-
-namespace
-{
- ::rtl::OUString lcl_getCondition(const Sequence< Sequence< PropertyValue > >& filter,const OPredicateInputController& i_aPredicateInputController,const Reference< XNameAccess >& i_xSelectColumns)
- {
- ::rtl::OUStringBuffer sRet;
- const Sequence< PropertyValue >* pOrIter = filter.getConstArray();
- const Sequence< PropertyValue >* pOrEnd = pOrIter + filter.getLength();
- while ( pOrIter != pOrEnd )
- {
- if ( pOrIter->getLength() )
- {
- sRet.append(L_BRACKET);
- const PropertyValue* pAndIter = pOrIter->getConstArray();
- const PropertyValue* pAndEnd = pAndIter + pOrIter->getLength();
- while ( pAndIter != pAndEnd )
- {
- sRet.append(pAndIter->Name);
- ::rtl::OUString sValue;
- pAndIter->Value >>= sValue;
- if ( i_xSelectColumns.is() && i_xSelectColumns->hasByName(pAndIter->Name) )
- {
- Reference<XPropertySet> xColumn(i_xSelectColumns->getByName(pAndIter->Name),UNO_QUERY);
- sValue = i_aPredicateInputController.getPredicateValue(sValue,xColumn,sal_True);
- }
- else
- {
- sValue = i_aPredicateInputController.getPredicateValue(pAndIter->Name,sValue,sal_True);
- }
- lcl_addFilterCriteria_throw(pAndIter->Handle,sValue,sRet);
- ++pAndIter;
- if ( pAndIter != pAndEnd )
- sRet.append(STR_AND);
- }
- sRet.append(R_BRACKET);
- }
- ++pOrIter;
- if ( pOrIter != pOrEnd && sRet.getLength() )
- sRet.append(STR_OR);
- }
- return sRet.makeStringAndClear();
- }
-}
-
-void SAL_CALL OSingleSelectQueryComposer::setStructuredFilter( const Sequence< Sequence< PropertyValue > >& filter ) throw (SQLException, ::com::sun::star::lang::IllegalArgumentException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setStructuredFilter" );
- OPredicateInputController aPredicateInput(m_aContext.getLegacyServiceFactory(),m_xConnection);
- setFilter(lcl_getCondition(filter,aPredicateInput,getColumns()));
-}
-
-void SAL_CALL OSingleSelectQueryComposer::setStructuredHavingClause( const Sequence< Sequence< PropertyValue > >& filter ) throw (SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setStructuredHavingClause" );
- OPredicateInputController aPredicateInput(m_aContext.getLegacyServiceFactory(),m_xConnection);
- setHavingClause(lcl_getCondition(filter,aPredicateInput,getColumns()));
-}
-
-void OSingleSelectQueryComposer::setConditionByColumn( const Reference< XPropertySet >& column, sal_Bool andCriteria ,::std::mem_fun1_t<bool,OSingleSelectQueryComposer,::rtl::OUString>& _aSetFunctor,sal_Int32 filterOperator)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::setConditionByColumn" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- if ( !column.is()
- || !column->getPropertySetInfo()->hasPropertyByName(PROPERTY_VALUE)
- || !column->getPropertySetInfo()->hasPropertyByName(PROPERTY_NAME)
- || !column->getPropertySetInfo()->hasPropertyByName(PROPERTY_TYPE))
- throw SQLException(DBACORE_RESSTRING(RID_STR_COLUMN_NOT_VALID),*this,SQLSTATE_GENERAL,1000,Any() );
-
- sal_Int32 nType = 0;
- column->getPropertyValue(PROPERTY_TYPE) >>= nType;
- sal_Int32 nSearchable = dbtools::getSearchColumnFlag(m_xConnection,nType);
- if(nSearchable == ColumnSearch::NONE)
- throw SQLException(DBACORE_RESSTRING(RID_STR_COLUMN_NOT_SEARCHABLE),*this,SQLSTATE_GENERAL,1000,Any() );
-
- ::osl::MutexGuard aGuard( m_aMutex );
-
- ::rtl::OUString aName;
- column->getPropertyValue(PROPERTY_NAME) >>= aName;
-
- Any aValue;
- column->getPropertyValue(PROPERTY_VALUE) >>= aValue;
-
- ::rtl::OUStringBuffer aSQL;
- const ::rtl::OUString aQuote = m_xMetaData->getIdentifierQuoteString();
- getColumns();
-
- if ( m_aCurrentColumns[SelectColumns] && m_aCurrentColumns[SelectColumns]->hasByName(aName) )
- {
- Reference<XPropertySet> xColumn;
- m_aCurrentColumns[SelectColumns]->getByName(aName) >>= xColumn;
- OSL_ENSURE(xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_REALNAME),"Property REALNAME not available!");
- OSL_ENSURE(xColumn->getPropertySetInfo()->hasPropertyByName(PROPERTY_TABLENAME),"Property TABLENAME not available!");
- OSL_ENSURE(xColumn->getPropertySetInfo()->hasPropertyByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("AggregateFunction"))),"Property AggregateFunctionnot available!");
-
- ::rtl::OUString sRealName,sTableName;
- xColumn->getPropertyValue(PROPERTY_REALNAME) >>= sRealName;
- xColumn->getPropertyValue(PROPERTY_TABLENAME) >>= sTableName;
- if(sTableName.indexOf('.',0) != -1)
- {
- ::rtl::OUString aCatlog,aSchema,aTable;
- ::dbtools::qualifiedNameComponents(m_xMetaData,sTableName,aCatlog,aSchema,aTable,::dbtools::eInDataManipulation);
- sTableName = ::dbtools::composeTableName( m_xMetaData, aCatlog, aSchema, aTable, sal_True, ::dbtools::eInDataManipulation );
- }
- else
- sTableName = ::dbtools::quoteName(aQuote,sTableName);
-
- if ( !::comphelper::getBOOL(xColumn->getPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Function")))) )
- {
- aSQL = sTableName;
- aSQL.appendAscii( "." );
- aSQL.append( ::dbtools::quoteName( aQuote, sRealName ) );
- }
- else
- aSQL = sRealName;
-
- }
- else
- {
- aSQL = getTableAlias( column );
- aSQL.append( ::dbtools::quoteName( aQuote, aName ) );
- }
-
- if ( aValue.hasValue() )
- {
- if( !m_xTypeConverter.is() )
- m_aContext.createComponent( "com.sun.star.script.Converter", m_xTypeConverter );
- OSL_ENSURE(m_xTypeConverter.is(),"NO typeconverter!");
-
- if ( nType != DataType::BOOLEAN && DataType::BIT != nType )
- {
- ::rtl::OUString sEmpty;
- lcl_addFilterCriteria_throw(filterOperator,sEmpty,aSQL);
- }
-
- switch(nType)
- {
- case DataType::VARCHAR:
- case DataType::CHAR:
- case DataType::LONGVARCHAR:
- aSQL.append( DBTypeConversion::toSQLString( nType, aValue, sal_True, m_xTypeConverter ) );
- break;
- case DataType::CLOB:
- {
- Reference< XClob > xClob(aValue,UNO_QUERY);
- if ( xClob.is() )
- {
- const ::sal_Int64 nLength = xClob->length();
- if ( sal_Int64(nLength + aSQL.getLength() + STR_LIKE.getLength() ) < sal_Int64(SAL_MAX_INT32) )
- {
- aSQL.appendAscii("'");
- aSQL.append( xClob->getSubString(1,(sal_Int32)nLength) );
- aSQL.appendAscii("'");
- }
- }
- else
- {
- aSQL.append( DBTypeConversion::toSQLString( nType, aValue, sal_True, m_xTypeConverter ) );
- }
- }
- break;
- case DataType::VARBINARY:
- case DataType::BINARY:
- case DataType::LONGVARBINARY:
- {
- Sequence<sal_Int8> aSeq;
- if(aValue >>= aSeq)
- {
- if(nSearchable == ColumnSearch::CHAR)
- {
- aSQL.appendAscii( "\'" );
- }
- aSQL.appendAscii( "0x" );
- const sal_Int8* pBegin = aSeq.getConstArray();
- const sal_Int8* pEnd = pBegin + aSeq.getLength();
- for(;pBegin != pEnd;++pBegin)
- {
- aSQL.append( (sal_Int32)*pBegin, 16 ).getStr();
- }
- if(nSearchable == ColumnSearch::CHAR)
- aSQL.appendAscii( "\'" );
- }
- else
- throw SQLException(DBACORE_RESSTRING(RID_STR_NOT_SEQUENCE_INT8),*this,SQLSTATE_GENERAL,1000,Any() );
- }
- break;
- case DataType::BIT:
- case DataType::BOOLEAN:
- {
- sal_Bool bValue = sal_False;
- m_xTypeConverter->convertToSimpleType(aValue, TypeClass_BOOLEAN) >>= bValue;
-
- ::rtl::OUString sColumnExp = aSQL.makeStringAndClear();
- getBoleanComparisonPredicate( sColumnExp, bValue, m_nBoolCompareMode, aSQL );
- }
- break;
- default:
- aSQL.append( DBTypeConversion::toSQLString( nType, aValue, sal_True, m_xTypeConverter ) );
- break;
- }
- }
- else
- {
- sal_Int32 nFilterOp = filterOperator;
- if ( filterOperator != SQLFilterOperator::SQLNULL && filterOperator != SQLFilterOperator::NOT_SQLNULL )
- nFilterOp = SQLFilterOperator::SQLNULL;
- ::rtl::OUString sEmpty;
- lcl_addFilterCriteria_throw(nFilterOp,sEmpty,aSQL);
- }
-
- // filter anhaengen
- // select ohne where und order by aufbauen
- ::rtl::OUString sFilter = getFilter();
-
- if ( sFilter.getLength() && aSQL.getLength() )
- {
- ::rtl::OUString sTemp(L_BRACKET);
- sTemp += sFilter;
- sTemp += R_BRACKET;
- sTemp += andCriteria ? STR_AND : STR_OR;
- sFilter = sTemp;
- }
- sFilter += aSQL.makeStringAndClear();
-
- // add the filter and the sort order
- _aSetFunctor(this,sFilter);
-}
-
-Sequence< Sequence< PropertyValue > > OSingleSelectQueryComposer::getStructuredCondition( TGetParseNode& _aGetFunctor )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getStructuredCondition" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- MutexGuard aGuard(m_aMutex);
-
- Sequence< Sequence< PropertyValue > > aFilterSeq;
- ::rtl::OUString sFilter = getStatementPart( _aGetFunctor, m_aAdditiveIterator );
-
- if ( sFilter.getLength() != 0 )
- {
- ::rtl::OUString aSql(m_aPureSelectSQL);
- // build a temporary parse node
- const OSQLParseNode* pTempNode = m_aAdditiveIterator.getParseTree();
-
- aSql += STR_WHERE;
- aSql += sFilter;
-
- ::rtl::OUString aErrorMsg;
- ::std::auto_ptr<OSQLParseNode> pSqlParseNode( m_aSqlParser.parseTree(aErrorMsg,aSql));
- if ( pSqlParseNode.get() )
- {
- m_aAdditiveIterator.setParseTree(pSqlParseNode.get());
- // normalize the filter
- OSQLParseNode* pWhereNode = const_cast<OSQLParseNode*>(m_aAdditiveIterator.getWhereTree());
-
- OSQLParseNode* pCondition = pWhereNode->getChild(1);
- #if OSL_DEBUG_LEVEL > 0
- ::rtl::OUString sCondition;
- pCondition->parseNodeToStr( sCondition, m_xConnection );
- #endif
- OSQLParseNode::negateSearchCondition(pCondition);
-
- pCondition = pWhereNode->getChild(1);
- #if OSL_DEBUG_LEVEL > 0
- sCondition = ::rtl::OUString();
- pCondition->parseNodeToStr( sCondition, m_xConnection );
- #endif
- OSQLParseNode::disjunctiveNormalForm(pCondition);
-
- pCondition = pWhereNode->getChild(1);
- #if OSL_DEBUG_LEVEL > 0
- sCondition = ::rtl::OUString();
- pCondition->parseNodeToStr( sCondition, m_xConnection );
- #endif
- OSQLParseNode::absorptions(pCondition);
-
- pCondition = pWhereNode->getChild(1);
- #if OSL_DEBUG_LEVEL > 0
- sCondition = ::rtl::OUString();
- pCondition->parseNodeToStr( sCondition, m_xConnection );
- #endif
- if ( pCondition )
- {
- ::std::vector< ::std::vector < PropertyValue > > aFilters;
- Reference< XNumberFormatter > xFormatter;
- m_aContext.createComponent( "com.sun.star.util.NumberFormatter", xFormatter );
- xFormatter->attachNumberFormatsSupplier( m_xNumberFormatsSupplier );
-
- if (setORCriteria(pCondition, m_aAdditiveIterator, aFilters, xFormatter))
- {
- aFilterSeq.realloc(aFilters.size());
- Sequence<PropertyValue>* pFilters = aFilterSeq.getArray();
- ::std::vector< ::std::vector < PropertyValue > >::const_iterator aEnd = aFilters.end();
- ::std::vector< ::std::vector < PropertyValue > >::const_iterator i = aFilters.begin();
- for ( ; i != aEnd ; ++i)
- {
- const ::std::vector < PropertyValue >& rProperties = *i;
- pFilters->realloc(rProperties.size());
- PropertyValue* pFilter = pFilters->getArray();
- ::std::vector < PropertyValue >::const_iterator j = rProperties.begin();
- ::std::vector < PropertyValue >::const_iterator aEnd2 = rProperties.end();
- for ( ; j != aEnd2 ; ++j)
- {
- *pFilter = *j;
- ++pFilter;
- }
- ++pFilters;
- }
- }
- }
- // restore
- m_aAdditiveIterator.setParseTree(pTempNode);
- }
- }
- return aFilterSeq;
-}
-
-::rtl::OUString OSingleSelectQueryComposer::getKeyword( SQLPart _ePart ) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getKeyword" );
- ::rtl::OUString sKeyword;
- switch(_ePart)
- {
- default:
- OSL_FAIL( "OSingleSelectQueryComposer::getKeyWord: Invalid enum value!" );
- // no break, fallback to WHERE
- case Where:
- sKeyword = STR_WHERE;
- break;
- case Group:
- sKeyword = STR_GROUP_BY;
- break;
- case Having:
- sKeyword = STR_HAVING;
- break;
- case Order:
- sKeyword = STR_ORDER_BY;
- break;
- }
- return sKeyword;
-}
-
-::rtl::OUString OSingleSelectQueryComposer::getSQLPart( SQLPart _ePart, OSQLParseTreeIterator& _rIterator, sal_Bool _bWithKeyword )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OSingleSelectQueryComposer::getSQLPart" );
- TGetParseNode F_tmp(&OSQLParseTreeIterator::getSimpleWhereTree);
- ::rtl::OUString sKeyword( getKeyword( _ePart ) );
- switch(_ePart)
- {
- case Where:
- F_tmp = TGetParseNode(&OSQLParseTreeIterator::getSimpleWhereTree);
- break;
- case Group:
- F_tmp = TGetParseNode (&OSQLParseTreeIterator::getSimpleGroupByTree);
- break;
- case Having:
- F_tmp = TGetParseNode(&OSQLParseTreeIterator::getSimpleHavingTree);
- break;
- case Order:
- F_tmp = TGetParseNode(&OSQLParseTreeIterator::getSimpleOrderTree);
- break;
- default:
- OSL_FAIL("Invalid enum value!");
- }
-
- ::rtl::OUString sRet = getStatementPart( F_tmp, _rIterator );
- if ( _bWithKeyword && sRet.getLength() )
- sRet = sKeyword + sRet;
- return sRet;
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/StaticSet.cxx b/dbaccess/source/core/api/StaticSet.cxx
deleted file mode 100644
index 6668db8f5..000000000
--- a/dbaccess/source/core/api/StaticSet.cxx
+++ /dev/null
@@ -1,372 +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_dbaccess.hxx"
-
-#include "StaticSet.hxx"
-#include <com/sun/star/sdbcx/CompareBookmark.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-#include <com/sun/star/sdbc/XPreparedStatement.hpp>
-#include "dbastrings.hrc"
-#include "apitools.hxx"
-#include <connectivity/CommonTools.hxx>
-#include <comphelper/types.hxx>
-#include <rtl/logfile.hxx>
-
-using namespace dbaccess;
-using namespace connectivity;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::osl;
-
-void OStaticSet::fillValueRow(ORowSetRow& _rRow,sal_Int32 /*_nPosition*/)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::fillValueRow" );
- _rRow = *m_aSetIter;
-}
-
-// ::com::sun::star::sdbcx::XRowLocate
-Any SAL_CALL OStaticSet::getBookmark() throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::getBookmark" );
- return makeAny(getRow());
-}
-
-sal_Bool SAL_CALL OStaticSet::moveToBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::moveToBookmark" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- return absolute(::comphelper::getINT32(bookmark));
-}
-
-sal_Bool SAL_CALL OStaticSet::moveRelativeToBookmark( const Any& bookmark, sal_Int32 rows ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::moveRelativeToBookmark" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- return absolute(::comphelper::getINT32(bookmark)+rows);
-}
-
-sal_Int32 SAL_CALL OStaticSet::compareBookmarks( const Any& _first, const Any& _second ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::compareBookmarks" );
- sal_Int32 nFirst = 0, nSecond = 0;
- _first >>= nFirst;
- _second >>= nSecond;
- return (nFirst < nSecond) ? CompareBookmark::LESS : ((nFirst > nSecond) ? CompareBookmark::GREATER : CompareBookmark::EQUAL);
-}
-
-sal_Bool SAL_CALL OStaticSet::hasOrderedBookmarks( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::hasOrderedBookmarks" );
- return sal_True;
-}
-
-sal_Int32 SAL_CALL OStaticSet::hashBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::hashBookmark" );
- return ::comphelper::getINT32(bookmark);
-}
-
-sal_Bool OStaticSet::fetchRow()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::fetchRow" );
- sal_Bool bRet = sal_False;
- if ( !m_bEnd && (!m_nMaxRows || sal_Int32(m_aSet.size()) < m_nMaxRows) )
- bRet = m_xDriverSet->next();
- if ( bRet )
- {
- m_aSet.push_back(new connectivity::ORowVector< connectivity::ORowSetValue >(m_xSetMetaData->getColumnCount()));
- m_aSetIter = m_aSet.end() - 1;
- ((*m_aSetIter)->get())[0] = getRow();
- OCacheSet::fillValueRow(*m_aSetIter,((*m_aSetIter)->get())[0]);
- }
- else
- m_bEnd = sal_True;
- return bRet;
-}
-
-void OStaticSet::fillAllRows()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::fillAllRows" );
- if(!m_bEnd)
- {
- sal_Int32 nColumnCount = m_xSetMetaData->getColumnCount();
- while(m_xDriverSet->next())
- {
- ORowSetRow pRow = new connectivity::ORowVector< connectivity::ORowSetValue >(nColumnCount);
- m_aSet.push_back(pRow);
- m_aSetIter = m_aSet.end() - 1;
- (pRow->get())[0] = getRow();
- OCacheSet::fillValueRow(pRow,(pRow->get())[0]);
- }
- m_bEnd = sal_True;
- }
-}
-
-// XResultSet
-sal_Bool SAL_CALL OStaticSet::next( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::next" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
-
- if(isAfterLast())
- return sal_False;
- if(!m_bEnd) // not yet all records fetched
- {
- ++m_aSetIter;
- if(m_aSetIter == m_aSet.end() && !fetchRow())
- m_aSetIter = m_aSet.end();
- }
- else if(!isAfterLast())
- ++m_aSetIter;
- return !isAfterLast();
-}
-
-sal_Bool SAL_CALL OStaticSet::isBeforeFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::isBeforeFirst" );
- return m_aSetIter == m_aSet.begin();
-}
-
-sal_Bool SAL_CALL OStaticSet::isAfterLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::isAfterLast" );
- return m_aSetIter == m_aSet.end() && m_bEnd;
-}
-
-sal_Bool SAL_CALL OStaticSet::isFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::isFirst" );
- return m_aSetIter == m_aSet.begin()+1;
-}
-
-sal_Bool SAL_CALL OStaticSet::isLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::isLast" );
- return m_aSetIter == m_aSet.end()-1 && m_bEnd;
-}
-
-void SAL_CALL OStaticSet::beforeFirst( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::beforeFirst" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- m_aSetIter = m_aSet.begin();
-}
-
-void SAL_CALL OStaticSet::afterLast( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::afterLast" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- fillAllRows();
- m_aSetIter = m_aSet.end();
-}
-
-sal_Bool SAL_CALL OStaticSet::first( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::first" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- m_aSetIter = m_aSet.begin()+1;
- if(m_aSetIter == m_aSet.end() && !fetchRow())
- m_aSetIter = m_aSet.end();
-
- return m_aSetIter != m_aSet.end();
-}
-
-sal_Bool SAL_CALL OStaticSet::last( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::last" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- fillAllRows();
- m_aSetIter = m_aSet.end()-1;
-
- return !isBeforeFirst() && !isAfterLast();
-}
-
-sal_Int32 SAL_CALL OStaticSet::getRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::getRow" );
- OSL_ENSURE(!isAfterLast(),"getRow is not allowed when afterlast record!");
- OSL_ENSURE(!isBeforeFirst(),"getRow is not allowed when beforefirst record!");
-
- sal_Int32 nPos = m_aSet.size() - (m_aSet.end() - m_aSetIter);
- OSL_ENSURE(nPos > 0,"RowPos is < 0");
- return nPos;
-}
-
-sal_Bool SAL_CALL OStaticSet::absolute( sal_Int32 row ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::absolute" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
- OSL_ENSURE(row,"OStaticSet::absolute: INVALID row number!");
- // if row greater 0 than count from end - row means last
- if(row < 0)
- {
- if(!m_bEnd)
- fillAllRows();
-
- sal_Int32 nRow = getRow();
- nRow += row;
- if(nRow <= (sal_Int32)m_aSet.size())
- m_aSetIter = m_aSet.begin() + nRow;
- else
- m_aSetIter = m_aSet.begin();
- }
- else if(row > 0)
- {
- if(row >= (sal_Int32)m_aSet.size())
- {
- if(!m_bEnd)
- {
- sal_Bool bNext = sal_True;
- for(sal_Int32 i=m_aSet.size()-1;i < row && bNext;++i)
- bNext = fetchRow();
- }
-
- if(row > (sal_Int32)m_aSet.size())
- m_aSetIter = m_aSet.end(); // check again
- else
- m_aSetIter = m_aSet.begin() + row;
- }
- else
- m_aSetIter = m_aSet.begin() + row;
- }
-
- return m_aSetIter != m_aSet.end() && m_aSetIter != m_aSet.begin();
-}
-
-sal_Bool SAL_CALL OStaticSet::relative( sal_Int32 rows ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::relative" );
- if(!rows)
- return sal_True;
-
- sal_Int32 nCurPos = getRow();
- return absolute(nCurPos+rows);
-}
-
-sal_Bool SAL_CALL OStaticSet::previous( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::previous" );
- m_bInserted = m_bUpdated = m_bDeleted = sal_False;
-
- if(m_aSetIter != m_aSet.begin())
- --m_aSetIter;
-
- return m_aSetIter != m_aSet.begin();
-}
-
-void SAL_CALL OStaticSet::refreshRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::refreshRow" );
-}
-
-sal_Bool SAL_CALL OStaticSet::rowUpdated( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::rowUpdated" );
- return m_bUpdated;
-}
-
-sal_Bool SAL_CALL OStaticSet::rowInserted( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::rowInserted" );
- return m_bInserted;
-}
-
-sal_Bool SAL_CALL OStaticSet::rowDeleted( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::rowDeleted" );
- return m_bDeleted;
-}
-
-Sequence< sal_Int32 > SAL_CALL OStaticSet::deleteRows( const Sequence< Any >& rows,const connectivity::OSQLTable& _xTable ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::deleteRows" );
- Sequence< sal_Int32 > aRet(rows.getLength());
- const Any* pBegin = rows.getConstArray();
- const Any* pEnd = pBegin + rows.getLength();
- for(sal_Int32 i=0;pBegin != pEnd; ++pBegin,++i)
- {
- deleteRow(*(m_aSet.begin() + comphelper::getINT32(*pBegin)),_xTable);
- aRet.getArray()[i] = m_bDeleted;
- }
- return aRet;
-}
-
-void SAL_CALL OStaticSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::insertRow" );
- OCacheSet::insertRow( _rInsertRow,_xTable);
- if(m_bInserted)
- {
- m_aSet.push_back(new ORowVector< ORowSetValue >(*_rInsertRow)); // we don't know where the new row is so we append it to the current rows
- m_aSetIter = m_aSet.end() - 1;
- ((*m_aSetIter)->get())[0] = (_rInsertRow->get())[0] = getBookmark();
- m_bEnd = sal_False;
- }
-}
-
-void SAL_CALL OStaticSet::updateRow(const ORowSetRow& _rInsertRow ,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& _xTable ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::updateRow" );
- OCacheSet::updateRow( _rInsertRow,_rOrginalRow,_xTable);
-}
-
-void SAL_CALL OStaticSet::deleteRow(const ORowSetRow& _rDeleteRow ,const connectivity::OSQLTable& _xTable ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::deleteRow" );
- OCacheSet::deleteRow(_rDeleteRow,_xTable);
- if(m_bDeleted)
- {
- ORowSetMatrix::iterator aPos = m_aSet.begin()+(_rDeleteRow->get())[0].getInt32();
- if(aPos == (m_aSet.end()-1))
- m_aSetIter = m_aSet.end();
- m_aSet.erase(aPos);
- }
-}
-
-void SAL_CALL OStaticSet::cancelRowUpdates( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::cancelRowUpdates" );
-}
-
-void SAL_CALL OStaticSet::moveToInsertRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::moveToInsertRow" );
-}
-
-void SAL_CALL OStaticSet::moveToCurrentRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStaticSet::moveToCurrentRow" );
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/StaticSet.hxx b/dbaccess/source/core/api/StaticSet.hxx
deleted file mode 100644
index e5cf8a092..000000000
--- a/dbaccess/source/core/api/StaticSet.hxx
+++ /dev/null
@@ -1,93 +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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_CORE_API_STATICSET_HXX
-#define DBACCESS_CORE_API_STATICSET_HXX
-
-#include "CacheSet.hxx"
-
-namespace dbaccess
-{
- // is used when nothing is supported by the driver
- // we use a snapshot
- class OStaticSet : public OCacheSet
- {
- ORowSetMatrix m_aSet;
- ORowSetMatrix::iterator m_aSetIter;
- sal_Bool m_bEnd;
- sal_Bool fetchRow();
- void fillAllRows();
- public:
- OStaticSet(sal_Int32 i_nMaxRows) : OCacheSet(i_nMaxRows)
- , m_aSetIter(m_aSet.end())
- , m_bEnd(sal_False)
- {
- m_aSet.push_back(NULL); // this is the beforefirst record
- }
-
- virtual void fillValueRow(ORowSetRow& _rRow,sal_Int32 _nPosition);
- // ::com::sun::star::sdbcx::XRowLocate
- virtual ::com::sun::star::uno::Any SAL_CALL getBookmark() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveToBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL compareBookmarks( const ::com::sun::star::uno::Any& first, const ::com::sun::star::uno::Any& second ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL hashBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XResultSet
- virtual sal_Bool SAL_CALL next( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isBeforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isAfterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL beforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL afterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL first( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL last( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL absolute( sal_Int32 row ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL relative( sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL previous( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL refreshRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowUpdated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowInserted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowDeleted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbcx::XDeleteRows
- virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rows,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbc::XResultSetUpdate
- virtual void SAL_CALL insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateRow(const ORowSetRow& _rInsertRow,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL deleteRow(const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- };
-}
-#endif //DBACCESS_CORE_API_STATICSET_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/TableDeco.cxx b/dbaccess/source/core/api/TableDeco.cxx
deleted file mode 100644
index 13887a786..000000000
--- a/dbaccess/source/core/api/TableDeco.cxx
+++ /dev/null
@@ -1,697 +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_dbaccess.hxx"
-
-#include "TableDeco.hxx"
-#include <definitioncolumn.hxx>
-#include "dbastrings.hrc"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include <tools/debug.hxx>
-#include <osl/diagnose.h>
-
-#include <cppuhelper/typeprovider.hxx>
-#include <comphelper/enumhelper.hxx>
-#include <comphelper/container.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/property.hxx>
-#include <comphelper/types.hxx>
-#include <com/sun/star/util/XRefreshListener.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbcx/Privilege.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <connectivity/dbtools.hxx>
-#include <connectivity/dbexception.hxx>
-#include <connectivity/dbtools.hxx>
-#include <comphelper/extract.hxx>
-#include "ContainerMediator.hxx"
-#include <rtl/logfile.hxx>
-
-using namespace dbaccess;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::dbtools;
-using namespace ::cppu;
-
-//==========================================================================
-//= ODBTableDecorator
-//==========================================================================
-DBG_NAME(ODBTableDecorator)
-
-ODBTableDecorator::ODBTableDecorator( const Reference< XConnection >& _rxConnection, const Reference< XColumnsSupplier >& _rxNewTable,
- const Reference< XNumberFormatsSupplier >& _rxNumberFormats, const Reference< XNameAccess >& _xColumnDefinitions ) throw(SQLException)
- :OTableDescriptor_BASE(m_aMutex)
- ,ODataSettings(OTableDescriptor_BASE::rBHelper)
- ,m_xTable(_rxNewTable)
- ,m_xColumnDefinitions(_xColumnDefinitions)
- ,m_xConnection( _rxConnection )
- ,m_xMetaData( _rxConnection.is() ? _rxConnection->getMetaData() : Reference< XDatabaseMetaData >() )
- ,m_xNumberFormats( _rxNumberFormats )
- ,m_nPrivileges(-1)
- ,m_pColumns(NULL)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::ODBTableDecorator" );
- DBG_CTOR(ODBTableDecorator, NULL);
- ODataSettings::registerPropertiesFor(this);
-}
-
-ODBTableDecorator::~ODBTableDecorator()
-{
- DBG_DTOR(ODBTableDecorator, NULL);
- if ( m_pColumns )
- delete m_pColumns;
-}
-
-Sequence< sal_Int8 > ODBTableDecorator::getImplementationId() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::getImplementationId" );
- static OImplementationId * pId = 0;
- if (! pId)
- {
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- if (! pId)
- {
- static OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-// OComponentHelper
-void SAL_CALL ODBTableDecorator::disposing()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::disposing" );
- OPropertySetHelper::disposing();
- OTableDescriptor_BASE::disposing();
-
- MutexGuard aGuard(m_aMutex);
- m_xTable = NULL;
- m_xMetaData = NULL;
- m_pTables = NULL;
- m_xColumnDefinitions = NULL;
- m_xNumberFormats = NULL;
- if ( m_pColumns )
- m_pColumns->disposing();
- m_xColumnMediator = NULL;
-}
-
-sal_Bool SAL_CALL ODBTableDecorator::convertFastPropertyValue(
- Any & rConvertedValue,
- Any & rOldValue,
- sal_Int32 nHandle,
- const Any& rValue )
- throw (::com::sun::star::lang::IllegalArgumentException)
-{
- sal_Bool bRet = sal_True;
- switch(nHandle)
- {
- case PROPERTY_ID_PRIVILEGES:
- case PROPERTY_ID_FILTER:
- case PROPERTY_ID_ORDER:
- case PROPERTY_ID_APPLYFILTER:
- case PROPERTY_ID_FONT:
- case PROPERTY_ID_ROW_HEIGHT:
- case PROPERTY_ID_TEXTCOLOR:
- case PROPERTY_ID_TEXTLINECOLOR:
- case PROPERTY_ID_TEXTEMPHASIS:
- case PROPERTY_ID_TEXTRELIEF:
- case PROPERTY_ID_FONTCHARWIDTH:
- case PROPERTY_ID_FONTCHARSET:
- case PROPERTY_ID_FONTFAMILY:
- case PROPERTY_ID_FONTHEIGHT:
- case PROPERTY_ID_FONTKERNING:
- case PROPERTY_ID_FONTNAME:
- case PROPERTY_ID_FONTORIENTATION:
- case PROPERTY_ID_FONTPITCH:
- case PROPERTY_ID_FONTSLANT:
- case PROPERTY_ID_FONTSTRIKEOUT:
- case PROPERTY_ID_FONTSTYLENAME:
- case PROPERTY_ID_FONTUNDERLINE:
- case PROPERTY_ID_FONTWEIGHT:
- case PROPERTY_ID_FONTWIDTH:
- case PROPERTY_ID_FONTWORDLINEMODE:
- case PROPERTY_ID_FONTTYPE:
- bRet = ODataSettings::convertFastPropertyValue(rConvertedValue, rOldValue,nHandle,rValue);
- break;
-
- default:
- {
- Any aValue;
- getFastPropertyValue(aValue,nHandle);
- bRet = ::comphelper::tryPropertyValue(rConvertedValue,rOldValue,rValue,aValue,::getCppuType(reinterpret_cast< ::rtl::OUString*>(NULL)));
- }
- break; // we assume that it works
- }
- return bRet;
-}
-
-void ODBTableDecorator::setFastPropertyValue_NoBroadcast(sal_Int32 _nHandle, const Any& _rValue) throw (Exception)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::setFastPropertyValue_NoBroadcast" );
- switch(_nHandle)
- {
- case PROPERTY_ID_PRIVILEGES:
- OSL_FAIL("Property is readonly!");
- case PROPERTY_ID_FILTER:
- case PROPERTY_ID_ORDER:
- case PROPERTY_ID_APPLYFILTER:
- case PROPERTY_ID_FONT:
- case PROPERTY_ID_ROW_HEIGHT:
- case PROPERTY_ID_TEXTCOLOR:
- case PROPERTY_ID_TEXTLINECOLOR:
- case PROPERTY_ID_TEXTEMPHASIS:
- case PROPERTY_ID_TEXTRELIEF:
- case PROPERTY_ID_FONTCHARWIDTH:
- case PROPERTY_ID_FONTCHARSET:
- case PROPERTY_ID_FONTFAMILY:
- case PROPERTY_ID_FONTHEIGHT:
- case PROPERTY_ID_FONTKERNING:
- case PROPERTY_ID_FONTNAME:
- case PROPERTY_ID_FONTORIENTATION:
- case PROPERTY_ID_FONTPITCH:
- case PROPERTY_ID_FONTSLANT:
- case PROPERTY_ID_FONTSTRIKEOUT:
- case PROPERTY_ID_FONTSTYLENAME:
- case PROPERTY_ID_FONTUNDERLINE:
- case PROPERTY_ID_FONTWEIGHT:
- case PROPERTY_ID_FONTWIDTH:
- case PROPERTY_ID_FONTWORDLINEMODE:
- case PROPERTY_ID_FONTTYPE:
-
- ODataSettings::setFastPropertyValue_NoBroadcast(_nHandle, _rValue);
- break;
- case PROPERTY_ID_CATALOGNAME:
- {
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- xProp->setPropertyValue(PROPERTY_CATALOGNAME,_rValue);
- }
- break;
- case PROPERTY_ID_SCHEMANAME:
- {
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- xProp->setPropertyValue(PROPERTY_SCHEMANAME,_rValue);
- }
- break;
- case PROPERTY_ID_NAME:
- {
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- xProp->setPropertyValue(PROPERTY_NAME,_rValue);
- }
- break;
- case PROPERTY_ID_DESCRIPTION:
- {
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- xProp->setPropertyValue(PROPERTY_DESCRIPTION,_rValue);
- }
- break;
- case PROPERTY_ID_TYPE:
- {
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- xProp->setPropertyValue(PROPERTY_TYPE,_rValue);
- }
- break;
- }
-}
-
-void ODBTableDecorator::getFastPropertyValue(Any& _rValue, sal_Int32 _nHandle) const
-{
-
- switch(_nHandle)
- {
- case PROPERTY_ID_PRIVILEGES:
- {
- if ( -1 == m_nPrivileges )
- fillPrivileges();
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- Reference<XPropertySetInfo> xInfo = xProp->getPropertySetInfo();
- if ( xInfo->hasPropertyByName(PROPERTY_PRIVILEGES) )
- {
- _rValue <<= m_nPrivileges;
- break;
- }
- }
- // run through
-
- case PROPERTY_ID_FILTER:
- case PROPERTY_ID_ORDER:
- case PROPERTY_ID_APPLYFILTER:
- case PROPERTY_ID_FONT:
- case PROPERTY_ID_ROW_HEIGHT:
- case PROPERTY_ID_TEXTCOLOR:
- case PROPERTY_ID_TEXTLINECOLOR:
- case PROPERTY_ID_TEXTEMPHASIS:
- case PROPERTY_ID_TEXTRELIEF:
- case PROPERTY_ID_FONTCHARWIDTH:
- case PROPERTY_ID_FONTCHARSET:
- case PROPERTY_ID_FONTFAMILY:
- case PROPERTY_ID_FONTHEIGHT:
- case PROPERTY_ID_FONTKERNING:
- case PROPERTY_ID_FONTNAME:
- case PROPERTY_ID_FONTORIENTATION:
- case PROPERTY_ID_FONTPITCH:
- case PROPERTY_ID_FONTSLANT:
- case PROPERTY_ID_FONTSTRIKEOUT:
- case PROPERTY_ID_FONTSTYLENAME:
- case PROPERTY_ID_FONTUNDERLINE:
- case PROPERTY_ID_FONTWEIGHT:
- case PROPERTY_ID_FONTWIDTH:
- case PROPERTY_ID_FONTWORDLINEMODE:
- case PROPERTY_ID_FONTTYPE:
- ODataSettings::getFastPropertyValue(_rValue, _nHandle);
- break;
- case PROPERTY_ID_CATALOGNAME:
- {
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- _rValue = xProp->getPropertyValue(PROPERTY_CATALOGNAME);
- }
- break;
- case PROPERTY_ID_SCHEMANAME:
- {
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- _rValue = xProp->getPropertyValue(PROPERTY_SCHEMANAME);
- }
- break;
- case PROPERTY_ID_NAME:
- {
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- _rValue = xProp->getPropertyValue(PROPERTY_NAME);
- }
- break;
- case PROPERTY_ID_DESCRIPTION:
- {
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- _rValue = xProp->getPropertyValue(PROPERTY_DESCRIPTION);
- }
- break;
- case PROPERTY_ID_TYPE:
- {
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- _rValue = xProp->getPropertyValue(PROPERTY_TYPE);
- }
- break;
- default:
- OSL_FAIL("Invalid Handle for table");
- }
-}
-
-void ODBTableDecorator::construct()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::construct" );
- sal_Bool bNotFound = sal_True;
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- if ( xProp.is() )
- {
- Reference<XPropertySetInfo> xInfo = xProp->getPropertySetInfo();
- bNotFound = !xInfo->hasPropertyByName(PROPERTY_PRIVILEGES);
- }
- if ( bNotFound )
- registerProperty(PROPERTY_PRIVILEGES, PROPERTY_ID_PRIVILEGES, PropertyAttribute::BOUND | PropertyAttribute::READONLY,
- &m_nPrivileges, ::getCppuType(static_cast<sal_Int32*>(NULL)));
-}
-
-::cppu::IPropertyArrayHelper* ODBTableDecorator::createArrayHelper(sal_Int32 /*_nId*/) const
-{
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- Reference<XPropertySetInfo> xInfo = xProp->getPropertySetInfo();
-
- Sequence< Property > aTableProps = xInfo->getProperties();
- Property* pIter = aTableProps.getArray();
- Property* pEnd = pIter + aTableProps.getLength();
- for (;pIter != pEnd ; ++pIter)
- {
- if (0 == pIter->Name.compareToAscii(PROPERTY_CATALOGNAME))
- pIter->Handle = PROPERTY_ID_CATALOGNAME;
- else if (0 ==pIter->Name.compareToAscii(PROPERTY_SCHEMANAME))
- pIter->Handle = PROPERTY_ID_SCHEMANAME;
- else if (0 ==pIter->Name.compareToAscii(PROPERTY_NAME))
- pIter->Handle = PROPERTY_ID_NAME;
- else if (0 ==pIter->Name.compareToAscii(PROPERTY_DESCRIPTION))
- pIter->Handle = PROPERTY_ID_DESCRIPTION;
- else if (0 ==pIter->Name.compareToAscii(PROPERTY_TYPE))
- pIter->Handle = PROPERTY_ID_TYPE;
- else if (0 ==pIter->Name.compareToAscii(PROPERTY_PRIVILEGES))
- pIter->Handle = PROPERTY_ID_PRIVILEGES;
- }
-
- describeProperties(aTableProps);
-
- return new ::cppu::OPropertyArrayHelper(aTableProps);
-}
-
-::cppu::IPropertyArrayHelper & SAL_CALL ODBTableDecorator::getInfoHelper()
-{
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
-
- Reference<XPropertySetInfo> xInfo = xProp->getPropertySetInfo();
- bool bIsDescriptor = (xInfo->getPropertyByName(PROPERTY_NAME).Attributes & PropertyAttribute::READONLY) == 0;
-
- return *ODBTableDecorator_PROP::getArrayHelper( bIsDescriptor ? 0 : 1 );
-
- // TODO: this is a HACK, and prone to errors
- // The OIdPropertyArrayUsageHelper is intended for classes where there exists a known, limited
- // number of different property set infos (distinguished by the ID), all implemented by this very
- // same class.
- // However, in this case here we have an unknown, potentially unlimited number of different
- // property set infos: Depending on the table for which we act as decorator, different property
- // sets might exist.
-}
-
-// XServiceInfo
-IMPLEMENT_SERVICE_INFO1(ODBTableDecorator, "com.sun.star.sdb.dbaccess.ODBTableDecorator", SERVICE_SDBCX_TABLE)
-
-Any SAL_CALL ODBTableDecorator::queryInterface( const Type & rType ) throw(RuntimeException)
-{
- Any aRet;
- if(m_xTable.is())
- {
- aRet = m_xTable->queryInterface(rType);
- if(aRet.hasValue())
- { // now we know that our table supports this type so we return ourself
- aRet = OTableDescriptor_BASE::queryInterface(rType);
- if(!aRet.hasValue())
- aRet = ODataSettings::queryInterface(rType);
- }
- }
-
- return aRet;
-}
-
-Sequence< Type > SAL_CALL ODBTableDecorator::getTypes( ) throw(RuntimeException)
-{
- Reference<XTypeProvider> xTypes(m_xTable,UNO_QUERY);
- OSL_ENSURE(xTypes.is(),"Table must be a TypePropvider!");
- return xTypes->getTypes();
-}
-
-// XRename,
-void SAL_CALL ODBTableDecorator::rename( const ::rtl::OUString& _rNewName ) throw(SQLException, ElementExistException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::rename" );
- ::osl::MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OTableDescriptor_BASE::rBHelper.bDisposed);
- Reference<XRename> xRename(m_xTable,UNO_QUERY);
- if(xRename.is())
- {
- xRename->rename(_rNewName);
- }
- else // not supported
- throw SQLException(DBACORE_RESSTRING(RID_STR_NO_TABLE_RENAME),*this,SQLSTATE_GENERAL,1000,Any() );
-}
-
-// XAlterTable,
-void SAL_CALL ODBTableDecorator::alterColumnByName( const ::rtl::OUString& _rName, const Reference< XPropertySet >& _rxDescriptor ) throw(SQLException, NoSuchElementException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::alterColumnByName" );
- ::osl::MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OTableDescriptor_BASE::rBHelper.bDisposed);
- Reference<XAlterTable> xAlter(m_xTable,UNO_QUERY);
- if(xAlter.is())
- {
- xAlter->alterColumnByName(_rName,_rxDescriptor);
- }
- else
- throw SQLException(DBACORE_RESSTRING(RID_STR_COLUMN_ALTER_BY_NAME),*this,SQLSTATE_GENERAL,1000,Any() );
- if(m_pColumns)
- m_pColumns->refresh();
-}
-
-void SAL_CALL ODBTableDecorator::alterColumnByIndex( sal_Int32 _nIndex, const Reference< XPropertySet >& _rxDescriptor ) throw(SQLException, IndexOutOfBoundsException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::alterColumnByIndex" );
- ::osl::MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OTableDescriptor_BASE::rBHelper.bDisposed);
- Reference<XAlterTable> xAlter(m_xTable,UNO_QUERY);
- if(xAlter.is())
- {
- xAlter->alterColumnByIndex(_nIndex,_rxDescriptor);
- if(m_pColumns)
- m_pColumns->refresh();
- }
- else // not supported
- throw SQLException(DBACORE_RESSTRING(RID_STR_COLUMN_ALTER_BY_INDEX),*this,SQLSTATE_GENERAL,1000,Any() );
-}
-
-Reference< XNameAccess> ODBTableDecorator::getIndexes() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::getIndexes" );
- ::osl::MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OTableDescriptor_BASE::rBHelper.bDisposed);
- return Reference< XIndexesSupplier>(m_xTable,UNO_QUERY)->getIndexes();
-}
-
-Reference< XIndexAccess> ODBTableDecorator::getKeys() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::getKeys" );
- ::osl::MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OTableDescriptor_BASE::rBHelper.bDisposed);
- return Reference< XKeysSupplier>(m_xTable,UNO_QUERY)->getKeys();
-}
-
-Reference< XNameAccess> ODBTableDecorator::getColumns() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::getColumns" );
- ::osl::MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OTableDescriptor_BASE::rBHelper.bDisposed);
-
- if(!m_pColumns)
- refreshColumns();
-
- return m_pColumns;
-}
-
-::rtl::OUString SAL_CALL ODBTableDecorator::getName() throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::getName" );
- ::osl::MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OTableDescriptor_BASE::rBHelper.bDisposed);
- Reference<XNamed> xName(m_xTable,UNO_QUERY);
- OSL_ENSURE(xName.is(),"Table should support the XNamed interface");
- return xName->getName();
-}
-
-sal_Int64 SAL_CALL ODBTableDecorator::getSomething( const Sequence< sal_Int8 >& rId ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::getSomething" );
- if (rId.getLength() == 16 && 0 == rtl_compareMemory(getUnoTunnelImplementationId().getConstArray(), rId.getConstArray(), 16 ) )
- return reinterpret_cast<sal_Int64>(this);
-
- sal_Int64 nRet = 0;
- Reference<XUnoTunnel> xTunnel(m_xTable,UNO_QUERY);
- if(xTunnel.is())
- nRet = xTunnel->getSomething(rId);
- return nRet;
-}
-
-Sequence< sal_Int8 > ODBTableDecorator::getUnoTunnelImplementationId()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::getUnoTunnelImplementationId" );
- static ::cppu::OImplementationId * pId = 0;
- if (! pId)
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- if (! pId)
- {
- static ::cppu::OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-void ODBTableDecorator::fillPrivileges() const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::fillPrivileges" );
- // somebody is asking for the privileges and we do not know them, yet
- m_nPrivileges = 0;
- try
- {
- Reference<XPropertySet> xProp(m_xTable,UNO_QUERY);
- if ( xProp.is() )
- {
- if ( xProp->getPropertySetInfo()->hasPropertyByName(PROPERTY_PRIVILEGES) )
- {
- xProp->getPropertyValue(PROPERTY_PRIVILEGES) >>= m_nPrivileges;
- }
- if ( m_nPrivileges == 0 ) // second chance
- {
- ::rtl::OUString sCatalog,sSchema,sName;
- xProp->getPropertyValue(PROPERTY_CATALOGNAME) >>= sCatalog;
- xProp->getPropertyValue(PROPERTY_SCHEMANAME) >>= sSchema;
- xProp->getPropertyValue(PROPERTY_NAME) >>= sName;
- m_nPrivileges = ::dbtools::getTablePrivileges(getMetaData(),sCatalog,sSchema, sName);
- }
- }
- }
- catch(const SQLException& e)
- {
- (void)e;
- OSL_FAIL("ODBTableDecorator::ODBTableDecorator : could not collect the privileges !");
- }
-}
-
-Reference< XPropertySet > SAL_CALL ODBTableDecorator::createDataDescriptor( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::createDataDescriptor" );
- ::osl::MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OTableDescriptor_BASE::rBHelper.bDisposed);
-
- Reference< XDataDescriptorFactory > xFactory( m_xTable, UNO_QUERY );
- OSL_ENSURE( xFactory.is(), "ODBTableDecorator::createDataDescriptor: invalid table!" );
- Reference< XColumnsSupplier > xColsSupp;
- if ( xFactory.is() )
- xColsSupp = xColsSupp.query( xFactory->createDataDescriptor() );
-
- return new ODBTableDecorator(
- m_xConnection,
- xColsSupp,
- m_xNumberFormats,
- NULL
- );
-}
-
-Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL ODBTableDecorator::getPropertySetInfo( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::getPropertySetInfo" );
- return ::cppu::OPropertySetHelper::createPropertySetInfo(getInfoHelper());
-}
-
-void ODBTableDecorator::refreshColumns()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::refreshColumns" );
- ::osl::MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OTableDescriptor_BASE::rBHelper.bDisposed);
-
- ::std::vector< ::rtl::OUString> aVector;
-
- Reference<XNameAccess> xNames;
- if(m_xTable.is())
- {
- xNames = m_xTable->getColumns();
- if(xNames.is())
- {
- Sequence< ::rtl::OUString> aNames = xNames->getElementNames();
- const ::rtl::OUString* pIter = aNames.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aNames.getLength();
- for(;pIter != pEnd;++pIter)
- aVector.push_back(*pIter);
- }
- }
- if(!m_pColumns)
- {
- OColumns* pCol = new OColumns(*this,m_aMutex,xNames,m_xMetaData.is() && m_xMetaData->supportsMixedCaseQuotedIdentifiers(),aVector,
- this,this,
- m_xMetaData.is() && m_xMetaData->supportsAlterTableWithAddColumn(),
- m_xMetaData.is() && m_xMetaData->supportsAlterTableWithDropColumn());
-
- pCol->setParent(*this);
- OContainerMediator* pMediator = new OContainerMediator( pCol, m_xColumnDefinitions, m_xConnection, OContainerMediator::eColumns );
- m_xColumnMediator = pMediator;
- pCol->setMediator( pMediator );
- m_pColumns = pCol;
- }
- else
- m_pColumns->reFill(aVector);
-}
-
-OColumn* ODBTableDecorator::createColumn(const ::rtl::OUString& _rName) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::createColumn" );
- OColumn* pReturn = NULL;
-
- Reference<XNameAccess> xNames;
- if ( m_xTable.is() )
- {
- xNames = m_xTable->getColumns();
-
- if ( xNames.is() && xNames->hasByName(_rName) )
- {
- Reference<XPropertySet> xProp(xNames->getByName(_rName),UNO_QUERY);
-
- Reference<XPropertySet> xColumnDefintion;
- if ( m_xColumnDefinitions.is() && m_xColumnDefinitions->hasByName(_rName))
- xColumnDefintion.set(m_xColumnDefinitions->getByName(_rName),UNO_QUERY);
-
- pReturn = new OTableColumnWrapper( xProp, xColumnDefintion, false );
- }
- }
- return pReturn;
-}
-
-void ODBTableDecorator::columnAppended( const Reference< XPropertySet >& /*_rxSourceDescriptor*/ )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::columnAppended" );
- // not interested in
-}
-
-void ODBTableDecorator::columnDropped(const ::rtl::OUString& _sName)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::columnDropped" );
- Reference<XDrop> xDrop(m_xColumnDefinitions,UNO_QUERY);
- if ( xDrop.is() && m_xColumnDefinitions->hasByName(_sName) )
- xDrop->dropByName(_sName);
-}
-
-Reference< XPropertySet > ODBTableDecorator::createColumnDescriptor()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::createColumnDescriptor" );
- Reference<XDataDescriptorFactory> xNames;
- if(m_xTable.is())
- xNames.set(m_xTable->getColumns(),UNO_QUERY);
- Reference< XPropertySet > xRet;
- if ( xNames.is() )
- xRet = new OTableColumnDescriptorWrapper( xNames->createDataDescriptor(), false, true );
- return xRet;
-}
-
-void SAL_CALL ODBTableDecorator::acquire() throw()
-{
- OTableDescriptor_BASE::acquire();
-}
-
-void SAL_CALL ODBTableDecorator::release() throw()
-{
- OTableDescriptor_BASE::release();
-}
-
-void SAL_CALL ODBTableDecorator::setName( const ::rtl::OUString& /*aName*/ ) throw (::com::sun::star::uno::RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTableDecorator::setName" );
- throwFunctionNotSupportedException( "XNamed::setName", *this );
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/View.cxx b/dbaccess/source/core/api/View.cxx
deleted file mode 100644
index 561482989..000000000
--- a/dbaccess/source/core/api/View.cxx
+++ /dev/null
@@ -1,151 +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 2008 by Sun Microsystems, Inc.
- *
- * 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_dbaccess.hxx"
-
-#include "View.hxx"
-#include "dbastrings.hrc"
-
-#include "connectivity/dbexception.hxx"
-#include "connectivity/dbtools.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/lang/WrappedTargetException.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-/** === end UNO includes === **/
-
-#include <cppuhelper/exc_hlp.hxx>
-#include <tools/diagnose_ex.h>
-#include <unotools/sharedunocomponent.hxx>
-
-namespace dbaccess
-{
-
- /** === begin UNO using === **/
- using namespace ::com::sun::star::uno;
- using ::com::sun::star::sdbc::XDatabaseMetaData;
- using ::com::sun::star::sdbc::SQLException;
- using ::com::sun::star::sdbc::XConnection;
- using ::com::sun::star::lang::WrappedTargetException;
- using ::com::sun::star::lang::XMultiServiceFactory;
- using ::com::sun::star::sdbc::XResultSet;
- using ::com::sun::star::sdbc::XStatement;
- using ::com::sun::star::lang::DisposedException;
- using ::com::sun::star::sdbc::XRow;
- /** === end UNO using === **/
-
- ::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;
- }
- //====================================================================
- //= View
- //====================================================================
- View::View( const Reference< XConnection >& _rxConnection, sal_Bool _bCaseSensitive,
- const ::rtl::OUString& _rCatalogName,const ::rtl::OUString& _rSchemaName, const ::rtl::OUString& _rName )
- :View_Base( _bCaseSensitive, _rName, _rxConnection->getMetaData(), 0, ::rtl::OUString(), _rSchemaName, _rCatalogName )
- {
- m_nCommandHandle = getProperty(PROPERTY_COMMAND).Handle;
- try
- {
- Reference<XMultiServiceFactory> xFac(_rxConnection,UNO_QUERY_THROW);
- static const ::rtl::OUString s_sViewAccess(RTL_CONSTASCII_USTRINGPARAM("ViewAccessServiceName"));
- m_xViewAccess.set(xFac->createInstance(lcl_getServiceNameForSetting(_rxConnection,s_sViewAccess)),UNO_QUERY);
- }
- catch(const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- View::~View()
- {
- }
-
- IMPLEMENT_FORWARD_REFCOUNT( View, View_Base )
- IMPLEMENT_GET_IMPLEMENTATION_ID( View )
-
- Any SAL_CALL View::queryInterface( const Type & _rType ) throw(RuntimeException)
- {
- if(_rType == getCppuType( (Reference<XAlterView>*)0) && !m_xViewAccess.is() )
- return Any();
- Any aReturn = View_Base::queryInterface( _rType );
- if ( !aReturn.hasValue() )
- aReturn = View_IBASE::queryInterface( _rType );
- return aReturn;
- }
-
- Sequence< Type > SAL_CALL View::getTypes( ) throw(RuntimeException)
- {
- Type aAlterType = getCppuType( (Reference<XAlterView>*)0);
-
- Sequence< Type > aTypes( ::comphelper::concatSequences(View_Base::getTypes(),View_IBASE::getTypes()) );
- ::std::vector<Type> aOwnTypes;
- aOwnTypes.reserve(aTypes.getLength());
-
- const Type* pIter = aTypes.getConstArray();
- const Type* pEnd = pIter + aTypes.getLength();
- for(;pIter != pEnd ;++pIter)
- {
- if( (*pIter != aAlterType || m_xViewAccess.is()) )
- aOwnTypes.push_back(*pIter);
- }
-
- Type* pTypes = aOwnTypes.empty() ? 0 : &aOwnTypes[0];
- return Sequence< Type >(pTypes, aOwnTypes.size());
- }
-
- void SAL_CALL View::alterCommand( const ::rtl::OUString& _rNewCommand ) throw (SQLException, RuntimeException)
- {
- OSL_ENSURE(m_xViewAccess.is(),"Illegal call to AlterView!");
- m_xViewAccess->alterCommand(this,_rNewCommand);
- }
-
- void SAL_CALL View::getFastPropertyValue( Any& _rValue, sal_Int32 _nHandle ) const
- {
- if ( _nHandle == m_nCommandHandle && m_xViewAccess.is() )
- {
- // retrieve the very current command, don't rely on the base classes cached value
- // (which we initialized empty, anyway)
- _rValue <<= m_xViewAccess->getCommand(const_cast<View*>(this));
- return;
- }
-
- View_Base::getFastPropertyValue( _rValue, _nHandle );
- }
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/WrappedResultSet.cxx b/dbaccess/source/core/api/WrappedResultSet.cxx
deleted file mode 100644
index 794015333..000000000
--- a/dbaccess/source/core/api/WrappedResultSet.cxx
+++ /dev/null
@@ -1,249 +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 2008 by Sun Microsystems, Inc.
- *
- * 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_dbaccess.hxx"
-#include "WrappedResultSet.hxx"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
-#include <connectivity/dbexception.hxx>
-#include <rtl/logfile.hxx>
-
-#include <limits>
-
-using namespace dbaccess;
-using namespace ::connectivity;
-using namespace ::dbtools;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::lang;
-using namespace ::osl;
-
-void WrappedResultSet::construct(const Reference< XResultSet>& _xDriverSet,const ::rtl::OUString& i_sRowSetFilter)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::construct" );
- OCacheSet::construct(_xDriverSet,i_sRowSetFilter);
- m_xUpd.set(_xDriverSet,UNO_QUERY_THROW);
- m_xRowLocate.set(_xDriverSet,UNO_QUERY_THROW);
- m_xUpdRow.set(_xDriverSet,UNO_QUERY_THROW);
-}
-
-Any SAL_CALL WrappedResultSet::getBookmark() throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::getBookmark" );
- if ( m_xRowLocate.is() )
- {
- return m_xRowLocate->getBookmark( );
- }
- return makeAny(m_xDriverSet->getRow());
-}
-
-sal_Bool SAL_CALL WrappedResultSet::moveToBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::moveToBookmark" );
- return m_xRowLocate->moveToBookmark( bookmark );
-}
-
-sal_Bool SAL_CALL WrappedResultSet::moveRelativeToBookmark( const Any& bookmark, sal_Int32 rows ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::moveRelativeToBookmark" );
- return m_xRowLocate->moveRelativeToBookmark( bookmark,rows );
-}
-
-sal_Int32 SAL_CALL WrappedResultSet::compareBookmarks( const Any& _first, const Any& _second ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::compareBookmarks" );
- return m_xRowLocate->compareBookmarks( _first,_second );
-}
-
-sal_Bool SAL_CALL WrappedResultSet::hasOrderedBookmarks( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::hasOrderedBookmarks" );
- return m_xRowLocate->hasOrderedBookmarks();
-}
-
-sal_Int32 SAL_CALL WrappedResultSet::hashBookmark( const Any& bookmark ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::hashBookmark" );
- return m_xRowLocate->hashBookmark(bookmark);
-}
-
-// ::com::sun::star::sdbcx::XDeleteRows
-Sequence< sal_Int32 > SAL_CALL WrappedResultSet::deleteRows( const Sequence< Any >& rows ,const connectivity::OSQLTable& /*_xTable*/) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::deleteRows" );
- Reference< ::com::sun::star::sdbcx::XDeleteRows> xDeleteRow(m_xRowLocate,UNO_QUERY);
- if(xDeleteRow.is())
- {
- return xDeleteRow->deleteRows(rows);
- }
- return Sequence< sal_Int32 >();
-}
-
-void SAL_CALL WrappedResultSet::insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& /*_xTable*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::insertRow" );
-
- m_xUpd->moveToInsertRow();
- sal_Int32 i = 1;
- connectivity::ORowVector< ORowSetValue > ::Vector::iterator aEnd = _rInsertRow->get().end();
- for(connectivity::ORowVector< ORowSetValue > ::Vector::iterator aIter = _rInsertRow->get().begin()+1;aIter != aEnd;++aIter,++i)
- {
- aIter->setSigned(m_aSignedFlags[i-1]);
- updateColumn(i,m_xUpdRow,*aIter);
- }
- m_xUpd->insertRow();
- (*_rInsertRow->get().begin()) = getBookmark();
-}
-
-void SAL_CALL WrappedResultSet::updateRow(const ORowSetRow& _rInsertRow ,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& /*_xTable*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::updateRow" );
- sal_Int32 i = 1;
- connectivity::ORowVector< ORowSetValue > ::Vector::const_iterator aOrgIter = _rOrginalRow->get().begin()+1;
- connectivity::ORowVector< ORowSetValue > ::Vector::iterator aEnd = _rInsertRow->get().end();
- for(connectivity::ORowVector< ORowSetValue > ::Vector::iterator aIter = _rInsertRow->get().begin()+1;aIter != aEnd;++aIter,++i,++aOrgIter)
- {
- aIter->setSigned(aOrgIter->isSigned());
- updateColumn(i,m_xUpdRow,*aIter);
- }
- m_xUpd->updateRow();
-}
-
-void SAL_CALL WrappedResultSet::deleteRow(const ORowSetRow& /*_rDeleteRow*/ ,const connectivity::OSQLTable& /*_xTable*/ ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::deleteRow" );
- m_xUpd->deleteRow();
-}
-
-void SAL_CALL WrappedResultSet::cancelRowUpdates( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::cancelRowUpdates" );
- m_xUpd->cancelRowUpdates();
-}
-
-void SAL_CALL WrappedResultSet::moveToInsertRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::moveToInsertRow" );
- m_xUpd->moveToInsertRow();
-}
-
-void SAL_CALL WrappedResultSet::moveToCurrentRow( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::moveToCurrentRow" );
- m_xUpd->moveToCurrentRow();
-}
-
-void WrappedResultSet::fillValueRow(ORowSetRow& _rRow,sal_Int32 _nPosition)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::fillValueRow" );
- OCacheSet::fillValueRow(_rRow,_nPosition);
-}
-
-void WrappedResultSet::updateColumn(sal_Int32 nPos,Reference< XRowUpdate > _xParameter,const ORowSetValue& _rValue)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "WrappedResultSet::updateColumn" );
- if(_rValue.isBound() && _rValue.isModified())
- {
- if(_rValue.isNull())
- _xParameter->updateNull(nPos);
- else
- {
-
- switch(_rValue.getTypeKind())
- {
- case DataType::DECIMAL:
- case DataType::NUMERIC:
- _xParameter->updateNumericObject(nPos,_rValue.makeAny(),m_xSetMetaData->getScale(nPos));
- break;
- case DataType::CHAR:
- case DataType::VARCHAR:
- _xParameter->updateString(nPos,_rValue);
- break;
- case DataType::BIGINT:
- if ( _rValue.isSigned() )
- _xParameter->updateLong(nPos,_rValue);
- else
- _xParameter->updateString(nPos,_rValue);
- break;
- case DataType::BIT:
- case DataType::BOOLEAN:
- _xParameter->updateBoolean(nPos,_rValue);
- break;
- case DataType::TINYINT:
- if ( _rValue.isSigned() )
- _xParameter->updateByte(nPos,_rValue);
- else
- _xParameter->updateShort(nPos,_rValue);
- break;
- case DataType::SMALLINT:
- if ( _rValue.isSigned() )
- _xParameter->updateShort(nPos,_rValue);
- else
- _xParameter->updateInt(nPos,_rValue);
- break;
- case DataType::INTEGER:
- if ( _rValue.isSigned() )
- _xParameter->updateInt(nPos,_rValue);
- else
- _xParameter->updateLong(nPos,_rValue);
- break;
- case DataType::FLOAT:
- _xParameter->updateFloat(nPos,_rValue);
- break;
- case DataType::DOUBLE:
- case DataType::REAL:
- _xParameter->updateDouble(nPos,_rValue);
- break;
- case DataType::DATE:
- _xParameter->updateDate(nPos,_rValue);
- break;
- case DataType::TIME:
- _xParameter->updateTime(nPos,_rValue);
- break;
- case DataType::TIMESTAMP:
- _xParameter->updateTimestamp(nPos,_rValue);
- break;
- case DataType::BINARY:
- case DataType::VARBINARY:
- case DataType::LONGVARBINARY:
- _xParameter->updateBytes(nPos,_rValue);
- break;
- case DataType::BLOB:
- case DataType::CLOB:
- _xParameter->updateObject(nPos,_rValue.getAny());
- break;
- }
- }
- }
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/WrappedResultSet.hxx b/dbaccess/source/core/api/WrappedResultSet.hxx
deleted file mode 100644
index 8765a183a..000000000
--- a/dbaccess/source/core/api/WrappedResultSet.hxx
+++ /dev/null
@@ -1,76 +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 2008 by Sun Microsystems, Inc.
- *
- * 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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_CORE_API_WRAPPEDRESULTSET_HXX
-#define DBACCESS_CORE_API_WRAPPEDRESULTSET_HXX
-
-#include "CacheSet.hxx"
-#include <com/sun/star/sdbc/XRowUpdate.hpp>
-#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
-
-namespace dbaccess
-{
- // this set is used when we have a bookmarkable set from the driver
- class WrappedResultSet : public OCacheSet
- {
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XRowLocate> m_xRowLocate;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetUpdate> m_xUpd;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowUpdate> m_xUpdRow;
-
- void updateColumn(sal_Int32 nPos,::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowUpdate > _xParameter,const connectivity::ORowSetValue& _rValue);
- public:
- WrappedResultSet(sal_Int32 i_nMaxRows) : OCacheSet(i_nMaxRows)
- {}
- ~WrappedResultSet()
- {
- m_xRowLocate = NULL;
- }
-
- virtual void construct(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>& _xDriverSet,const ::rtl::OUString& i_sRowSetFilter);
- virtual void fillValueRow(ORowSetRow& _rRow,sal_Int32 _nPosition);
- // ::com::sun::star::sdbcx::XRowLocate
- virtual ::com::sun::star::uno::Any SAL_CALL getBookmark() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveToBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL compareBookmarks( const ::com::sun::star::uno::Any& first, const ::com::sun::star::uno::Any& second ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL hashBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbcx::XDeleteRows
- virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL deleteRows( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rows ,const connectivity::OSQLTable& _xTable) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbc::XResultSetUpdate
- virtual void SAL_CALL insertRow( const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateRow(const ORowSetRow& _rInsertRow,const ORowSetRow& _rOrginalRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL deleteRow(const ORowSetRow& _rInsertRow,const connectivity::OSQLTable& _xTable ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- };
-}
-#endif // DBACCESS_CORE_API_WRAPPEDRESULTSET_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/callablestatement.cxx b/dbaccess/source/core/api/callablestatement.cxx
deleted file mode 100644
index 4f052bdf4..000000000
--- a/dbaccess/source/core/api/callablestatement.cxx
+++ /dev/null
@@ -1,304 +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_dbaccess.hxx"
-#include <callablestatement.hxx>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <cppuhelper/typeprovider.hxx>
-#include <comphelper/property.hxx>
-#include <tools/debug.hxx>
-#include "dbastrings.hrc"
-#include <rtl/logfile.hxx>
-
-using namespace dbaccess;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::cppu;
-using namespace ::osl;
-
-// com::sun::star::lang::XTypeProvider
-Sequence< Type > OCallableStatement::getTypes() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getTypes" );
- OTypeCollection aTypes(::getCppuType( (const Reference< XRow > *)0 ),
- ::getCppuType( (const Reference< XOutParameters > *)0 ),
- OPreparedStatement::getTypes() );
-
- return aTypes.getTypes();
-}
-
-Sequence< sal_Int8 > OCallableStatement::getImplementationId() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getImplementationId" );
- static OImplementationId * pId = 0;
- if (! pId)
- {
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- if (! pId)
- {
- static OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-// com::sun::star::uno::XInterface
-Any OCallableStatement::queryInterface( const Type & rType ) throw (RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::queryInterface" );
- Any aIface = OPreparedStatement::queryInterface( rType );
- if (!aIface.hasValue())
- aIface = ::cppu::queryInterface(
- rType,
- static_cast< XRow * >( this ),
- static_cast< XOutParameters * >( this ));
- return aIface;
-}
-
-void OCallableStatement::acquire() throw ()
-{
- OPreparedStatement::acquire();
-}
-
-void OCallableStatement::release() throw ()
-{
- OPreparedStatement::release();
-}
-
-// XServiceInfo
-rtl::OUString OCallableStatement::getImplementationName( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getImplementationName" );
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.OCallableStatement"));
-}
-
-Sequence< ::rtl::OUString > OCallableStatement::getSupportedServiceNames( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getSupportedServiceNames" );
- Sequence< ::rtl::OUString > aSNS( 2 );
- aSNS.getArray()[0] = SERVICE_SDBC_CALLABLESTATEMENT;
- aSNS.getArray()[1] = SERVICE_SDB_CALLABLESTATEMENT;
- return aSNS;
-}
-
-// XOutParameters
-void SAL_CALL OCallableStatement::registerOutParameter( sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::registerOutParameter" );
- MutexGuard aGuard(m_aMutex);
-
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- Reference< XOutParameters >(m_xAggregateAsSet, UNO_QUERY)->registerOutParameter( parameterIndex, sqlType, typeName );
-}
-
-void SAL_CALL OCallableStatement::registerNumericOutParameter( sal_Int32 parameterIndex, sal_Int32 sqlType, sal_Int32 scale ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::registerNumericOutParameter" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- Reference< XOutParameters >(m_xAggregateAsSet, UNO_QUERY)->registerNumericOutParameter( parameterIndex, sqlType, scale );
-}
-
-// XRow
-sal_Bool SAL_CALL OCallableStatement::wasNull( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::wasNull" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->wasNull();
-}
-
-::rtl::OUString SAL_CALL OCallableStatement::getString( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getString" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getString( columnIndex );
-}
-
-sal_Bool SAL_CALL OCallableStatement::getBoolean( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getBoolean" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getBoolean( columnIndex );
-}
-
-sal_Int8 SAL_CALL OCallableStatement::getByte( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getByte" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getByte( columnIndex );
-}
-
-sal_Int16 SAL_CALL OCallableStatement::getShort( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getShort" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getShort( columnIndex );
-}
-
-sal_Int32 SAL_CALL OCallableStatement::getInt( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getInt" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getInt( columnIndex );
-}
-
-sal_Int64 SAL_CALL OCallableStatement::getLong( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getLong" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getLong( columnIndex );
-}
-
-float SAL_CALL OCallableStatement::getFloat( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getFloat" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getFloat( columnIndex );
-}
-
-double SAL_CALL OCallableStatement::getDouble( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getDouble" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getDouble( columnIndex );
-}
-
-Sequence< sal_Int8 > SAL_CALL OCallableStatement::getBytes( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getBytes" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getBytes( columnIndex );
-}
-
-::com::sun::star::util::Date SAL_CALL OCallableStatement::getDate( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getDate" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getDate( columnIndex );
-}
-
-::com::sun::star::util::Time SAL_CALL OCallableStatement::getTime( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getTime" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getTime( columnIndex );
-}
-
-::com::sun::star::util::DateTime SAL_CALL OCallableStatement::getTimestamp( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getTimestamp" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getTimestamp( columnIndex );
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL OCallableStatement::getBinaryStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getBinaryStream" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getBinaryStream( columnIndex );
-}
-
-Reference< ::com::sun::star::io::XInputStream > SAL_CALL OCallableStatement::getCharacterStream( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getCharacterStream" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getCharacterStream( columnIndex );
-}
-
-Any SAL_CALL OCallableStatement::getObject( sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getObject" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getObject( columnIndex, typeMap );
-}
-
-Reference< XRef > SAL_CALL OCallableStatement::getRef( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getRef" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getRef( columnIndex );
-}
-
-Reference< XBlob > SAL_CALL OCallableStatement::getBlob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getBlob" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getBlob( columnIndex );
-}
-
-Reference< XClob > SAL_CALL OCallableStatement::getClob( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getClob" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getClob( columnIndex );
-}
-
-Reference< XArray > SAL_CALL OCallableStatement::getArray( sal_Int32 columnIndex ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OCallableStatement::getArray" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XRow >(m_xAggregateAsSet, UNO_QUERY)->getArray( columnIndex );
-}
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/column.cxx b/dbaccess/source/core/api/column.cxx
deleted file mode 100644
index d86f9798d..000000000
--- a/dbaccess/source/core/api/column.cxx
+++ /dev/null
@@ -1,460 +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_dbaccess.hxx"
-
-#include "ContainerMediator.hxx"
-#include "apitools.hxx"
-#include "column.hxx"
-#include "core_resource.hrc"
-#include "core_resource.hxx"
-#include "dbastrings.hrc"
-#include "sdbcoretools.hxx"
-
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <com/sun/star/sdbc/DataType.hpp>
-
-#include <comphelper/basicio.hxx>
-#include <comphelper/enumhelper.hxx>
-#include <comphelper/extract.hxx>
-#include <comphelper/property.hxx>
-#include <comphelper/seqstream.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/types.hxx>
-#include <connectivity/TTableHelper.hxx>
-#include <connectivity/dbexception.hxx>
-#include <connectivity/dbtools.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <osl/diagnose.h>
-#include <tools/debug.hxx>
-
-#include <algorithm>
-
-using namespace dbaccess;
-using namespace connectivity;
-using namespace connectivity;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::awt;
-using namespace ::com::sun::star::io;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::util;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-DBG_NAME(OColumn)
-
-//============================================================
-//= OColumn
-//============================================================
-OColumn::OColumn( const bool _bNameIsReadOnly )
- :OColumnBase( m_aMutex )
- ,::comphelper::OPropertyContainer( OColumnBase::rBHelper )
-{
- DBG_CTOR(OColumn, NULL);
-
- registerProperty( PROPERTY_NAME, PROPERTY_ID_NAME, _bNameIsReadOnly ? PropertyAttribute::READONLY : 0,
- &m_sName, ::getCppuType( &m_sName ) );
-}
-
-OColumn::~OColumn()
-{
- DBG_DTOR(OColumn, NULL);
-}
-
-// com::sun::star::lang::XTypeProvider
-Sequence< Type > OColumn::getTypes() throw (RuntimeException)
-{
- return ::comphelper::concatSequences(
- OColumnBase::getTypes(),
- ::comphelper::OPropertyContainer::getTypes()
- );
-}
-
-// com::sun::star::uno::XInterface
-IMPLEMENT_FORWARD_XINTERFACE2( OColumn, OColumnBase, ::comphelper::OPropertyContainer )
-
-// ::com::sun::star::lang::XServiceInfo
-rtl::OUString OColumn::getImplementationName( ) throw(RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.OColumn"));
-}
-
-sal_Bool OColumn::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > OColumn::getSupportedServiceNames( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aSNS( 1 );
- aSNS[0] = SERVICE_SDBCX_COLUMN;
- return aSNS;
-}
-
-// OComponentHelper
-void OColumn::disposing()
-{
- OPropertyContainer::disposing();
-}
-
-// com::sun::star::beans::XPropertySet
-Reference< XPropertySetInfo > OColumn::getPropertySetInfo() throw (RuntimeException)
-{
- return createPropertySetInfo( getInfoHelper() ) ;
-}
-
-::rtl::OUString SAL_CALL OColumn::getName( ) throw(::com::sun::star::uno::RuntimeException)
-{
- return m_sName;
-}
-
-void SAL_CALL OColumn::setName( const ::rtl::OUString& _rName ) throw(::com::sun::star::uno::RuntimeException)
-{
- m_sName = _rName;
-}
-
-void OColumn::fireValueChange(const ::connectivity::ORowSetValue& /*_rOldValue*/)
-{
- OSL_FAIL( "OColumn::fireValueChange: not implemented!" );
-}
-
-void OColumn::registerProperty( const ::rtl::OUString& _rName, sal_Int32 _nHandle, sal_Int32 _nAttributes, void* _pPointerToMember, const Type& _rMemberType )
-{
- ::comphelper::OPropertyContainer::registerProperty( _rName, _nHandle, _nAttributes, _pPointerToMember, _rMemberType );
-}
-
-void OColumn::registerMayBeVoidProperty( const ::rtl::OUString& _rName, sal_Int32 _nHandle, sal_Int32 _nAttributes, Any* _pPointerToMember, const Type& _rExpectedType )
-{
- ::comphelper::OPropertyContainer::registerMayBeVoidProperty( _rName, _nHandle, _nAttributes, _pPointerToMember, _rExpectedType );
-}
-
-void OColumn::registerPropertyNoMember( const ::rtl::OUString& _rName, sal_Int32 _nHandle, sal_Int32 _nAttributes, const Type& _rType, const void* _pInitialValue )
-{
- ::comphelper::OPropertyContainer::registerPropertyNoMember( _rName, _nHandle, _nAttributes, _rType, _pInitialValue );
-}
-
-//============================================================
-//= OColumns
-//============================================================
-DBG_NAME(OColumns);
-
-OColumns::OColumns(::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- sal_Bool _bCaseSensitive,const ::std::vector< ::rtl::OUString> &_rVector,
- IColumnFactory* _pColFactory,
- ::connectivity::sdbcx::IRefreshableColumns* _pRefresh,
- sal_Bool _bAddColumn,
- sal_Bool _bDropColumn,
- sal_Bool _bUseHardRef)
- : OColumns_BASE(_rParent,_bCaseSensitive,_rMutex,_rVector,_bUseHardRef)
- ,m_pMediator(NULL)
- ,m_xDrvColumns(NULL)
- ,m_pColFactoryImpl(_pColFactory)
- ,m_pRefreshColumns(_pRefresh)
- ,m_bInitialized(sal_False)
- ,m_bAddColumn(_bAddColumn)
- ,m_bDropColumn(_bDropColumn)
-{
- DBG_CTOR(OColumns, NULL);
-}
-
-OColumns::OColumns(::cppu::OWeakObject& _rParent, ::osl::Mutex& _rMutex,
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxDrvColumns,
- sal_Bool _bCaseSensitive,const ::std::vector< ::rtl::OUString> &_rVector,
- IColumnFactory* _pColFactory,
- ::connectivity::sdbcx::IRefreshableColumns* _pRefresh,
- sal_Bool _bAddColumn,
- sal_Bool _bDropColumn,
- sal_Bool _bUseHardRef)
- : OColumns_BASE(_rParent,_bCaseSensitive,_rMutex,_rVector,_bUseHardRef)
- ,m_pMediator(NULL)
- ,m_xDrvColumns(_rxDrvColumns)
- ,m_pColFactoryImpl(_pColFactory)
- ,m_pRefreshColumns(_pRefresh)
- ,m_bInitialized(sal_False)
- ,m_bAddColumn(_bAddColumn)
- ,m_bDropColumn(_bDropColumn)
-{
- DBG_CTOR(OColumns, NULL);
-}
-
-OColumns::~OColumns()
-{
- DBG_DTOR(OColumns, NULL);
-}
-
-// XServiceInfo
-rtl::OUString OColumns::getImplementationName( ) throw(RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.OColumns"));
-}
-
-sal_Bool OColumns::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > OColumns::getSupportedServiceNames( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aSNS( 1 );
- aSNS[0] = SERVICE_SDBCX_CONTAINER;
- return aSNS;
-}
-
-//------------------------------------------------------------------
-void OColumns::append( const ::rtl::OUString& _rName, OColumn* _pColumn )
-{
- MutexGuard aGuard(m_rMutex);
-
- OSL_ENSURE( _pColumn, "OColumns::append: invalid column!" );
- OSL_ENSURE( !m_pElements->exists( _rName ),"OColumns::append: Column already exists");
-
- _pColumn->m_sName = _rName;
-
- // now really insert the column
- insertElement( _rName, _pColumn );
-}
-
-//------------------------------------------------------------------
-void OColumns::clearColumns()
-{
- MutexGuard aGuard(m_rMutex);
- disposing();
-}
-
-void SAL_CALL OColumns::disposing(void)
-{
- MutexGuard aGuard(m_rMutex);
- m_xDrvColumns = NULL;
- m_pMediator = NULL;
- m_pColFactoryImpl = NULL;
- OColumns_BASE::disposing();
-}
-
-void OColumns::impl_refresh() throw(::com::sun::star::uno::RuntimeException)
-{
- if (m_pRefreshColumns)
- m_pRefreshColumns->refreshColumns();
-}
-
-connectivity::sdbcx::ObjectType OColumns::createObject(const ::rtl::OUString& _rName)
-{
- OSL_ENSURE(m_pColFactoryImpl, "OColumns::createObject: no column factory!");
-
- connectivity::sdbcx::ObjectType xRet;
- if ( m_pColFactoryImpl )
- {
- xRet = m_pColFactoryImpl->createColumn(_rName);
- Reference<XChild> xChild(xRet,UNO_QUERY);
- if ( xChild.is() )
- xChild->setParent(static_cast<XChild*>(static_cast<TXChild*>(this)));
- }
-
- Reference<XPropertySet> xDest(xRet,UNO_QUERY);
- if ( m_pMediator && xDest.is() )
- m_pMediator->notifyElementCreated(_rName,xDest);
-
- return xRet;
-}
-
-Reference< XPropertySet > OColumns::createDescriptor()
-{
- if ( m_pColFactoryImpl )
- {
- Reference<XPropertySet> xRet = m_pColFactoryImpl->createColumnDescriptor();
- Reference<XChild> xChild(xRet,UNO_QUERY);
- if ( xChild.is() )
- xChild->setParent(static_cast<XChild*>(static_cast<TXChild*>(this)));
- return xRet;
- }
- else
- return Reference< XPropertySet >();
-}
-
-Any SAL_CALL OColumns::queryInterface( const Type & rType ) throw(RuntimeException)
-{
- Any aRet;
- if(m_xDrvColumns.is())
- {
- aRet = m_xDrvColumns->queryInterface(rType);
- if ( aRet.hasValue() )
- aRet = OColumns_BASE::queryInterface( rType);
- if ( !aRet.hasValue() )
- aRet = TXChild::queryInterface( rType);
- return aRet;
- }
- else if(!m_pTable || (m_pTable && !m_pTable->isNew()))
- {
- if(!m_bAddColumn && rType == getCppuType( (Reference<XAppend>*)0))
- return Any();
- if(!m_bDropColumn && rType == getCppuType( (Reference<XDrop>*)0))
- return Any();
- }
-
- aRet = OColumns_BASE::queryInterface( rType);
- if ( !aRet.hasValue() )
- aRet = TXChild::queryInterface( rType);
- return aRet;
-}
-
-Sequence< Type > SAL_CALL OColumns::getTypes( ) throw(RuntimeException)
-{
- sal_Bool bAppendFound = sal_False,bDropFound = sal_False;
-
- sal_Int32 nSize = 0;
- Type aAppendType = getCppuType( (Reference<XAppend>*)0);
- Type aDropType = getCppuType( (Reference<XDrop>*)0);
- if(m_xDrvColumns.is())
- {
- Reference<XTypeProvider> xTypes(m_xDrvColumns,UNO_QUERY);
- Sequence< Type > aTypes(xTypes->getTypes());
-
- Sequence< Type > aSecTypes(OColumns_BASE::getTypes());
-
-
- const Type* pBegin = aTypes.getConstArray();
- const Type* pEnd = pBegin + aTypes.getLength();
- for (;pBegin != pEnd ; ++pBegin)
- {
- if(aAppendType == *pBegin)
- bAppendFound = sal_True;
- else if(aDropType == *pBegin)
- bDropFound = sal_True;
- }
- nSize = (bDropFound ? (bAppendFound ? 0 : 1) : (bAppendFound ? 1 : 2));
- }
- else
- {
- nSize = ((m_pTable && m_pTable->isNew()) ? 0 :
- ((m_bDropColumn ?
- (m_bAddColumn ? 0 : 1) : (m_bAddColumn ? 1 : 2))));
- bDropFound = (m_pTable && m_pTable->isNew()) || m_bDropColumn;
- bAppendFound = (m_pTable && m_pTable->isNew()) || m_bAddColumn;
- }
- Sequence< Type > aTypes(::comphelper::concatSequences(OColumns_BASE::getTypes(),TXChild::getTypes()));
- Sequence< Type > aRet(aTypes.getLength() - nSize);
-
- const Type* pBegin = aTypes.getConstArray();
- const Type* pEnd = pBegin + aTypes.getLength();
- for(sal_Int32 i=0;pBegin != pEnd ;++pBegin)
- {
- if(*pBegin != aAppendType && *pBegin != aDropType)
- aRet.getArray()[i++] = *pBegin;
- else if(bDropFound && *pBegin == aDropType)
- aRet.getArray()[i++] = *pBegin;
- else if(bAppendFound && *pBegin == aAppendType)
- aRet.getArray()[i++] = *pBegin;
- }
- return aRet;
-}
-
-// XAppend
-sdbcx::ObjectType OColumns::appendObject( const ::rtl::OUString& _rForName, const Reference< XPropertySet >& descriptor )
-{
- sdbcx::ObjectType xReturn;
-
- Reference< XAppend > xAppend( m_xDrvColumns, UNO_QUERY );
- if ( xAppend.is() )
- {
- xAppend->appendByDescriptor(descriptor);
- xReturn = createObject( _rForName );
- }
- else if ( m_pTable && !m_pTable->isNew() )
- {
- if ( m_bAddColumn )
- {
- Reference< ::com::sun::star::sdb::tools::XTableAlteration> xAlterService = m_pTable->getAlterService();
- if ( xAlterService.is() )
- {
- xAlterService->addColumn(m_pTable,descriptor);
- xReturn = createObject( _rForName );
- }
- else
- xReturn = OColumns_BASE::appendObject( _rForName, descriptor );
- }
- else
- ::dbtools::throwGenericSQLException( DBA_RES( RID_STR_NO_COLUMN_ADD ), static_cast<XChild*>(static_cast<TXChild*>(this)) );
- }
- else
- xReturn = cloneDescriptor( descriptor );
-
- if ( m_pColFactoryImpl )
- m_pColFactoryImpl->columnAppended( descriptor );
-
- ::dbaccess::notifyDataSourceModified(m_xParent,sal_True);
-
- return xReturn;
-}
-
-// XDrop
-void OColumns::dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName)
-{
- Reference< XDrop > xDrop( m_xDrvColumns, UNO_QUERY );
- if ( xDrop.is() )
- {
- xDrop->dropByName( _sElementName );
- }
- else if ( m_pTable && !m_pTable->isNew() )
- {
- if ( m_bDropColumn )
- {
- Reference< ::com::sun::star::sdb::tools::XTableAlteration> xAlterService = m_pTable->getAlterService();
- if ( xAlterService.is() )
- xAlterService->dropColumn(m_pTable,_sElementName);
- else
- OColumns_BASE::dropObject(_nPos,_sElementName);
- }
- else
- ::dbtools::throwGenericSQLException( DBA_RES( RID_STR_NO_COLUMN_DROP ), static_cast<XChild*>(static_cast<TXChild*>(this)) );
- }
-
- if ( m_pColFactoryImpl )
- m_pColFactoryImpl->columnDropped(_sElementName);
-
- ::dbaccess::notifyDataSourceModified(m_xParent,sal_True);
-}
-
-Reference< XInterface > SAL_CALL OColumns::getParent( ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_rMutex);
- return m_xParent;
-}
-
-void SAL_CALL OColumns::setParent( const Reference< XInterface >& _xParent ) throw (NoSupportException, RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_rMutex);
- m_xParent = _xParent;
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/columnsettings.cxx b/dbaccess/source/core/api/columnsettings.cxx
deleted file mode 100644
index 985a252cd..000000000
--- a/dbaccess/source/core/api/columnsettings.cxx
+++ /dev/null
@@ -1,181 +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_dbaccess.hxx"
-
-#include "columnsettings.hxx"
-#include "dbastrings.hrc"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-/** === end UNO includes === **/
-
-#include <cppuhelper/typeprovider.hxx>
-#include <comphelper/property.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <sal/macros.h>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- using ::com::sun::star::lang::IllegalArgumentException;
- using ::com::sun::star::beans::XPropertySet;
- using ::com::sun::star::beans::XPropertySetInfo;
- /** === end UNO using === **/
- namespace PropertyAttribute = ::com::sun::star::beans::PropertyAttribute;
-
- //==============================================================================
- //= OColumnSettings
- //==============================================================================
- DBG_NAME( OColumnSettings )
-
- OColumnSettings::OColumnSettings()
- :m_bHidden(sal_False)
- {
- DBG_CTOR( OColumnSettings, NULL );
- }
-
- OColumnSettings::~OColumnSettings()
- {
- DBG_DTOR( OColumnSettings, NULL );
- }
-
- void OColumnSettings::registerProperties( IPropertyContainer& _rPropertyContainer )
- {
- const sal_Int32 nBoundAttr = PropertyAttribute::BOUND;
- const sal_Int32 nMayBeVoidAttr = PropertyAttribute::MAYBEVOID | nBoundAttr;
-
- const Type& rSalInt32Type = ::getCppuType( static_cast< sal_Int32* >( NULL ) );
- const Type& rStringType = ::getCppuType( static_cast< ::rtl::OUString* >( NULL ) );
-
- _rPropertyContainer.registerMayBeVoidProperty( PROPERTY_ALIGN, PROPERTY_ID_ALIGN, nMayBeVoidAttr, &m_aAlignment, rSalInt32Type );
- _rPropertyContainer.registerMayBeVoidProperty( PROPERTY_NUMBERFORMAT, PROPERTY_ID_NUMBERFORMAT, nMayBeVoidAttr, &m_aFormatKey, rSalInt32Type );
- _rPropertyContainer.registerMayBeVoidProperty( PROPERTY_RELATIVEPOSITION, PROPERTY_ID_RELATIVEPOSITION, nMayBeVoidAttr, &m_aRelativePosition, rSalInt32Type );
- _rPropertyContainer.registerMayBeVoidProperty( PROPERTY_WIDTH, PROPERTY_ID_WIDTH, nMayBeVoidAttr, &m_aWidth, rSalInt32Type );
- _rPropertyContainer.registerMayBeVoidProperty( PROPERTY_HELPTEXT, PROPERTY_ID_HELPTEXT, nMayBeVoidAttr, &m_aHelpText, rStringType );
- _rPropertyContainer.registerMayBeVoidProperty( PROPERTY_CONTROLDEFAULT, PROPERTY_ID_CONTROLDEFAULT, nMayBeVoidAttr, &m_aControlDefault, rStringType );
- _rPropertyContainer.registerProperty( PROPERTY_CONTROLMODEL, PROPERTY_ID_CONTROLMODEL, nBoundAttr, &m_xControlModel, ::getCppuType( &m_xControlModel ) );
- _rPropertyContainer.registerProperty( PROPERTY_HIDDEN, PROPERTY_ID_HIDDEN, nBoundAttr, &m_bHidden, ::getCppuType( &m_bHidden ) );
- }
-
- bool OColumnSettings::isColumnSettingProperty( const sal_Int32 _nPropertyHandle )
- {
- return ( _nPropertyHandle == PROPERTY_ID_ALIGN )
- || ( _nPropertyHandle == PROPERTY_ID_NUMBERFORMAT )
- || ( _nPropertyHandle == PROPERTY_ID_RELATIVEPOSITION )
- || ( _nPropertyHandle == PROPERTY_ID_WIDTH )
- || ( _nPropertyHandle == PROPERTY_ID_HELPTEXT )
- || ( _nPropertyHandle == PROPERTY_ID_CONTROLDEFAULT )
- || ( _nPropertyHandle == PROPERTY_ID_CONTROLMODEL )
- || ( _nPropertyHandle == PROPERTY_ID_HIDDEN );
- }
-
- bool OColumnSettings::isDefaulted( const sal_Int32 _nPropertyHandle, const Any& _rPropertyValue )
- {
- switch ( _nPropertyHandle )
- {
- case PROPERTY_ID_ALIGN:
- case PROPERTY_ID_NUMBERFORMAT:
- case PROPERTY_ID_RELATIVEPOSITION:
- case PROPERTY_ID_WIDTH:
- case PROPERTY_ID_HELPTEXT:
- case PROPERTY_ID_CONTROLDEFAULT:
- return !_rPropertyValue.hasValue();
-
- case PROPERTY_ID_CONTROLMODEL:
- return !Reference< XPropertySet >( _rPropertyValue, UNO_QUERY ).is();
-
- case PROPERTY_ID_HIDDEN:
- {
- sal_Bool bHidden = sal_False;
- OSL_VERIFY( _rPropertyValue >>= bHidden );
- return !bHidden;
- }
- }
- OSL_FAIL( "OColumnSettings::isDefaulted: illegal property handle!" );
- return sal_False;
- }
-
- bool OColumnSettings::hasDefaultSettings( const Reference< XPropertySet >& _rxColumn )
- {
- ENSURE_OR_THROW( _rxColumn.is(), "illegal column" );
- try
- {
- Reference< XPropertySetInfo > xPSI( _rxColumn->getPropertySetInfo(), UNO_SET_THROW );
-
- struct PropertyDescriptor
- {
- ::rtl::OUString sName;
- sal_Int32 nHandle;
- };
- PropertyDescriptor aProps[] =
- {
- { PROPERTY_ALIGN, PROPERTY_ID_ALIGN },
- { PROPERTY_NUMBERFORMAT, PROPERTY_ID_NUMBERFORMAT },
- { PROPERTY_RELATIVEPOSITION, PROPERTY_ID_RELATIVEPOSITION },
- { PROPERTY_WIDTH, PROPERTY_ID_WIDTH },
- { PROPERTY_HELPTEXT, PROPERTY_ID_HELPTEXT },
- { PROPERTY_CONTROLDEFAULT, PROPERTY_ID_CONTROLDEFAULT },
- { PROPERTY_CONTROLMODEL, PROPERTY_ID_CONTROLMODEL },
- { PROPERTY_HIDDEN, PROPERTY_ID_HIDDEN }
- };
-
- for ( size_t i=0; i < SAL_N_ELEMENTS( aProps ); ++i )
- {
- if ( xPSI->hasPropertyByName( aProps[i].sName ) )
- if ( !isDefaulted( aProps[i].nHandle, _rxColumn->getPropertyValue( aProps[i].sName ) ) )
- return false;
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return true;
- }
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/datacolumn.cxx b/dbaccess/source/core/api/datacolumn.cxx
deleted file mode 100644
index bca1cadfc..000000000
--- a/dbaccess/source/core/api/datacolumn.cxx
+++ /dev/null
@@ -1,428 +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_dbaccess.hxx"
-#include "datacolumn.hxx"
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/sdbc/DataType.hpp>
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <cppuhelper/typeprovider.hxx>
-#include <tools/debug.hxx>
-#include "dbastrings.hrc"
-#include "apitools.hxx"
-
-using namespace dbaccess;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::container;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-DBG_NAME(ODataColumn)
-
-ODataColumn::ODataColumn(
- const Reference < XResultSetMetaData >& _xMetaData,
- const Reference < XRow >& _xRow,
- const Reference < XRowUpdate >& _xRowUpdate,
- sal_Int32 _nPos,
- const Reference< XDatabaseMetaData >& _rxDBMeta)
- :OResultColumn(_xMetaData, _nPos, _rxDBMeta)
- ,m_xRow(_xRow)
- ,m_xRowUpdate(_xRowUpdate)
-{
- DBG_CTOR(ODataColumn,NULL);
-}
-
-ODataColumn::~ODataColumn()
-{
- DBG_DTOR(ODataColumn,NULL);
-}
-
-// com::sun::star::lang::XTypeProvider
-Sequence< Type > ODataColumn::getTypes() throw (RuntimeException)
-{
- OTypeCollection aTypes(::getCppuType( (const Reference< XColumn > *)0 ),
- ::getCppuType( (const Reference< XColumnUpdate > *)0 ),
- OColumn::getTypes());
- return aTypes.getTypes();
-}
-
-Sequence< sal_Int8 > ODataColumn::getImplementationId() throw (RuntimeException)
-{
- static OImplementationId * pId = 0;
- if (! pId)
- {
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- if (! pId)
- {
- static OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-Any SAL_CALL ODataColumn::queryInterface( const Type & _rType ) throw (RuntimeException)
-{
- Any aReturn = OResultColumn::queryInterface(_rType);
- if (!aReturn.hasValue())
- aReturn = ::cppu::queryInterface(_rType,
- static_cast< XColumn* >(this),
- static_cast< XColumnUpdate* >(this)
- );
- return aReturn;
-}
-
-// XServiceInfo
-rtl::OUString ODataColumn::getImplementationName( ) throw(RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.ODataColumn"));
-}
-
-Sequence< ::rtl::OUString > ODataColumn::getSupportedServiceNames( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aSNS( 3 );
- aSNS[0] = SERVICE_SDBCX_COLUMN;
- aSNS[1] = SERVICE_SDB_RESULTCOLUMN;
- aSNS[2] = SERVICE_SDB_DATACOLUMN;
- return aSNS;
-}
-
-// OComponentHelper
-void ODataColumn::disposing()
-{
- OResultColumn::disposing();
-
- m_xRow = NULL;
- m_xRowUpdate = NULL;
-}
-
-// ::com::sun::star::sdb::XColumn
-sal_Bool ODataColumn::wasNull(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->wasNull();
-}
-
-rtl::OUString ODataColumn::getString(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getString(m_nPos);
-}
-
-sal_Bool ODataColumn::getBoolean(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getBoolean(m_nPos);
-}
-
-sal_Int8 ODataColumn::getByte(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getByte(m_nPos);
-}
-
-sal_Int16 ODataColumn::getShort(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getShort(m_nPos);
-}
-
-sal_Int32 ODataColumn::getInt(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getInt(m_nPos);
-}
-
-sal_Int64 ODataColumn::getLong(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getLong(m_nPos);
-}
-
-float ODataColumn::getFloat(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getFloat(m_nPos);
-}
-
-double ODataColumn::getDouble(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getDouble(m_nPos);
-}
-
-Sequence< sal_Int8 > ODataColumn::getBytes(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getBytes(m_nPos);
-}
-
-com::sun::star::util::Date ODataColumn::getDate(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getDate(m_nPos);
-}
-
-com::sun::star::util::Time ODataColumn::getTime(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getTime(m_nPos);
-}
-
-com::sun::star::util::DateTime ODataColumn::getTimestamp(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getTimestamp(m_nPos);
-}
-
-Reference< ::com::sun::star::io::XInputStream > ODataColumn::getBinaryStream(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getBinaryStream(m_nPos);
-}
-
-Reference< ::com::sun::star::io::XInputStream > ODataColumn::getCharacterStream(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getCharacterStream(m_nPos);
-}
-
-Any ODataColumn::getObject(const Reference< ::com::sun::star::container::XNameAccess > & typeMap) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getObject(m_nPos, typeMap);
-}
-
-Reference< XRef > ODataColumn::getRef(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getRef(m_nPos);
-}
-
-Reference< XBlob > ODataColumn::getBlob(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getBlob(m_nPos);
-}
-
-Reference< XClob > ODataColumn::getClob(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getClob(m_nPos);
-}
-
-Reference< XArray > ODataColumn::getArray(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(!m_xRow.is());
-
- return m_xRow->getArray(m_nPos);
-}
-
-// ::com::sun::star::sdb::XColumnUpdate
-void ODataColumn::updateNull(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateNull(m_nPos);
-}
-
-void ODataColumn::updateBoolean(sal_Bool x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateBoolean(m_nPos, x);
-}
-
-void ODataColumn::updateByte(sal_Int8 x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateByte(m_nPos, x);
-}
-
-void ODataColumn::updateShort(sal_Int16 x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateShort(m_nPos, x);
-}
-
-void ODataColumn::updateInt(sal_Int32 x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateInt(m_nPos, x);
-}
-
-void ODataColumn::updateLong(sal_Int64 x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateLong(m_nPos, x);
-}
-
-void ODataColumn::updateFloat(float x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateFloat(m_nPos, x);
-}
-
-void ODataColumn::updateDouble(double x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateDouble(m_nPos, x);
-}
-
-void ODataColumn::updateString(const rtl::OUString& x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateString(m_nPos, x);
-}
-
-void ODataColumn::updateBytes(const Sequence< sal_Int8 >& x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateBytes(m_nPos, x);
-}
-
-void ODataColumn::updateDate(const com::sun::star::util::Date& x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateDate(m_nPos, x);
-}
-
-void ODataColumn::updateTime(const ::com::sun::star::util::Time& x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateTime(m_nPos, x);
-}
-
-void ODataColumn::updateTimestamp(const ::com::sun::star::util::DateTime& x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateTimestamp(m_nPos, x);
-}
-
-void ODataColumn::updateCharacterStream(const Reference< ::com::sun::star::io::XInputStream > & x, sal_Int32 length) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateCharacterStream(m_nPos, x, length);
-}
-
-void ODataColumn::updateBinaryStream(const Reference< ::com::sun::star::io::XInputStream > & x, sal_Int32 length) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateBinaryStream(m_nPos, x, length);
-}
-
-void ODataColumn::updateNumericObject(const Any& x, sal_Int32 scale) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateNumericObject(m_nPos, x, scale);
-}
-
-void ODataColumn::updateObject(const Any& x) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(!m_xRowUpdate.is());
-
- m_xRowUpdate->updateObject(m_nPos, x);
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/datacolumn.hxx b/dbaccess/source/core/api/datacolumn.hxx
deleted file mode 100644
index 40a0a047a..000000000
--- a/dbaccess/source/core/api/datacolumn.hxx
+++ /dev/null
@@ -1,119 +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.
- *
- ************************************************************************/
-
-#ifndef _DBACORE_DATACOLUMN_HXX_
-#define _DBACORE_DATACOLUMN_HXX_
-
-#include <com/sun/star/sdbc/XRowUpdate.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaData.hdl>
-#include <com/sun/star/sdb/XColumn.hpp>
-#include <com/sun/star/sdb/XColumnUpdate.hpp>
-#include <resultcolumn.hxx>
-namespace dbaccess
-{
- //************************************************************
- // ODataColumn
- //************************************************************
- class ODataColumn : public OResultColumn,
- public ::com::sun::star::sdb::XColumn,
- public ::com::sun::star::sdb::XColumnUpdate
- {
- protected:
- ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XRow > m_xRow;
- ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XRowUpdate > m_xRowUpdate;
-
- virtual ~ODataColumn();
- public:
- ODataColumn (const ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XResultSetMetaData >& _xMetaData,
- const ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XRow >& _xRow,
- const ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XRowUpdate >& _xRowUpdate,
- sal_Int32 _nPos,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rxDBMeta);
-
- // com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw() { OResultColumn::acquire(); }
- virtual void SAL_CALL release() throw() { OResultColumn::release(); }
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // cppu::OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- // ::com::sun::star::sdb::XColumn
- virtual sal_Bool SAL_CALL wasNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getString( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL getBoolean( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int8 SAL_CALL getByte( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int16 SAL_CALL getShort( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getInt( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int64 SAL_CALL getLong( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual float SAL_CALL getFloat( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual double SAL_CALL getDouble( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Date SAL_CALL getDate( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Time SAL_CALL getTime( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getObject( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdb::XColumnUpdate
- virtual void SAL_CALL updateNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateBoolean( sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateByte( sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateShort( sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateInt( sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateLong( sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateFloat( float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateDouble( double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateString( const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateBytes( const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateDate( const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateTime( const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateTimestamp( const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateBinaryStream( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateCharacterStream( const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateObject( const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateNumericObject( const ::com::sun::star::uno::Any& x, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- };
-}
-#endif // _DBACORE_RESULTCOLUMN_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/datasettings.cxx b/dbaccess/source/core/api/datasettings.cxx
deleted file mode 100644
index 085f99ecf..000000000
--- a/dbaccess/source/core/api/datasettings.cxx
+++ /dev/null
@@ -1,223 +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_dbaccess.hxx"
-
-#include "datasettings.hxx"
-#include "apitools.hxx"
-#include "dbastrings.hrc"
-#include <osl/diagnose.h>
-#include <comphelper/property.hxx>
-#include <comphelper/types.hxx>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <vcl/svapp.hxx>
-#include <com/sun/star/awt/FontWeight.hpp>
-#include <com/sun/star/awt/FontEmphasisMark.hpp>
-#include <com/sun/star/awt/FontRelief.hpp>
-
-#include <com/sun/star/awt/FontWidth.hpp>
-
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::awt;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-namespace dbaccess
-{
-//==========================================================================
-//= ODataSettings
-//==========================================================================
-void ODataSettings::registerPropertiesFor(ODataSettings_Base* _pItem)
-{
- if ( m_bQuery )
- {
- registerProperty(PROPERTY_HAVING_CLAUSE, PROPERTY_ID_HAVING_CLAUSE, PropertyAttribute::BOUND,
- &_pItem->m_sHavingClause, ::getCppuType(&_pItem->m_sHavingClause));
-
- registerProperty(PROPERTY_GROUP_BY, PROPERTY_ID_GROUP_BY, PropertyAttribute::BOUND,
- &_pItem->m_sGroupBy, ::getCppuType(&_pItem->m_sGroupBy));
- }
-
- registerProperty(PROPERTY_FILTER, PROPERTY_ID_FILTER, PropertyAttribute::BOUND,
- &_pItem->m_sFilter, ::getCppuType(&_pItem->m_sFilter));
-
- registerProperty(PROPERTY_ORDER, PROPERTY_ID_ORDER, PropertyAttribute::BOUND,
- &_pItem->m_sOrder, ::getCppuType(&_pItem->m_sOrder));
-
- registerProperty(PROPERTY_APPLYFILTER, PROPERTY_ID_APPLYFILTER, PropertyAttribute::BOUND,
- &_pItem->m_bApplyFilter, ::getBooleanCppuType());
-
- registerProperty(PROPERTY_FONT, PROPERTY_ID_FONT, PropertyAttribute::BOUND,
- &_pItem->m_aFont, ::getCppuType(&_pItem->m_aFont));
-
- registerMayBeVoidProperty(PROPERTY_ROW_HEIGHT, PROPERTY_ID_ROW_HEIGHT, PropertyAttribute::BOUND | PropertyAttribute::MAYBEVOID,
- &_pItem->m_aRowHeight, ::getCppuType(static_cast<sal_Int32*>(NULL)));
-
- registerMayBeVoidProperty(PROPERTY_TEXTCOLOR, PROPERTY_ID_TEXTCOLOR, PropertyAttribute::BOUND | PropertyAttribute::MAYBEVOID,
- &_pItem->m_aTextColor, ::getCppuType(static_cast<sal_Int32*>(NULL)));
-
- registerMayBeVoidProperty(PROPERTY_TEXTLINECOLOR, PROPERTY_ID_TEXTLINECOLOR, PropertyAttribute::BOUND | PropertyAttribute::MAYBEVOID,
- &_pItem->m_aTextLineColor, ::getCppuType(static_cast<sal_Int32*>(NULL)));
-
- registerProperty(PROPERTY_TEXTEMPHASIS, PROPERTY_ID_TEXTEMPHASIS, PropertyAttribute::BOUND,
- &_pItem->m_nFontEmphasis, ::getCppuType(&_pItem->m_nFontEmphasis));
-
- registerProperty(PROPERTY_TEXTRELIEF, PROPERTY_ID_TEXTRELIEF, PropertyAttribute::BOUND,&_pItem->m_nFontRelief, ::getCppuType(&_pItem->m_nFontRelief));
-
- registerProperty(PROPERTY_FONTNAME, PROPERTY_ID_FONTNAME, PropertyAttribute::BOUND,&_pItem->m_aFont.Name, ::getCppuType(&_pItem->m_aFont.Name));
- registerProperty(PROPERTY_FONTHEIGHT, PROPERTY_ID_FONTHEIGHT, PropertyAttribute::BOUND,&_pItem->m_aFont.Height, ::getCppuType(&_pItem->m_aFont.Height));
- registerProperty(PROPERTY_FONTWIDTH, PROPERTY_ID_FONTWIDTH, PropertyAttribute::BOUND,&_pItem->m_aFont.Width, ::getCppuType(&_pItem->m_aFont.Width));
- registerProperty(PROPERTY_FONTSTYLENAME, PROPERTY_ID_FONTSTYLENAME, PropertyAttribute::BOUND,&_pItem->m_aFont.StyleName, ::getCppuType(&_pItem->m_aFont.StyleName));
- registerProperty(PROPERTY_FONTFAMILY, PROPERTY_ID_FONTFAMILY, PropertyAttribute::BOUND,&_pItem->m_aFont.Family, ::getCppuType(&_pItem->m_aFont.Family));
- registerProperty(PROPERTY_FONTCHARSET, PROPERTY_ID_FONTCHARSET, PropertyAttribute::BOUND,&_pItem->m_aFont.CharSet, ::getCppuType(&_pItem->m_aFont.CharSet));
- registerProperty(PROPERTY_FONTPITCH, PROPERTY_ID_FONTPITCH, PropertyAttribute::BOUND,&_pItem->m_aFont.Pitch, ::getCppuType(&_pItem->m_aFont.Pitch));
- registerProperty(PROPERTY_FONTCHARWIDTH, PROPERTY_ID_FONTCHARWIDTH, PropertyAttribute::BOUND,&_pItem->m_aFont.CharacterWidth, ::getCppuType(&_pItem->m_aFont.CharacterWidth));
- registerProperty(PROPERTY_FONTWEIGHT, PROPERTY_ID_FONTWEIGHT, PropertyAttribute::BOUND,&_pItem->m_aFont.Weight, ::getCppuType(&_pItem->m_aFont.Weight));
- registerProperty(PROPERTY_FONTSLANT, PROPERTY_ID_FONTSLANT, PropertyAttribute::BOUND,&_pItem->m_aFont.Slant, ::getCppuType(&_pItem->m_aFont.Slant));
- registerProperty(PROPERTY_FONTUNDERLINE, PROPERTY_ID_FONTUNDERLINE, PropertyAttribute::BOUND,&_pItem->m_aFont.Underline, ::getCppuType(&_pItem->m_aFont.Underline));
- registerProperty(PROPERTY_FONTSTRIKEOUT, PROPERTY_ID_FONTSTRIKEOUT, PropertyAttribute::BOUND,&_pItem->m_aFont.Strikeout, ::getCppuType(&_pItem->m_aFont.Strikeout));
- registerProperty(PROPERTY_FONTORIENTATION, PROPERTY_ID_FONTORIENTATION, PropertyAttribute::BOUND,&_pItem->m_aFont.Orientation, ::getCppuType(&_pItem->m_aFont.Orientation));
- registerProperty(PROPERTY_FONTKERNING, PROPERTY_ID_FONTKERNING, PropertyAttribute::BOUND,&_pItem->m_aFont.Kerning, ::getCppuType(&_pItem->m_aFont.Kerning));
- registerProperty(PROPERTY_FONTWORDLINEMODE, PROPERTY_ID_FONTWORDLINEMODE,PropertyAttribute::BOUND,&_pItem->m_aFont.WordLineMode, ::getCppuType(&_pItem->m_aFont.WordLineMode));
- registerProperty(PROPERTY_FONTTYPE, PROPERTY_ID_FONTTYPE, PropertyAttribute::BOUND,&_pItem->m_aFont.Type, ::getCppuType(&_pItem->m_aFont.Type));
-}
-
-ODataSettings::ODataSettings(OBroadcastHelper& _rBHelper,sal_Bool _bQuery)
- :OPropertyStateContainer(_rBHelper)
- ,ODataSettings_Base()
- ,m_bQuery(_bQuery)
-{
-}
-
-ODataSettings_Base::ODataSettings_Base()
- :m_bApplyFilter(sal_False)
- ,m_aFont(::comphelper::getDefaultFont())
- ,m_nFontEmphasis(::com::sun::star::awt::FontEmphasisMark::NONE)
- ,m_nFontRelief(::com::sun::star::awt::FontRelief::NONE)
-{
-}
-
-ODataSettings_Base::ODataSettings_Base(const ODataSettings_Base& _rSource)
- :m_sFilter( _rSource.m_sFilter )
- ,m_sHavingClause( _rSource.m_sHavingClause )
- ,m_sGroupBy( _rSource.m_sGroupBy )
- ,m_sOrder( _rSource.m_sOrder )
- ,m_bApplyFilter( _rSource.m_bApplyFilter )
- ,m_aFont( _rSource.m_aFont )
- ,m_aRowHeight( _rSource.m_aRowHeight )
- ,m_aTextColor( _rSource.m_aTextColor )
- ,m_aTextLineColor( _rSource.m_aTextLineColor )
- ,m_nFontEmphasis( _rSource.m_nFontEmphasis )
- ,m_nFontRelief( _rSource.m_nFontRelief )
-{
-}
-
-ODataSettings_Base::~ODataSettings_Base()
-{
-}
-
-void ODataSettings::getPropertyDefaultByHandle( sal_Int32 _nHandle, Any& _rDefault ) const
-{
- static ::com::sun::star::awt::FontDescriptor aFD = ::comphelper::getDefaultFont();
- switch( _nHandle )
- {
- case PROPERTY_ID_HAVING_CLAUSE:
- case PROPERTY_ID_GROUP_BY:
- case PROPERTY_ID_FILTER:
- case PROPERTY_ID_ORDER:
- _rDefault <<= ::rtl::OUString();
- break;
- case PROPERTY_ID_FONT:
- _rDefault <<= ::comphelper::getDefaultFont();
- break;
- case PROPERTY_ID_APPLYFILTER:
- _rDefault <<= sal_False;
- break;
- case PROPERTY_ID_TEXTRELIEF:
- _rDefault <<= ::com::sun::star::awt::FontRelief::NONE;
- break;
- case PROPERTY_ID_TEXTEMPHASIS:
- _rDefault <<= ::com::sun::star::awt::FontEmphasisMark::NONE;
- break;
- case PROPERTY_ID_FONTNAME:
- _rDefault <<= aFD.Name;
- break;
- case PROPERTY_ID_FONTHEIGHT:
- _rDefault <<= aFD.Height;
- break;
- case PROPERTY_ID_FONTWIDTH:
- _rDefault <<= aFD.Width;
- break;
- case PROPERTY_ID_FONTSTYLENAME:
- _rDefault <<= aFD.StyleName;
- break;
- case PROPERTY_ID_FONTFAMILY:
- _rDefault <<= aFD.Family;
- break;
- case PROPERTY_ID_FONTCHARSET:
- _rDefault <<= aFD.CharSet;
- break;
- case PROPERTY_ID_FONTPITCH:
- _rDefault <<= aFD.Pitch;
- break;
- case PROPERTY_ID_FONTCHARWIDTH:
- _rDefault <<= aFD.CharacterWidth;
- break;
- case PROPERTY_ID_FONTWEIGHT:
- _rDefault <<= aFD.Weight;
- break;
- case PROPERTY_ID_FONTSLANT:
- _rDefault <<= aFD.Slant;
- break;
- case PROPERTY_ID_FONTUNDERLINE:
- _rDefault <<= aFD.Underline;
- break;
- case PROPERTY_ID_FONTSTRIKEOUT:
- _rDefault <<= aFD.Strikeout;
- break;
- case PROPERTY_ID_FONTORIENTATION:
- _rDefault <<= aFD.Orientation;
- break;
- case PROPERTY_ID_FONTKERNING:
- _rDefault <<= aFD.Kerning;
- break;
- case PROPERTY_ID_FONTWORDLINEMODE:
- _rDefault <<= aFD.WordLineMode;
- break;
- case PROPERTY_ID_FONTTYPE:
- _rDefault <<= aFD.Type;
- break;
- }
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/definitioncolumn.cxx b/dbaccess/source/core/api/definitioncolumn.cxx
deleted file mode 100644
index c0db66370..000000000
--- a/dbaccess/source/core/api/definitioncolumn.cxx
+++ /dev/null
@@ -1,629 +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_dbaccess.hxx"
-
-#include "apitools.hxx"
-#include "dbastrings.hrc"
-#include "definitioncolumn.hxx"
-#include "sdbcoretools.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/property.hxx>
-#include <comphelper/types.hxx>
-#include <connectivity/dbtools.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <sal/macros.h>
-
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::container;
-using namespace ::cppu;
-using namespace ::comphelper;
-using namespace ::osl;
-using namespace dbaccess;
-
-#define HAS_DESCRIPTION 0x00000001
-#define HAS_DEFAULTVALUE 0x00000002
-#define HAS_ROWVERSION 0x00000004
-#define HAS_AUTOINCREMENT_CREATION 0x00000008
-
-//============================================================
-//= OTableColumnDescriptor
-//============================================================
-IMPLEMENT_FORWARD_XINTERFACE2(OTableColumnDescriptor,OColumn,TXChild)
-
-void OTableColumnDescriptor::impl_registerProperties()
-{
- sal_Int32 nDefaultAttr = m_bActAsDescriptor ? 0 : PropertyAttribute::READONLY;
-
- registerProperty( PROPERTY_TYPENAME, PROPERTY_ID_TYPENAME, nDefaultAttr, &m_aTypeName, ::getCppuType( &m_aTypeName ) );
- registerProperty( PROPERTY_DESCRIPTION, PROPERTY_ID_DESCRIPTION, nDefaultAttr, &m_aDescription, ::getCppuType( &m_aDescription ) );
- registerProperty( PROPERTY_DEFAULTVALUE, PROPERTY_ID_DEFAULTVALUE, nDefaultAttr, &m_aDefaultValue, ::getCppuType( &m_aDefaultValue ) );
-
- if ( m_bActAsDescriptor )
- registerProperty( PROPERTY_AUTOINCREMENTCREATION, PROPERTY_ID_AUTOINCREMENTCREATION, nDefaultAttr, &m_aAutoIncrementValue, ::getCppuType( &m_aAutoIncrementValue ) );
-
- registerProperty( PROPERTY_TYPE, PROPERTY_ID_TYPE, nDefaultAttr, &m_nType, ::getCppuType( &m_nType ) );
- registerProperty( PROPERTY_PRECISION, PROPERTY_ID_PRECISION, nDefaultAttr, &m_nPrecision, ::getCppuType( &m_nPrecision ) );
- registerProperty( PROPERTY_SCALE, PROPERTY_ID_SCALE, nDefaultAttr, &m_nScale, ::getCppuType( &m_nScale ) );
- registerProperty( PROPERTY_ISNULLABLE, PROPERTY_ID_ISNULLABLE, nDefaultAttr, &m_nIsNullable, ::getCppuType( &m_nIsNullable ) );
- registerProperty( PROPERTY_ISAUTOINCREMENT, PROPERTY_ID_ISAUTOINCREMENT, nDefaultAttr, &m_bAutoIncrement, ::getCppuType( &m_bAutoIncrement ) );
- registerProperty( PROPERTY_ISROWVERSION, PROPERTY_ID_ISROWVERSION, nDefaultAttr, &m_bRowVersion, ::getCppuType( &m_bRowVersion ) );
- registerProperty( PROPERTY_ISCURRENCY, PROPERTY_ID_ISCURRENCY, nDefaultAttr, &m_bCurrency, ::getCppuType( &m_bCurrency ) );
-
- OColumnSettings::registerProperties( *this );
-}
-
-IMPLEMENT_GET_IMPLEMENTATION_ID( OTableColumnDescriptor )
-
-// ::com::sun::star::lang::XServiceInfo
-rtl::OUString OTableColumnDescriptor::getImplementationName( ) throw (RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.OTableColumnDescriptor"));
-}
-
-Sequence< ::rtl::OUString > OTableColumnDescriptor::getSupportedServiceNames( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aSNS( 2 );
- aSNS[0] = m_bActAsDescriptor ? SERVICE_SDBCX_COLUMNDESCRIPTOR : SERVICE_SDBCX_COLUMN;
- aSNS[1] = SERVICE_SDB_COLUMNSETTINGS;
- return aSNS;
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* OTableColumnDescriptor::createArrayHelper( ) const
-{
- Sequence< Property > aProps;
- describeProperties( aProps );
- return new ::cppu::OPropertyArrayHelper( aProps );
-}
-
-// cppu::OPropertySetHelper
-::cppu::IPropertyArrayHelper& OTableColumnDescriptor::getInfoHelper()
-{
- return *static_cast< ::comphelper::OPropertyArrayUsageHelper< OTableColumnDescriptor >* >(this)->getArrayHelper();
-}
-
-void OTableColumnDescriptor::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const Any& rValue ) throw (Exception)
-{
- OColumn::setFastPropertyValue_NoBroadcast( nHandle, rValue );
- ::dbaccess::notifyDataSourceModified( m_xParent, sal_True );
-}
-
-Reference< XInterface > SAL_CALL OTableColumnDescriptor::getParent( ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- return m_xParent;
-}
-
-void SAL_CALL OTableColumnDescriptor::setParent( const Reference< XInterface >& _xParent ) throw (NoSupportException, RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- m_xParent = _xParent;
-}
-//============================================================
-//= OTableColumn
-//============================================================
-DBG_NAME(OTableColumn);
-
-OTableColumn::OTableColumn( const ::rtl::OUString& _rName )
- :OTableColumnDescriptor( false /* do not act as descriptor */ )
-{
- DBG_CTOR(OTableColumn,NULL);
- m_sName = _rName;
-}
-
-OTableColumn::~OTableColumn()
-{
- DBG_DTOR(OTableColumn,NULL);
-}
-
-IMPLEMENT_GET_IMPLEMENTATION_ID( OTableColumn )
-
-rtl::OUString OTableColumn::getImplementationName( ) throw (RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.OTableColumn"));
-}
-
-::cppu::IPropertyArrayHelper& SAL_CALL OTableColumn::getInfoHelper()
-{
- return *OTableColumn_PBase::getArrayHelper();
-}
-
-::cppu::IPropertyArrayHelper* OTableColumn::createArrayHelper( ) const
-{
- return OTableColumnDescriptor::createArrayHelper();
-}
-
-// =========================================================================
-//= OQueryColumn
-// =========================================================================
-DBG_NAME( OQueryColumn );
-
-OQueryColumn::OQueryColumn( const Reference< XPropertySet >& _rxParserColumn, const Reference< XConnection >& _rxConnection,const ::rtl::OUString i_sLabel )
- :OTableColumnDescriptor( false /* do not act as descriptor */ )
- ,m_sLabel(i_sLabel)
-{
- const sal_Int32 nPropAttr = PropertyAttribute::READONLY;
- registerProperty( PROPERTY_CATALOGNAME, PROPERTY_ID_CATALOGNAME, nPropAttr, &m_sCatalogName, ::getCppuType( &m_sCatalogName ) );
- registerProperty( PROPERTY_SCHEMANAME, PROPERTY_ID_SCHEMANAME, nPropAttr, &m_sSchemaName, ::getCppuType( &m_sSchemaName ) );
- registerProperty( PROPERTY_TABLENAME, PROPERTY_ID_TABLENAME, nPropAttr, &m_sTableName, ::getCppuType( &m_sTableName ) );
- registerProperty( PROPERTY_REALNAME, PROPERTY_ID_REALNAME, nPropAttr, &m_sRealName, ::getCppuType( &m_sRealName ) );
- registerProperty( PROPERTY_LABEL, PROPERTY_ID_LABEL, nPropAttr, &m_sLabel, ::getCppuType( &m_sLabel ) );
-
- DBG_CTOR( OQueryColumn, NULL );
-
- OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_TYPENAME ) >>= m_aTypeName );
- OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_ISNULLABLE ) >>= m_nIsNullable );
- OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_PRECISION ) >>= m_nPrecision );
- OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_SCALE ) >>= m_nScale );
- OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_TYPE ) >>= m_nType );
- OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_ISAUTOINCREMENT ) >>= m_bAutoIncrement );
- OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_ISCURRENCY ) >>= m_bCurrency );
- OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_NAME ) >>= m_sName );
-
- m_bRowVersion = sal_False;
-
- Reference< XPropertySetInfo > xPSI( _rxParserColumn->getPropertySetInfo(), UNO_SET_THROW );
- if ( xPSI->hasPropertyByName( PROPERTY_DEFAULTVALUE ) )
- OSL_VERIFY( _rxParserColumn->getPropertyValue( PROPERTY_DEFAULTVALUE ) >>= m_aDefaultValue );
-
- // copy some optional properties from the parser column
- struct PropertyDescriptor
- {
- ::rtl::OUString sName;
- sal_Int32 nHandle;
- };
- PropertyDescriptor aProps[] =
- {
- { PROPERTY_CATALOGNAME, PROPERTY_ID_CATALOGNAME },
- { PROPERTY_SCHEMANAME, PROPERTY_ID_SCHEMANAME },
- { PROPERTY_TABLENAME, PROPERTY_ID_TABLENAME },
- { PROPERTY_REALNAME, PROPERTY_ID_REALNAME }
- };
- for ( size_t i=0; i < SAL_N_ELEMENTS( aProps ); ++i )
- {
- if ( xPSI->hasPropertyByName( aProps[i].sName ) )
- setFastPropertyValue_NoBroadcast( aProps[i].nHandle, _rxParserColumn->getPropertyValue( aProps[i].sName ) );
- }
-
- // determine the table column we're based on
- osl_incrementInterlockedCount( &m_refCount );
- {
- m_xOriginalTableColumn = impl_determineOriginalTableColumn( _rxConnection );
- }
- osl_decrementInterlockedCount( &m_refCount );
-}
-
-OQueryColumn::~OQueryColumn()
-{
- DBG_DTOR( OQueryColumn, NULL );
-}
-
-Reference< XPropertySet > OQueryColumn::impl_determineOriginalTableColumn( const Reference< XConnection >& _rxConnection )
-{
- OSL_PRECOND( _rxConnection.is(), "OQueryColumn::impl_determineOriginalTableColumn: illegal connection!" );
- if ( !_rxConnection.is() )
- return NULL;
-
- Reference< XPropertySet > xOriginalTableColumn;
- try
- {
- // determine the composed table name, plus the column name, as indicated by the
- // respective properties
- ::rtl::OUString sCatalog, sSchema, sTable;
- OSL_VERIFY( getPropertyValue( PROPERTY_CATALOGNAME ) >>= sCatalog );
- OSL_VERIFY( getPropertyValue( PROPERTY_SCHEMANAME ) >>= sSchema );
- OSL_VERIFY( getPropertyValue( PROPERTY_TABLENAME ) >>= sTable );
- if ( !sCatalog.getLength() && !sSchema.getLength() && !sTable.getLength() )
- return NULL;
-
- ::rtl::OUString sComposedTableName = ::dbtools::composeTableName(
- _rxConnection->getMetaData(), sCatalog, sSchema, sTable, sal_False, ::dbtools::eComplete );
-
- // retrieve the table in question
- Reference< XTablesSupplier > xSuppTables( _rxConnection, UNO_QUERY_THROW );
- Reference< XNameAccess > xTables( xSuppTables->getTables(), UNO_QUERY_THROW );
- if ( !xTables->hasByName( sComposedTableName ) )
- return NULL;
-
- Reference< XColumnsSupplier > xSuppCols( xTables->getByName( sComposedTableName ), UNO_QUERY_THROW );
- Reference< XNameAccess > xColumns( xSuppCols->getColumns(), UNO_QUERY_THROW );
-
- ::rtl::OUString sColumn;
- OSL_VERIFY( getPropertyValue( PROPERTY_REALNAME ) >>= sColumn );
- if ( !xColumns->hasByName( sColumn ) )
- return NULL;
-
- xOriginalTableColumn.set( xColumns->getByName( sColumn ), UNO_QUERY );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return xOriginalTableColumn;
-}
-
-IMPLEMENT_GET_IMPLEMENTATION_ID( OQueryColumn )
-
-::rtl::OUString SAL_CALL OQueryColumn::getImplementationName( ) throw(RuntimeException)
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "org.openoffice.comp.dbaccess.OQueryColumn" ) );
-}
-
-::cppu::IPropertyArrayHelper& SAL_CALL OQueryColumn::getInfoHelper()
-{
- return *OQueryColumn_PBase::getArrayHelper();
-}
-
-::cppu::IPropertyArrayHelper* OQueryColumn::createArrayHelper() const
-{
- return OTableColumnDescriptor::createArrayHelper();
-}
-
-void SAL_CALL OQueryColumn::getFastPropertyValue( Any& _rValue, sal_Int32 _nHandle ) const
-{
- OTableColumnDescriptor::getFastPropertyValue( _rValue, _nHandle );
-
- // special treatment for column settings:
- if ( !OColumnSettings::isColumnSettingProperty( _nHandle ) )
- return;
-
- // If the setting has its default value, then try to obtain the value from the table column which
- // this query column is based on
- if ( !OColumnSettings::isDefaulted( _nHandle, _rValue ) )
- return;
-
- if ( !m_xOriginalTableColumn.is() )
- return;
-
- try
- {
- // determine original property name
- ::rtl::OUString sPropName;
- sal_Int16 nAttributes( 0 );
- const_cast< OQueryColumn* >( this )->getInfoHelper().fillPropertyMembersByHandle( &sPropName, &nAttributes, _nHandle );
- OSL_ENSURE( sPropName.getLength(), "OColumnWrapper::impl_getPropertyNameFromHandle: property not found!" );
-
- _rValue = m_xOriginalTableColumn->getPropertyValue( sPropName );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-//==========================================================================
-//= OColumnWrapper
-//==========================================================================
-DBG_NAME(OColumnWrapper);
-
-OColumnWrapper::OColumnWrapper( const Reference< XPropertySet > & rCol, const bool _bNameIsReadOnly )
- :OColumn( _bNameIsReadOnly )
- ,m_xAggregate(rCol)
- ,m_nColTypeID(-1)
-{
- DBG_CTOR(OColumnWrapper,NULL);
- // which type of aggregate property do we have?
- // we distingish the properties by the containment of optional properties
- m_nColTypeID = 0;
- if ( m_xAggregate.is() )
- {
- Reference <XPropertySetInfo > xInfo(m_xAggregate->getPropertySetInfo());
- m_nColTypeID |= xInfo->hasPropertyByName(PROPERTY_DESCRIPTION) ? HAS_DESCRIPTION : 0;
- m_nColTypeID |= xInfo->hasPropertyByName(PROPERTY_DEFAULTVALUE) ? HAS_DEFAULTVALUE : 0;
- m_nColTypeID |= xInfo->hasPropertyByName(PROPERTY_ISROWVERSION) ? HAS_ROWVERSION : 0;
- m_nColTypeID |= xInfo->hasPropertyByName(PROPERTY_AUTOINCREMENTCREATION) ? HAS_AUTOINCREMENT_CREATION : 0;
-
- m_xAggregate->getPropertyValue(PROPERTY_NAME) >>= m_sName;
- }
-}
-
-OColumnWrapper::~OColumnWrapper()
-{
- DBG_DTOR(OColumnWrapper,NULL);
-}
-
-::rtl::OUString OColumnWrapper::impl_getPropertyNameFromHandle( const sal_Int32 _nHandle ) const
-{
- ::rtl::OUString sPropName;
- sal_Int16 nAttributes( 0 );
- const_cast< OColumnWrapper* >( this )->getInfoHelper().fillPropertyMembersByHandle( &sPropName, &nAttributes, _nHandle );
- OSL_ENSURE( sPropName.getLength(), "OColumnWrapper::impl_getPropertyNameFromHandle: property not found!" );
- return sPropName;
-}
-
-void OColumnWrapper::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const
-{
- // derived classes are free to either use the OPropertyContainer(Helper) mechanisms for properties,
- // or to declare additional properties which are to be forwarded to the wrapped object. So we need
- // to distinguish those cases.
- if ( OColumn::isRegisteredProperty( nHandle ) )
- {
- OColumn::getFastPropertyValue( rValue, nHandle );
- }
- else
- {
- rValue = m_xAggregate->getPropertyValue( impl_getPropertyNameFromHandle( nHandle ) );
- }
-}
-
-sal_Bool OColumnWrapper::convertFastPropertyValue( Any & rConvertedValue, Any & rOldValue, sal_Int32 nHandle,
- const Any& rValue ) throw (IllegalArgumentException)
-{
- sal_Bool bModified( sal_False );
- if ( OColumn::isRegisteredProperty( nHandle ) )
- {
- bModified = OColumn::convertFastPropertyValue( rConvertedValue, rOldValue, nHandle, rValue );
- }
- else
- {
- getFastPropertyValue( rOldValue, nHandle );
- if ( rOldValue != rValue )
- {
- rConvertedValue = rValue;
- bModified = sal_True;
- }
- }
- return bModified;
-}
-
-void OColumnWrapper::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const Any& rValue ) throw (Exception)
-{
- if ( OColumn::isRegisteredProperty( nHandle ) )
- {
- OColumn::setFastPropertyValue_NoBroadcast( nHandle, rValue );
- }
- else
- {
- m_xAggregate->setPropertyValue( impl_getPropertyNameFromHandle( nHandle ), rValue );
- }
-}
-
-sal_Int64 SAL_CALL OColumnWrapper::getSomething( const Sequence< sal_Int8 >& aIdentifier ) throw(RuntimeException)
-{
- Reference< XUnoTunnel > xTunnel( m_xAggregate, UNO_QUERY);
- if ( xTunnel.is() )
- return xTunnel->getSomething( aIdentifier );
- return 0;
-}
-
-//============================================================
-//= OTableColumnDescriptorWrapper
-//============================================================
-OTableColumnDescriptorWrapper::OTableColumnDescriptorWrapper( const Reference< XPropertySet >& _rCol, const bool _bPureWrap, const bool _bIsDescriptor )
- :OColumnWrapper( _rCol, !_bIsDescriptor )
- ,m_bPureWrap( _bPureWrap )
- ,m_bIsDescriptor( _bIsDescriptor )
-{
- // let the ColumnSettings register its properties
- OColumnSettings::registerProperties( *this );
-}
-
-// com::sun::star::lang::XTypeProvider
-IMPLEMENT_GET_IMPLEMENTATION_ID( OTableColumnDescriptorWrapper )
-
-// ::com::sun::star::lang::XServiceInfo
-rtl::OUString OTableColumnDescriptorWrapper::getImplementationName( ) throw (RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.OTableColumnDescriptorWrapper"));
-}
-
-Sequence< ::rtl::OUString > OTableColumnDescriptorWrapper::getSupportedServiceNames( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aSNS( 2 );
- aSNS[0] = SERVICE_SDBCX_COLUMNDESCRIPTOR;
- aSNS[1] = SERVICE_SDB_COLUMNSETTINGS;
- return aSNS;
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* OTableColumnDescriptorWrapper::createArrayHelper( sal_Int32 nId ) const
-{
- const sal_Int32 nHaveAlways = 7;
-
- // Which optional properties are contained?
- sal_Int32 nHaveOptionally = 0;
- if (nId & HAS_DESCRIPTION)
- ++nHaveOptionally;
- if (nId & HAS_DEFAULTVALUE)
- ++nHaveOptionally;
- if (nId & HAS_ROWVERSION)
- ++nHaveOptionally;
- if ( nId & HAS_AUTOINCREMENT_CREATION )
- ++nHaveOptionally;
-
- BEGIN_PROPERTY_SEQUENCE( nHaveAlways + nHaveOptionally )
-
- DECL_PROP0_BOOL( ISAUTOINCREMENT );
- DECL_PROP0_BOOL( ISCURRENCY );
- DECL_PROP0( ISNULLABLE, sal_Int32 );
- DECL_PROP0( PRECISION, sal_Int32 );
- DECL_PROP0( SCALE, sal_Int32 );
- DECL_PROP0( TYPE, sal_Int32 );
- DECL_PROP0( TYPENAME, ::rtl::OUString );
-
- if ( nId & HAS_AUTOINCREMENT_CREATION )
- {
- DECL_PROP1( AUTOINCREMENTCREATION, ::rtl::OUString, MAYBEVOID );
- }
- if ( nId & HAS_DEFAULTVALUE )
- {
- DECL_PROP0( DEFAULTVALUE, ::rtl::OUString );
- }
- if ( nId & HAS_DESCRIPTION )
- {
- DECL_PROP0( DESCRIPTION, ::rtl::OUString );
- }
- if ( nId & HAS_ROWVERSION )
- {
- DECL_PROP0_BOOL( ISROWVERSION );
- }
-
- END_PROPERTY_SEQUENCE()
-
- if ( !m_bIsDescriptor )
- {
- for ( Property* prop = aDescriptor.getArray();
- prop != aDescriptor.getArray() + aDescriptor.getLength();
- ++prop
- )
- {
- prop->Attributes |= PropertyAttribute::READONLY;
- }
- }
-
- // finally also describe the properties which are maintained by our base class, in particular the OPropertyContainerHelper
- Sequence< Property > aBaseProperties;
- describeProperties( aBaseProperties );
-
- Sequence< Property > aAllProperties( ::comphelper::concatSequences( aDescriptor, aBaseProperties ) );
- return new ::cppu::OPropertyArrayHelper( aAllProperties, sal_False );
-}
-
-// cppu::OPropertySetHelper
-::cppu::IPropertyArrayHelper& OTableColumnDescriptorWrapper::getInfoHelper()
-{
- return *static_cast< OIdPropertyArrayUsageHelper< OTableColumnDescriptorWrapper >* >(this)->getArrayHelper(m_nColTypeID);
-}
-
-void OTableColumnDescriptorWrapper::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const
-{
- if ( m_bPureWrap )
- {
- rValue = m_xAggregate->getPropertyValue( impl_getPropertyNameFromHandle( nHandle ) );
- }
- else
- {
- OColumnWrapper::getFastPropertyValue( rValue, nHandle );
- }
-}
-
-sal_Bool OTableColumnDescriptorWrapper::convertFastPropertyValue( Any & rConvertedValue, Any & rOldValue, sal_Int32 nHandle, const Any& rValue ) throw (IllegalArgumentException)
-{
- sal_Bool bModified(sal_False);
- if ( m_bPureWrap )
- {
- // do not delegate to OColumnWrapper: It would, for the properties which were registered with registerProperty,
- // ask the OPropertyContainer base class, which is not what we want here.
- // TODO: the whole "m_bPureWrap"-thingie is strange. We should have a dedicated class doing this wrapping,
- // not a class which normally serves other purposes, and only sometimes does a "pure wrap". It makes the
- // code unnecessarily hard to maintain, and error prone.
- rOldValue = m_xAggregate->getPropertyValue( impl_getPropertyNameFromHandle( nHandle ) );
- if ( rOldValue != rValue )
- {
- rConvertedValue = rValue;
- bModified = sal_True;
- }
- }
- else
- {
- bModified = OColumnWrapper::convertFastPropertyValue( rConvertedValue, rOldValue, nHandle, rValue );
- }
- return bModified;
-}
-
-void OTableColumnDescriptorWrapper::setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle,
- const Any& rValue
- )
- throw (Exception)
-{
- if ( m_bPureWrap )
- {
- m_xAggregate->setPropertyValue( impl_getPropertyNameFromHandle( nHandle ), rValue );
- }
- else
- {
- OColumnWrapper::setFastPropertyValue_NoBroadcast( nHandle, rValue );
- }
-}
-
-//============================================================
-//= OTableColumnWrapper
-//============================================================
-OTableColumnWrapper::OTableColumnWrapper( const Reference< XPropertySet >& rCol, const Reference< XPropertySet >& _xColDefintion,
- const bool _bPureWrap )
- :OTableColumnDescriptorWrapper( rCol, _bPureWrap, false )
-{
- osl_incrementInterlockedCount( &m_refCount );
- if ( _xColDefintion.is() )
- {
- try
- {
- ::comphelper::copyProperties( _xColDefintion, this );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- osl_decrementInterlockedCount( &m_refCount );
-}
-
-OTableColumnWrapper::~OTableColumnWrapper()
-{
-}
-
-IMPLEMENT_GET_IMPLEMENTATION_ID( OTableColumnWrapper )
-
-rtl::OUString OTableColumnWrapper::getImplementationName( ) throw (RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.OTableColumnWrapper" ));
-}
-
-Sequence< ::rtl::OUString > OTableColumnWrapper::getSupportedServiceNames( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aSNS( 2 );
- aSNS[0] = SERVICE_SDBCX_COLUMN;
- aSNS[1] = SERVICE_SDB_COLUMNSETTINGS;
- return aSNS;
-}
-
-::cppu::IPropertyArrayHelper& OTableColumnWrapper::getInfoHelper()
-{
- return *static_cast< OIdPropertyArrayUsageHelper< OTableColumnWrapper >* >(this)->getArrayHelper(m_nColTypeID);
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* OTableColumnWrapper::createArrayHelper( sal_Int32 nId ) const
-{
- return OTableColumnDescriptorWrapper::createArrayHelper( nId );
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/preparedstatement.cxx b/dbaccess/source/core/api/preparedstatement.cxx
deleted file mode 100644
index bca0ffa9b..000000000
--- a/dbaccess/source/core/api/preparedstatement.cxx
+++ /dev/null
@@ -1,434 +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_dbaccess.hxx"
-
-#include "dbastrings.hrc"
-
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-
-#include <comphelper/property.hxx>
-#include <comphelper/sequence.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <preparedstatement.hxx>
-#include <resultcolumn.hxx>
-#include <resultset.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::cppu;
-using namespace ::osl;
-using namespace dbaccess;
-
-DBG_NAME(OPreparedStatement)
-
-OPreparedStatement::OPreparedStatement(const Reference< XConnection > & _xConn,
- const Reference< XInterface > & _xStatement)
- :OStatementBase(_xConn, _xStatement)
-{
- DBG_CTOR(OPreparedStatement, NULL);
- m_xAggregateAsParameters = Reference< XParameters >( m_xAggregateAsSet, UNO_QUERY_THROW );
-
- Reference<XDatabaseMetaData> xMeta = _xConn->getMetaData();
- m_pColumns = new OColumns(*this, m_aMutex, xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers(),::std::vector< ::rtl::OUString>(), NULL,NULL);
-}
-
-OPreparedStatement::~OPreparedStatement()
-{
- m_pColumns->acquire();
- m_pColumns->disposing();
- delete m_pColumns;
-
- DBG_DTOR(OPreparedStatement, NULL);
-}
-
-// com::sun::star::lang::XTypeProvider
-Sequence< Type > OPreparedStatement::getTypes() throw (RuntimeException)
-{
- OTypeCollection aTypes(::getCppuType( (const Reference< XServiceInfo > *)0 ),
- ::getCppuType( (const Reference< XPreparedStatement > *)0 ),
- ::getCppuType( (const Reference< XParameters > *)0 ),
- ::getCppuType( (const Reference< XResultSetMetaDataSupplier > *)0 ),
- ::getCppuType( (const Reference< XColumnsSupplier > *)0 ),
- OStatementBase::getTypes() );
-
- return aTypes.getTypes();
-}
-
-Sequence< sal_Int8 > OPreparedStatement::getImplementationId() throw (RuntimeException)
-{
- static OImplementationId * pId = 0;
- if (! pId)
- {
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- if (! pId)
- {
- static OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-// com::sun::star::uno::XInterface
-Any OPreparedStatement::queryInterface( const Type & rType ) throw (RuntimeException)
-{
- Any aIface = OStatementBase::queryInterface( rType );
- if (!aIface.hasValue())
- aIface = ::cppu::queryInterface(
- rType,
- static_cast< XServiceInfo * >( this ),
- static_cast< XParameters * >( this ),
- static_cast< XColumnsSupplier * >( this ),
- static_cast< XResultSetMetaDataSupplier * >( this ),
- static_cast< XPreparedBatchExecution * >( this ),
- static_cast< XMultipleResults * >( this ),
- static_cast< XPreparedStatement * >( this ));
- return aIface;
-}
-
-void OPreparedStatement::acquire() throw ()
-{
- OStatementBase::acquire();
-}
-
-void OPreparedStatement::release() throw ()
-{
- OStatementBase::release();
-}
-
-// XServiceInfo
-rtl::OUString OPreparedStatement::getImplementationName( ) throw(RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.OPreparedStatement"));
-}
-
-sal_Bool OPreparedStatement::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > OPreparedStatement::getSupportedServiceNames( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aSNS( 2 );
- aSNS.getArray()[0] = SERVICE_SDBC_PREPAREDSTATEMENT;
- aSNS.getArray()[1] = SERVICE_SDB_PREPAREDSTATMENT;
- return aSNS;
-}
-
-// OComponentHelper
-void OPreparedStatement::disposing()
-{
- {
- MutexGuard aGuard(m_aMutex);
- m_pColumns->disposing();
- m_xAggregateAsParameters = NULL;
- }
- OStatementBase::disposing();
-}
-
-// ::com::sun::star::sdbcx::XColumnsSupplier
-Reference< ::com::sun::star::container::XNameAccess > OPreparedStatement::getColumns(void) throw( RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- // do we have to populate the columns
- if (!m_pColumns->isInitialized())
- {
- try
- {
- Reference< XResultSetMetaDataSupplier > xSuppMeta( m_xAggregateAsSet, UNO_QUERY_THROW );
- Reference< XResultSetMetaData > xMetaData( xSuppMeta->getMetaData(), UNO_SET_THROW );
-
- Reference< XConnection > xConn( getConnection(), UNO_SET_THROW );
- Reference< XDatabaseMetaData > xDBMeta( xConn->getMetaData(), UNO_SET_THROW );
-
- for (sal_Int32 i = 0, nCount = xMetaData->getColumnCount(); i < nCount; ++i)
- {
- // retrieve the name of the column
- rtl::OUString aName = xMetaData->getColumnName(i + 1);
- OResultColumn* pColumn = new OResultColumn(xMetaData, i + 1, xDBMeta);
- m_pColumns->append(aName, pColumn);
- }
- }
- catch (const SQLException& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- m_pColumns->setInitialized();
- }
- return m_pColumns;
-}
-
-// XResultSetMetaDataSupplier
-Reference< XResultSetMetaData > OPreparedStatement::getMetaData(void) throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- return Reference< XResultSetMetaDataSupplier >( m_xAggregateAsSet, UNO_QUERY_THROW )->getMetaData();
-}
-
-// XPreparedStatement
-Reference< XResultSet > OPreparedStatement::executeQuery() throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- disposeResultSet();
-
- Reference< XResultSet > xResultSet;
- Reference< XResultSet > xDrvResultSet = Reference< XPreparedStatement >( m_xAggregateAsSet, UNO_QUERY_THROW )->executeQuery();
- if (xDrvResultSet.is())
- {
- xResultSet = new OResultSet(xDrvResultSet, *this, m_pColumns->isCaseSensitive());
-
- // keep the resultset weak
- m_aResultSet = xResultSet;
- }
- return xResultSet;
-}
-
-sal_Int32 OPreparedStatement::executeUpdate() throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- disposeResultSet();
-
- return Reference< XPreparedStatement >( m_xAggregateAsSet, UNO_QUERY_THROW )->executeUpdate();
-}
-
-sal_Bool OPreparedStatement::execute() throw( SQLException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- disposeResultSet();
-
- return Reference< XPreparedStatement >( m_xAggregateAsSet, UNO_QUERY_THROW )->execute();
-}
-
-Reference< XConnection > OPreparedStatement::getConnection(void) throw( SQLException, RuntimeException )
-{
- return Reference< XConnection > (m_xParent, UNO_QUERY);
-}
-
-// XParameters
-void SAL_CALL OPreparedStatement::setNull( sal_Int32 parameterIndex, sal_Int32 sqlType ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setNull(parameterIndex, sqlType);
-}
-
-void SAL_CALL OPreparedStatement::setObjectNull( sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setObjectNull(parameterIndex, sqlType, typeName);
-}
-
-void SAL_CALL OPreparedStatement::setBoolean( sal_Int32 parameterIndex, sal_Bool x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setBoolean(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setByte( sal_Int32 parameterIndex, sal_Int8 x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setByte(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setShort( sal_Int32 parameterIndex, sal_Int16 x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setShort(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setInt( sal_Int32 parameterIndex, sal_Int32 x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setInt(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setLong( sal_Int32 parameterIndex, sal_Int64 x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setLong(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setFloat( sal_Int32 parameterIndex, float x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setFloat(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setDouble( sal_Int32 parameterIndex, double x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setDouble(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setString( sal_Int32 parameterIndex, const ::rtl::OUString& x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setString(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setBytes( sal_Int32 parameterIndex, const Sequence< sal_Int8 >& x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setBytes(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setDate( sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setDate(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setTime( sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setTime(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setTimestamp( sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setTimestamp(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setBinaryStream( sal_Int32 parameterIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setBinaryStream(parameterIndex, x, length);
-}
-
-void SAL_CALL OPreparedStatement::setCharacterStream( sal_Int32 parameterIndex, const Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setCharacterStream(parameterIndex, x, length);
-}
-
-void SAL_CALL OPreparedStatement::setObject( sal_Int32 parameterIndex, const Any& x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setObject(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setObjectWithInfo( sal_Int32 parameterIndex, const Any& x, sal_Int32 targetSqlType, sal_Int32 scale ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setObjectWithInfo(parameterIndex, x, targetSqlType, scale);
-}
-
-void SAL_CALL OPreparedStatement::setRef( sal_Int32 parameterIndex, const Reference< XRef >& x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setRef(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setBlob( sal_Int32 parameterIndex, const Reference< XBlob >& x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setBlob(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setClob( sal_Int32 parameterIndex, const Reference< XClob >& x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setClob(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::setArray( sal_Int32 parameterIndex, const Reference< XArray >& x ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->setArray(parameterIndex, x);
-}
-
-void SAL_CALL OPreparedStatement::clearParameters( ) throw(SQLException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- m_xAggregateAsParameters->clearParameters();
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/query.cxx b/dbaccess/source/core/api/query.cxx
deleted file mode 100644
index 7ff064df8..000000000
--- a/dbaccess/source/core/api/query.cxx
+++ /dev/null
@@ -1,384 +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_dbaccess.hxx"
-
-#include "query.hxx"
-#include "dbastrings.hrc"
-#include <connectivity/warningscontainer.hxx>
-#include "HelperCollections.hxx"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-
-#include <cppuhelper/queryinterface.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <osl/diagnose.h>
-#include <comphelper/propagg.hxx>
-#include <comphelper/sequence.hxx>
-
-/** === begin UNO includes === **/
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/types.hxx>
-#include <comphelper/property.hxx>
-#include <unotools/sharedunocomponent.hxx>
-#include "definitioncolumn.hxx"
-
-#include <functional>
-
-#include "sdbcoretools.hxx"
-#include "querycomposer.hxx"
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include "ContainerMediator.hxx"
-
-using namespace dbaccess;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::container;
-using namespace ::comphelper;
-using namespace ::osl;
-using namespace ::cppu;
-using namespace ::utl;
-
-namespace dbaccess
-{
-
-//==========================================================================
-//= OQuery
-//==========================================================================
-DBG_NAME(OQuery)
-
-OQuery::OQuery( const Reference< XPropertySet >& _rxCommandDefinition
- ,const Reference< XConnection >& _rxConn
- ,const Reference< XMultiServiceFactory >& _xORB)
- :OContentHelper(_xORB,NULL,TContentPtr(new OContentHelper_Impl))
- ,OQueryDescriptor_Base(m_aMutex,*this)
- ,ODataSettings(OContentHelper::rBHelper,sal_True)
- ,m_xCommandDefinition(_rxCommandDefinition)
- ,m_xConnection(_rxConn)
- ,m_pColumnMediator( NULL )
- ,m_pWarnings( NULL )
- ,m_bCaseSensitiv(sal_True)
- ,m_eDoingCurrently(NONE)
-{
- DBG_CTOR(OQuery, NULL);
- registerProperties();
- ODataSettings::registerPropertiesFor(this);
-
- osl_incrementInterlockedCount(&m_refCount);
- OSL_ENSURE(m_xCommandDefinition.is(), "OQuery::OQuery : invalid CommandDefinition object !");
- if ( m_xCommandDefinition.is() )
- {
- try
- {
- ::comphelper::copyProperties(_rxCommandDefinition,this);
- }
- catch(Exception&)
- {
- OSL_FAIL("OQueryDescriptor_Base::OQueryDescriptor_Base: caught an exception!");
- }
-
- m_xCommandDefinition->addPropertyChangeListener(::rtl::OUString(), this);
- // m_xCommandDefinition->addPropertyChangeListener(PROPERTY_NAME, this);
- m_xCommandPropInfo = m_xCommandDefinition->getPropertySetInfo();
- }
- OSL_ENSURE(m_xConnection.is(), "OQuery::OQuery : invalid connection !");
- osl_decrementInterlockedCount(&m_refCount);
-}
-
-OQuery::~OQuery()
-{
- DBG_DTOR(OQuery, NULL);
-}
-
-IMPLEMENT_IMPLEMENTATION_ID(OQuery);
-IMPLEMENT_GETTYPES3(OQuery,OQueryDescriptor_Base,ODataSettings,OContentHelper);
-IMPLEMENT_FORWARD_XINTERFACE3( OQuery,OContentHelper,OQueryDescriptor_Base,ODataSettings)
-
-void OQuery::rebuildColumns()
-{
- OSL_PRECOND( getColumnCount() == 0, "OQuery::rebuildColumns: column container should be empty!" );
- // the base class' definition of rebuildColumns promised that clearColumns is called before rebuildColumns
-
- try
- {
- m_pColumnMediator = NULL;
-
- Reference<XColumnsSupplier> xColSup(m_xCommandDefinition,UNO_QUERY);
- Reference< XNameAccess > xColumnDefinitions;
- if ( xColSup.is() )
- {
- xColumnDefinitions = xColSup->getColumns();
- if ( xColumnDefinitions.is() )
- m_pColumnMediator = new OContainerMediator( m_pColumns, xColumnDefinitions, m_xConnection, OContainerMediator::eColumns );
- }
-
- // fill the columns with columns from the statement
- Reference< XMultiServiceFactory > xFactory( m_xConnection, UNO_QUERY_THROW );
- SharedUNOComponent< XSingleSelectQueryComposer, DisposableComponent > xComposer(
- Reference< XSingleSelectQueryComposer >( xFactory->createInstance( SERVICE_NAME_SINGLESELECTQUERYCOMPOSER ), UNO_QUERY_THROW ) );
-
- Reference< XNameAccess > xColumns;
- Reference< XIndexAccess > xColumnsIndexed;
- try
- {
- xComposer->setQuery( m_sCommand );
- Reference< XColumnsSupplier > xCols( xComposer, UNO_QUERY_THROW );
- xColumns.set( xCols->getColumns(), UNO_QUERY_THROW );
- xColumnsIndexed.set( xColumns, UNO_QUERY_THROW );
- }
- catch( const SQLException& ) { }
-
- SharedUNOComponent< XPreparedStatement, DisposableComponent > xPreparedStatement;
- if ( !xColumns.is() || ( xColumnsIndexed->getCount() == 0 ) )
- { // the QueryComposer could not parse it. Try a lean version.
- xPreparedStatement.set( m_xConnection->prepareStatement( m_sCommand ), UNO_QUERY_THROW );
- Reference< XResultSetMetaDataSupplier > xResMetaDataSup( xPreparedStatement, UNO_QUERY_THROW );
- Reference< XResultSetMetaData > xResultSetMeta( xResMetaDataSup->getMetaData() );
- if ( !xResultSetMeta.is() )
- {
- ::rtl::OUString sError( DBA_RES( RID_STR_STATEMENT_WITHOUT_RESULT_SET ) );
- ::dbtools::throwSQLException( sError, SQL_GENERAL_ERROR, *this );
- }
-
- Reference< XDatabaseMetaData > xDBMeta( m_xConnection->getMetaData(), UNO_QUERY_THROW );
- ::rtl::Reference< OSQLColumns > aParseColumns(
- ::connectivity::parse::OParseColumn::createColumnsForResultSet( xResultSetMeta, xDBMeta,xColumnDefinitions ) );
- xColumns = OPrivateColumns::createWithIntrinsicNames(
- aParseColumns, xDBMeta->supportsMixedCaseQuotedIdentifiers(), *this, m_aMutex );
- if ( !xColumns.is() )
- throw RuntimeException();
- }
-
- Sequence< ::rtl::OUString> aNames = xColumns->getElementNames();
- const ::rtl::OUString* pIter = aNames.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aNames.getLength();
- for ( sal_Int32 i = 0;pIter != pEnd; ++pIter,++i)
- {
- Reference<XPropertySet> xSource(xColumns->getByName( *pIter ),UNO_QUERY);
- ::rtl::OUString sLabel = *pIter;
- if ( xColumnDefinitions.is() && xColumnDefinitions->hasByName(*pIter) )
- {
- Reference<XPropertySet> xCommandColumn(xColumnDefinitions->getByName( *pIter ),UNO_QUERY);
- xCommandColumn->getPropertyValue(PROPERTY_LABEL) >>= sLabel;
- }
- OQueryColumn* pColumn = new OQueryColumn( xSource, m_xConnection, sLabel);
- Reference< XChild > xChild( *pColumn, UNO_QUERY_THROW );
- xChild->setParent( *this );
-
- implAppendColumn( *pIter, pColumn );
- Reference< XPropertySet > xDest( *pColumn, UNO_QUERY_THROW );
- if ( m_pColumnMediator.is() )
- m_pColumnMediator->notifyElementCreated( *pIter, xDest );
- }
- }
- catch( const SQLContext& e )
- {
- if ( m_pWarnings )
- m_pWarnings->appendWarning( e );
- }
- catch( const SQLWarning& e )
- {
- if ( m_pWarnings )
- m_pWarnings->appendWarning( e );
- }
- catch( const SQLException& e )
- {
- if ( m_pWarnings )
- m_pWarnings->appendWarning( e );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-// XServiceInfo
-IMPLEMENT_SERVICE_INFO3(OQuery, "com.sun.star.sdb.dbaccess.OQuery", SERVICE_SDB_DATASETTINGS, SERVICE_SDB_QUERY, SERVICE_SDB_QUERYDEFINITION)
-
-// ::com::sun::star::beans::XPropertyChangeListener
-void SAL_CALL OQuery::propertyChange( const PropertyChangeEvent& _rSource ) throw(RuntimeException)
-{
- sal_Int32 nOwnHandle = -1;
- {
- MutexGuard aGuard(m_aMutex);
-
- OSL_ENSURE(_rSource.Source.get() == Reference< XInterface >(m_xCommandDefinition, UNO_QUERY).get(),
- "OQuery::propertyChange : where did this call come from ?");
-
- if (m_eDoingCurrently == SETTING_PROPERTIES)
- // we're setting the property ourself, so we will do the neccessary notifications later
- return;
-
- // forward this to our own member holding a copy of the property value
- if (getArrayHelper()->hasPropertyByName(_rSource.PropertyName))
- {
- Property aOwnProp = getArrayHelper()->getPropertyByName(_rSource.PropertyName);
- nOwnHandle = aOwnProp.Handle;
- ODataSettings::setFastPropertyValue_NoBroadcast(nOwnHandle, _rSource.NewValue);
- // don't use our own setFastPropertyValue_NoBroadcast, this would forward it to the CommandSettings,
- // again
- // and don't use the "real" setPropertyValue, this is to expensive and not sure to succeed
- }
- else
- {
- OSL_FAIL("OQuery::propertyChange : my CommandDefinition has more properties than I do !");
- }
- }
-
- fire(&nOwnHandle, &_rSource.NewValue, &_rSource.OldValue, 1, sal_False);
-}
-
-void SAL_CALL OQuery::disposing( const EventObject& _rSource ) throw (RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
-
- (void)_rSource;
- OSL_ENSURE(_rSource.Source.get() == Reference< XInterface >(m_xCommandDefinition, UNO_QUERY).get(),
- "OQuery::disposing : where did this call come from ?");
-
- m_xCommandDefinition->removePropertyChangeListener(::rtl::OUString(), this);
- m_xCommandDefinition = NULL;
-}
-
-// XDataDescriptorFactory
-Reference< XPropertySet > SAL_CALL OQuery::createDataDescriptor( ) throw(RuntimeException)
-{
- return new OQueryDescriptor(*this);
-}
-
-// pseudo-XComponent
-void SAL_CALL OQuery::disposing()
-{
- MutexGuard aGuard(m_aMutex);
- if (m_xCommandDefinition.is())
- {
- m_xCommandDefinition->removePropertyChangeListener(::rtl::OUString(), this);
- m_xCommandDefinition = NULL;
- }
- disposeColumns();
-
- m_pWarnings = NULL;
-}
-
-void OQuery::setFastPropertyValue_NoBroadcast( sal_Int32 _nHandle, const Any& _rValue ) throw (Exception)
-{
- ODataSettings::setFastPropertyValue_NoBroadcast(_nHandle, _rValue);
- ::rtl::OUString sAggPropName;
- sal_Int16 nAttr = 0;
- if (getInfoHelper().fillPropertyMembersByHandle(&sAggPropName,&nAttr,_nHandle) &&
- m_xCommandPropInfo.is() &&
- m_xCommandPropInfo->hasPropertyByName(sAggPropName))
- { // the base class holds the property values itself, but we have to forward this to our CommandDefinition
-
- m_eDoingCurrently = SETTING_PROPERTIES;
- OAutoActionReset aAutoReset(this);
- m_xCommandDefinition->setPropertyValue(sAggPropName, _rValue);
-
- if ( PROPERTY_ID_COMMAND == _nHandle )
- // the columns are out of date if we are based on a new statement ....
- setColumnsOutOfDate();
- }
-}
-
-Reference< XPropertySetInfo > SAL_CALL OQuery::getPropertySetInfo( ) throw(RuntimeException)
-{
- return createPropertySetInfo( getInfoHelper() ) ;
-}
-
-::cppu::IPropertyArrayHelper& OQuery::getInfoHelper()
-{
- return *getArrayHelper();
-}
-
-::cppu::IPropertyArrayHelper* OQuery::createArrayHelper( ) const
-{
- Sequence< Property > aProps;
- // our own props
- describeProperties(aProps);
- return new ::cppu::OPropertyArrayHelper(aProps);
-}
-
-OColumn* OQuery::createColumn(const ::rtl::OUString& /*_rName*/) const
-{
- return NULL;
-}
-
-void SAL_CALL OQuery::rename( const ::rtl::OUString& newName ) throw (SQLException, ElementExistException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- Reference<XRename> xRename(m_xCommandDefinition,UNO_QUERY);
- OSL_ENSURE(xRename.is(),"No XRename interface!");
- if(xRename.is())
- xRename->rename(newName);
-}
-
-void OQuery::registerProperties()
-{
- // the properties which OCommandBase supplies (it has no own registration, as it's not derived from
- // a OPropertyStateContainer)
- registerProperty(PROPERTY_NAME, PROPERTY_ID_NAME, PropertyAttribute::BOUND|PropertyAttribute::CONSTRAINED,
- &m_sElementName, ::getCppuType(&m_sElementName));
-
- registerProperty(PROPERTY_COMMAND, PROPERTY_ID_COMMAND, PropertyAttribute::BOUND,
- &m_sCommand, ::getCppuType(&m_sCommand));
-
- registerProperty(PROPERTY_ESCAPE_PROCESSING, PROPERTY_ID_ESCAPE_PROCESSING, PropertyAttribute::BOUND,
- &m_bEscapeProcessing, ::getBooleanCppuType());
-
- registerProperty(PROPERTY_UPDATE_TABLENAME, PROPERTY_ID_UPDATE_TABLENAME, PropertyAttribute::BOUND,
- &m_sUpdateTableName, ::getCppuType(&m_sUpdateTableName));
-
- registerProperty(PROPERTY_UPDATE_SCHEMANAME, PROPERTY_ID_UPDATE_SCHEMANAME, PropertyAttribute::BOUND,
- &m_sUpdateSchemaName, ::getCppuType(&m_sUpdateSchemaName));
-
- registerProperty(PROPERTY_UPDATE_CATALOGNAME, PROPERTY_ID_UPDATE_CATALOGNAME, PropertyAttribute::BOUND,
- &m_sUpdateCatalogName, ::getCppuType(&m_sUpdateCatalogName));
-
- registerProperty(PROPERTY_LAYOUTINFORMATION, PROPERTY_ID_LAYOUTINFORMATION, PropertyAttribute::BOUND,
- &m_aLayoutInformation, ::getCppuType(&m_aLayoutInformation));
-}
-
-::rtl::OUString OQuery::determineContentType() const
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "application/vnd.org.openoffice.DatabaseQuery" ) );
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/query.hxx b/dbaccess/source/core/api/query.hxx
deleted file mode 100644
index ca5eeb64e..000000000
--- a/dbaccess/source/core/api/query.hxx
+++ /dev/null
@@ -1,174 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_COREAPI_QUERY_HXX_
-#define _DBA_COREAPI_QUERY_HXX_
-
-#include "querydescriptor.hxx"
-#include <cppuhelper/implbase3.hxx>
-#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
-#include <com/sun/star/beans/XPropertyChangeListener.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/sdbcx/XRename.hpp>
-#include "ContentHelper.hxx"
-
-#include <map>
-
-namespace dbtools
-{
- class IWarningsContainer;
-}
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
-//==========================================================================
-//= OQuery - an object implementing the sdb.Query service
-//==========================================================================
-typedef ::cppu::ImplHelper3 < ::com::sun::star::sdbcx::XDataDescriptorFactory,
- ::com::sun::star::beans::XPropertyChangeListener,
- ::com::sun::star::sdbcx::XRename
- > OQuery_Base;
-class OQuery;
-class OColumn;
-typedef ::comphelper::OPropertyArrayUsageHelper< OQuery > OQuery_ArrayHelperBase;
-
-
-class OQuery :public OContentHelper
- ,public OQueryDescriptor_Base
- ,public OQuery_Base
- ,public OQuery_ArrayHelperBase
- ,public ODataSettings
-{
- friend struct TRelease;
-
-public:
- typedef ::std::map< ::rtl::OUString,OColumn*,::comphelper::UStringMixLess> TNameColumnMap;
-
-protected:
-// TNameColumnMap m_aColumnMap; // contains all columnnames to columns
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xCommandDefinition;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xConnection;
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > m_xCommandPropInfo;
- ::rtl::Reference< OContainerMediator > m_pColumnMediator;
- ::dbtools::IWarningsContainer* m_pWarnings;
- sal_Bool m_bCaseSensitiv : 1; // assume case sensitivity of the column names ?
-
- // possible actions on our "aggregate"
- enum AGGREGATE_ACTION { NONE, SETTING_PROPERTIES, FLUSHING };
- AGGREGATE_ACTION m_eDoingCurrently;
-
- // ------------------------------------------------------------------------
- /** a class which automatically resets m_eDoingCurrently in it's destructor
- */
- class OAutoActionReset; // just for the following friend declaration
- friend class OAutoActionReset;
- class OAutoActionReset
- {
- OQuery* m_pActor;
- public:
- OAutoActionReset(OQuery* _pActor) : m_pActor(_pActor) { }
- ~OAutoActionReset() { m_pActor->m_eDoingCurrently = NONE; }
- };
-
-protected:
- virtual ~OQuery();
-
-// OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
- ::cppu::IPropertyArrayHelper* getArrayHelper() { return OQuery_ArrayHelperBase::getArrayHelper(); }
-
-public:
- OQuery(
- const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxCommandDefinition,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn,
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB
- );
-
-// com::sun::star::lang::XTypeProvider
- DECLARE_TYPEPROVIDER( );
-
-// ::com::sun::star::uno::XInterface
- DECLARE_XINTERFACE( )
-
-// ::com::sun::star::beans::XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-
-// OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
-// ::com::sun::star::lang::XServiceInfo
- DECLARE_SERVICE_INFO();
-
-// ::com::sun::star::sdbcx::XDataDescriptorFactory
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL createDataDescriptor( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::beans::XPropertyChangeListener
- virtual void SAL_CALL propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::lang::XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& _rSource ) throw (::com::sun::star::uno::RuntimeException);
-
-// OPropertySetHelper
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue )
- throw (::com::sun::star::uno::Exception);
-
-public:
- // the caller is responsible for the lifetime!
- void setWarningsContainer( ::dbtools::IWarningsContainer* _pWarnings ) { m_pWarnings = _pWarnings; }
- ::dbtools::IWarningsContainer* getWarningsContainer( ) const { return m_pWarnings; }
-
- // XRename
- virtual void SAL_CALL rename( const ::rtl::OUString& newName ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException);
-
-protected:
- virtual void SAL_CALL disposing();
-
- virtual OColumn* createColumn(const ::rtl::OUString& _rName) const;
-
- virtual void rebuildColumns( );
-
- // OContentHelper overridables
- virtual ::rtl::OUString determineContentType() const;
-
-private:
- void registerProperties();
-};
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // _DBA_COREAPI_QUERY_HXX_
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/querycomposer.cxx b/dbaccess/source/core/api/querycomposer.cxx
deleted file mode 100644
index 9bf2e3400..000000000
--- a/dbaccess/source/core/api/querycomposer.cxx
+++ /dev/null
@@ -1,355 +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_dbaccess.hxx"
-
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/util/XNumberFormatter.hpp>
-#include <com/sun/star/sdbc/ColumnSearch.hpp>
-#include <com/sun/star/sdbc/DataType.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
-#include <com/sun/star/lang/ServiceNotRegisteredException.hpp>
-#include <comphelper/sequence.hxx>
-#include <com/sun/star/uno/XAggregation.hpp>
-#include <comphelper/sequence.hxx>
-#include <comphelper/processfactory.hxx>
-#include "dbastrings.hrc"
-#include <cppuhelper/typeprovider.hxx>
-#include <unotools/configmgr.hxx>
-#include <comphelper/types.hxx>
-#include <tools/debug.hxx>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/i18n/XLocaleData.hpp>
-#include <unotools/syslocale.hxx>
-#include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/sdb/SQLFilterOperator.hpp>
-#include "querycomposer.hxx"
-#include "HelperCollections.hxx"
-#include "composertools.hxx"
-#include <algorithm>
-#include <rtl/logfile.hxx>
-
-using namespace dbaccess;
-using namespace dbtools;
-using namespace comphelper;
-using namespace connectivity;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::i18n;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::script;
-using namespace ::cppu;
-using namespace ::osl;
-using namespace ::utl;
-
-
-DBG_NAME(OQueryComposer)
-
-OQueryComposer::OQueryComposer(const Reference< XConnection>& _xConnection)
- : OSubComponent(m_aMutex,_xConnection)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::OQueryComposer" );
- DBG_CTOR(OQueryComposer,NULL);
- OSL_ENSURE(_xConnection.is()," Connection cant be null!");
-
- Reference<XMultiServiceFactory> xFac( _xConnection, UNO_QUERY_THROW );
- m_xComposer.set( xFac->createInstance( SERVICE_NAME_SINGLESELECTQUERYCOMPOSER ), UNO_QUERY_THROW );
- m_xComposerHelper.set( xFac->createInstance( SERVICE_NAME_SINGLESELECTQUERYCOMPOSER ), UNO_QUERY_THROW );
-}
-
-OQueryComposer::~OQueryComposer()
-{
- DBG_DTOR(OQueryComposer,NULL);
-}
-
-void SAL_CALL OQueryComposer::disposing()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::disposing" );
- ::comphelper::disposeComponent(m_xComposerHelper);
- ::comphelper::disposeComponent(m_xComposer);
-}
-
-// ::com::sun::star::lang::XTypeProvider
-Sequence< Type > SAL_CALL OQueryComposer::getTypes() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getTypes" );
- return ::comphelper::concatSequences(OSubComponent::getTypes(),OQueryComposer_BASE::getTypes());
-}
-
-Sequence< sal_Int8 > SAL_CALL OQueryComposer::getImplementationId() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getImplementationId" );
- static OImplementationId * pId = 0;
- if (! pId)
- {
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- if (! pId)
- {
- static OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-// com::sun::star::lang::XUnoTunnel
-sal_Int64 SAL_CALL OQueryComposer::getSomething( const Sequence< sal_Int8 >& rId ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getSomething" );
- if (rId.getLength() == 16 && 0 == rtl_compareMemory(getImplementationId().getConstArray(), rId.getConstArray(), 16 ) )
- return reinterpret_cast<sal_Int64>(this);
-
- return 0;
-}
-
-Any SAL_CALL OQueryComposer::queryInterface( const Type & rType ) throw(RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::queryInterface" );
- Any aRet = OSubComponent::queryInterface(rType);
- if(!aRet.hasValue())
- aRet = OQueryComposer_BASE::queryInterface(rType);
- return aRet;
-}
-
-// XServiceInfo
-rtl::OUString OQueryComposer::getImplementationName( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getImplementationName" );
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.dbaccess.OQueryComposer"));
-}
-
-sal_Bool OQueryComposer::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::supportsService" );
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > OQueryComposer::getSupportedServiceNames( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getSupportedServiceNames" );
- Sequence< rtl::OUString > aSNS( 1 );
- aSNS[0] = SERVICE_SDB_SQLQUERYCOMPOSER;
- return aSNS;
-}
-
-// XSQLQueryComposer
-::rtl::OUString SAL_CALL OQueryComposer::getQuery( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getQuery" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
- Reference<XPropertySet> xProp(m_xComposer,UNO_QUERY);
- ::rtl::OUString sQuery;
- if ( xProp.is() )
- xProp->getPropertyValue(PROPERTY_ORIGINAL) >>= sQuery;
- return sQuery;
-}
-
-void SAL_CALL OQueryComposer::setQuery( const ::rtl::OUString& command ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::setQuery" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
- m_aFilters.clear();
- m_xComposer->setQuery(command);
- m_sOrgFilter = m_xComposer->getFilter();
- m_sOrgOrder = m_xComposer->getOrder();
-}
-
-::rtl::OUString SAL_CALL OQueryComposer::getComposedQuery( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getComposedQuery" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- MutexGuard aGuard(m_aMutex);
-
- return m_xComposer->getQuery();
-}
-
-::rtl::OUString SAL_CALL OQueryComposer::getFilter( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getFilter" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
- MutexGuard aGuard(m_aMutex);
- FilterCreator aFilterCreator;
- aFilterCreator = ::std::for_each(m_aFilters.begin(),m_aFilters.end(),aFilterCreator);
- return aFilterCreator.getComposedAndClear();
-}
-
-Sequence< Sequence< PropertyValue > > SAL_CALL OQueryComposer::getStructuredFilter( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getStructuredFilter" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- MutexGuard aGuard(m_aMutex);
- return m_xComposer->getStructuredFilter();
-}
-
-::rtl::OUString SAL_CALL OQueryComposer::getOrder( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getOrder" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
- OrderCreator aOrderCreator;
- aOrderCreator = ::std::for_each(m_aOrders.begin(),m_aOrders.end(),aOrderCreator);
- return aOrderCreator.getComposedAndClear();
-}
-
-void SAL_CALL OQueryComposer::appendFilterByColumn( const Reference< XPropertySet >& column ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::appendFilterByColumn" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( m_aMutex );
-
- m_xComposerHelper->setQuery(getQuery());
- m_xComposerHelper->setFilter(::rtl::OUString());
- sal_Int32 nOp = SQLFilterOperator::EQUAL;
- if ( column.is() )
- {
- sal_Int32 nType = 0;
- column->getPropertyValue(PROPERTY_TYPE) >>= nType;
- switch(nType)
- {
- case DataType::VARCHAR:
- case DataType::CHAR:
- case DataType::LONGVARCHAR:
- nOp = SQLFilterOperator::LIKE;
- break;
- default:
- nOp = SQLFilterOperator::EQUAL;
- }
- }
- m_xComposerHelper->appendFilterByColumn(column,sal_True,nOp);
-
- FilterCreator aFilterCreator;
- aFilterCreator.append(getFilter());
- aFilterCreator.append(m_xComposerHelper->getFilter());
-
- setFilter( aFilterCreator.getComposedAndClear() );
-}
-
-void SAL_CALL OQueryComposer::appendOrderByColumn( const Reference< XPropertySet >& column, sal_Bool ascending ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::appendOrderByColumn" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
- ::osl::MutexGuard aGuard( m_aMutex );
-
- m_xComposerHelper->setQuery(getQuery());
- m_xComposerHelper->setOrder(::rtl::OUString());
- m_xComposerHelper->appendOrderByColumn(column,ascending);
-
- OrderCreator aOrderCreator;
- aOrderCreator.append(getOrder());
- aOrderCreator.append(m_xComposerHelper->getOrder());
-
- setOrder(aOrderCreator.getComposedAndClear());
-}
-
-void SAL_CALL OQueryComposer::setFilter( const ::rtl::OUString& filter ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::setFilter" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
- FilterCreator aFilterCreator;
- aFilterCreator.append(m_sOrgFilter);
- aFilterCreator.append(filter);
-
- m_aFilters.clear();
- if ( filter.getLength() )
- m_aFilters.push_back(filter);
-
- m_xComposer->setFilter( aFilterCreator.getComposedAndClear() );
-}
-
-void SAL_CALL OQueryComposer::setOrder( const ::rtl::OUString& order ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::setOrder" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
-
- OrderCreator aOrderCreator;
- aOrderCreator.append(m_sOrgOrder);
- aOrderCreator.append(order);
-
- m_aOrders.clear();
- if ( order.getLength() )
- m_aOrders.push_back(order);
-
- m_xComposer->setOrder(aOrderCreator.getComposedAndClear());
-}
-
-// XTablesSupplier
-Reference< XNameAccess > SAL_CALL OQueryComposer::getTables( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getTables" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
- return Reference<XTablesSupplier>(m_xComposer,UNO_QUERY)->getTables();
-}
-
-// XColumnsSupplier
-Reference< XNameAccess > SAL_CALL OQueryComposer::getColumns( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getColumns" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
- return Reference<XColumnsSupplier>(m_xComposer,UNO_QUERY)->getColumns();
-}
-
-Reference< XIndexAccess > SAL_CALL OQueryComposer::getParameters( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OQueryComposer::getParameters" );
- ::connectivity::checkDisposed(OSubComponent::rBHelper.bDisposed);
-
- ::osl::MutexGuard aGuard( m_aMutex );
- return Reference<XParametersSupplier>(m_xComposer,UNO_QUERY)->getParameters();
-}
-
-void SAL_CALL OQueryComposer::acquire() throw()
-{
- OSubComponent::acquire();
-}
-
-void SAL_CALL OQueryComposer::release() throw()
-{
- OSubComponent::release();
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/querycontainer.cxx b/dbaccess/source/core/api/querycontainer.cxx
deleted file mode 100644
index fb8b1e045..000000000
--- a/dbaccess/source/core/api/querycontainer.cxx
+++ /dev/null
@@ -1,420 +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_dbaccess.hxx"
-
-#include "querycontainer.hxx"
-#include "dbastrings.hrc"
-#include "query.hxx"
-#include "objectnameapproval.hxx"
-#include "ContainerListener.hxx"
-#include "veto.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/container/XContainer.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/container/XContainerApproveBroadcaster.hpp>
-/** === end UNO includes === **/
-
-#include <connectivity/dbexception.hxx>
-
-#include <tools/debug.hxx>
-#include <osl/diagnose.h>
-#include <comphelper/enumhelper.hxx>
-#include <comphelper/uno3.hxx>
-#include <comphelper/property.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/extract.hxx>
-#include <cppuhelper/exc_hlp.hxx>
-
-using namespace dbtools;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::util;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-namespace dbaccess
-{
-
-//==========================================================================
-//= OQueryContainer
-//==========================================================================
-DBG_NAME(OQueryContainer)
-
-OQueryContainer::OQueryContainer(
- const Reference< XNameContainer >& _rxCommandDefinitions
- , const Reference< XConnection >& _rxConn
- , const Reference< XMultiServiceFactory >& _rxORB,
- ::dbtools::IWarningsContainer* _pWarnings)
- :ODefinitionContainer(_rxORB,NULL,TContentPtr(new ODefinitionContainer_Impl))
- ,m_pWarnings( _pWarnings )
- ,m_xCommandDefinitions(_rxCommandDefinitions)
- ,m_xConnection(_rxConn)
-{
- DBG_CTOR(OQueryContainer, NULL);
-
- increment(m_refCount);
- {
- m_pCommandsListener = new OContainerListener( *this, m_aMutex );
- m_pCommandsListener->acquire();
-
- Reference< XContainer > xContainer( m_xCommandDefinitions, UNO_QUERY_THROW );
- xContainer->addContainerListener( m_pCommandsListener );
-
- Reference< XContainerApproveBroadcaster > xContainerApprove( m_xCommandDefinitions, UNO_QUERY_THROW );
- xContainerApprove->addContainerApproveListener( m_pCommandsListener );
-
- // fill my structures
- ODefinitionContainer_Impl& rDefinitions( getDefinitions() );
- Sequence< ::rtl::OUString > sDefinitionNames = m_xCommandDefinitions->getElementNames();
- const ::rtl::OUString* pDefinitionName = sDefinitionNames.getConstArray();
- const ::rtl::OUString* pEnd = pDefinitionName + sDefinitionNames.getLength();
- for ( ; pDefinitionName != pEnd; ++pDefinitionName )
- {
- rDefinitions.insert( *pDefinitionName, TContentPtr() );
- m_aDocuments.push_back(m_aDocumentMap.insert(Documents::value_type(*pDefinitionName,Documents::mapped_type())).first);
- }
- }
- decrement(m_refCount);
-
- setElementApproval( PContainerApprove( new ObjectNameApproval( _rxConn, ObjectNameApproval::TypeQuery ) ) );
-}
-
-OQueryContainer::~OQueryContainer()
-{
- DBG_DTOR(OQueryContainer, NULL);
- // dispose();
- // maybe we're already disposed, but this should be uncritical
-}
-
-IMPLEMENT_FORWARD_XINTERFACE2( OQueryContainer,ODefinitionContainer,OQueryContainer_Base)
-
-IMPLEMENT_FORWARD_XTYPEPROVIDER2( OQueryContainer,ODefinitionContainer,OQueryContainer_Base)
-
-void OQueryContainer::disposing()
-{
- ODefinitionContainer::disposing();
- MutexGuard aGuard(m_aMutex);
- if ( !m_xCommandDefinitions.is() )
- // already disposed
- return;
-
- if ( m_pCommandsListener )
- {
- Reference< XContainer > xContainer( m_xCommandDefinitions, UNO_QUERY );
- xContainer->removeContainerListener( m_pCommandsListener );
- Reference< XContainerApproveBroadcaster > xContainerApprove( m_xCommandDefinitions, UNO_QUERY );
- xContainerApprove->removeContainerApproveListener( m_pCommandsListener );
-
- m_pCommandsListener->dispose();
- m_pCommandsListener->release();
- m_pCommandsListener = NULL;
- }
-
- m_xCommandDefinitions = NULL;
- m_xConnection = NULL;
-}
-
-// XServiceInfo
-IMPLEMENT_SERVICE_INFO2(OQueryContainer, "com.sun.star.sdb.dbaccess.OQueryContainer", SERVICE_SDBCX_CONTAINER, SERVICE_SDB_QUERIES)
-
-// XDataDescriptorFactory
-Reference< XPropertySet > SAL_CALL OQueryContainer::createDataDescriptor( ) throw(RuntimeException)
-{
- return new OQueryDescriptor();
-}
-
-// XAppend
-void SAL_CALL OQueryContainer::appendByDescriptor( const Reference< XPropertySet >& _rxDesc ) throw(SQLException, ElementExistException, RuntimeException)
-{
- ResettableMutexGuard aGuard(m_aMutex);
- if ( !m_xCommandDefinitions.is() )
- throw DisposedException( ::rtl::OUString(), *this );
-
- // first clone this object's CommandDefinition part
- Reference< XPropertySet > xCommandDefinitionPart( m_aContext.createComponent( (::rtl::OUString)SERVICE_SDB_QUERYDEFINITION ), UNO_QUERY_THROW );
- ::comphelper::copyProperties( _rxDesc, xCommandDefinitionPart );
- // TODO : the columns part of the descriptor has to be copied
-
- // create a wrapper for the object (*before* inserting into our command definition container)
- Reference< XContent > xNewObject( implCreateWrapper( Reference< XContent>( xCommandDefinitionPart, UNO_QUERY_THROW ) ) );
-
- ::rtl::OUString sNewObjectName;
- _rxDesc->getPropertyValue(PROPERTY_NAME) >>= sNewObjectName;
-
- try
- {
- notifyByName( aGuard, sNewObjectName, xNewObject, NULL, E_INSERTED, ApproveListeners );
- }
- catch( const Exception& )
- {
- disposeComponent( xNewObject );
- disposeComponent( xCommandDefinitionPart );
- throw;
- }
-
- // insert the basic object into the definition container
- {
- m_eDoingCurrently = INSERTING;
- OAutoActionReset aAutoReset(this);
- m_xCommandDefinitions->insertByName(sNewObjectName, makeAny(xCommandDefinitionPart));
- }
-
- implAppend( sNewObjectName, xNewObject );
- notifyByName( aGuard, sNewObjectName, xNewObject, NULL, E_INSERTED, ContainerListemers );
-}
-
-// XDrop
-void SAL_CALL OQueryContainer::dropByName( const ::rtl::OUString& _rName ) throw(SQLException, NoSuchElementException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- if ( !checkExistence(_rName) )
- throw NoSuchElementException(_rName,*this);
-
- if ( !m_xCommandDefinitions.is() )
- throw DisposedException( ::rtl::OUString(), *this );
-
- // now simply forward the remove request to the CommandDefinition container, we're a listener for the removal
- // and thus we do everything neccessary in ::elementRemoved
- m_xCommandDefinitions->removeByName(_rName);
-}
-
-void SAL_CALL OQueryContainer::dropByIndex( sal_Int32 _nIndex ) throw(SQLException, IndexOutOfBoundsException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- if ((_nIndex<0) || (_nIndex>getCount()))
- throw IndexOutOfBoundsException();
-
- if ( !m_xCommandDefinitions.is() )
- throw DisposedException( ::rtl::OUString(), *this );
-
- ::rtl::OUString sName;
- Reference<XPropertySet> xProp(Reference<XIndexAccess>(m_xCommandDefinitions,UNO_QUERY)->getByIndex(_nIndex),UNO_QUERY);
- if ( xProp.is() )
- xProp->getPropertyValue(PROPERTY_NAME) >>= sName;
-
- dropByName(sName);
-}
-
-void SAL_CALL OQueryContainer::elementInserted( const ::com::sun::star::container::ContainerEvent& _rEvent ) throw(::com::sun::star::uno::RuntimeException)
-{
- Reference< XContent > xNewElement;
- ::rtl::OUString sElementName;
- _rEvent.Accessor >>= sElementName;
- {
- MutexGuard aGuard(m_aMutex);
- if (INSERTING == m_eDoingCurrently)
- // nothing to do, we're inserting via an "appendByDescriptor"
- return;
-
- OSL_ENSURE(sElementName.getLength(), "OQueryContainer::elementInserted : invalid name !");
- OSL_ENSURE(m_aDocumentMap.find(sElementName) == m_aDocumentMap.end(), "OQueryContainer::elementInserted : oops .... we're inconsistent with our master container !");
- if (!sElementName.getLength() || hasByName(sElementName))
- return;
-
- // insert an own new element
- xNewElement = implCreateWrapper(sElementName);
- }
- insertByName(sElementName,makeAny(xNewElement));
-}
-
-void SAL_CALL OQueryContainer::elementRemoved( const ::com::sun::star::container::ContainerEvent& _rEvent ) throw(::com::sun::star::uno::RuntimeException)
-{
- ::rtl::OUString sAccessor;
- _rEvent.Accessor >>= sAccessor;
- {
- OSL_ENSURE(sAccessor.getLength(), "OQueryContainer::elementRemoved : invalid name !");
- OSL_ENSURE(m_aDocumentMap.find(sAccessor) != m_aDocumentMap.end(), "OQueryContainer::elementRemoved : oops .... we're inconsistent with our master container !");
- if ( !sAccessor.getLength() || !hasByName(sAccessor) )
- return;
- }
- removeByName(sAccessor);
-}
-
-void SAL_CALL OQueryContainer::elementReplaced( const ::com::sun::star::container::ContainerEvent& _rEvent ) throw(::com::sun::star::uno::RuntimeException)
-{
- Reference< XPropertySet > xReplacedElement;
- Reference< XContent > xNewElement;
- ::rtl::OUString sAccessor;
- _rEvent.Accessor >>= sAccessor;
-
- {
- MutexGuard aGuard(m_aMutex);
- OSL_ENSURE(sAccessor.getLength(), "OQueryContainer::elementReplaced : invalid name !");
- OSL_ENSURE(m_aDocumentMap.find(sAccessor) != m_aDocumentMap.end(), "OQueryContainer::elementReplaced : oops .... we're inconsistent with our master container !");
- if (!sAccessor.getLength() || !hasByName(sAccessor))
- return;
-
- xNewElement = implCreateWrapper(sAccessor);
- }
-
- replaceByName(sAccessor,makeAny(xNewElement));
-}
-
-Reference< XVeto > SAL_CALL OQueryContainer::approveInsertElement( const ContainerEvent& Event ) throw (WrappedTargetException, RuntimeException)
-{
- ::rtl::OUString sName;
- OSL_VERIFY( Event.Accessor >>= sName );
- Reference< XContent > xElement( Event.Element, UNO_QUERY_THROW );
-
- Reference< XVeto > xReturn;
- try
- {
- getElementApproval()->approveElement( sName, xElement.get() );
- }
- catch( const Exception& )
- {
- xReturn = new Veto( ::rtl::OUString(), ::cppu::getCaughtException() );
- }
- return xReturn;
-}
-
-Reference< XVeto > SAL_CALL OQueryContainer::approveReplaceElement( const ContainerEvent& /*Event*/ ) throw (WrappedTargetException, RuntimeException)
-{
- return NULL;
-}
-
-Reference< XVeto > SAL_CALL OQueryContainer::approveRemoveElement( const ContainerEvent& /*Event*/ ) throw (WrappedTargetException, RuntimeException)
-{
- return NULL;
-}
-
-void SAL_CALL OQueryContainer::disposing( const ::com::sun::star::lang::EventObject& _rSource ) throw(::com::sun::star::uno::RuntimeException)
-{
- if (_rSource.Source.get() == Reference< XInterface >(m_xCommandDefinitions, UNO_QUERY).get())
- { // our "master container" (with the command definitions) is being disposed
- OSL_FAIL("OQueryContainer::disposing : nobody should dispose the CommandDefinition container before disposing my connection !");
- dispose();
- }
- else
- {
- Reference< XContent > xSource(_rSource.Source, UNO_QUERY);
- // it's one of our documents ....
- Documents::iterator aIter = m_aDocumentMap.begin();
- Documents::iterator aEnd = m_aDocumentMap.end();
- for (;aIter != aEnd;++aIter )
- {
- if ( xSource == aIter->second.get() )
- {
- m_xCommandDefinitions->removeByName(aIter->first);
- break;
- }
- }
- ODefinitionContainer::disposing(_rSource);
- }
-}
-
-::rtl::OUString OQueryContainer::determineContentType() const
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "application/vnd.org.openoffice.DatabaseQueryContainer" ) );
-}
-
-Reference< XContent > OQueryContainer::implCreateWrapper(const ::rtl::OUString& _rName)
-{
- Reference< XContent > xObject(m_xCommandDefinitions->getByName(_rName),UNO_QUERY);
- return implCreateWrapper(xObject);
-}
-
-Reference< XContent > OQueryContainer::implCreateWrapper(const Reference< XContent >& _rxCommandDesc)
-{
- Reference<XNameContainer> xContainer(_rxCommandDesc,UNO_QUERY);
- Reference< XContent > xReturn;
- if ( xContainer .is() )
- {
- xReturn = new OQueryContainer( xContainer, m_xConnection, m_aContext.getLegacyServiceFactory(), m_pWarnings );
- }
- else
- {
- OQuery* pNewObject = new OQuery( Reference< XPropertySet >( _rxCommandDesc, UNO_QUERY ), m_xConnection, m_aContext.getLegacyServiceFactory() );
- xReturn = pNewObject;
-
- pNewObject->setWarningsContainer( m_pWarnings );
-// pNewObject->getColumns();
- // Why? This is expensive. If you comment this in 'cause you really need it, be sure to run the
- // QueryInQuery test in dbaccess/qa/complex/dbaccess ...
- }
-
- return xReturn;
-}
-
-Reference< XContent > OQueryContainer::createObject( const ::rtl::OUString& _rName)
-{
- return implCreateWrapper(_rName);
-}
-
-sal_Bool OQueryContainer::checkExistence(const ::rtl::OUString& _rName)
-{
- sal_Bool bRet = sal_False;
- if ( !m_bInPropertyChange )
- {
- bRet = m_xCommandDefinitions->hasByName(_rName);
- Documents::iterator aFind = m_aDocumentMap.find(_rName);
- if ( !bRet && aFind != m_aDocumentMap.end() )
- {
- m_aDocuments.erase( ::std::find(m_aDocuments.begin(),m_aDocuments.end(),aFind));
- m_aDocumentMap.erase(aFind);
- }
- else if ( bRet && aFind == m_aDocumentMap.end() )
- {
- implAppend(_rName,NULL);
- }
- }
- return bRet;
-}
-
-sal_Bool SAL_CALL OQueryContainer::hasElements( ) throw (RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- return m_xCommandDefinitions->hasElements();
-}
-
-sal_Int32 SAL_CALL OQueryContainer::getCount( ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- return Reference<XIndexAccess>(m_xCommandDefinitions,UNO_QUERY)->getCount();
-}
-
-Sequence< ::rtl::OUString > SAL_CALL OQueryContainer::getElementNames( ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
-
- return m_xCommandDefinitions->getElementNames();
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/querydescriptor.cxx b/dbaccess/source/core/api/querydescriptor.cxx
deleted file mode 100644
index 1f5e69a8c..000000000
--- a/dbaccess/source/core/api/querydescriptor.cxx
+++ /dev/null
@@ -1,285 +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_dbaccess.hxx"
-
-#include "querydescriptor.hxx"
-#include "apitools.hxx"
-#include "dbastrings.hrc"
-#include <comphelper/property.hxx>
-#include <comphelper/sequence.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include "definitioncolumn.hxx"
-#include <tools/debug.hxx>
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::awt;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::util;
-using namespace ::comphelper;
-using namespace ::osl;
-using namespace ::cppu;
-
-namespace dbaccess
-{
-
-//==========================================================================
-//= OQueryDescriptor
-//==========================================================================
-DBG_NAME(OQueryDescriptor)
-
-OQueryDescriptor::OQueryDescriptor()
- :OQueryDescriptor_Base(m_aMutex,*this)
- ,ODataSettings(m_aBHelper,sal_True)
-{
- DBG_CTOR(OQueryDescriptor,NULL);
- registerProperties();
- ODataSettings::registerPropertiesFor(this);
-}
-
-OQueryDescriptor::OQueryDescriptor(const OQueryDescriptor_Base& _rSource)
- :OQueryDescriptor_Base(_rSource,*this)
- ,ODataSettings(m_aBHelper,sal_True)
-{
- DBG_CTOR(OQueryDescriptor,NULL);
- registerProperties();
- ODataSettings::registerPropertiesFor(this);
-}
-
-OQueryDescriptor::~OQueryDescriptor()
-{
- DBG_DTOR(OQueryDescriptor,NULL);
-}
-
-IMPLEMENT_TYPEPROVIDER2(OQueryDescriptor,OQueryDescriptor_Base,ODataSettings);
-IMPLEMENT_FORWARD_XINTERFACE3( OQueryDescriptor,OWeakObject,OQueryDescriptor_Base,ODataSettings)
-
-void OQueryDescriptor::registerProperties()
-{
- // the properties which OCommandBase supplies (it has no own registration, as it's not derived from
- // a OPropertyStateContainer)
- registerProperty(PROPERTY_NAME, PROPERTY_ID_NAME, PropertyAttribute::BOUND|PropertyAttribute::CONSTRAINED,
- &m_sElementName, ::getCppuType(&m_sElementName));
-
- registerProperty(PROPERTY_COMMAND, PROPERTY_ID_COMMAND, PropertyAttribute::BOUND,
- &m_sCommand, ::getCppuType(&m_sCommand));
-
- registerProperty(PROPERTY_ESCAPE_PROCESSING, PROPERTY_ID_ESCAPE_PROCESSING, PropertyAttribute::BOUND,
- &m_bEscapeProcessing, ::getBooleanCppuType());
-
- registerProperty(PROPERTY_UPDATE_TABLENAME, PROPERTY_ID_UPDATE_TABLENAME, PropertyAttribute::BOUND,
- &m_sUpdateTableName, ::getCppuType(&m_sUpdateTableName));
-
- registerProperty(PROPERTY_UPDATE_SCHEMANAME, PROPERTY_ID_UPDATE_SCHEMANAME, PropertyAttribute::BOUND,
- &m_sUpdateSchemaName, ::getCppuType(&m_sUpdateSchemaName));
-
- registerProperty(PROPERTY_UPDATE_CATALOGNAME, PROPERTY_ID_UPDATE_CATALOGNAME, PropertyAttribute::BOUND,
- &m_sUpdateCatalogName, ::getCppuType(&m_sUpdateCatalogName));
-
- registerProperty(PROPERTY_LAYOUTINFORMATION, PROPERTY_ID_LAYOUTINFORMATION, PropertyAttribute::BOUND,
- &m_aLayoutInformation, ::getCppuType(&m_aLayoutInformation));
-}
-
-Reference< XPropertySetInfo > SAL_CALL OQueryDescriptor::getPropertySetInfo( ) throw(RuntimeException)
-{
- return createPropertySetInfo( getInfoHelper() ) ;
-}
-
-::cppu::IPropertyArrayHelper& OQueryDescriptor::getInfoHelper()
-{
- return *getArrayHelper();
-}
-
-::cppu::IPropertyArrayHelper* OQueryDescriptor::createArrayHelper( ) const
-{
- Sequence< Property > aProps;
- describeProperties(aProps);
- return new ::cppu::OPropertyArrayHelper(aProps);
-}
-
-DBG_NAME(OQueryDescriptor_Base);
-
-OQueryDescriptor_Base::OQueryDescriptor_Base(::osl::Mutex& _rMutex,::cppu::OWeakObject& _rMySelf)
- :m_bColumnsOutOfDate(sal_True)
- ,m_rMutex(_rMutex)
-{
- DBG_CTOR(OQueryDescriptor_Base,NULL);
- m_pColumns = new OColumns(_rMySelf, m_rMutex, sal_True,::std::vector< ::rtl::OUString>(), this,this);
-}
-
-OQueryDescriptor_Base::OQueryDescriptor_Base(const OQueryDescriptor_Base& _rSource,::cppu::OWeakObject& _rMySelf)
- :m_bColumnsOutOfDate(sal_True)
- ,m_rMutex(_rSource.m_rMutex)
-{
- DBG_CTOR(OQueryDescriptor_Base,NULL);
- m_pColumns = new OColumns(_rMySelf, m_rMutex, sal_True,::std::vector< ::rtl::OUString>(), this,this);
-
- m_sCommand = _rSource.m_sCommand;
- m_bEscapeProcessing = _rSource.m_bEscapeProcessing;
- m_sUpdateTableName = _rSource.m_sUpdateTableName;
- m_sUpdateSchemaName = _rSource.m_sUpdateSchemaName;
- m_sUpdateCatalogName = _rSource.m_sUpdateCatalogName;
- m_aLayoutInformation = _rSource.m_aLayoutInformation;
-}
-
-OQueryDescriptor_Base::~OQueryDescriptor_Base()
-{
- m_pColumns->acquire();
- m_pColumns->disposing();
- delete m_pColumns;
-
- DBG_DTOR(OQueryDescriptor_Base,NULL);
-}
-
-sal_Int64 SAL_CALL OQueryDescriptor_Base::getSomething( const Sequence< sal_Int8 >& _rIdentifier ) throw(RuntimeException)
-{
- if (_rIdentifier.getLength() != 16)
- return 0;
-
- if (0 == rtl_compareMemory(getImplementationId().getConstArray(), _rIdentifier.getConstArray(), 16 ) )
- return reinterpret_cast<sal_Int64>(this);
-
- return 0;
-}
-
-IMPLEMENT_IMPLEMENTATION_ID(OQueryDescriptor_Base)
-
-void OQueryDescriptor_Base::setColumnsOutOfDate( sal_Bool _bOutOfDate )
-{
- m_bColumnsOutOfDate = _bOutOfDate;
- if ( !m_bColumnsOutOfDate )
- m_pColumns->setInitialized();
-}
-
-void OQueryDescriptor_Base::implAppendColumn( const ::rtl::OUString& _rName, OColumn* _pColumn )
-{
- m_pColumns->append( _rName, _pColumn );
-}
-
-void OQueryDescriptor_Base::clearColumns( )
-{
- m_pColumns->clearColumns();
-
- setColumnsOutOfDate();
-}
-
-Reference< XNameAccess > SAL_CALL OQueryDescriptor_Base::getColumns( ) throw (RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
-
- if ( isColumnsOutOfDate() )
- {
- // clear the current columns
- clearColumns();
-
- // do this before rebuildColumns. This prevents recursion, e.g. in the case where we
- // have queries with cyclic references:
- // foo := SELECT * FROM bar
- // bar := SELECT * FROM foo
- setColumnsOutOfDate( sal_False );
-
- // rebuild them
- try
- {
- rebuildColumns();
- }
- catch ( const Exception& )
- {
- setColumnsOutOfDate( sal_True );
- throw;
- }
- }
-
- return m_pColumns;
-}
-
-::rtl::OUString SAL_CALL OQueryDescriptor_Base::getImplementationName( ) throw(RuntimeException)
-{
- return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.OQueryDescriptor"));
-}
-
-sal_Bool SAL_CALL OQueryDescriptor_Base::supportsService( const ::rtl::OUString& _rServiceName ) throw(RuntimeException)
-{
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL OQueryDescriptor_Base::getSupportedServiceNames( ) throw(RuntimeException)
-{
- Sequence< ::rtl::OUString > aSupported(2);
- aSupported.getArray()[0] = SERVICE_SDB_DATASETTINGS;
- aSupported.getArray()[1] = SERVICE_SDB_QUERYDESCRIPTOR;
- return aSupported;
-}
-
-void OQueryDescriptor_Base::disposeColumns()
-{
- m_pColumns->disposing();
-}
-
-void OQueryDescriptor_Base::columnAppended( const Reference< XPropertySet >& /*_rxSourceDescriptor*/ )
-{
- // not interested in
-}
-
-void OQueryDescriptor_Base::columnDropped(const ::rtl::OUString& /*_sName*/)
-{
- // not interested in
-}
-
-Reference< XPropertySet > OQueryDescriptor_Base::createColumnDescriptor()
-{
- OSL_FAIL( "OQueryDescriptor_Base::createColumnDescriptor: called why?" );
- return NULL;
-}
-
-void OQueryDescriptor_Base::rebuildColumns( )
-{
-}
-
-// IRefreshableColumns
-void OQueryDescriptor_Base::refreshColumns()
-{
- MutexGuard aGuard( m_rMutex );
-
- clearColumns();
- rebuildColumns();
-}
-
-OColumn* OQueryDescriptor_Base::createColumn( const ::rtl::OUString& /*_rName*/ ) const
-{
- // creating a column/descriptor for a query/descriptor does not make sense at all
- return NULL;
-}
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/querydescriptor.hxx b/dbaccess/source/core/api/querydescriptor.hxx
deleted file mode 100644
index 58349c909..000000000
--- a/dbaccess/source/core/api/querydescriptor.hxx
+++ /dev/null
@@ -1,161 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_COREAPI_QUERYDESCRIPTOR_HXX_
-#define _DBA_COREAPI_QUERYDESCRIPTOR_HXX_
-
-#include <cppuhelper/implbase3.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include <osl/mutex.hxx>
-
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-
-#include "apitools.hxx"
-#include "column.hxx"
-#include "datasettings.hxx"
-#include "commandbase.hxx"
-#include <comphelper/broadcasthelper.hxx>
-#include <comphelper/uno3.hxx>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
-//==========================================================================
-//= OQueryDescriptor_Base - a query descriptor (as the name suggests :)
-//==========================================================================
-typedef ::cppu::ImplHelper3<
- ::com::sun::star::sdbcx::XColumnsSupplier,
- ::com::sun::star::lang::XUnoTunnel,
- ::com::sun::star::lang::XServiceInfo > OQueryDescriptor_BASE;
-
-class OQueryDescriptor_Base
- :public OQueryDescriptor_BASE
- ,public OCommandBase
- ,public IColumnFactory
- ,public ::connectivity::sdbcx::IRefreshableColumns
-{
-private:
- sal_Bool m_bColumnsOutOfDate : 1; // the columns have to be rebuild on the next getColumns ?
- ::osl::Mutex& m_rMutex;
-
-protected:
- OColumns* m_pColumns; // our column descriptions
- ::rtl::OUString m_sElementName;
- virtual ~OQueryDescriptor_Base();
-
- void setColumnsOutOfDate( sal_Bool _bOutOfDate = sal_True );
- sal_Bool isColumnsOutOfDate() const { return m_bColumnsOutOfDate; }
-
- sal_Int32 getColumnCount() const { return m_pColumns ? m_pColumns->getCount() : 0; }
- void clearColumns( );
-
- void implAppendColumn( const ::rtl::OUString& _rName, OColumn* _pColumn );
-
-public:
- OQueryDescriptor_Base(::osl::Mutex& _rMutex,::cppu::OWeakObject& _rMySelf);
- /** constructs the object with a UNO QueryDescriptor. If you use this ctor, the resulting object
- won't have any column informations (the column container will be empty)
- */
- OQueryDescriptor_Base(const OQueryDescriptor_Base& _rSource,::cppu::OWeakObject& _rMySelf);
-
-// ::com::sun::star::sdbcx::XColumnsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getColumns( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::lang::XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
- DECLARE_IMPLEMENTATION_ID( );
-
-// ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
-protected:
-
-// IColumnFactory
- virtual OColumn* createColumn(const ::rtl::OUString& _rName) const;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createColumnDescriptor();
- virtual void columnAppended( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxSourceDescriptor );
- virtual void columnDropped(const ::rtl::OUString& _sName);
-
- /** rebuild our columns set
-
- clearColumns has already been called before, do <em>NOT</em> call it, again
- */
- virtual void rebuildColumns( );
-
- virtual void disposeColumns();
-
- // IRefreshableColumns overridables
- virtual void refreshColumns();
-};
-
-class OQueryDescriptor : public comphelper::OMutexAndBroadcastHelper
- ,public ::cppu::OWeakObject
- ,public OQueryDescriptor_Base
- ,public ::comphelper::OPropertyArrayUsageHelper< OQueryDescriptor_Base >
- ,public ODataSettings
-{
- OQueryDescriptor(const OQueryDescriptor&);
- void operator =(const OQueryDescriptor&);
- // helper
- void registerProperties();
-protected:
- // OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
- // OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- virtual ~OQueryDescriptor();
-public:
- OQueryDescriptor();
- OQueryDescriptor(const OQueryDescriptor_Base& _rSource);
-
- // com::sun::star::lang::XTypeProvider
- DECLARE_TYPEPROVIDER( );
-
-// ::com::sun::star::uno::XInterface
- DECLARE_XINTERFACE( )
-
- // ::com::sun::star::beans::XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-
-};
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // _DBA_COREAPI_QUERYDESCRIPTOR_HXX_
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/resultcolumn.cxx b/dbaccess/source/core/api/resultcolumn.cxx
deleted file mode 100644
index 208942e10..000000000
--- a/dbaccess/source/core/api/resultcolumn.cxx
+++ /dev/null
@@ -1,325 +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_dbaccess.hxx"
-#include "resultcolumn.hxx"
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/sdbc/DataType.hpp>
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <cppuhelper/typeprovider.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include "dbastrings.hrc"
-#include "apitools.hxx"
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <cppuhelper/exc_hlp.hxx>
-#include <osl/thread.h>
-
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::container;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-using namespace dbaccess;
-
-DBG_NAME(OResultColumn)
-
-OResultColumn::OResultColumn( const Reference < XResultSetMetaData >& _xMetaData, sal_Int32 _nPos,
- const Reference< XDatabaseMetaData >& _rxDBMeta )
- :OColumn( true )
- ,m_xMetaData( _xMetaData )
- ,m_xDBMetaData( _rxDBMeta )
- ,m_nPos( _nPos )
-{
- DBG_CTOR(OResultColumn,NULL);
-}
-
-void OResultColumn::impl_determineIsRowVersion_nothrow()
-{
- if ( m_aIsRowVersion.hasValue() )
- return;
- m_aIsRowVersion <<= (sal_Bool)(sal_False);
-
- OSL_ENSURE( m_xDBMetaData.is(), "OResultColumn::impl_determineIsRowVersion_nothrow: no DBMetaData!" );
- if ( !m_xDBMetaData.is() )
- return;
-
- try
- {
- ::rtl::OUString sCatalog, sSchema, sTable, sColumnName;
- getPropertyValue( PROPERTY_CATALOGNAME ) >>= sCatalog;
- getPropertyValue( PROPERTY_SCHEMANAME ) >>= sSchema;
- getPropertyValue( PROPERTY_TABLENAME ) >>= sTable;
- getPropertyValue( PROPERTY_NAME ) >>= sColumnName;
-
- try
- {
- Reference< XResultSet > xVersionColumns = m_xDBMetaData->getVersionColumns(
- makeAny( sCatalog ), sSchema, sTable );
- if ( xVersionColumns.is() ) // allowed to be NULL
- {
- Reference< XRow > xResultRow( xVersionColumns, UNO_QUERY_THROW );
- while ( xVersionColumns->next() )
- {
- if ( xResultRow->getString( 2 ) == sColumnName )
- {
- m_aIsRowVersion <<= (sal_Bool)(sal_True);
- break;
- }
- }
- }
- }
- catch(const SQLException&)
- {
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-OResultColumn::~OResultColumn()
-{
- DBG_DTOR(OResultColumn,NULL);
-}
-
-// com::sun::star::lang::XTypeProvider
-Sequence< sal_Int8 > OResultColumn::getImplementationId() throw (RuntimeException)
-{
- static OImplementationId * pId = 0;
- if (! pId)
- {
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- if (! pId)
- {
- static OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-// XServiceInfo
-rtl::OUString OResultColumn::getImplementationName( ) throw(RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.OResultColumn"));
-}
-
-Sequence< ::rtl::OUString > OResultColumn::getSupportedServiceNames( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aSNS( 2 );
- aSNS[0] = SERVICE_SDBCX_COLUMN;
- aSNS[1] = SERVICE_SDB_RESULTCOLUMN;
- return aSNS;
-}
-
-// OComponentHelper
-void OResultColumn::disposing()
-{
- OColumn::disposing();
-
- MutexGuard aGuard(m_aMutex);
- m_xMetaData = NULL;
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* OResultColumn::createArrayHelper( ) const
-{
- BEGIN_PROPERTY_HELPER(21)
- DECL_PROP1(CATALOGNAME, ::rtl::OUString, READONLY);
- DECL_PROP1(DISPLAYSIZE, sal_Int32, READONLY);
- DECL_PROP1_BOOL(ISAUTOINCREMENT, READONLY);
- DECL_PROP1_BOOL(ISCASESENSITIVE, READONLY);
- DECL_PROP1_BOOL(ISCURRENCY, READONLY);
- DECL_PROP1_BOOL(ISDEFINITELYWRITABLE, READONLY);
- DECL_PROP1(ISNULLABLE, sal_Int32, READONLY);
- DECL_PROP1_BOOL(ISREADONLY, READONLY);
- DECL_PROP1_BOOL(ISROWVERSION, READONLY);
- DECL_PROP1_BOOL(ISSEARCHABLE, READONLY);
- DECL_PROP1_BOOL(ISSIGNED, READONLY);
- DECL_PROP1_BOOL(ISWRITABLE, READONLY);
- DECL_PROP1(LABEL, ::rtl::OUString, READONLY);
- DECL_PROP1(NAME, ::rtl::OUString, READONLY);
- DECL_PROP1(PRECISION, sal_Int32, READONLY);
- DECL_PROP1(SCALE, sal_Int32, READONLY);
- DECL_PROP1(SCHEMANAME, ::rtl::OUString, READONLY);
- DECL_PROP1(SERVICENAME, ::rtl::OUString, READONLY);
- DECL_PROP1(TABLENAME, ::rtl::OUString, READONLY);
- DECL_PROP1(TYPE, sal_Int32, READONLY);
- DECL_PROP1(TYPENAME, ::rtl::OUString, READONLY);
- END_PROPERTY_HELPER();
-}
-
-// cppu::OPropertySetHelper
-::cppu::IPropertyArrayHelper& OResultColumn::getInfoHelper()
-{
- return *static_cast< ::comphelper::OPropertyArrayUsageHelper< OResultColumn >* >(this)->getArrayHelper();
-}
-
-namespace
-{
- template< typename TYPE >
- void obtain( Any& _out_rValue, ::boost::optional< TYPE > _rCache, const sal_Int32 _nPos, const Reference < XResultSetMetaData >& _rxResultMeta, TYPE (SAL_CALL XResultSetMetaData::*Getter)( sal_Int32 ) )
- {
- if ( !_rCache )
- _rCache.reset( (_rxResultMeta.get()->*Getter)( _nPos ) );
- _out_rValue <<= *_rCache;
- }
-}
-
-void OResultColumn::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const
-{
- try
- {
- if ( OColumn::isRegisteredProperty( nHandle ) )
- {
- OColumn::getFastPropertyValue( rValue, nHandle );
- }
- else
- {
- switch (nHandle)
- {
- case PROPERTY_ID_ISROWVERSION:
- const_cast< OResultColumn* >( this )->impl_determineIsRowVersion_nothrow();
- rValue = m_aIsRowVersion;
- break;
- case PROPERTY_ID_TABLENAME:
- rValue <<= m_xMetaData->getTableName(m_nPos);
- break;
- case PROPERTY_ID_SCHEMANAME:
- rValue <<= m_xMetaData->getSchemaName(m_nPos);
- break;
- case PROPERTY_ID_CATALOGNAME:
- rValue <<= m_xMetaData->getCatalogName(m_nPos);
- break;
- case PROPERTY_ID_ISSIGNED:
- obtain( rValue, m_isSigned, m_nPos, m_xMetaData, &XResultSetMetaData::isSigned );
- break;
- case PROPERTY_ID_ISCURRENCY:
- obtain( rValue, m_isCurrency, m_nPos, m_xMetaData, &XResultSetMetaData::isCurrency );
- break;
- case PROPERTY_ID_ISSEARCHABLE:
- obtain( rValue, m_bSearchable, m_nPos, m_xMetaData, &XResultSetMetaData::isSearchable );
- break;
- case PROPERTY_ID_ISCASESENSITIVE:
- obtain( rValue, m_isCaseSensitive, m_nPos, m_xMetaData, &XResultSetMetaData::isCaseSensitive );
- break;
- case PROPERTY_ID_ISREADONLY:
- obtain( rValue, m_isReadOnly, m_nPos, m_xMetaData, &XResultSetMetaData::isReadOnly );
- break;
- case PROPERTY_ID_ISWRITABLE:
- obtain( rValue, m_isWritable, m_nPos, m_xMetaData, &XResultSetMetaData::isWritable );
- break;
- case PROPERTY_ID_ISDEFINITELYWRITABLE:
- obtain( rValue, m_isDefinitelyWritable, m_nPos, m_xMetaData, &XResultSetMetaData::isDefinitelyWritable );
- break;
- case PROPERTY_ID_ISAUTOINCREMENT:
- obtain( rValue, m_isAutoIncrement, m_nPos, m_xMetaData, &XResultSetMetaData::isAutoIncrement );
- break;
- case PROPERTY_ID_SERVICENAME:
- rValue <<= m_xMetaData->getColumnServiceName(m_nPos);
- break;
- case PROPERTY_ID_LABEL:
- obtain( rValue, m_sColumnLabel, m_nPos, m_xMetaData, &XResultSetMetaData::getColumnLabel );
- break;
- case PROPERTY_ID_DISPLAYSIZE:
- obtain( rValue, m_nColumnDisplaySize, m_nPos, m_xMetaData, &XResultSetMetaData::getColumnDisplaySize );
- break;
- case PROPERTY_ID_TYPE:
- obtain( rValue, m_nColumnType, m_nPos, m_xMetaData, &XResultSetMetaData::getColumnType );
- break;
- case PROPERTY_ID_PRECISION:
- obtain( rValue, m_nPrecision, m_nPos, m_xMetaData, &XResultSetMetaData::getPrecision );
- break;
- case PROPERTY_ID_SCALE:
- obtain( rValue, m_nScale, m_nPos, m_xMetaData, &XResultSetMetaData::getScale );
- break;
- case PROPERTY_ID_ISNULLABLE:
- obtain( rValue, m_isNullable, m_nPos, m_xMetaData, &XResultSetMetaData::isNullable );
- break;
- case PROPERTY_ID_TYPENAME:
- rValue <<= m_xMetaData->getColumnTypeName(m_nPos);
- break;
- default:
- OSL_FAIL( "OResultColumn::getFastPropertyValue: unknown property handle!" );
- break;
- }
- }
- }
- catch (SQLException& )
- {
- // default handling if we caught an exception
- switch (nHandle)
- {
- case PROPERTY_ID_LABEL:
- case PROPERTY_ID_TYPENAME:
- case PROPERTY_ID_SERVICENAME:
- case PROPERTY_ID_TABLENAME:
- case PROPERTY_ID_SCHEMANAME:
- case PROPERTY_ID_CATALOGNAME:
- // empty string'S
- rValue <<= rtl::OUString();
- break;
- case PROPERTY_ID_ISROWVERSION:
- case PROPERTY_ID_ISAUTOINCREMENT:
- case PROPERTY_ID_ISWRITABLE:
- case PROPERTY_ID_ISDEFINITELYWRITABLE:
- case PROPERTY_ID_ISCASESENSITIVE:
- case PROPERTY_ID_ISSEARCHABLE:
- case PROPERTY_ID_ISCURRENCY:
- case PROPERTY_ID_ISSIGNED:
- {
- sal_Bool bVal = sal_False;
- rValue.setValue(&bVal, getBooleanCppuType());
- } break;
- case PROPERTY_ID_ISREADONLY:
- {
- sal_Bool bVal = sal_True;
- rValue.setValue(&bVal, getBooleanCppuType());
- } break;
- case PROPERTY_ID_SCALE:
- case PROPERTY_ID_PRECISION:
- case PROPERTY_ID_DISPLAYSIZE:
- rValue <<= sal_Int32(0);
- break;
- case PROPERTY_ID_TYPE:
- rValue <<= sal_Int32(DataType::SQLNULL);
- break;
- case PROPERTY_ID_ISNULLABLE:
- rValue <<= ColumnValue::NULLABLE_UNKNOWN;
- break;
- }
- }
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/resultcolumn.hxx b/dbaccess/source/core/api/resultcolumn.hxx
deleted file mode 100644
index 789a26f1c..000000000
--- a/dbaccess/source/core/api/resultcolumn.hxx
+++ /dev/null
@@ -1,99 +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.
- *
- ************************************************************************/
-
-#ifndef _DBACORE_RESULTCOLUMN_HXX_
-#define _DBACORE_RESULTCOLUMN_HXX_
-
-#include <com/sun/star/sdbc/XResultSetMetaData.hdl>
-#include <column.hxx>
-#include <boost/optional.hpp>
-namespace dbaccess
-{
- //************************************************************
- // OResultColumn
- //************************************************************
- class OResultColumn : public OColumn,
- public ::comphelper::OPropertyArrayUsageHelper < OResultColumn >
- {
- protected:
- ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XResultSetMetaData > m_xMetaData;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xDBMetaData;
- sal_Int32 m_nPos;
- ::com::sun::star::uno::Any m_aIsRowVersion;
- mutable ::boost::optional< sal_Bool > m_isSigned;
- mutable ::boost::optional< sal_Bool > m_isCurrency;
- mutable ::boost::optional< sal_Bool > m_bSearchable;
- mutable ::boost::optional< sal_Bool > m_isCaseSensitive;
- mutable ::boost::optional< sal_Bool > m_isReadOnly;
- mutable ::boost::optional< sal_Bool > m_isWritable;
- mutable ::boost::optional< sal_Bool > m_isDefinitelyWritable;
- mutable ::boost::optional< sal_Bool > m_isAutoIncrement;
- mutable ::boost::optional< sal_Int32 > m_isNullable;
- mutable ::boost::optional< ::rtl::OUString > m_sColumnLabel;
- mutable ::boost::optional< sal_Int32 > m_nColumnDisplaySize;
- mutable ::boost::optional< sal_Int32 > m_nColumnType;
- mutable ::boost::optional< sal_Int32 > m_nPrecision;
- mutable ::boost::optional< sal_Int32 > m_nScale;
-
- virtual ~OResultColumn();
- public:
- OResultColumn(
- const ::com::sun::star::uno::Reference < ::com::sun::star::sdbc::XResultSetMetaData >& _xMetaData,
- sal_Int32 _nPos,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData >& _rxDBMeta );
-
- // com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // cppu::OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- // comphelper::OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
- // cppu::OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
- virtual void SAL_CALL getFastPropertyValue(
- ::com::sun::star::uno::Any& rValue,
- sal_Int32 nHandle
- ) const;
-
- private:
- void impl_determineIsRowVersion_nothrow();
-
- protected:
- using ::cppu::OPropertySetHelper::getFastPropertyValue;
- };
-}
-#endif // _DBACORE_RESULTCOLUMN_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/resultset.cxx b/dbaccess/source/core/api/resultset.cxx
deleted file mode 100644
index 38051bbdb..000000000
--- a/dbaccess/source/core/api/resultset.cxx
+++ /dev/null
@@ -1,1114 +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_dbaccess.hxx"
-#include <resultset.hxx>
-#include "dbastrings.hrc"
-#include "apitools.hxx"
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdbc/ResultSetType.hpp>
-#include <cppuhelper/typeprovider.hxx>
-#include <comphelper/property.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/types.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <datacolumn.hxx>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <connectivity/dbexception.hxx>
-#include <connectivity/dbtools.hxx>
-#include <cppuhelper/exc_hlp.hxx>
-#include <osl/thread.h>
-#include <rtl/logfile.hxx>
-
-
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::container;
-using namespace ::cppu;
-using namespace ::osl;
-using namespace dbaccess;
-using namespace dbtools;
-
-DBG_NAME(OResultSet)
-
-OResultSet::OResultSet(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& _xResultSet,
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xStatement,
- sal_Bool _bCaseSensitive)
- :OResultSetBase(m_aMutex)
- ,OPropertySetHelper(OResultSetBase::rBHelper)
- ,m_xDelegatorResultSet(_xResultSet)
- ,m_aWarnings( Reference< XWarningsSupplier >( _xResultSet, UNO_QUERY ) )
- ,m_bIsBookmarkable(sal_False)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::OResultSet" );
- DBG_CTOR(OResultSet, NULL);
-
- m_pColumns = new OColumns(*this, m_aMutex, _bCaseSensitive, ::std::vector< ::rtl::OUString>(), NULL,NULL);
-
- try
- {
- m_aStatement = _xStatement;
- m_xDelegatorResultSetUpdate = m_xDelegatorResultSetUpdate.query( m_xDelegatorResultSet );
- m_xDelegatorRow = m_xDelegatorRow.query( m_xDelegatorResultSet );
- m_xDelegatorRowUpdate = m_xDelegatorRowUpdate.query( m_xDelegatorResultSet );
-
- Reference< XPropertySet > xSet(m_xDelegatorResultSet, UNO_QUERY);
- xSet->getPropertyValue(PROPERTY_RESULTSETTYPE) >>= m_nResultSetType;
- xSet->getPropertyValue(PROPERTY_RESULTSETCONCURRENCY) >>= m_nResultSetConcurrency;
-
- // test for Bookmarks
- if (ResultSetType::FORWARD_ONLY != m_nResultSetType)
- {
- Reference <XPropertySetInfo > xInfo(xSet->getPropertySetInfo());
- if (xInfo->hasPropertyByName(PROPERTY_ISBOOKMARKABLE))
- {
- m_bIsBookmarkable = ::comphelper::getBOOL(xSet->getPropertyValue(PROPERTY_ISBOOKMARKABLE));
- OSL_ENSURE( !m_bIsBookmarkable || Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY).is(),
- "OResultSet::OResultSet: aggregate is inconsistent in it's bookmarkable attribute!" );
- m_bIsBookmarkable = m_bIsBookmarkable && Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY).is();
- }
- }
- }
- catch(Exception&)
- {
- }
-}
-
-OResultSet::~OResultSet()
-{
- m_pColumns->acquire();
- m_pColumns->disposing();
- delete m_pColumns;
-
- DBG_DTOR(OResultSet, NULL);
-}
-
-// com::sun::star::lang::XTypeProvider
-Sequence< Type > OResultSet::getTypes() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getTypes" );
- OTypeCollection aTypes(::getCppuType( (const Reference< XPropertySet > *)0 ),
- OResultSetBase::getTypes());
-
- return aTypes.getTypes();
-}
-
-Sequence< sal_Int8 > OResultSet::getImplementationId() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getImplementationId" );
- static OImplementationId * pId = 0;
- if (! pId)
- {
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- if (! pId)
- {
- static OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-// com::sun::star::uno::XInterface
-Any OResultSet::queryInterface( const Type & rType ) throw (RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::queryInterface" );
- Any aIface = OResultSetBase::queryInterface( rType );
- if (!aIface.hasValue())
- aIface = ::cppu::queryInterface(
- rType,
- static_cast< XPropertySet * >( this ));
-
- return aIface;
-}
-
-void OResultSet::acquire() throw ()
-{
- OResultSetBase::acquire();
-}
-
-void OResultSet::release() throw ()
-{
- OResultSetBase::release();
-}
-
-
-// OResultSetBase
-void OResultSet::disposing()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::disposing" );
- OPropertySetHelper::disposing();
-
- MutexGuard aGuard(m_aMutex);
-
- // free the columns
- m_pColumns->disposing();
-
- // close the pending result set
- Reference< XCloseable > (m_xDelegatorResultSet, UNO_QUERY)->close();
-
- m_xDelegatorResultSet = NULL;
- m_xDelegatorRow = NULL;
- m_xDelegatorRowUpdate = NULL;
-
- m_aStatement = Reference< XInterface >();
-}
-
-// XCloseable
-void OResultSet::close(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::close" );
- {
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
- }
- dispose();
-}
-
-// XServiceInfo
-rtl::OUString OResultSet::getImplementationName( ) throw(RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getImplementationName" );
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.OResultSet"));
-}
-
-sal_Bool OResultSet::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::supportsService" );
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > OResultSet::getSupportedServiceNames( ) throw (RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getSupportedServiceNames" );
- Sequence< ::rtl::OUString > aSNS( 2 );
- aSNS[0] = SERVICE_SDBC_RESULTSET;
- aSNS[1] = SERVICE_SDB_RESULTSET;
- return aSNS;
-}
-
-// com::sun::star::beans::XPropertySet
-Reference< XPropertySetInfo > OResultSet::getPropertySetInfo() throw (RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getPropertySetInfo" );
- return createPropertySetInfo( getInfoHelper() ) ;
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* OResultSet::createArrayHelper( ) const
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::createArrayHelper" );
- BEGIN_PROPERTY_HELPER(6)
- DECL_PROP1(CURSORNAME, ::rtl::OUString, READONLY);
- DECL_PROP0(FETCHDIRECTION, sal_Int32);
- DECL_PROP0(FETCHSIZE, sal_Int32);
- DECL_PROP1_BOOL(ISBOOKMARKABLE, READONLY);
- DECL_PROP1(RESULTSETCONCURRENCY, sal_Int32, READONLY);
- DECL_PROP1(RESULTSETTYPE, sal_Int32, READONLY);
- END_PROPERTY_HELPER();
-}
-
-// cppu::OPropertySetHelper
-::cppu::IPropertyArrayHelper& OResultSet::getInfoHelper()
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getInfoHelper" );
- return *getArrayHelper();
-}
-
-sal_Bool OResultSet::convertFastPropertyValue(Any & rConvertedValue, Any & rOldValue, sal_Int32 nHandle, const Any& rValue ) throw( IllegalArgumentException )
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::convertFastPropertyValue" );
- // be lazy ...
- rConvertedValue = rValue;
- getFastPropertyValue( rOldValue, nHandle );
- return sal_True;
-}
-
-void OResultSet::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const Any& rValue ) throw (Exception)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::setFastPropertyValue_NoBroadcast" );
- // set it for the driver result set
- Reference< XPropertySet > xSet(m_xDelegatorResultSet, UNO_QUERY);
- switch (nHandle)
- {
- case PROPERTY_ID_FETCHDIRECTION:
- xSet->setPropertyValue(PROPERTY_FETCHDIRECTION, rValue);
- break;
- case PROPERTY_ID_FETCHSIZE:
- xSet->setPropertyValue(PROPERTY_FETCHSIZE, rValue);
- break;
- default:
- OSL_FAIL("unknown Property");
- }
-}
-
-void OResultSet::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getFastPropertyValue" );
- switch (nHandle)
- {
- case PROPERTY_ID_ISBOOKMARKABLE:
- {
- sal_Bool bVal = m_bIsBookmarkable;
- rValue.setValue(&bVal, getBooleanCppuType());
- } break;
- default:
- {
- // get the property name
- ::rtl::OUString aPropName;
- sal_Int16 nAttributes;
- const_cast<OResultSet*>(this)->getInfoHelper().
- fillPropertyMembersByHandle(&aPropName, &nAttributes, nHandle);
- OSL_ENSURE(aPropName.getLength(), "property not found?");
-
- // now read the value
- rValue = Reference< XPropertySet >(m_xDelegatorResultSet, UNO_QUERY)->getPropertyValue(aPropName);
- }
- }
-}
-
-// XWarningsSupplier
-Any OResultSet::getWarnings(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getWarnings" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
- return m_aWarnings.getWarnings();
-}
-
-void OResultSet::clearWarnings(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::clearWarnings" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
- m_aWarnings.clearWarnings();
-}
-
-// ::com::sun::star::sdbc::XResultSetMetaDataSupplier
-Reference< XResultSetMetaData > OResultSet::getMetaData(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getMetaData" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return Reference< XResultSetMetaDataSupplier >(m_xDelegatorResultSet, UNO_QUERY)->getMetaData();
-}
-
-// ::com::sun::star::sdbc::XColumnLocate
-sal_Int32 OResultSet::findColumn(const rtl::OUString& columnName) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::findColumn" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return Reference< XColumnLocate >(m_xDelegatorResultSet, UNO_QUERY)->findColumn(columnName);
-}
-
-namespace
-{
- static Reference< XDatabaseMetaData > lcl_getDBMetaDataFromStatement_nothrow( const Reference< XInterface >& _rxStatement )
- {
- Reference< XDatabaseMetaData > xDBMetaData;
- try
- {
- Reference< XStatement > xStatement( _rxStatement, UNO_QUERY );
- Reference< XPreparedStatement > xPreparedStatement( _rxStatement, UNO_QUERY );
- Reference< XConnection > xConn;
- if ( xStatement.is() )
- xConn = xStatement->getConnection();
- else if ( xPreparedStatement.is() )
- xConn = xPreparedStatement->getConnection();
- if ( xConn.is() )
- xDBMetaData = xConn->getMetaData();
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return xDBMetaData;
- }
-}
-
-// ::com::sun::star::sdbcx::XColumnsSupplier
-Reference< ::com::sun::star::container::XNameAccess > OResultSet::getColumns(void) throw( RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getColumns" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- // do we have to populate the columns
- if (!m_pColumns->isInitialized())
- {
- // get the metadata
- Reference< XResultSetMetaData > xMetaData = Reference< XResultSetMetaDataSupplier >(m_xDelegatorResultSet, UNO_QUERY)->getMetaData();
-
- sal_Int32 nColCount = 0;
- // do we have columns
- try
- {
- Reference< XDatabaseMetaData > xDBMetaData( lcl_getDBMetaDataFromStatement_nothrow( getStatement() ) );
- nColCount = xMetaData->getColumnCount();
-
- for ( sal_Int32 i = 0; i < nColCount; ++i)
- {
- // retrieve the name of the column
- rtl::OUString sName = xMetaData->getColumnName(i + 1);
- ODataColumn* pColumn = new ODataColumn(xMetaData, m_xDelegatorRow, m_xDelegatorRowUpdate, i + 1, xDBMetaData);
-
- // don't silently assume that the name is unique - result set implementations
- // are allowed to return duplicate names, but we are required to have
- // unique column names
- if ( m_pColumns->hasByName( sName ) )
- sName = ::dbtools::createUniqueName( m_pColumns, sName );
-
- m_pColumns->append( sName, pColumn );
- }
- }
- catch ( const SQLException& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- m_pColumns->setInitialized();
-
- #if OSL_DEBUG_LEVEL > 0
- // some sanity checks. Especially in case we auto-adjusted the column names above,
- // this might be reasonable
- try
- {
- const Reference< XNameAccess > xColNames( static_cast< XNameAccess* >( m_pColumns ), UNO_SET_THROW );
- const Sequence< ::rtl::OUString > aNames( xColNames->getElementNames() );
- OSL_POSTCOND( aNames.getLength() == nColCount,
- "OResultSet::getColumns: invalid column count!" );
- for ( const ::rtl::OUString* pName = aNames.getConstArray();
- pName != aNames.getConstArray() + aNames.getLength();
- ++pName
- )
- {
- Reference< XPropertySet > xColProps( xColNames->getByName( *pName ), UNO_QUERY_THROW );
- ::rtl::OUString sName;
- OSL_VERIFY( xColProps->getPropertyValue( PROPERTY_NAME ) >>= sName );
- OSL_POSTCOND( sName == *pName, "OResultSet::getColumns: invalid column name!" );
- }
-
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- #endif
- }
- return m_pColumns;
-}
-
-// ::com::sun::star::sdbc::XRow
-sal_Bool OResultSet::wasNull(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::wasNull" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->wasNull();
-}
-
-rtl::OUString OResultSet::getString(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getString" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getString(columnIndex);
-}
-
-sal_Bool OResultSet::getBoolean(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getBoolean" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getBoolean(columnIndex);
-}
-
-sal_Int8 OResultSet::getByte(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getByte" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getByte(columnIndex);
-}
-
-sal_Int16 OResultSet::getShort(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getShort" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getShort(columnIndex);
-}
-
-sal_Int32 OResultSet::getInt(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getInt" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getInt(columnIndex);
-}
-
-sal_Int64 OResultSet::getLong(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getLong" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getLong(columnIndex);
-}
-
-float OResultSet::getFloat(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getFloat" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getFloat(columnIndex);
-}
-
-double OResultSet::getDouble(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getDouble" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getDouble(columnIndex);
-}
-
-Sequence< sal_Int8 > OResultSet::getBytes(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getBytes" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getBytes(columnIndex);
-}
-
-::com::sun::star::util::Date OResultSet::getDate(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getDate" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getDate(columnIndex);
-}
-
-::com::sun::star::util::Time OResultSet::getTime(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getTime" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getTime(columnIndex);
-}
-
-::com::sun::star::util::DateTime OResultSet::getTimestamp(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getTimestamp" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getTimestamp(columnIndex);
-}
-
-Reference< ::com::sun::star::io::XInputStream > OResultSet::getBinaryStream(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getBinaryStream" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getBinaryStream(columnIndex);
-}
-
-Reference< ::com::sun::star::io::XInputStream > OResultSet::getCharacterStream(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getCharacterStream" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getCharacterStream(columnIndex);
-}
-
-Any OResultSet::getObject(sal_Int32 columnIndex, const Reference< ::com::sun::star::container::XNameAccess > & typeMap) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getObject" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getObject(columnIndex, typeMap);
-}
-
-Reference< XRef > OResultSet::getRef(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getRef" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getRef(columnIndex);
-}
-
-Reference< XBlob > OResultSet::getBlob(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getBlob" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getBlob(columnIndex);
-}
-
-Reference< XClob > OResultSet::getClob(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getClob" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getClob(columnIndex);
-}
-
-Reference< XArray > OResultSet::getArray(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getArray" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorRow->getArray(columnIndex);
-}
-
-// ::com::sun::star::sdbc::XRowUpdate
-void OResultSet::updateNull(sal_Int32 columnIndex) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateNull" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateNull(columnIndex);
-}
-
-void OResultSet::updateBoolean(sal_Int32 columnIndex, sal_Bool x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateBoolean" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateBoolean(columnIndex, x);
-}
-
-void OResultSet::updateByte(sal_Int32 columnIndex, sal_Int8 x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateByte" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateByte(columnIndex, x);
-}
-
-void OResultSet::updateShort(sal_Int32 columnIndex, sal_Int16 x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateShort" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateShort(columnIndex, x);
-}
-
-void OResultSet::updateInt(sal_Int32 columnIndex, sal_Int32 x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateInt" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateInt(columnIndex, x);
-}
-
-void OResultSet::updateLong(sal_Int32 columnIndex, sal_Int64 x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateLong" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateLong(columnIndex, x);
-}
-
-void OResultSet::updateFloat(sal_Int32 columnIndex, float x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateFloat" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateFloat(columnIndex, x);
-}
-
-void OResultSet::updateDouble(sal_Int32 columnIndex, double x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateDouble" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateDouble(columnIndex, x);
-}
-
-void OResultSet::updateString(sal_Int32 columnIndex, const rtl::OUString& x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateString" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateString(columnIndex, x);
-}
-
-void OResultSet::updateBytes(sal_Int32 columnIndex, const Sequence< sal_Int8 >& x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateBytes" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateBytes(columnIndex, x);
-}
-
-void OResultSet::updateDate(sal_Int32 columnIndex, const ::com::sun::star::util::Date& x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateDate" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateDate(columnIndex, x);
-}
-
-void OResultSet::updateTime(sal_Int32 columnIndex, const ::com::sun::star::util::Time& x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateTime" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateTime(columnIndex, x);
-}
-
-void OResultSet::updateTimestamp(sal_Int32 columnIndex, const ::com::sun::star::util::DateTime& x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateTimestamp" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateTimestamp(columnIndex, x);
-}
-
-void OResultSet::updateBinaryStream(sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream > & x, sal_Int32 length) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateBinaryStream" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateBinaryStream(columnIndex, x, length);
-}
-
-void OResultSet::updateCharacterStream(sal_Int32 columnIndex, const Reference< ::com::sun::star::io::XInputStream > & x, sal_Int32 length) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateCharacterStream" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateCharacterStream(columnIndex, x, length);
-}
-
-void OResultSet::updateNumericObject(sal_Int32 columnIndex, const Any& x, sal_Int32 scale) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateNumericObject" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateNumericObject(columnIndex, x, scale);
-}
-
-void OResultSet::updateObject(sal_Int32 columnIndex, const Any& x) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateObject" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorRowUpdate->updateObject(columnIndex, x);
-}
-
-// ::com::sun::star::sdbc::XResultSet
-sal_Bool OResultSet::next(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::next" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->next();
-}
-
-sal_Bool OResultSet::isBeforeFirst(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::isBeforeFirst" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->isBeforeFirst();
-}
-
-sal_Bool OResultSet::isAfterLast(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::isAfterLast" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->isAfterLast();
-}
-
-sal_Bool OResultSet::isFirst(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::isFirst" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->isFirst();
-}
-
-sal_Bool OResultSet::isLast(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::isLast" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->isLast();
-}
-
-void OResultSet::beforeFirst(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::beforeFirst" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- m_xDelegatorResultSet->beforeFirst();
-}
-
-void OResultSet::afterLast(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::afterLast" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- m_xDelegatorResultSet->afterLast();
-}
-
-sal_Bool OResultSet::first(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::first" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->first();
-}
-
-sal_Bool OResultSet::last(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::last" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->last();
-}
-
-sal_Int32 OResultSet::getRow(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getRow" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->getRow();
-}
-
-sal_Bool OResultSet::absolute(sal_Int32 row) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::absolute" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->absolute(row);
-}
-
-sal_Bool OResultSet::relative(sal_Int32 rows) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::relative" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->relative(rows);
-}
-
-sal_Bool OResultSet::previous(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::previous" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->previous();
-}
-
-void OResultSet::refreshRow(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::refreshRow" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- m_xDelegatorResultSet->refreshRow();
-}
-
-sal_Bool OResultSet::rowUpdated(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::rowUpdated" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->rowUpdated();
-}
-
-sal_Bool OResultSet::rowInserted(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::rowInserted" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->rowInserted();
-}
-
-sal_Bool OResultSet::rowDeleted(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::rowDeleted" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_xDelegatorResultSet->rowDeleted();
-}
-
-Reference< XInterface > OResultSet::getStatement(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getStatement" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- return m_aStatement;
-}
-
-// ::com::sun::star::sdbcx::XRowLocate
-Any OResultSet::getBookmark(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::getBookmark" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkBookmarkable();
-
- return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->getBookmark();
-}
-
-sal_Bool OResultSet::moveToBookmark(const Any& bookmark) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::moveToBookmark" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkBookmarkable();
-
- return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->moveToBookmark(bookmark);
-}
-
-sal_Bool OResultSet::moveRelativeToBookmark(const Any& bookmark, sal_Int32 rows) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::moveRelativeToBookmark" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkBookmarkable();
-
- return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->moveRelativeToBookmark(bookmark, rows);
-}
-
-sal_Int32 OResultSet::compareBookmarks(const Any& _first, const Any& _second) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::compareBookmarks" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkBookmarkable();
-
- return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->compareBookmarks(_first, _second);
-}
-
-sal_Bool OResultSet::hasOrderedBookmarks(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::hasOrderedBookmarks" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkBookmarkable();
-
- return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->hasOrderedBookmarks();
-}
-
-sal_Int32 OResultSet::hashBookmark(const Any& bookmark) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::hashBookmark" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkBookmarkable();
-
- return Reference< XRowLocate >(m_xDelegatorResultSet, UNO_QUERY)->hashBookmark(bookmark);
-}
-
-// ::com::sun::star::sdbc::XResultSetUpdate
-void OResultSet::insertRow(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::insertRow" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorResultSetUpdate->insertRow();
-}
-
-void OResultSet::updateRow(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::updateRow" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorResultSetUpdate->updateRow();
-}
-
-void OResultSet::deleteRow(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::deleteRow" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorResultSetUpdate->deleteRow();
-}
-
-void OResultSet::cancelRowUpdates(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::cancelRowUpdates" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorResultSetUpdate->cancelRowUpdates();
-}
-
-void OResultSet::moveToInsertRow(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::moveToInsertRow" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorResultSetUpdate->moveToInsertRow();
-}
-
-void OResultSet::moveToCurrentRow(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::moveToCurrentRow" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OResultSetBase::rBHelper.bDisposed);
-
- checkReadOnly();
-
- m_xDelegatorResultSetUpdate->moveToCurrentRow();
-}
-
-void OResultSet::checkReadOnly() const
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::checkReadOnly" );
- if ( ( m_nResultSetConcurrency == ResultSetConcurrency::READ_ONLY )
- || !m_xDelegatorResultSetUpdate.is()
- )
- throwSQLException( "The result set is read-only.", SQL_GENERAL_ERROR, *const_cast< OResultSet* >( this ) );
-}
-
-void OResultSet::checkBookmarkable() const
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OResultSet::checkBookmarkable" );
- if ( !m_bIsBookmarkable )
- throwSQLException( "The result set does not have bookmark support.", SQL_GENERAL_ERROR, *const_cast< OResultSet* >( this ) );
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/resultset.hxx b/dbaccess/source/core/api/resultset.hxx
deleted file mode 100644
index 9bca1b5c5..000000000
--- a/dbaccess/source/core/api/resultset.hxx
+++ /dev/null
@@ -1,240 +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.
- *
- ************************************************************************/
-#ifndef _DBA_COREAPI_RESULTSET_HXX_
-#define _DBA_COREAPI_RESULTSET_HXX_
-
-#include "column.hxx"
-#include <connectivity/warningscontainer.hxx>
-
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/sdbc/XStatement.hpp>
-#include <com/sun/star/sdbc/XCloseable.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdbc/XResultSet.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XColumnLocate.hpp>
-#include <com/sun/star/sdbcx/XRowLocate.hpp>
-#include <com/sun/star/sdbc/XRowUpdate.hpp>
-#include <com/sun/star/sdbc/XResultSetUpdate.hpp>
-#include <com/sun/star/sdbc/ResultSetConcurrency.hpp>
-
-#include <cppuhelper/propshlp.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include <osl/diagnose.h>
-#include <cppuhelper/compbase11.hxx>
-#include <comphelper/broadcasthelper.hxx>
-
-namespace dbaccess
-{
- typedef ::cppu::WeakComponentImplHelper11< ::com::sun::star::sdbc::XWarningsSupplier,
- ::com::sun::star::sdbc::XResultSet,
- ::com::sun::star::sdbc::XResultSetMetaDataSupplier,
- ::com::sun::star::sdbc::XRow,
- ::com::sun::star::sdbc::XCloseable,
- ::com::sun::star::sdbc::XColumnLocate,
- ::com::sun::star::sdbcx::XRowLocate,
- ::com::sun::star::sdbcx::XColumnsSupplier,
- ::com::sun::star::sdbc::XResultSetUpdate,
- ::com::sun::star::sdbc::XRowUpdate,
- ::com::sun::star::lang::XServiceInfo > OResultSetBase;
-
- typedef ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> ONoWeakStatement;
-
- //************************************************************
- // OResultSet
- //************************************************************
- class OResultSet : public comphelper::OBaseMutex,
- public OResultSetBase,
- public ::cppu::OPropertySetHelper,
- public ::comphelper::OPropertyArrayUsageHelper < OResultSet >
- {
- protected:
- ONoWeakStatement m_aStatement;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > m_xDelegatorResultSet;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetUpdate > m_xDelegatorResultSetUpdate;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow > m_xDelegatorRow;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowUpdate > m_xDelegatorRowUpdate;
-
- ::dbtools::WarningsContainer m_aWarnings;
- OColumns* m_pColumns;
- sal_Int32 m_nResultSetType;
- sal_Int32 m_nResultSetConcurrency;
- sal_Bool m_bIsBookmarkable : 1;
-
- public:
- OResultSet(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet >& _xResultSet,
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xStatement,
- sal_Bool _bCaseSensitive);
- virtual ~OResultSet();
-
- // ::com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::cppu::OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- // ::com::sun::star::sdbc::XCloseable
- virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::beans::XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-
- // comphelper::OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
- // cppu::OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- virtual sal_Bool SAL_CALL convertFastPropertyValue(
- ::com::sun::star::uno::Any & rConvertedValue,
- ::com::sun::star::uno::Any & rOldValue,
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue )
- throw (::com::sun::star::lang::IllegalArgumentException);
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue
- )
- throw (::com::sun::star::uno::Exception);
- virtual void SAL_CALL getFastPropertyValue( ::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const;
-
- // ::com::sun::star::sdbc::XWarningsSupplier
- virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XResultSetMetaDataSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XColumnLocate
- virtual sal_Int32 SAL_CALL findColumn( const ::rtl::OUString& columnName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XColumnsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getColumns( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XRow
- virtual sal_Bool SAL_CALL wasNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getString( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL getBoolean( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int8 SAL_CALL getByte( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int16 SAL_CALL getShort( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getInt( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int64 SAL_CALL getLong( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual float SAL_CALL getFloat( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual double SAL_CALL getDouble( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Date SAL_CALL getDate( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Time SAL_CALL getTime( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XResultSet
- virtual sal_Bool SAL_CALL next( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isBeforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isAfterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL beforeFirst( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL afterLast( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL first( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL last( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL absolute( sal_Int32 row ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL relative( sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL previous( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL refreshRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowUpdated( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowInserted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowDeleted( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XRowLocate
- virtual ::com::sun::star::uno::Any SAL_CALL getBookmark( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveToBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL moveRelativeToBookmark( const ::com::sun::star::uno::Any& bookmark, sal_Int32 rows ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL compareBookmarks( const ::com::sun::star::uno::Any& first, const ::com::sun::star::uno::Any& second ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasOrderedBookmarks( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL hashBookmark( const ::com::sun::star::uno::Any& bookmark ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XResultSetUpdate
- virtual void SAL_CALL insertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL deleteRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL cancelRowUpdates( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToInsertRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL moveToCurrentRow( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XRowUpdate
- virtual void SAL_CALL updateNull( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateBoolean( sal_Int32 columnIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateByte( sal_Int32 columnIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateShort( sal_Int32 columnIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateInt( sal_Int32 columnIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateLong( sal_Int32 columnIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateFloat( sal_Int32 columnIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateDouble( sal_Int32 columnIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateString( sal_Int32 columnIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateBytes( sal_Int32 columnIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateDate( sal_Int32 columnIndex, const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateTime( sal_Int32 columnIndex, const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateTimestamp( sal_Int32 columnIndex, const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateBinaryStream( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateCharacterStream( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL updateNumericObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Any& x, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- protected:
- void checkReadOnly() const;
- void checkBookmarkable() const;
-
- private:
- using ::cppu::OPropertySetHelper::getFastPropertyValue;
- };
-}
-#endif // _DBA_COREAPI_RESULTSET_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/statement.cxx b/dbaccess/source/core/api/statement.cxx
deleted file mode 100644
index e0dfc1ea8..000000000
--- a/dbaccess/source/core/api/statement.cxx
+++ /dev/null
@@ -1,640 +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_dbaccess.hxx"
-#include <statement.hxx>
-#include <resultset.hxx>
-#include "dbastrings.hrc"
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-#include <comphelper/sequence.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <comphelper/property.hxx>
-#include <comphelper/types.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <connectivity/dbexception.hxx>
-#include <rtl/logfile.hxx>
-
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::cppu;
-using namespace ::osl;
-using namespace dbaccess;
-using namespace dbtools;
-
-DBG_NAME(OStatementBase)
-
-OStatementBase::OStatementBase(const Reference< XConnection > & _xConn,
- const Reference< XInterface > & _xStatement)
- :OSubComponent(m_aMutex, _xConn)
- ,OPropertySetHelper(OComponentHelper::rBHelper)
- ,m_bUseBookmarks( sal_False )
- ,m_bEscapeProcessing( sal_True )
-
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::OStatementBase" );
- DBG_CTOR(OStatementBase, NULL);
- OSL_ENSURE(_xStatement.is() ,"Statement is NULL!");
- m_xAggregateAsSet.set(_xStatement,UNO_QUERY);
- m_xAggregateAsCancellable = Reference< ::com::sun::star::util::XCancellable > (m_xAggregateAsSet, UNO_QUERY);
-}
-
-OStatementBase::~OStatementBase()
-{
- DBG_DTOR(OStatementBase, NULL);
-}
-
-// com::sun::star::lang::XTypeProvider
-Sequence< Type > OStatementBase::getTypes() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::getTypes" );
- OTypeCollection aTypes(::getCppuType( (const Reference< XPropertySet > *)0 ),
- ::getCppuType( (const Reference< XWarningsSupplier > *)0 ),
- ::getCppuType( (const Reference< XCloseable > *)0 ),
- ::getCppuType( (const Reference< XMultipleResults > *)0 ),
- ::getCppuType( (const Reference< ::com::sun::star::util::XCancellable > *)0 ),
- OSubComponent::getTypes() );
- Reference< XGeneratedResultSet > xGRes(m_xAggregateAsSet, UNO_QUERY);
- if ( xGRes.is() )
- aTypes = OTypeCollection(::getCppuType( (const Reference< XGeneratedResultSet > *)0 ),aTypes.getTypes());
- Reference< XPreparedBatchExecution > xPreparedBatchExecution(m_xAggregateAsSet, UNO_QUERY);
- if ( xPreparedBatchExecution.is() )
- aTypes = OTypeCollection(::getCppuType( (const Reference< XPreparedBatchExecution > *)0 ),aTypes.getTypes());
-
- return aTypes.getTypes();
-}
-
-// com::sun::star::uno::XInterface
-Any OStatementBase::queryInterface( const Type & rType ) throw (RuntimeException)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::queryInterface" );
- Any aIface = OSubComponent::queryInterface( rType );
- if (!aIface.hasValue())
- {
- aIface = ::cppu::queryInterface(
- rType,
- static_cast< XPropertySet * >( this ),
- static_cast< XWarningsSupplier * >( this ),
- static_cast< XCloseable * >( this ),
- static_cast< XMultipleResults * >( this ),
- static_cast< ::com::sun::star::util::XCancellable * >( this ));
- if ( !aIface.hasValue() )
- {
- Reference< XGeneratedResultSet > xGRes(m_xAggregateAsSet, UNO_QUERY);
- if ( ::getCppuType( (const Reference< XGeneratedResultSet > *)0 ) == rType && xGRes.is() )
- aIface = ::cppu::queryInterface(rType,static_cast< XGeneratedResultSet * >( this ));
- }
- if ( !aIface.hasValue() )
- {
- Reference< XPreparedBatchExecution > xGRes(m_xAggregateAsSet, UNO_QUERY);
- if ( ::getCppuType( (const Reference< XPreparedBatchExecution > *)0 ) == rType && xGRes.is() )
- aIface = ::cppu::queryInterface(rType,static_cast< XPreparedBatchExecution * >( this ));
- }
- }
- return aIface;
-}
-
-void OStatementBase::acquire() throw ()
-{
- OSubComponent::acquire();
-}
-
-void OStatementBase::release() throw ()
-{
- OSubComponent::release();
-}
-
-void OStatementBase::disposeResultSet()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::disposeResultSet" );
- // free the cursor if alive
- Reference< XComponent > xComp(m_aResultSet.get(), UNO_QUERY);
- if (xComp.is())
- xComp->dispose();
- m_aResultSet = NULL;
-}
-
-// OComponentHelper
-void OStatementBase::disposing()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::disposing" );
- OPropertySetHelper::disposing();
-
- MutexGuard aGuard(m_aMutex);
-
- // free pending results
- disposeResultSet();
-
- // free the original statement
- {
- MutexGuard aCancelGuard(m_aCancelMutex);
- m_xAggregateAsCancellable = NULL;
- }
-
- if ( m_xAggregateAsSet.is() )
- {
- try
- {
- Reference< XCloseable > (m_xAggregateAsSet, UNO_QUERY)->close();
- }
- catch(RuntimeException& )
- {// don't care for anymore
- }
- }
- m_xAggregateAsSet = NULL;
-
- // free the parent at last
- OSubComponent::disposing();
-}
-
-// XCloseable
-void OStatementBase::close(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::close" );
- {
- MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- }
- dispose();
-}
-
-// OPropertySetHelper
-Reference< XPropertySetInfo > OStatementBase::getPropertySetInfo() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::getPropertySetInfo" );
- return createPropertySetInfo( getInfoHelper() ) ;
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* OStatementBase::createArrayHelper( ) const
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::createArrayHelper" );
- BEGIN_PROPERTY_HELPER(10)
- DECL_PROP0(CURSORNAME, ::rtl::OUString);
- DECL_PROP0_BOOL(ESCAPE_PROCESSING);
- DECL_PROP0(FETCHDIRECTION, sal_Int32);
- DECL_PROP0(FETCHSIZE, sal_Int32);
- DECL_PROP0(MAXFIELDSIZE, sal_Int32);
- DECL_PROP0(MAXROWS, sal_Int32);
- DECL_PROP0(QUERYTIMEOUT, sal_Int32);
- DECL_PROP0(RESULTSETCONCURRENCY, sal_Int32);
- DECL_PROP0(RESULTSETTYPE, sal_Int32);
- DECL_PROP0_BOOL(USEBOOKMARKS);
- END_PROPERTY_HELPER();
-}
-
-// cppu::OPropertySetHelper
-::cppu::IPropertyArrayHelper& OStatementBase::getInfoHelper()
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::getInfoHelper" );
- return *getArrayHelper();
-}
-
-sal_Bool OStatementBase::convertFastPropertyValue( Any & rConvertedValue, Any & rOldValue, sal_Int32 nHandle, const Any& rValue ) throw( IllegalArgumentException )
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::convertFastPropertyValue" );
- sal_Bool bModified(sal_False);
- switch (nHandle)
- {
- case PROPERTY_ID_USEBOOKMARKS:
- bModified = ::comphelper::tryPropertyValue( rConvertedValue, rOldValue, rValue, m_bUseBookmarks );
- break;
-
- case PROPERTY_ID_ESCAPE_PROCESSING:
- bModified = ::comphelper::tryPropertyValue( rConvertedValue, rOldValue, rValue, m_bEscapeProcessing );
- break;
-
- default:
- if ( m_xAggregateAsSet.is() )
- {
- // get the property name
- ::rtl::OUString sPropName;
- getInfoHelper().fillPropertyMembersByHandle( &sPropName, NULL, nHandle );
-
- // now set the value
- Any aCurrentValue = m_xAggregateAsSet->getPropertyValue( sPropName );
- if ( aCurrentValue != rValue )
- {
- rOldValue = aCurrentValue;
- rConvertedValue = rValue;
- bModified = sal_True;
- }
- }
- break;
- }
- return bModified;
-}
-
-void OStatementBase::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const Any& rValue ) throw (Exception)
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::setFastPropertyValue_NoBroadcast" );
- switch ( nHandle )
- {
- case PROPERTY_ID_USEBOOKMARKS:
- {
- m_bUseBookmarks = ::comphelper::getBOOL( rValue );
- if ( m_xAggregateAsSet.is() && m_xAggregateAsSet->getPropertySetInfo()->hasPropertyByName( PROPERTY_USEBOOKMARKS ) )
- m_xAggregateAsSet->setPropertyValue( PROPERTY_USEBOOKMARKS, rValue );
- }
- break;
-
- case PROPERTY_ID_ESCAPE_PROCESSING:
- m_bEscapeProcessing = ::comphelper::getBOOL( rValue );
- if ( m_xAggregateAsSet.is() )
- m_xAggregateAsSet->setPropertyValue( PROPERTY_ESCAPE_PROCESSING, rValue );
- break;
-
- default:
- if ( m_xAggregateAsSet.is() )
- {
- ::rtl::OUString sPropName;
- getInfoHelper().fillPropertyMembersByHandle( &sPropName, NULL, nHandle );
- m_xAggregateAsSet->setPropertyValue( sPropName, rValue );
- }
- break;
- }
-}
-
-void OStatementBase::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::getFastPropertyValue" );
- switch (nHandle)
- {
- case PROPERTY_ID_USEBOOKMARKS:
- rValue <<= m_bUseBookmarks;
- break;
-
- case PROPERTY_ID_ESCAPE_PROCESSING:
- // don't rely on our aggregate - if it implements this wrong, and always returns
- // TRUE here, then we would loop in impl_doEscapeProcessing_nothrow
- rValue <<= m_bEscapeProcessing;
- break;
-
- default:
- if ( m_xAggregateAsSet.is() )
- {
- ::rtl::OUString sPropName;
- const_cast< OStatementBase* >( this )->getInfoHelper().fillPropertyMembersByHandle( &sPropName, NULL, nHandle );
- rValue = m_xAggregateAsSet->getPropertyValue( sPropName );
- }
- break;
- }
-}
-
-// XWarningsSupplier
-Any OStatementBase::getWarnings(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::getWarnings" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- return Reference< XWarningsSupplier >(m_xAggregateAsSet, UNO_QUERY)->getWarnings();
-}
-
-void OStatementBase::clearWarnings(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::clearWarnings" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- Reference< XWarningsSupplier >(m_xAggregateAsSet, UNO_QUERY)->clearWarnings();
-}
-
-// ::com::sun::star::util::XCancellable
-void OStatementBase::cancel(void) throw( RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::cancel" );
- // no blocking as cancel is typically called from a different thread
- ClearableMutexGuard aCancelGuard(m_aCancelMutex);
- if (m_xAggregateAsCancellable.is())
- m_xAggregateAsCancellable->cancel();
- // else do nothing
-}
-
-// XMultipleResults
-Reference< XResultSet > SAL_CALL OStatementBase::getResultSet( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::getResultSet" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- // first check the meta data
- Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
- if (!xMeta.is() && !xMeta->supportsMultipleResultSets())
- throwFunctionSequenceException(*this);
-
- return Reference< XMultipleResults >(m_xAggregateAsSet, UNO_QUERY)->getResultSet();
-}
-
-sal_Int32 SAL_CALL OStatementBase::getUpdateCount( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::getUpdateCount" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- // first check the meta data
- Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
- if (!xMeta.is() && !xMeta->supportsMultipleResultSets())
- throwFunctionSequenceException(*this);
-
- return Reference< XMultipleResults >(m_xAggregateAsSet, UNO_QUERY)->getUpdateCount();
-}
-
-sal_Bool SAL_CALL OStatementBase::getMoreResults( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::getMoreResults" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- // first check the meta data
- Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
- if (!xMeta.is() && !xMeta->supportsMultipleResultSets())
- throwFunctionSequenceException(*this);
- throwFunctionSequenceException(*this);
-
- // free the previous results
- disposeResultSet();
-
- return Reference< XMultipleResults >(m_xAggregateAsSet, UNO_QUERY)->getMoreResults();
-}
-
-// XPreparedBatchExecution
-void SAL_CALL OStatementBase::addBatch( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::addBatch" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- // first check the meta data
- Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
- if (!xMeta.is() && !xMeta->supportsBatchUpdates())
- throwFunctionSequenceException(*this);
-
- Reference< XPreparedBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->addBatch();
-}
-
-void SAL_CALL OStatementBase::clearBatch( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::clearBatch" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- // first check the meta data
- Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
- if (!xMeta.is() && !xMeta->supportsBatchUpdates())
- throwFunctionSequenceException(*this);
-
- Reference< XPreparedBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->clearBatch();
-}
-
-Sequence< sal_Int32 > SAL_CALL OStatementBase::executeBatch( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::executeBatch" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- // first check the meta data
- Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
- if (!xMeta.is() && !xMeta->supportsBatchUpdates())
- throwFunctionSequenceException(*this);
-
- // free the previous results
- disposeResultSet();
-
- return Reference< XPreparedBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->executeBatch();
-}
-
-Reference< XResultSet > SAL_CALL OStatementBase::getGeneratedValues( ) throw (SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatementBase::getGeneratedValues" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- Reference< XGeneratedResultSet > xGRes(m_xAggregateAsSet, UNO_QUERY);
-
- if ( xGRes.is() )
- return xGRes->getGeneratedValues( );
- return Reference< XResultSet >();
-}
-
-//************************************************************
-// OStatement
-//************************************************************
-OStatement::OStatement( const Reference< XConnection >& _xConn, const Reference< XInterface > & _xStatement )
- :OStatementBase( _xConn, _xStatement )
- ,m_bAttemptedComposerCreation( false )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::OStatement" );
- m_xAggregateStatement.set( _xStatement, UNO_QUERY_THROW );
-}
-
-IMPLEMENT_FORWARD_XINTERFACE2( OStatement, OStatementBase, OStatement_IFACE );
-IMPLEMENT_FORWARD_XTYPEPROVIDER2( OStatement, OStatementBase, OStatement_IFACE );
-
-// XServiceInfo
-rtl::OUString OStatement::getImplementationName( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::getImplementationName" );
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.OStatement"));
-}
-
-sal_Bool OStatement::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::supportsService" );
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > OStatement::getSupportedServiceNames( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::getSupportedServiceNames" );
- Sequence< ::rtl::OUString > aSNS( 1 );
- aSNS.getArray()[0] = SERVICE_SDBC_STATEMENT;
- return aSNS;
-}
-
-// XStatement
-Reference< XResultSet > OStatement::executeQuery( const rtl::OUString& _rSQL ) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::executeQuery" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- disposeResultSet();
- Reference< XResultSet > xResultSet;
-
- ::rtl::OUString sSQL( impl_doEscapeProcessing_nothrow( _rSQL ) );
-
- Reference< XResultSet > xInnerResultSet = m_xAggregateStatement->executeQuery( sSQL );
- Reference< XConnection > xConnection( m_xParent, UNO_QUERY_THROW );
-
- if ( xInnerResultSet.is() )
- {
- Reference< XDatabaseMetaData > xMeta = xConnection->getMetaData();
- sal_Bool bCaseSensitive = xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers();
- xResultSet = new OResultSet( xInnerResultSet, *this, bCaseSensitive );
-
- // keep the resultset weak
- m_aResultSet = xResultSet;
- }
-
- return xResultSet;
-}
-
-sal_Int32 OStatement::executeUpdate( const rtl::OUString& _rSQL ) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::executeUpdate" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- disposeResultSet();
-
- ::rtl::OUString sSQL( impl_doEscapeProcessing_nothrow( _rSQL ) );
- return m_xAggregateStatement->executeUpdate( sSQL );
-}
-
-sal_Bool OStatement::execute( const rtl::OUString& _rSQL ) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::execute" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- disposeResultSet();
-
- ::rtl::OUString sSQL( impl_doEscapeProcessing_nothrow( _rSQL ) );
- return m_xAggregateStatement->execute( sSQL );
-}
-
-void OStatement::addBatch( const rtl::OUString& _rSQL ) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::execute" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
-
- // first check the meta data
- Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
- if (!xMeta.is() && !xMeta->supportsBatchUpdates())
- throwFunctionSequenceException(*this);
-
- ::rtl::OUString sSQL( impl_doEscapeProcessing_nothrow( _rSQL ) );
- Reference< XBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->addBatch( sSQL );
-}
-
-void OStatement::clearBatch( ) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::execute" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- // first check the meta data
- Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
- if (!xMeta.is() && !xMeta->supportsBatchUpdates())
- throwFunctionSequenceException(*this);
-
- Reference< XBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->clearBatch();
-}
-
-Sequence< sal_Int32 > OStatement::executeBatch( ) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::execute" );
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OComponentHelper::rBHelper.bDisposed);
- // first check the meta data
- Reference<XDatabaseMetaData> xMeta = Reference< XConnection > (m_xParent, UNO_QUERY)->getMetaData();
- if (!xMeta.is() && !xMeta->supportsBatchUpdates())
- throwFunctionSequenceException(*this);
- return Reference< XBatchExecution >(m_xAggregateAsSet, UNO_QUERY)->executeBatch( );
-}
-
-
-Reference< XConnection > OStatement::getConnection(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::getConnection" );
- return Reference< XConnection >( m_xParent, UNO_QUERY );
-}
-
-void SAL_CALL OStatement::disposing()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::disposing" );
- OStatementBase::disposing();
- m_xComposer.clear();
- m_xAggregateStatement.clear();
-}
-
-::rtl::OUString OStatement::impl_doEscapeProcessing_nothrow( const ::rtl::OUString& _rSQL ) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::impl_doEscapeProcessing_nothrow" );
- if ( !m_bEscapeProcessing )
- return _rSQL;
- try
- {
- if ( !impl_ensureComposer_nothrow() )
- return _rSQL;
-
- bool bParseable = false;
- try { m_xComposer->setQuery( _rSQL ); bParseable = true; }
- catch( const SQLException& ) { }
-
- if ( !bParseable )
- // if we cannot parse it, silently accept this. The driver is probably able to cope with it then
- return _rSQL;
-
- ::rtl::OUString sLowLevelSQL = m_xComposer->getQueryWithSubstitution();
- return sLowLevelSQL;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- return _rSQL;
-}
-
-bool OStatement::impl_ensureComposer_nothrow() const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "OStatement::impl_ensureComposer_nothrow" );
- if ( m_bAttemptedComposerCreation )
- return m_xComposer.is();
-
- const_cast< OStatement* >( this )->m_bAttemptedComposerCreation = true;
- try
- {
- Reference< XMultiServiceFactory > xFactory( m_xParent, UNO_QUERY_THROW );
- const_cast< OStatement* >( this )->m_xComposer.set( xFactory->createInstance( SERVICE_NAME_SINGLESELECTQUERYCOMPOSER ), UNO_QUERY_THROW );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- return m_xComposer.is();
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/table.cxx b/dbaccess/source/core/api/table.cxx
deleted file mode 100644
index bb369a3f7..000000000
--- a/dbaccess/source/core/api/table.cxx
+++ /dev/null
@@ -1,414 +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_dbaccess.hxx"
-
-#include "table.hxx"
-#include <definitioncolumn.hxx>
-#include "dbastrings.hrc"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include "CIndexes.hxx"
-
-#include <tools/debug.hxx>
-#include <osl/diagnose.h>
-#include <cppuhelper/typeprovider.hxx>
-#include <comphelper/enumhelper.hxx>
-#include <comphelper/container.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/types.hxx>
-#include <com/sun/star/util/XRefreshListener.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbcx/Privilege.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-
-#include <connectivity/TKeys.hxx>
-#include <connectivity/dbtools.hxx>
-#include <connectivity/dbexception.hxx>
-
-#include "sdbcoretools.hxx"
-#include "ContainerMediator.hxx"
-#include <rtl/logfile.hxx>
-
-using namespace dbaccess;
-using namespace connectivity;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-typedef ::std::map <sal_Int32, OTableColumn*, std::less <sal_Int32> > OColMap;
-
-//==========================================================================
-//= ODBTable
-//==========================================================================
-DBG_NAME(ODBTable)
-
-ODBTable::ODBTable(connectivity::sdbcx::OCollection* _pTables
- ,const Reference< XConnection >& _rxConn
- ,const ::rtl::OUString& _rCatalog
- ,const ::rtl::OUString& _rSchema
- ,const ::rtl::OUString& _rName
- ,const ::rtl::OUString& _rType
- ,const ::rtl::OUString& _rDesc
- ,const Reference< XNameAccess >& _xColumnDefinitions) throw(SQLException)
- :OTable_Base(_pTables,_rxConn,_rxConn->getMetaData().is() && _rxConn->getMetaData()->supportsMixedCaseQuotedIdentifiers(), _rName, _rType, _rDesc, _rSchema, _rCatalog )
- ,m_xColumnDefinitions(_xColumnDefinitions)
- ,m_nPrivileges(0)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::ODBTable" );
- DBG_CTOR(ODBTable, NULL);
- OSL_ENSURE(getMetaData().is(), "ODBTable::ODBTable : invalid conn !");
- OSL_ENSURE(_rName.getLength(), "ODBTable::ODBTable : name !");
- // TODO : think about collecting the privileges here, as we can't ensure that in getFastPropertyValue, where
- // we do this at the moment, the statement needed can be supplied by the connection (for example the SQL-Server
- // ODBC driver does not allow more than one statement per connection, and in getFastPropertyValue it's more
- // likely that it's already used up than it's here.)
-}
-
-ODBTable::ODBTable(connectivity::sdbcx::OCollection* _pTables
- ,const Reference< XConnection >& _rxConn)
- throw(SQLException)
- :OTable_Base(_pTables,_rxConn, _rxConn->getMetaData().is() && _rxConn->getMetaData()->supportsMixedCaseQuotedIdentifiers())
- ,m_nPrivileges(-1)
-{
- DBG_CTOR(ODBTable, NULL);
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::ODBTable" );
-}
-
-ODBTable::~ODBTable()
-{
- DBG_DTOR(ODBTable, NULL);
-}
-
-IMPLEMENT_FORWARD_REFCOUNT(ODBTable,OTable_Base)
-
-OColumn* ODBTable::createColumn(const ::rtl::OUString& _rName) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::createColumn" );
- OColumn* pReturn = NULL;
-
- Reference<XPropertySet> xProp;
- if ( m_xDriverColumns.is() && m_xDriverColumns->hasByName(_rName) )
- {
- xProp.set(m_xDriverColumns->getByName(_rName),UNO_QUERY);
- }
- else
- {
- OColumns* pColumns = static_cast<OColumns*>(m_pColumns);
- xProp.set(pColumns->createBaseObject(_rName),UNO_QUERY);
- }
-
- Reference<XPropertySet> xColumnDefintion;
- if ( m_xColumnDefinitions.is() && m_xColumnDefinitions->hasByName(_rName) )
- xColumnDefintion.set(m_xColumnDefinitions->getByName(_rName),UNO_QUERY);
- pReturn = new OTableColumnWrapper( xProp, xColumnDefintion, false );
-
- return pReturn;
-}
-
-void ODBTable::columnAppended( const Reference< XPropertySet >& /*_rxSourceDescriptor*/ )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::columnAppended" );
- // not interested in
-}
-
-void ODBTable::columnDropped(const ::rtl::OUString& _sName)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::columnDropped" );
- Reference<XDrop> xDrop(m_xColumnDefinitions,UNO_QUERY);
- if ( xDrop.is() && m_xColumnDefinitions->hasByName(_sName) )
- {
- xDrop->dropByName(_sName);
- }
-}
-
-Sequence< sal_Int8 > ODBTable::getImplementationId() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::getImplementationId" );
- static OImplementationId * pId = 0;
- if (! pId)
- {
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- if (! pId)
- {
- static OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-// OComponentHelper
-void SAL_CALL ODBTable::disposing()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::disposing" );
- OPropertySetHelper::disposing();
- OTable_Base::disposing();
- m_xColumnDefinitions = NULL;
- m_xDriverColumns = NULL;
- m_pColumnMediator = NULL;
-}
-
-void ODBTable::getFastPropertyValue(Any& _rValue, sal_Int32 _nHandle) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::getFastPropertyValue" );
- if ((PROPERTY_ID_PRIVILEGES == _nHandle) && (-1 == m_nPrivileges))
- { // somebody is asking for the privileges an we do not know them, yet
- const_cast<ODBTable*>(this)->m_nPrivileges = ::dbtools::getTablePrivileges(getMetaData(),m_CatalogName,m_SchemaName, m_Name);
- }
-
- OTable_Base::getFastPropertyValue(_rValue, _nHandle);
-}
-
-void ODBTable::construct()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::construct" );
- ::osl::MutexGuard aGuard(m_aMutex);
-
- // we don't collect the privileges here, this is potentially expensive. Instead we determine them on request.
- // (see getFastPropertyValue)
- m_nPrivileges = -1;
-
- OTable_Base::construct();
-
- registerProperty(PROPERTY_FILTER, PROPERTY_ID_FILTER, PropertyAttribute::BOUND,
- &m_sFilter, ::getCppuType(&m_sFilter));
-
- registerProperty(PROPERTY_ORDER, PROPERTY_ID_ORDER, PropertyAttribute::BOUND,
- &m_sOrder, ::getCppuType(&m_sOrder));
-
- registerProperty(PROPERTY_APPLYFILTER, PROPERTY_ID_APPLYFILTER, PropertyAttribute::BOUND,
- &m_bApplyFilter, ::getBooleanCppuType());
-
- registerProperty(PROPERTY_FONT, PROPERTY_ID_FONT, PropertyAttribute::BOUND,
- &m_aFont, ::getCppuType(&m_aFont));
-
- registerMayBeVoidProperty(PROPERTY_ROW_HEIGHT, PROPERTY_ID_ROW_HEIGHT, PropertyAttribute::BOUND | PropertyAttribute::MAYBEVOID,
- &m_aRowHeight, ::getCppuType(static_cast<sal_Int32*>(NULL)));
-
- registerMayBeVoidProperty(PROPERTY_TEXTCOLOR, PROPERTY_ID_TEXTCOLOR, PropertyAttribute::BOUND | PropertyAttribute::MAYBEVOID,
- &m_aTextColor, ::getCppuType(static_cast<sal_Int32*>(NULL)));
-
- registerProperty(PROPERTY_PRIVILEGES, PROPERTY_ID_PRIVILEGES, PropertyAttribute::BOUND | PropertyAttribute::READONLY,
- &m_nPrivileges, ::getCppuType(static_cast<sal_Int32*>(NULL)));
-
- registerMayBeVoidProperty(PROPERTY_TEXTLINECOLOR, PROPERTY_ID_TEXTLINECOLOR, PropertyAttribute::BOUND | PropertyAttribute::MAYBEVOID,
- &m_aTextLineColor, ::getCppuType(static_cast<sal_Int32*>(NULL)));
-
- registerProperty(PROPERTY_TEXTEMPHASIS, PROPERTY_ID_TEXTEMPHASIS, PropertyAttribute::BOUND,
- &m_nFontEmphasis, ::getCppuType(&m_nFontEmphasis));
-
- registerProperty(PROPERTY_TEXTRELIEF, PROPERTY_ID_TEXTRELIEF, PropertyAttribute::BOUND,
- &m_nFontRelief, ::getCppuType(&m_nFontRelief));
-
- registerProperty(PROPERTY_FONTNAME, PROPERTY_ID_FONTNAME, PropertyAttribute::BOUND,&m_aFont.Name, ::getCppuType(&m_aFont.Name));
- registerProperty(PROPERTY_FONTHEIGHT, PROPERTY_ID_FONTHEIGHT, PropertyAttribute::BOUND,&m_aFont.Height, ::getCppuType(&m_aFont.Height));
- registerProperty(PROPERTY_FONTWIDTH, PROPERTY_ID_FONTWIDTH, PropertyAttribute::BOUND,&m_aFont.Width, ::getCppuType(&m_aFont.Width));
- registerProperty(PROPERTY_FONTSTYLENAME, PROPERTY_ID_FONTSTYLENAME, PropertyAttribute::BOUND,&m_aFont.StyleName, ::getCppuType(&m_aFont.StyleName));
- registerProperty(PROPERTY_FONTFAMILY, PROPERTY_ID_FONTFAMILY, PropertyAttribute::BOUND,&m_aFont.Family, ::getCppuType(&m_aFont.Family));
- registerProperty(PROPERTY_FONTCHARSET, PROPERTY_ID_FONTCHARSET, PropertyAttribute::BOUND,&m_aFont.CharSet, ::getCppuType(&m_aFont.CharSet));
- registerProperty(PROPERTY_FONTPITCH, PROPERTY_ID_FONTPITCH, PropertyAttribute::BOUND,&m_aFont.Pitch, ::getCppuType(&m_aFont.Pitch));
- registerProperty(PROPERTY_FONTCHARWIDTH, PROPERTY_ID_FONTCHARWIDTH, PropertyAttribute::BOUND,&m_aFont.CharacterWidth, ::getCppuType(&m_aFont.CharacterWidth));
- registerProperty(PROPERTY_FONTWEIGHT, PROPERTY_ID_FONTWEIGHT, PropertyAttribute::BOUND,&m_aFont.Weight, ::getCppuType(&m_aFont.Weight));
- registerProperty(PROPERTY_FONTSLANT, PROPERTY_ID_FONTSLANT, PropertyAttribute::BOUND,&m_aFont.Slant, ::getCppuType(&m_aFont.Slant));
- registerProperty(PROPERTY_FONTUNDERLINE, PROPERTY_ID_FONTUNDERLINE, PropertyAttribute::BOUND,&m_aFont.Underline, ::getCppuType(&m_aFont.Underline));
- registerProperty(PROPERTY_FONTSTRIKEOUT, PROPERTY_ID_FONTSTRIKEOUT, PropertyAttribute::BOUND,&m_aFont.Strikeout, ::getCppuType(&m_aFont.Strikeout));
- registerProperty(PROPERTY_FONTORIENTATION, PROPERTY_ID_FONTORIENTATION, PropertyAttribute::BOUND,&m_aFont.Orientation, ::getCppuType(&m_aFont.Orientation));
- registerProperty(PROPERTY_FONTKERNING, PROPERTY_ID_FONTKERNING, PropertyAttribute::BOUND,&m_aFont.Kerning, ::getCppuType(&m_aFont.Kerning));
- registerProperty(PROPERTY_FONTWORDLINEMODE, PROPERTY_ID_FONTWORDLINEMODE,PropertyAttribute::BOUND,&m_aFont.WordLineMode, ::getCppuType(&m_aFont.WordLineMode));
- registerProperty(PROPERTY_FONTTYPE, PROPERTY_ID_FONTTYPE, PropertyAttribute::BOUND,&m_aFont.Type, ::getCppuType(&m_aFont.Type));
-
- refreshColumns();
-}
-
-::cppu::IPropertyArrayHelper* ODBTable::createArrayHelper( sal_Int32 _nId) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::createArrayHelper" );
- Sequence< Property > aProps;
- describeProperties(aProps);
- if(!_nId)
- {
- Property* pIter = aProps.getArray();
- Property* pEnd = pIter + aProps.getLength();
- for(;pIter != pEnd;++pIter)
- {
- if (0 == pIter->Name.compareToAscii(PROPERTY_CATALOGNAME))
- pIter->Attributes = PropertyAttribute::READONLY;
- else if (0 == pIter->Name.compareToAscii(PROPERTY_SCHEMANAME))
- pIter->Attributes = PropertyAttribute::READONLY;
- else if (0 == pIter->Name.compareToAscii(PROPERTY_DESCRIPTION))
- pIter->Attributes = PropertyAttribute::READONLY;
- else if (0 == pIter->Name.compareToAscii(PROPERTY_NAME))
- pIter->Attributes = PropertyAttribute::READONLY;
- }
- }
-
- return new ::cppu::OPropertyArrayHelper(aProps);
-}
-
-::cppu::IPropertyArrayHelper & SAL_CALL ODBTable::getInfoHelper()
-{
- return *ODBTable_PROP::getArrayHelper(isNew() ? 1 : 0);
-}
-
-// XServiceInfo
-IMPLEMENT_SERVICE_INFO1(ODBTable, "com.sun.star.sdb.dbaccess.ODBTable", SERVICE_SDBCX_TABLE)
-
-Any SAL_CALL ODBTable::queryInterface( const Type & rType ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::getInfoHelper" );
- if(rType == getCppuType( (Reference<XRename>*)0) && !getRenameService().is() )
- return Any();
- if(rType == getCppuType( (Reference<XAlterTable>*)0) && !getAlterService().is() )
- return Any();
- return OTable_Base::queryInterface( rType);
-}
-
-Sequence< Type > SAL_CALL ODBTable::getTypes( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::getTypes" );
- Type aRenameType = getCppuType( (Reference<XRename>*)0);
- Type aAlterType = getCppuType( (Reference<XAlterTable>*)0);
-
- Sequence< Type > aTypes(OTable_Base::getTypes());
- ::std::vector<Type> aOwnTypes;
- aOwnTypes.reserve(aTypes.getLength());
-
- const Type* pIter = aTypes.getConstArray();
- const Type* pEnd = pIter + aTypes.getLength();
- for(;pIter != pEnd ;++pIter)
- {
- if( (*pIter != aRenameType || getRenameService().is()) && (*pIter != aAlterType || getAlterService().is()))
- aOwnTypes.push_back(*pIter);
- }
-
- Type* pTypes = aOwnTypes.empty() ? 0 : &aOwnTypes[0];
- return Sequence< Type >(pTypes, aOwnTypes.size());
-}
-
-// XRename,
-void SAL_CALL ODBTable::rename( const ::rtl::OUString& _rNewName ) throw(SQLException, ElementExistException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::rename" );
- ::osl::MutexGuard aGuard(m_aMutex);
- checkDisposed(connectivity::sdbcx::OTableDescriptor_BASE::rBHelper.bDisposed);
- if ( !getRenameService().is() )
- throw SQLException(DBACORE_RESSTRING(RID_STR_NO_TABLE_RENAME),*this,SQLSTATE_GENERAL,1000,Any() );
-
- Reference<XPropertySet> xTable(this);
- getRenameService()->rename(xTable,_rNewName);
- ::connectivity::OTable_TYPEDEF::rename(_rNewName);
-}
-
-// XAlterTable,
-void SAL_CALL ODBTable::alterColumnByName( const ::rtl::OUString& _rName, const Reference< XPropertySet >& _rxDescriptor ) throw(SQLException, NoSuchElementException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::alterColumnByName" );
- ::osl::MutexGuard aGuard(m_aMutex);
- checkDisposed(connectivity::sdbcx::OTableDescriptor_BASE::rBHelper.bDisposed);
- if ( !getAlterService().is() )
- throw SQLException(DBACORE_RESSTRING(RID_STR_NO_TABLE_RENAME),*this,SQLSTATE_GENERAL,1000,Any() );
-
- if ( !m_pColumns->hasByName(_rName) )
- throw SQLException(DBACORE_RESSTRING(RID_STR_COLUMN_NOT_VALID),*this,SQLSTATE_GENERAL,1000,Any() );
-
- Reference<XPropertySet> xTable(this);
- getAlterService()->alterColumnByName(xTable,_rName,_rxDescriptor);
- m_pColumns->refresh();
-}
-
-sal_Int64 SAL_CALL ODBTable::getSomething( const Sequence< sal_Int8 >& rId ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::getSomething" );
- sal_Int64 nRet(0);
- if (rId.getLength() == 16 && 0 == rtl_compareMemory(getUnoTunnelImplementationId().getConstArray(), rId.getConstArray(), 16 ) )
- nRet = reinterpret_cast<sal_Int64>(this);
- else
- nRet = OTable_Base::getSomething(rId);
-
- return nRet;
-}
-
-Sequence< sal_Int8 > ODBTable::getUnoTunnelImplementationId()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::getUnoTunnelImplementationId" );
- static ::cppu::OImplementationId * pId = 0;
- if (! pId)
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- if (! pId)
- {
- static ::cppu::OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-Reference< XPropertySet > ODBTable::createColumnDescriptor()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::createColumnDescriptor" );
- return new OTableColumnDescriptor( true );
-}
-
-sdbcx::OCollection* ODBTable::createColumns(const TStringVector& _rNames)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::createColumns" );
- Reference<XDatabaseMetaData> xMeta = getMetaData();
- OColumns* pCol = new OColumns(*this, m_aMutex, NULL, isCaseSensitive(), _rNames, this,this,
- getAlterService().is() || (xMeta.is() && xMeta->supportsAlterTableWithAddColumn()),
- getAlterService().is() || (xMeta.is() && xMeta->supportsAlterTableWithDropColumn()));
- static_cast<OColumnsHelper*>(pCol)->setParent(this);
- pCol->setParent(*this);
- m_pColumnMediator = new OContainerMediator( pCol, m_xColumnDefinitions, getConnection(), OContainerMediator::eColumns );
- pCol->setMediator( m_pColumnMediator.get() );
- return pCol;
-}
-
-sdbcx::OCollection* ODBTable::createKeys(const TStringVector& _rNames)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::createKeys" );
- return new connectivity::OKeysHelper(this,m_aMutex,_rNames);
-}
-
-sdbcx::OCollection* ODBTable::createIndexes(const TStringVector& _rNames)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dbaccess", "Ocke.Janssen@sun.com", "ODBTable::createIndexes" );
- return new OIndexes(this,m_aMutex,_rNames,NULL);
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/tablecontainer.cxx b/dbaccess/source/core/api/tablecontainer.cxx
deleted file mode 100644
index b946c2202..000000000
--- a/dbaccess/source/core/api/tablecontainer.cxx
+++ /dev/null
@@ -1,504 +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_dbaccess.hxx"
-
-#include "tablecontainer.hxx"
-#include "dbastrings.hrc"
-#include "table.hxx"
-#include <comphelper/property.hxx>
-#include <comphelper/processfactory.hxx>
-#include <tools/debug.hxx>
-#include <comphelper/enumhelper.hxx>
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include <com/sun/star/sdb/CommandType.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/beans/PropertyState.hpp>
-#include <com/sun/star/beans/XPropertyState.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/sdbc/KeyRule.hpp>
-#include <com/sun/star/sdbcx/KeyType.hpp>
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <comphelper/types.hxx>
-#include <connectivity/dbtools.hxx>
-#include <comphelper/extract.hxx>
-#include <connectivity/dbexception.hxx>
-#include "TableDeco.hxx"
-#include "sdbcoretools.hxx"
-#include "ContainerMediator.hxx"
-#include "definitioncolumn.hxx"
-#include "objectnameapproval.hxx"
-#include <tools/string.hxx>
-#include <rtl/logfile.hxx>
-#include <tools/diagnose_ex.h>
-#include <tools/diagnose_ex.h>
-
-using namespace dbaccess;
-using namespace dbtools;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::util;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-using namespace ::connectivity::sdbcx;
-
-namespace
-{
- sal_Bool lcl_isPropertySetDefaulted(const Sequence< ::rtl::OUString>& _aNames,const Reference<XPropertySet>& _xProp)
- {
- Reference<XPropertyState> xState(_xProp,UNO_QUERY);
- if ( xState.is() )
- {
- const ::rtl::OUString* pIter = _aNames.getConstArray();
- const ::rtl::OUString* pEnd = pIter + _aNames.getLength();
- for(;pIter != pEnd;++pIter)
- {
- try
- {
- PropertyState aState = xState->getPropertyState(*pIter);
- if ( aState != PropertyState_DEFAULT_VALUE )
- break;
- }
- catch(const Exception&)
- {
- OSL_FAIL( "lcl_isPropertySetDefaulted: Exception caught!" );
- }
- }
- return ( pIter == pEnd );
- }
- return sal_False;
- }
-}
-//==========================================================================
-//= OTableContainer
-//==========================================================================
-DBG_NAME(OTableContainer)
-
-OTableContainer::OTableContainer(::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- const Reference< XConnection >& _xCon,
- sal_Bool _bCase,
- const Reference< XNameContainer >& _xTableDefinitions,
- IRefreshListener* _pRefreshListener,
- ::dbtools::IWarningsContainer* _pWarningsContainer
- ,oslInterlockedCount& _nInAppend)
- :OFilteredContainer(_rParent,_rMutex,_xCon,_bCase,_pRefreshListener,_pWarningsContainer,_nInAppend)
- ,m_xTableDefinitions(_xTableDefinitions)
- ,m_pTableMediator( NULL )
- ,m_bInDrop(sal_False)
-{
- DBG_CTOR(OTableContainer, NULL);
-}
-
-OTableContainer::~OTableContainer()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OTableContainer::OTableContainer" );
- DBG_DTOR(OTableContainer, NULL);
-}
-
-void OTableContainer::removeMasterContainerListener()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OTableContainer::removeMasterContainerListener" );
- try
- {
- Reference<XContainer> xCont( m_xMasterContainer, UNO_QUERY_THROW );
- xCont->removeContainerListener( this );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-::rtl::OUString OTableContainer::getTableTypeRestriction() const
-{
- // no restriction at all (other than the ones provided externally)
- return ::rtl::OUString();
-}
-
-// XServiceInfo
-IMPLEMENT_SERVICE_INFO2(OTableContainer, "com.sun.star.sdb.dbaccess.OTableContainer", SERVICE_SDBCX_CONTAINER, SERVICE_SDBCX_TABLES)
-
-namespace
-{
-void lcl_createDefintionObject(const ::rtl::OUString& _rName
- ,const Reference< XNameContainer >& _xTableDefinitions
- ,Reference<XPropertySet>& _xTableDefinition
- ,Reference<XNameAccess>& _xColumnDefinitions
- ,sal_Bool _bModified)
-{
- if ( _xTableDefinitions.is() )
- {
- if ( _xTableDefinitions->hasByName(_rName) )
- _xTableDefinition.set(_xTableDefinitions->getByName(_rName),UNO_QUERY);
- else
- {
- Sequence< Any > aArguments(1);
- PropertyValue aValue;
- // set as folder
- aValue.Name = PROPERTY_NAME;
- aValue.Value <<= _rName;
- aArguments[0] <<= aValue;
- _xTableDefinition.set(::comphelper::getProcessServiceFactory()->createInstanceWithArguments(SERVICE_SDB_TABLEDEFINITION,aArguments),UNO_QUERY);
- _xTableDefinitions->insertByName(_rName,makeAny(_xTableDefinition));
- ::dbaccess::notifyDataSourceModified(_xTableDefinitions,_bModified);
- }
- Reference<XColumnsSupplier> xColumnsSupplier(_xTableDefinition,UNO_QUERY);
- if ( xColumnsSupplier.is() )
- _xColumnDefinitions = xColumnsSupplier->getColumns();
- }
-}
-
-}
-
-connectivity::sdbcx::ObjectType OTableContainer::createObject(const ::rtl::OUString& _rName)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OTableContainer::createObject" );
- Reference<XColumnsSupplier > xSup;
- if(m_xMasterContainer.is() && m_xMasterContainer->hasByName(_rName))
- xSup.set(m_xMasterContainer->getByName(_rName),UNO_QUERY);
-
- connectivity::sdbcx::ObjectType xRet;
- if ( m_xMetaData.is() )
- {
- Reference<XPropertySet> xTableDefinition;
- Reference<XNameAccess> xColumnDefinitions;
- lcl_createDefintionObject(_rName,m_xTableDefinitions,xTableDefinition,xColumnDefinitions,sal_False);
-
- if ( xSup.is() )
- {
- ODBTableDecorator* pTable = new ODBTableDecorator( m_xConnection, xSup, ::dbtools::getNumberFormats( m_xConnection ) ,xColumnDefinitions);
- xRet = pTable;
- pTable->construct();
- }
- else
- {
- ::rtl::OUString sCatalog,sSchema,sTable;
- ::dbtools::qualifiedNameComponents(m_xMetaData,
- _rName,
- sCatalog,
- sSchema,
- sTable,
- ::dbtools::eInDataManipulation);
- Any aCatalog;
- if(sCatalog.getLength())
- aCatalog <<= sCatalog;
- ::rtl::OUString sType,sDescription;
- Sequence< ::rtl::OUString> aTypeFilter;
- getAllTableTypeFilter( aTypeFilter );
-
- Reference< XResultSet > xRes = m_xMetaData.is() ? m_xMetaData->getTables(aCatalog,sSchema,sTable,aTypeFilter) : Reference< XResultSet >();
- if(xRes.is() && xRes->next())
- {
- Reference< XRow > xRow(xRes,UNO_QUERY);
- if(xRow.is())
- {
- sType = xRow->getString(4);
- sDescription = xRow->getString(5);
- }
- }
- ::comphelper::disposeComponent(xRes);
- ODBTable* pTable = new ODBTable(this
- ,m_xConnection
- ,sCatalog
- ,sSchema
- ,sTable
- ,sType
- ,sDescription
- ,xColumnDefinitions);
- xRet = pTable;
- pTable->construct();
- }
- Reference<XPropertySet> xDest(xRet,UNO_QUERY);
- if ( xTableDefinition.is() )
- ::comphelper::copyProperties(xTableDefinition,xDest);
-
- if ( !m_pTableMediator.is() )
- m_pTableMediator = new OContainerMediator(
- this, m_xTableDefinitions.get(), m_xConnection, OContainerMediator::eTables );
- if ( m_pTableMediator.is() )
- m_pTableMediator->notifyElementCreated(_rName,xDest);
- }
-
- return xRet;
-}
-
-Reference< XPropertySet > OTableContainer::createDescriptor()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OTableContainer::createDescriptor" );
- Reference< XPropertySet > xRet;
-
- // first we have to look if the master tables support this
- // and if so then create a table object as well with the master tables
- Reference<XColumnsSupplier > xMasterColumnsSup;
- Reference<XDataDescriptorFactory> xDataFactory(m_xMasterContainer,UNO_QUERY);
- if ( xDataFactory.is() && m_xMetaData.is() )
- {
- xMasterColumnsSup = Reference< XColumnsSupplier >( xDataFactory->createDataDescriptor(), UNO_QUERY );
- ODBTableDecorator* pTable = new ODBTableDecorator( m_xConnection, xMasterColumnsSup, ::dbtools::getNumberFormats( m_xConnection ) ,NULL);
- xRet = pTable;
- pTable->construct();
- }
- else
- {
- ODBTable* pTable = new ODBTable(this, m_xConnection);
- xRet = pTable;
- pTable->construct();
- }
- return xRet;
-}
-
-// XAppend
-ObjectType OTableContainer::appendObject( const ::rtl::OUString& _rForName, const Reference< XPropertySet >& descriptor )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OTableContainer::appendObject" );
- // append the new table with a create stmt
- ::rtl::OUString aName = getString(descriptor->getPropertyValue(PROPERTY_NAME));
- if(m_xMasterContainer.is() && m_xMasterContainer->hasByName(aName))
- {
- String sMessage(DBACORE_RESSTRING(RID_STR_TABLE_IS_FILTERED));
- sMessage.SearchAndReplaceAscii("$name$", aName);
- throw SQLException(sMessage,static_cast<XTypeProvider*>(static_cast<OFilteredContainer*>(this)),SQLSTATE_GENERAL,1000,Any());
- }
-
- Reference< XConnection > xConnection( m_xConnection.get(), UNO_QUERY );
- PContainerApprove pApprove( new ObjectNameApproval( xConnection, ObjectNameApproval::TypeTable ) );
- pApprove->approveElement( aName, descriptor );
-
- try
- {
- EnsureReset aReset(m_nInAppend);
- Reference<XAppend> xAppend(m_xMasterContainer,UNO_QUERY);
- if(xAppend.is())
- {
- xAppend->appendByDescriptor(descriptor);
- }
- else
- {
- ::rtl::OUString aSql = ::dbtools::createSqlCreateTableStatement(descriptor,m_xConnection);
-
- Reference<XConnection> xCon = m_xConnection;
- OSL_ENSURE(xCon.is(),"Connection is null!");
- if ( xCon.is() )
- {
- Reference< XStatement > xStmt = xCon->createStatement( );
- if ( xStmt.is() )
- xStmt->execute(aSql);
- ::comphelper::disposeComponent(xStmt);
- }
- }
- }
- catch(const Exception&)
- {
- throw;
- }
-
- Reference<XPropertySet> xTableDefinition;
- Reference<XNameAccess> xColumnDefinitions;
- lcl_createDefintionObject(getNameForObject(descriptor),m_xTableDefinitions,xTableDefinition,xColumnDefinitions,sal_False);
- Reference<XColumnsSupplier> xSup(descriptor,UNO_QUERY);
- Reference<XDataDescriptorFactory> xFac(xColumnDefinitions,UNO_QUERY);
- Reference<XAppend> xAppend(xColumnDefinitions,UNO_QUERY);
- sal_Bool bModified = sal_False;
- if ( xSup.is() && xColumnDefinitions.is() && xFac.is() && xAppend.is() )
- {
- Reference<XNameAccess> xNames = xSup->getColumns();
- if ( xNames.is() )
- {
- Reference<XPropertySet> xProp = xFac->createDataDescriptor();
- Sequence< ::rtl::OUString> aSeq = xNames->getElementNames();
- const ::rtl::OUString* pIter = aSeq.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aSeq.getLength();
- for(;pIter != pEnd;++pIter)
- {
- if ( !xColumnDefinitions->hasByName(*pIter) )
- {
- Reference<XPropertySet> xColumn(xNames->getByName(*pIter),UNO_QUERY);
- if ( !OColumnSettings::hasDefaultSettings( xColumn ) )
- {
- ::comphelper::copyProperties( xColumn, xProp );
- xAppend->appendByDescriptor( xProp );
- bModified = sal_True;
- }
- }
- }
- }
- }
- const static ::rtl::OUString s_pTableProps[] = { ::rtl::OUString(PROPERTY_FILTER), ::rtl::OUString(PROPERTY_ORDER)
- , ::rtl::OUString(PROPERTY_APPLYFILTER), ::rtl::OUString(PROPERTY_FONT)
- , ::rtl::OUString(PROPERTY_ROW_HEIGHT), ::rtl::OUString(PROPERTY_TEXTCOLOR)
- , ::rtl::OUString(PROPERTY_TEXTLINECOLOR), ::rtl::OUString(PROPERTY_TEXTEMPHASIS)
- , ::rtl::OUString(PROPERTY_TEXTRELIEF) };
- Sequence< ::rtl::OUString> aNames(s_pTableProps,SAL_N_ELEMENTS(s_pTableProps));
- if ( bModified || !lcl_isPropertySetDefaulted(aNames,xTableDefinition) )
- ::dbaccess::notifyDataSourceModified(m_xTableDefinitions,sal_True);
-
- return createObject( _rForName );
-}
-
-// XDrop
-void OTableContainer::dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OTableContainer::dropObject" );
- m_bInDrop = sal_True;
- try
- {
- Reference< XDrop > xDrop(m_xMasterContainer,UNO_QUERY);
- if(xDrop.is())
- xDrop->dropByName(_sElementName);
- else
- {
- ::rtl::OUString sCatalog,sSchema,sTable,sComposedName;
-
- sal_Bool bIsView = sal_False;
- Reference<XPropertySet> xTable(getObject(_nPos),UNO_QUERY);
- if ( xTable.is() && m_xMetaData.is() )
- {
- if( m_xMetaData.is() && m_xMetaData->supportsCatalogsInTableDefinitions() )
- xTable->getPropertyValue(PROPERTY_CATALOGNAME) >>= sCatalog;
- if( m_xMetaData.is() && m_xMetaData->supportsSchemasInTableDefinitions() )
- xTable->getPropertyValue(PROPERTY_SCHEMANAME) >>= sSchema;
- xTable->getPropertyValue(PROPERTY_NAME) >>= sTable;
-
- sComposedName = ::dbtools::composeTableName( m_xMetaData, sCatalog, sSchema, sTable, sal_True, ::dbtools::eInTableDefinitions );
-
- ::rtl::OUString sType;
- xTable->getPropertyValue(PROPERTY_TYPE) >>= sType;
- bIsView = sType.equalsIgnoreAsciiCase(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VIEW")));
- }
-
- if(!sComposedName.getLength())
- ::dbtools::throwFunctionSequenceException(static_cast<XTypeProvider*>(static_cast<OFilteredContainer*>(this)));
-
- ::rtl::OUString aSql(RTL_CONSTASCII_USTRINGPARAM("DROP "));
-
- if ( bIsView ) // here we have a view
- aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VIEW "));
- else
- aSql += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TABLE "));
- aSql += sComposedName;
- Reference<XConnection> xCon = m_xConnection;
- OSL_ENSURE(xCon.is(),"Connection is null!");
- if ( xCon.is() )
- {
- Reference< XStatement > xStmt = xCon->createStatement( );
- if(xStmt.is())
- xStmt->execute(aSql);
- ::comphelper::disposeComponent(xStmt);
- }
- }
-
- if ( m_xTableDefinitions.is() && m_xTableDefinitions->hasByName(_sElementName) )
- {
- m_xTableDefinitions->removeByName(_sElementName);
- }
- }
- catch(const Exception&)
- {
- m_bInDrop = sal_False;
- throw;
- }
- m_bInDrop = sal_False;
-}
-
-void SAL_CALL OTableContainer::elementInserted( const ContainerEvent& Event ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OTableContainer::elementInserted" );
- ::osl::MutexGuard aGuard(m_rMutex);
- ::rtl::OUString sName;
- Event.Accessor >>= sName;
- if ( !m_nInAppend && !hasByName(sName) )
- {
- if(!m_xMasterContainer.is() || m_xMasterContainer->hasByName(sName))
- {
- ObjectType xName = createObject(sName);
- insertElement(sName,xName);
- // and notify our listeners
- ContainerEvent aEvent(static_cast<XContainer*>(this), makeAny(sName), makeAny(xName), Any());
- m_aContainerListeners.notifyEach( &XContainerListener::elementInserted, aEvent );
- }
- }
-}
-
-void SAL_CALL OTableContainer::elementRemoved( const ContainerEvent& /*Event*/ ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OTableContainer::elementRemoved" );
-}
-
-void SAL_CALL OTableContainer::elementReplaced( const ContainerEvent& Event ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OTableContainer::elementReplaced" );
- // create a new config entry
- {
- ::rtl::OUString sOldComposedName,sNewComposedName;
- Event.ReplacedElement >>= sOldComposedName;
- Event.Accessor >>= sNewComposedName;
-
- renameObject(sOldComposedName,sNewComposedName);
- }
-}
-
-void SAL_CALL OTableContainer::disposing()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OTableContainer::disposing" );
- OFilteredContainer::disposing();
- // say goodbye to our listeners
- m_xTableDefinitions = NULL;
- m_pTableMediator = NULL;
-}
-
-void SAL_CALL OTableContainer::disposing( const ::com::sun::star::lang::EventObject& /*Source*/ ) throw (::com::sun::star::uno::RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "api", "Ocke.Janssen@sun.com", "OTableContainer::disposing" );
-}
-
-void OTableContainer::addMasterContainerListener()
-{
- try
- {
- Reference< XContainer > xCont( m_xMasterContainer, UNO_QUERY_THROW );
- xCont->addContainerListener( this );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/api/viewcontainer.cxx b/dbaccess/source/core/api/viewcontainer.cxx
deleted file mode 100644
index 3a2d9659b..000000000
--- a/dbaccess/source/core/api/viewcontainer.cxx
+++ /dev/null
@@ -1,274 +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_dbaccess.hxx"
-
-#include "viewcontainer.hxx"
-#include "dbastrings.hrc"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include "View.hxx"
-
-#include <tools/debug.hxx>
-#include <tools/wldcrd.hxx>
-#include <comphelper/enumhelper.hxx>
-#include <comphelper/types.hxx>
-#include <connectivity/dbtools.hxx>
-#include <comphelper/extract.hxx>
-#include <connectivity/dbexception.hxx>
-#include <rtl/ustrbuf.hxx>
-
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/sdbc/XDatabaseMetaData.hpp>
-#include <com/sun/star/sdbc/KeyRule.hpp>
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/sdbcx/KeyType.hpp>
-
-using namespace dbaccess;
-using namespace dbtools;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::container;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-using namespace ::connectivity::sdbcx;
-
-//==========================================================================
-//= OViewContainer
-//==========================================================================
-DBG_NAME(OViewContainer)
-
-OViewContainer::OViewContainer(::cppu::OWeakObject& _rParent
- ,::osl::Mutex& _rMutex
- ,const Reference< XConnection >& _xCon
- ,sal_Bool _bCase
- ,IRefreshListener* _pRefreshListener
- ,::dbtools::IWarningsContainer* _pWarningsContainer
- ,oslInterlockedCount& _nInAppend)
- :OFilteredContainer(_rParent,_rMutex,_xCon,_bCase,_pRefreshListener,_pWarningsContainer,_nInAppend)
- ,m_bInElementRemoved(false)
-{
- DBG_CTOR(OViewContainer, NULL);
-}
-
-OViewContainer::~OViewContainer()
-{
- DBG_DTOR(OViewContainer, NULL);
-}
-
-// XServiceInfo
-IMPLEMENT_SERVICE_INFO2(OViewContainer, "com.sun.star.sdb.dbaccess.OViewContainer", SERVICE_SDBCX_CONTAINER, SERVICE_SDBCX_TABLES)
-
-ObjectType OViewContainer::createObject(const ::rtl::OUString& _rName)
-{
- ObjectType xProp;
- if ( m_xMasterContainer.is() && m_xMasterContainer->hasByName(_rName) )
- xProp.set(m_xMasterContainer->getByName(_rName),UNO_QUERY);
-
- if ( !xProp.is() )
- {
- ::rtl::OUString sCatalog,sSchema,sTable;
- ::dbtools::qualifiedNameComponents(m_xMetaData,
- _rName,
- sCatalog,
- sSchema,
- sTable,
- ::dbtools::eInDataManipulation);
- return new View(m_xConnection,
- isCaseSensitive(),
- sCatalog,
- sSchema,
- sTable
- );
- }
-
- return xProp;
-}
-
-Reference< XPropertySet > OViewContainer::createDescriptor()
-{
- Reference< XPropertySet > xRet;
- // first we have to look if the master tables support this
- // and if so then create a table object as well with the master tables
- Reference<XColumnsSupplier > xMasterColumnsSup;
- Reference<XDataDescriptorFactory> xDataFactory(m_xMasterContainer,UNO_QUERY);
- if(xDataFactory.is())
- xRet = xDataFactory->createDataDescriptor();
- else
- xRet = new ::connectivity::sdbcx::OView(isCaseSensitive(),m_xMetaData);
-
- return xRet;
-}
-
-// XAppend
-ObjectType OViewContainer::appendObject( const ::rtl::OUString& _rForName, const Reference< XPropertySet >& descriptor )
-{
- // append the new table with a create stmt
- ::rtl::OUString aName = getString(descriptor->getPropertyValue(PROPERTY_NAME));
-
- Reference<XAppend> xAppend(m_xMasterContainer,UNO_QUERY);
- Reference< XPropertySet > xProp = descriptor;
- if(xAppend.is())
- {
- EnsureReset aReset(m_nInAppend);
-
- xAppend->appendByDescriptor(descriptor);
- if(m_xMasterContainer->hasByName(aName))
- xProp.set(m_xMasterContainer->getByName(aName),UNO_QUERY);
- }
- else
- {
- ::rtl::OUString sComposedName = ::dbtools::composeTableName( m_xMetaData, descriptor, ::dbtools::eInTableDefinitions, false, false, true );
- if(!sComposedName.getLength())
- ::dbtools::throwFunctionSequenceException(static_cast<XTypeProvider*>(static_cast<OFilteredContainer*>(this)));
-
- ::rtl::OUString sCommand;
- descriptor->getPropertyValue(PROPERTY_COMMAND) >>= sCommand;
-
- ::rtl::OUStringBuffer aSQL;
- aSQL.appendAscii( "CREATE VIEW " );
- aSQL.append ( sComposedName );
- aSQL.appendAscii( " AS " );
- aSQL.append ( sCommand );
-
- Reference<XConnection> xCon = m_xConnection;
- OSL_ENSURE(xCon.is(),"Connection is null!");
- if ( xCon.is() )
- {
- ::utl::SharedUNOComponent< XStatement > xStmt( xCon->createStatement() );
- if ( xStmt.is() )
- xStmt->execute( aSQL.makeStringAndClear() );
- }
- }
-
- return createObject( _rForName );
-}
-
-// XDrop
-void OViewContainer::dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName)
-{
- if ( !m_bInElementRemoved )
- {
- Reference< XDrop > xDrop(m_xMasterContainer,UNO_QUERY);
- if(xDrop.is())
- xDrop->dropByName(_sElementName);
- else
- {
- ::rtl::OUString sCatalog,sSchema,sTable,sComposedName;
-
- Reference<XPropertySet> xTable(getObject(_nPos),UNO_QUERY);
- if ( xTable.is() )
- {
- xTable->getPropertyValue(PROPERTY_CATALOGNAME) >>= sCatalog;
- xTable->getPropertyValue(PROPERTY_SCHEMANAME) >>= sSchema;
- xTable->getPropertyValue(PROPERTY_NAME) >>= sTable;
-
- sComposedName = ::dbtools::composeTableName( m_xMetaData, sCatalog, sSchema, sTable, sal_True, ::dbtools::eInTableDefinitions );
- }
-
- if(!sComposedName.getLength())
- ::dbtools::throwFunctionSequenceException(static_cast<XTypeProvider*>(static_cast<OFilteredContainer*>(this)));
-
- ::rtl::OUString aSql(RTL_CONSTASCII_USTRINGPARAM("DROP VIEW "));
- aSql += sComposedName;
- Reference<XConnection> xCon = m_xConnection;
- OSL_ENSURE(xCon.is(),"Connection is null!");
- if ( xCon.is() )
- {
- Reference< XStatement > xStmt = xCon->createStatement( );
- if(xStmt.is())
- xStmt->execute(aSql);
- ::comphelper::disposeComponent(xStmt);
- }
- }
- }
-}
-
-void SAL_CALL OViewContainer::elementInserted( const ContainerEvent& Event ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_rMutex);
- ::rtl::OUString sName;
- if ( ( Event.Accessor >>= sName )
- && ( !m_nInAppend )
- && ( !hasByName( sName ) )
- )
- {
- Reference<XPropertySet> xProp(Event.Element,UNO_QUERY);
- ::rtl::OUString sType;
- xProp->getPropertyValue(PROPERTY_TYPE) >>= sType;
- if ( sType == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("VIEW")) )
- insertElement(sName,createObject(sName));
- }
-}
-
-void SAL_CALL OViewContainer::elementRemoved( const ContainerEvent& Event ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_rMutex);
- ::rtl::OUString sName;
- if ( (Event.Accessor >>= sName) && hasByName(sName) )
- {
- m_bInElementRemoved = true;
- try
- {
- dropByName(sName);
- }
- catch(Exception&)
- {
- m_bInElementRemoved = sal_False;
- throw;
- }
- m_bInElementRemoved = false;
- }
-}
-
-void SAL_CALL OViewContainer::disposing( const ::com::sun::star::lang::EventObject& /*Source*/ ) throw (RuntimeException)
-{
-}
-
-void SAL_CALL OViewContainer::elementReplaced( const ContainerEvent& /*Event*/ ) throw (RuntimeException)
-{
-}
-
-::rtl::OUString OViewContainer::getTableTypeRestriction() const
-{
- // no restriction at all (other than the ones provided externally)
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "VIEW" ) );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/ComponentDefinition.cxx b/dbaccess/source/core/dataaccess/ComponentDefinition.cxx
deleted file mode 100644
index 255330b59..000000000
--- a/dbaccess/source/core/dataaccess/ComponentDefinition.cxx
+++ /dev/null
@@ -1,302 +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_dbaccess.hxx"
-
-#include "ComponentDefinition.hxx"
-#include "apitools.hxx"
-#include "dbastrings.hrc"
-#include "module_dba.hxx"
-
-#include <tools/debug.hxx>
-#include <osl/diagnose.h>
-#include <comphelper/sequence.hxx>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <comphelper/property.hxx>
-#include "definitioncolumn.hxx"
-#include <cppuhelper/implbase1.hxx>
-#include <comphelper/componentcontext.hxx>
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::lang;
-
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::container;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-extern "C" void SAL_CALL createRegistryInfo_OComponentDefinition()
-{
- static ::dba::OAutoRegistration< ::dbaccess::OComponentDefinition > aAutoRegistration;
-}
-
-namespace dbaccess
-{
-
-/// helper class for column property change events which holds the OComponentDefinition weak
-typedef ::cppu::WeakImplHelper1 < XPropertyChangeListener > TColumnPropertyListener_BASE;
-class OColumnPropertyListener : public TColumnPropertyListener_BASE
-{
- OComponentDefinition* m_pComponent;
-
- OColumnPropertyListener(const OColumnPropertyListener&);
- void operator =(const OColumnPropertyListener&);
-protected:
- virtual ~OColumnPropertyListener(){}
-public:
- OColumnPropertyListener(OComponentDefinition* _pComponent) : m_pComponent(_pComponent){}
- // XPropertyChangeListener
- virtual void SAL_CALL propertyChange( const PropertyChangeEvent& /*_rEvent*/ ) throw (RuntimeException)
- {
- if ( m_pComponent )
- m_pComponent->notifyDataSourceModified();
- }
- // XEventListener
- virtual void SAL_CALL disposing( const EventObject& /*_rSource*/ ) throw (RuntimeException)
- {
- }
- void clear() { m_pComponent = NULL; }
-};
-DBG_NAME(OComponentDefinition_Impl)
-OComponentDefinition_Impl::OComponentDefinition_Impl()
-{
- DBG_CTOR(OComponentDefinition_Impl,NULL);
-}
-
-OComponentDefinition_Impl::~OComponentDefinition_Impl()
-{
- DBG_DTOR(OComponentDefinition_Impl,NULL);
-}
-//==========================================================================
-//= OComponentDefinition
-//==========================================================================
-
-DBG_NAME(OComponentDefinition)
-
-void OComponentDefinition::registerProperties()
-{
- m_xColumnPropertyListener = ::comphelper::ImplementationReference<OColumnPropertyListener,XPropertyChangeListener>(new OColumnPropertyListener(this));
- OComponentDefinition_Impl& rDefinition( getDefinition() );
- ODataSettings::registerPropertiesFor( &rDefinition );
-
- registerProperty(PROPERTY_NAME, PROPERTY_ID_NAME, PropertyAttribute::BOUND | PropertyAttribute::READONLY|PropertyAttribute::CONSTRAINED,
- &rDefinition.m_aProps.aTitle, ::getCppuType(&rDefinition.m_aProps.aTitle));
-
- if ( m_bTable )
- {
- registerProperty(PROPERTY_SCHEMANAME, PROPERTY_ID_SCHEMANAME, PropertyAttribute::BOUND,
- &rDefinition.m_sSchemaName, ::getCppuType(&rDefinition.m_sSchemaName));
-
- registerProperty(PROPERTY_CATALOGNAME, PROPERTY_ID_CATALOGNAME, PropertyAttribute::BOUND,
- &rDefinition.m_sCatalogName, ::getCppuType(&rDefinition.m_sCatalogName));
- }
-}
-
-OComponentDefinition::OComponentDefinition(const Reference< XMultiServiceFactory >& _xORB
- ,const Reference< XInterface >& _xParentContainer
- ,const TContentPtr& _pImpl
- ,sal_Bool _bTable)
- :OContentHelper(_xORB,_xParentContainer,_pImpl)
- ,ODataSettings(OContentHelper::rBHelper,!_bTable)
- ,m_bTable(_bTable)
-{
- DBG_CTOR(OComponentDefinition, NULL);
- registerProperties();
-}
-
-OComponentDefinition::~OComponentDefinition()
-{
- DBG_DTOR(OComponentDefinition, NULL);
-}
-
-
-OComponentDefinition::OComponentDefinition( const Reference< XInterface >& _rxContainer
- ,const ::rtl::OUString& _rElementName
- ,const Reference< XMultiServiceFactory >& _xORB
- ,const TContentPtr& _pImpl
- ,sal_Bool _bTable)
- :OContentHelper(_xORB,_rxContainer,_pImpl)
- ,ODataSettings(OContentHelper::rBHelper,!_bTable)
- ,m_bTable(_bTable)
-{
- DBG_CTOR(OComponentDefinition, NULL);
- registerProperties();
-
- m_pImpl->m_aProps.aTitle = _rElementName;
- OSL_ENSURE(m_pImpl->m_aProps.aTitle.getLength() != 0, "OComponentDefinition::OComponentDefinition : invalid name !");
-}
-
-IMPLEMENT_IMPLEMENTATION_ID(OComponentDefinition);
-IMPLEMENT_GETTYPES3(OComponentDefinition,ODataSettings,OContentHelper,OComponentDefinition_BASE);
-IMPLEMENT_FORWARD_XINTERFACE3( OComponentDefinition,OContentHelper,ODataSettings,OComponentDefinition_BASE)
-
-::rtl::OUString OComponentDefinition::getImplementationName_static( ) throw(RuntimeException)
-{
- return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.dba.OComponentDefinition"));
-}
-
-::rtl::OUString SAL_CALL OComponentDefinition::getImplementationName( ) throw(RuntimeException)
-{
- return getImplementationName_static();
-}
-
-Sequence< ::rtl::OUString > OComponentDefinition::getSupportedServiceNames_static( ) throw(RuntimeException)
-{
- Sequence< ::rtl::OUString > aServices(2);
- aServices.getArray()[0] = SERVICE_SDB_TABLEDEFINITION;
- aServices.getArray()[1] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ucb.Content"));
-
- return aServices;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL OComponentDefinition::getSupportedServiceNames( ) throw(RuntimeException)
-{
- return getSupportedServiceNames_static();
-}
-
-Reference< XInterface > OComponentDefinition::Create( const Reference< XComponentContext >& _rxContext )
-{
- ::comphelper::ComponentContext aContext( _rxContext );
- return *(new OComponentDefinition( aContext.getLegacyServiceFactory(), NULL, TContentPtr( new OComponentDefinition_Impl ) ) );
-}
-
-void SAL_CALL OComponentDefinition::disposing()
-{
- OContentHelper::disposing();
- if ( m_pColumns.get() )
- m_pColumns->disposing();
- m_xColumnPropertyListener->clear();
- m_xColumnPropertyListener.dispose();
-}
-
-IPropertyArrayHelper& OComponentDefinition::getInfoHelper()
-{
- return *getArrayHelper();
-}
-
-IPropertyArrayHelper* OComponentDefinition::createArrayHelper( ) const
-{
- Sequence< Property > aProps;
- describeProperties(aProps);
- return new OPropertyArrayHelper(aProps);
-}
-
-Reference< XPropertySetInfo > SAL_CALL OComponentDefinition::getPropertySetInfo( ) throw(RuntimeException)
-{
- Reference<XPropertySetInfo> xInfo( createPropertySetInfo( getInfoHelper() ) );
- return xInfo;
-}
-
-::rtl::OUString OComponentDefinition::determineContentType() const
-{
- return m_bTable
- ? ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "application/vnd.org.openoffice.DatabaseTable" ) )
- : ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "application/vnd.org.openoffice.DatabaseCommandDefinition" ) );
-}
-
-Reference< XNameAccess> OComponentDefinition::getColumns() throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(OContentHelper::rBHelper.bDisposed);
-
- if ( !m_pColumns.get() )
- {
- ::std::vector< ::rtl::OUString> aNames;
-
- const OComponentDefinition_Impl& rDefinition( getDefinition() );
- aNames.reserve( rDefinition.size() );
-
- OComponentDefinition_Impl::const_iterator aIter = rDefinition.begin();
- OComponentDefinition_Impl::const_iterator aEnd = rDefinition.end();
- for ( ; aIter != aEnd; ++aIter )
- aNames.push_back( aIter->first );
-
- m_pColumns.reset( new OColumns( *this, m_aMutex, sal_True, aNames, this, NULL, sal_True, sal_False, sal_False ) );
- m_pColumns->setParent( *this );
- }
- return m_pColumns.get();
-}
-
-OColumn* OComponentDefinition::createColumn(const ::rtl::OUString& _rName) const
-{
- const OComponentDefinition_Impl& rDefinition( getDefinition() );
- OComponentDefinition_Impl::const_iterator aFind = rDefinition.find( _rName );
- if ( aFind != rDefinition.end() )
- {
- aFind->second->addPropertyChangeListener(::rtl::OUString(),m_xColumnPropertyListener.getRef());
- return new OTableColumnWrapper( aFind->second, aFind->second, true );
- }
- OSL_FAIL( "OComponentDefinition::createColumn: is this a valid case?" );
- // This here is the last place creating a OTableColumn, and somehow /me thinks it is not needed ...
- return new OTableColumn( _rName );
-}
-
-Reference< XPropertySet > OComponentDefinition::createColumnDescriptor()
-{
- return new OTableColumnDescriptor( true );
-}
-
-void OComponentDefinition::setFastPropertyValue_NoBroadcast(sal_Int32 nHandle,const Any& rValue) throw (Exception)
-{
- ODataSettings::setFastPropertyValue_NoBroadcast(nHandle,rValue);
- notifyDataSourceModified();
-}
-
-void OComponentDefinition::columnDropped(const ::rtl::OUString& _sName)
-{
- getDefinition().erase( _sName );
- notifyDataSourceModified();
-}
-
-void OComponentDefinition::columnAppended( const Reference< XPropertySet >& _rxSourceDescriptor )
-{
- ::rtl::OUString sName;
- _rxSourceDescriptor->getPropertyValue( PROPERTY_NAME ) >>= sName;
-
- Reference<XPropertySet> xColDesc = new OTableColumnDescriptor( true );
- ::comphelper::copyProperties( _rxSourceDescriptor, xColDesc );
- getDefinition().insert( sName, xColDesc );
-
- // formerly, here was a setParent at the xColDesc. The parent used was an adapter (ChildHelper_Impl)
- // which held another XChild weak, and forwarded all getParent requests to this other XChild.
- // m_pColumns was used for this. This was nonsense, since m_pColumns dies when our instance dies,
- // but xColDesc will live longer than this. So effectively, the setParent call was pretty useless.
- //
- // The intention for this parenting was that the column descriptor is able to find the data source,
- // by traveling up the parent hierachy until there's an XDataSource. This didn't work (which
- // for instance causes #i65023#). We need another way to properly ensure this.
-
- notifyDataSourceModified();
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/ComponentDefinition.hxx b/dbaccess/source/core/dataaccess/ComponentDefinition.hxx
deleted file mode 100644
index 6da15cd19..000000000
--- a/dbaccess/source/core/dataaccess/ComponentDefinition.hxx
+++ /dev/null
@@ -1,184 +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.
- *
- ************************************************************************/
-
-#ifndef DBA_COREDATAACESS_COMPONENTDEFINITION_HXX
-#define DBA_COREDATAACESS_COMPONENTDEFINITION_HXX
-
-#include "commandbase.hxx"
-#include <comphelper/propertycontainer.hxx>
-#include <com/sun/star/sdbcx/XRename.hpp>
-#include <cppuhelper/implbase1.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include "datasettings.hxx"
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/beans/XPropertyChangeListener.hpp>
-#include <com/sun/star/uno/XComponentContext.hpp>
-#include "ContentHelper.hxx"
-#include "apitools.hxx"
-#include <column.hxx>
-#include <comphelper/implementationreference.hxx>
-
-#include <memory>
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- typedef ::cppu::ImplHelper1< ::com::sun::star::sdbcx::XColumnsSupplier > OComponentDefinition_BASE;
-
- class OComponentDefinition_Impl : public OContentHelper_Impl
- ,public ODataSettings_Base
- {
- public:
- typedef ::std::map < ::rtl::OUString
- , ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
- > Columns;
- typedef Columns::iterator iterator;
- typedef Columns::const_iterator const_iterator;
-
- private:
- Columns m_aColumns;
-
- public:
- ::rtl::OUString m_sSchemaName;
- ::rtl::OUString m_sCatalogName;
-
- public:
- OComponentDefinition_Impl();
- virtual ~OComponentDefinition_Impl();
-
- inline size_t size() const { return m_aColumns.size(); }
-
- inline const_iterator begin() const { return m_aColumns.begin(); }
- inline const_iterator end() const { return m_aColumns.end(); }
-
- inline const_iterator find( const ::rtl::OUString& _rName ) const { return m_aColumns.find( _rName ); }
-
- inline void erase( const ::rtl::OUString& _rName ) { m_aColumns.erase( _rName ); }
-
- inline void insert( const ::rtl::OUString& _rName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxColumn )
- {
- OSL_PRECOND( m_aColumns.find( _rName ) == m_aColumns.end(), "OComponentDefinition_Impl::insert: there's already an element with this name!" );
- m_aColumns.insert( Columns::value_type( _rName, _rxColumn ) );
- }
- };
-
-class OColumnPropertyListener;
-//=========================================================================
-//= OComponentDefinition - a database "document" which describes a query
-//=========================================================================
-class OComponentDefinition :public OContentHelper
- ,public ODataSettings
- ,public IColumnFactory
- ,public OComponentDefinition_BASE
- ,public ::comphelper::OPropertyArrayUsageHelper< OComponentDefinition >
-{
- OComponentDefinition();
-
-protected:
- ::std::auto_ptr< OColumns > m_pColumns;
- ::comphelper::ImplementationReference< OColumnPropertyListener,::com::sun::star::beans::XPropertyChangeListener>
- m_xColumnPropertyListener;
- sal_Bool m_bTable;
-
- virtual ~OComponentDefinition();
- virtual void SAL_CALL disposing();
-
-
-protected:
- OComponentDefinition(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xParentContainer
- ,const TContentPtr& _pImpl
- ,sal_Bool _bTable = sal_True);
-
- const OComponentDefinition_Impl& getDefinition() const { return dynamic_cast< const OComponentDefinition_Impl& >( *m_pImpl.get() ); }
- OComponentDefinition_Impl& getDefinition() { return dynamic_cast< OComponentDefinition_Impl& >( *m_pImpl.get() ); }
-public:
-
- OComponentDefinition(
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContainer
- ,const ::rtl::OUString& _rElementName
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&
- ,const TContentPtr& _pImpl
- ,sal_Bool _bTable = sal_True
- );
-
-// com::sun::star::lang::XTypeProvider
- DECLARE_TYPEPROVIDER( );
-
-// ::com::sun::star::uno::XInterface
- DECLARE_XINTERFACE( )
-
-// ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::rtl::OUString getImplementationName_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
- Create(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >&);
-
-// ::com::sun::star::beans::XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XColumnsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getColumns( ) throw (::com::sun::star::uno::RuntimeException);
-
- // OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- // IColumnFactory
- virtual OColumn* createColumn(const ::rtl::OUString& _rName) const;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createColumnDescriptor();
- virtual void columnAppended( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxSourceDescriptor );
- virtual void columnDropped(const ::rtl::OUString& _sName);
- virtual void notifyDataSourceModified() { OContentHelper::notifyDataSourceModified(); }
-
-protected:
-// OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue) throw (::com::sun::star::uno::Exception);
-
- // OContentHelper overridables
- virtual ::rtl::OUString determineContentType() const;
-
-private:
- void registerProperties();
-};
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // DBA_COREDATAACESS_COMPONENTDEFINITION_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/ContentHelper.cxx b/dbaccess/source/core/dataaccess/ContentHelper.cxx
deleted file mode 100644
index e05c1c472..000000000
--- a/dbaccess/source/core/dataaccess/ContentHelper.cxx
+++ /dev/null
@@ -1,675 +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_dbaccess.hxx"
-#include "ContentHelper.hxx"
-#include <ucbhelper/cancelcommandexecution.hxx>
-#include <comphelper/property.hxx>
-#include <com/sun/star/ucb/UnsupportedCommandException.hpp>
-#include <com/sun/star/lang/IllegalArgumentException.hpp>
-#include <com/sun/star/lang/IllegalAccessException.hpp>
-#include <com/sun/star/io/XOutputStream.hpp>
-#include <com/sun/star/io/XActiveDataSink.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <ucbhelper/propertyvalueset.hxx>
-#include <ucbhelper/contentidentifier.hxx>
-#include "myucp_resultset.hxx"
-#include <com/sun/star/container/XNameContainer.hpp>
-#include "sdbcoretools.hxx"
-#include "dbastrings.hrc"
-#include <tools/debug.hxx>
-
-
-namespace dbaccess
-{
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::io;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::embed;
-using namespace ::com::sun::star::container;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-DBG_NAME(OContentHelper_Impl)
-OContentHelper_Impl::OContentHelper_Impl()
-{
- DBG_CTOR(OContentHelper_Impl,NULL);
-}
-
-OContentHelper_Impl::~OContentHelper_Impl()
-{
- DBG_DTOR(OContentHelper_Impl,NULL);
-}
-
-OContentHelper::OContentHelper(const Reference< XMultiServiceFactory >& _xORB
- ,const Reference< XInterface >& _xParentContainer
- ,const TContentPtr& _pImpl)
- : OContentHelper_COMPBASE(m_aMutex)
- ,m_aContentListeners(m_aMutex)
- ,m_aPropertyChangeListeners(m_aMutex)
- ,m_xParentContainer(_xParentContainer)
- ,m_aContext( _xORB )
- ,m_aErrorHelper( m_aContext )
- ,m_pImpl(_pImpl)
- ,m_nCommandId(0)
-{
-}
-
-void SAL_CALL OContentHelper::disposing()
-{
- ::osl::MutexGuard aGuard(m_aMutex);
-
- // say goodbye to our listeners
- EventObject aEvt(*this);
- m_aContentListeners.disposeAndClear(aEvt);
-
- m_xParentContainer = NULL;
-}
-
-IMPLEMENT_SERVICE_INFO1(OContentHelper,"com.sun.star.comp.sdb.Content","com.sun.star.ucb.Content");
-IMPLEMENT_IMPLEMENTATION_ID(OContentHelper)
-
-// XContent
-Reference< XContentIdentifier > SAL_CALL OContentHelper::getIdentifier( ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- ::rtl::OUStringBuffer aIdentifier;
- aIdentifier.appendAscii( "private:" );
- aIdentifier.append( impl_getHierarchicalName( true ) );
- return new ::ucbhelper::ContentIdentifier( m_aContext.getLegacyServiceFactory(), aIdentifier.makeStringAndClear() );
-}
-
-::rtl::OUString OContentHelper::impl_getHierarchicalName( bool _includingRootContainer ) const
-{
- ::rtl::OUStringBuffer aHierarchicalName( m_pImpl->m_aProps.aTitle );
- Reference< XInterface > xParent = m_xParentContainer;
- while( xParent.is() )
- {
- Reference<XPropertySet> xProp( xParent, UNO_QUERY );
- Reference< XChild > xChild( xParent, UNO_QUERY );
- xParent.set( xChild.is() ? xChild->getParent() : Reference< XInterface >(), UNO_QUERY );
- if ( xProp.is() && xParent.is() )
- {
- ::rtl::OUString sName;
- xProp->getPropertyValue( PROPERTY_NAME ) >>= sName;
-
- ::rtl::OUString sPrevious = aHierarchicalName.makeStringAndClear();
- aHierarchicalName.append( sName );
- aHierarchicalName.append( sal_Unicode( '/' ) );
- aHierarchicalName.append( sPrevious );
- }
- }
- ::rtl::OUString sHierarchicalName( aHierarchicalName.makeStringAndClear() );
- if ( !_includingRootContainer )
- sHierarchicalName = sHierarchicalName.copy( sHierarchicalName.indexOf( '/' ) + 1 );
- return sHierarchicalName;
-}
-
-::rtl::OUString SAL_CALL OContentHelper::getContentType() throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
-
- if ( !m_pImpl->m_aProps.aContentType )
- { // content type not yet retrieved
- m_pImpl->m_aProps.aContentType.reset( determineContentType() );
- }
-
- return *m_pImpl->m_aProps.aContentType;
-}
-
-void SAL_CALL OContentHelper::addContentEventListener( const Reference< XContentEventListener >& _rxListener ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- if ( _rxListener.is() )
- m_aContentListeners.addInterface(_rxListener);
-}
-
-void SAL_CALL OContentHelper::removeContentEventListener( const Reference< XContentEventListener >& _rxListener ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- if (_rxListener.is())
- m_aContentListeners.removeInterface(_rxListener);
-}
-
-// XCommandProcessor
-sal_Int32 SAL_CALL OContentHelper::createCommandIdentifier( ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- // Just increase counter on every call to generate an identifier.
- return ++m_nCommandId;
-}
-
-Any SAL_CALL OContentHelper::execute( const Command& aCommand, sal_Int32 /*CommandId*/, const Reference< XCommandEnvironment >& Environment ) throw (Exception, CommandAbortedException, RuntimeException)
-{
- Any aRet;
- if ( aCommand.Name.compareToAscii( "getPropertyValues" ) == 0 )
- {
- //////////////////////////////////////////////////////////////////
- // getPropertyValues
- //////////////////////////////////////////////////////////////////
-
- Sequence< Property > Properties;
- if ( !( aCommand.Argument >>= Properties ) )
- {
- OSL_FAIL( "Wrong argument type!" );
- ucbhelper::cancelCommandExecution(
- makeAny( IllegalArgumentException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ),
- -1 ) ),
- Environment );
- // Unreachable
- }
- aRet <<= getPropertyValues( Properties);
- }
- else if ( aCommand.Name.compareToAscii( "setPropertyValues" ) == 0 )
- {
- //////////////////////////////////////////////////////////////////
- // setPropertyValues
- //////////////////////////////////////////////////////////////////
-
- Sequence< PropertyValue > aProperties;
- if ( !( aCommand.Argument >>= aProperties ) )
- {
- OSL_FAIL( "Wrong argument type!" );
- ucbhelper::cancelCommandExecution(
- makeAny( IllegalArgumentException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ),
- -1 ) ),
- Environment );
- // Unreachable
- }
-
- if ( !aProperties.getLength() )
- {
- OSL_FAIL( "No properties!" );
- ucbhelper::cancelCommandExecution(
- makeAny( IllegalArgumentException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ),
- -1 ) ),
- Environment );
- // Unreachable
- }
-
- aRet <<= setPropertyValues( aProperties, Environment );
- }
- else if ( aCommand.Name.compareToAscii( "getPropertySetInfo" ) == 0 )
- {
- //////////////////////////////////////////////////////////////////
- // getPropertySetInfo
- //////////////////////////////////////////////////////////////////
-
- Reference<XPropertySet> xProp(*this,UNO_QUERY);
- if ( xProp.is() )
- aRet <<= xProp->getPropertySetInfo();
- // aRet <<= getPropertySetInfo(); // TODO
- }
- else
- {
- //////////////////////////////////////////////////////////////////
- // Unsupported command
- //////////////////////////////////////////////////////////////////
-
- OSL_FAIL( "Content::execute - unsupported command!" );
-
- ucbhelper::cancelCommandExecution(
- makeAny( UnsupportedCommandException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ) ) ),
- Environment );
- // Unreachable
- }
-
- return aRet;
-}
-
-void SAL_CALL OContentHelper::abort( sal_Int32 /*CommandId*/ ) throw (RuntimeException)
-{
-}
-
-// XPropertiesChangeNotifier
-void SAL_CALL OContentHelper::addPropertiesChangeListener( const Sequence< ::rtl::OUString >& PropertyNames, const Reference< XPropertiesChangeListener >& Listener ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- sal_Int32 nCount = PropertyNames.getLength();
- if ( !nCount )
- {
- // Note: An empty sequence means a listener for "all" properties.
- m_aPropertyChangeListeners.addInterface(::rtl::OUString(), Listener );
- }
- else
- {
- const ::rtl::OUString* pSeq = PropertyNames.getConstArray();
-
- for ( sal_Int32 n = 0; n < nCount; ++n )
- {
- const ::rtl::OUString& rName = pSeq[ n ];
- if ( rName.getLength() )
- m_aPropertyChangeListeners.addInterface(rName, Listener );
- }
- }
-}
-
-void SAL_CALL OContentHelper::removePropertiesChangeListener( const Sequence< ::rtl::OUString >& PropertyNames, const Reference< XPropertiesChangeListener >& Listener ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- sal_Int32 nCount = PropertyNames.getLength();
- if ( !nCount )
- {
- // Note: An empty sequence means a listener for "all" properties.
- m_aPropertyChangeListeners.removeInterface( ::rtl::OUString(), Listener );
- }
- else
- {
- const ::rtl::OUString* pSeq = PropertyNames.getConstArray();
-
- for ( sal_Int32 n = 0; n < nCount; ++n )
- {
- const ::rtl::OUString& rName = pSeq[ n ];
- if ( rName.getLength() )
- m_aPropertyChangeListeners.removeInterface( rName, Listener );
- }
- }
-}
-
-// XPropertyContainer
-void SAL_CALL OContentHelper::addProperty( const ::rtl::OUString& /*Name*/, sal_Int16 /*Attributes*/, const Any& /*DefaultValue*/ ) throw (PropertyExistException, IllegalTypeException, IllegalArgumentException, RuntimeException)
-{
- OSL_FAIL( "OContentHelper::addProperty: not implemented!" );
-}
-
-void SAL_CALL OContentHelper::removeProperty( const ::rtl::OUString& /*Name*/ ) throw (UnknownPropertyException, NotRemoveableException, RuntimeException)
-{
- OSL_FAIL( "OContentHelper::removeProperty: not implemented!" );
-}
-
-// XInitialization
-void SAL_CALL OContentHelper::initialize( const Sequence< Any >& _aArguments ) throw(Exception, RuntimeException)
-{
- const Any* pBegin = _aArguments.getConstArray();
- const Any* pEnd = pBegin + _aArguments.getLength();
- PropertyValue aValue;;
- for(;pBegin != pEnd;++pBegin)
- {
- *pBegin >>= aValue;
- if ( aValue.Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("Parent")) )
- {
- m_xParentContainer.set(aValue.Value,UNO_QUERY);
- }
- else if ( aValue.Name.equalsAscii(PROPERTY_NAME) )
- {
- aValue.Value >>= m_pImpl->m_aProps.aTitle;
- }
- else if ( aValue.Name.equalsAscii(PROPERTY_PERSISTENT_NAME) )
- {
- aValue.Value >>= m_pImpl->m_aProps.sPersistentName;
- }
- }
-}
-
-Sequence< Any > OContentHelper::setPropertyValues(const Sequence< PropertyValue >& rValues,const Reference< XCommandEnvironment >& /*xEnv*/ )
-{
- osl::ClearableGuard< osl::Mutex > aGuard( m_aMutex );
-
- Sequence< Any > aRet( rValues.getLength() );
- Sequence< PropertyChangeEvent > aChanges( rValues.getLength() );
- sal_Int32 nChanged = 0;
-
- PropertyChangeEvent aEvent;
- aEvent.Source = static_cast< cppu::OWeakObject * >( this );
- aEvent.Further = sal_False;
- aEvent.PropertyHandle = -1;
-
- const PropertyValue* pValues = rValues.getConstArray();
- sal_Int32 nCount = rValues.getLength();
-
- for ( sal_Int32 n = 0; n < nCount; ++n )
- {
- const PropertyValue& rValue = pValues[ n ];
-
- if ( rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ContentType" ) ) )
- {
- // Read-only property!
- aRet[ n ] <<= IllegalAccessException(
- ::rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("Property is read-only!")
- ),
- static_cast< cppu::OWeakObject * >( this ) );
- }
- else if ( rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsDocument" ) ) )
- {
- // Read-only property!
- aRet[ n ] <<= IllegalAccessException(
- ::rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("Property is read-only!")
- ),
- static_cast< cppu::OWeakObject * >( this ) );
- }
- else if ( rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsFolder" ) ) )
- {
- // Read-only property!
- aRet[ n ] <<= IllegalAccessException(
- ::rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("Property is read-only!")
- ),
- static_cast< cppu::OWeakObject * >( this ) );
- }
- else if ( rValue.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Title" ) ) )
- {
- rtl::OUString aNewValue;
- if ( rValue.Value >>= aNewValue )
- {
- if ( aNewValue != m_pImpl->m_aProps.aTitle )
- {
- aEvent.PropertyName = rValue.Name;
- aEvent.OldValue = makeAny( m_pImpl->m_aProps.aTitle );
-
- try
- {
- impl_rename_throw( aNewValue ,false);
- OSL_ENSURE( m_pImpl->m_aProps.aTitle == aNewValue, "OContentHelper::setPropertyValues('Title'): rename did not work!" );
-
- aEvent.NewValue = makeAny( aNewValue );
- aChanges.getArray()[ nChanged ] = aEvent;
- nChanged++;
- }
- catch( const Exception& )
- {
- OSL_FAIL( "OContentHelper::setPropertyValues('Title'): caught an exception while renaming!" );
- }
- }
- else
- {
- // Old value equals new value. No error!
- }
- }
- else
- {
- aRet[ n ] <<= IllegalTypeException(
- ::rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("Property value has wrong type!")
- ),
- static_cast< cppu::OWeakObject * >( this ) );
- }
- }
-
- else
- {
- aRet[ n ] <<= Exception(
- ::rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("No property set for storing the value!")
- ),
- static_cast< cppu::OWeakObject * >( this ) );
- }
- }
-
- if ( nChanged > 0 )
- {
- notifyDataSourceModified();
- aGuard.clear();
- aChanges.realloc( nChanged );
- notifyPropertiesChange( aChanges );
- }
-
- return aRet;
-}
-
-//=========================================================================
-// static
-Reference< XRow > OContentHelper::getPropertyValues( const Sequence< Property >& rProperties)
-{
- // Note: Empty sequence means "get values of all supported properties".
-
- rtl::Reference< ::ucbhelper::PropertyValueSet > xRow = new ::ucbhelper::PropertyValueSet( m_aContext.getLegacyServiceFactory() );
-
- sal_Int32 nCount = rProperties.getLength();
- if ( nCount )
- {
- const Property* pProps = rProperties.getConstArray();
- for ( sal_Int32 n = 0; n < nCount; ++n )
- {
- const Property& rProp = pProps[ n ];
-
- // Process Core properties.
-
- if ( rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "ContentType" ) ) )
- {
- xRow->appendString ( rProp, getContentType() );
- }
- else if ( rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Title" ) ) )
- {
- xRow->appendString ( rProp, m_pImpl->m_aProps.aTitle );
- }
- else if ( rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsDocument" ) ) )
- {
- xRow->appendBoolean( rProp, m_pImpl->m_aProps.bIsDocument );
- }
- else if ( rProp.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "IsFolder" ) ) )
- {
- xRow->appendBoolean( rProp, m_pImpl->m_aProps.bIsFolder );
- }
- else
- xRow->appendVoid(rProp);
- }
- }
- else
- {
- // Append all Core Properties.
- xRow->appendString (
- Property( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ContentType")),
- -1,
- getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- PropertyAttribute::BOUND
- | PropertyAttribute::READONLY ),
- getContentType() );
- xRow->appendString (
- Property( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Title" )),
- -1,
- getCppuType( static_cast< const rtl::OUString * >( 0 ) ),
- PropertyAttribute::BOUND ),
- m_pImpl->m_aProps.aTitle );
- xRow->appendBoolean(
- Property( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IsDocument")),
- -1,
- getCppuBooleanType(),
- PropertyAttribute::BOUND
- | PropertyAttribute::READONLY ),
- m_pImpl->m_aProps.bIsDocument );
- xRow->appendBoolean(
- Property( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IsFolder")),
- -1,
- getCppuBooleanType(),
- PropertyAttribute::BOUND
- | PropertyAttribute::READONLY ),
- m_pImpl->m_aProps.bIsFolder );
-
- // @@@ Append other properties supported directly.
- }
-
- return Reference< XRow >( xRow.get() );
-}
-
-void OContentHelper::notifyPropertiesChange( const Sequence< PropertyChangeEvent >& evt ) const
-{
-
- sal_Int32 nCount = evt.getLength();
- if ( nCount )
- {
- // First, notify listeners interested in changes of every property.
- OInterfaceContainerHelper* pAllPropsContainer = m_aPropertyChangeListeners.getContainer( ::rtl::OUString() );
- if ( pAllPropsContainer )
- {
- OInterfaceIteratorHelper aIter( *pAllPropsContainer );
- while ( aIter.hasMoreElements() )
- {
- // Propagate event.
- Reference< XPropertiesChangeListener > xListener( aIter.next(), UNO_QUERY );
- if ( xListener.is() )
- xListener->propertiesChange( evt );
- }
- }
-
- typedef Sequence< PropertyChangeEvent > PropertyEventSequence;
- typedef ::std::map< XPropertiesChangeListener*, PropertyEventSequence* > PropertiesEventListenerMap;
- PropertiesEventListenerMap aListeners;
-
- const PropertyChangeEvent* propertyChangeEvent = evt.getConstArray();
-
- for ( sal_Int32 n = 0; n < nCount; ++n, ++propertyChangeEvent )
- {
- const PropertyChangeEvent& rEvent = *propertyChangeEvent;
- const ::rtl::OUString& rName = rEvent.PropertyName;
-
- OInterfaceContainerHelper* pPropsContainer = m_aPropertyChangeListeners.getContainer( rName );
- if ( pPropsContainer )
- {
- OInterfaceIteratorHelper aIter( *pPropsContainer );
- while ( aIter.hasMoreElements() )
- {
- PropertyEventSequence* propertyEvents = NULL;
-
- XPropertiesChangeListener* pListener = static_cast< XPropertiesChangeListener * >( aIter.next() );
- PropertiesEventListenerMap::iterator it = aListeners.find( pListener );
- if ( it == aListeners.end() )
- {
- // Not in map - create and insert new entry.
- propertyEvents = new PropertyEventSequence( nCount );
- aListeners[ pListener ] = propertyEvents;
- }
- else
- propertyEvents = (*it).second;
-
- if ( propertyEvents )
- (*propertyEvents)[n] = rEvent;
- }
- }
- }
-
- // Notify listeners.
- PropertiesEventListenerMap::iterator it = aListeners.begin();
- while ( !aListeners.empty() )
- {
- XPropertiesChangeListener* pListener =
- static_cast< XPropertiesChangeListener * >( (*it).first );
- PropertyEventSequence* pSeq = (*it).second;
-
- // Remove current element.
- aListeners.erase( it );
-
- // Propagate event.
- pListener->propertiesChange( *pSeq );
-
- delete pSeq;
-
- it = aListeners.begin();
- }
- }
-}
-
-// com::sun::star::lang::XUnoTunnel
-sal_Int64 OContentHelper::getSomething( const Sequence< sal_Int8 > & rId ) throw (RuntimeException)
-{
- if (rId.getLength() == 16 && 0 == rtl_compareMemory(getUnoTunnelImplementationId().getConstArray(), rId.getConstArray(), 16 ) )
- return reinterpret_cast<sal_Int64>(this);
-
- return 0;
-}
-
-OContentHelper* OContentHelper::getImplementation( const Reference< XInterface >& _rxComponent )
-{
- OContentHelper* pContent( NULL );
-
- Reference< XUnoTunnel > xUnoTunnel( _rxComponent, UNO_QUERY );
- if ( xUnoTunnel.is() )
- pContent = reinterpret_cast< OContentHelper* >( xUnoTunnel->getSomething( getUnoTunnelImplementationId() ) );
-
- return pContent;
-}
-
-Reference< XInterface > SAL_CALL OContentHelper::getParent( ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- return m_xParentContainer;
-}
-
-void SAL_CALL OContentHelper::setParent( const Reference< XInterface >& _xParent ) throw (NoSupportException, RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- m_xParentContainer = _xParent;
-}
-
-void OContentHelper::impl_rename_throw(const ::rtl::OUString& _sNewName,bool _bNotify )
-{
- osl::ClearableGuard< osl::Mutex > aGuard(m_aMutex);
- if ( _sNewName.equals( m_pImpl->m_aProps.aTitle ) )
- return;
- try
- {
- Sequence< PropertyChangeEvent > aChanges( 1 );
-
- aChanges[0].Source = static_cast< cppu::OWeakObject * >( this );
- aChanges[0].Further = sal_False;
- aChanges[0].PropertyName = PROPERTY_NAME;
- aChanges[0].PropertyHandle = PROPERTY_ID_NAME;
- aChanges[0].OldValue <<= m_pImpl->m_aProps.aTitle;
- aChanges[0].NewValue <<= _sNewName;
-
- aGuard.clear();
-
- m_pImpl->m_aProps.aTitle = _sNewName;
- if ( _bNotify )
- notifyPropertiesChange( aChanges );
- notifyDataSourceModified();
- }
- catch(const PropertyVetoException&)
- {
- throw ElementExistException(_sNewName,*this);
- }
-}
-
-void SAL_CALL OContentHelper::rename( const ::rtl::OUString& newName ) throw (SQLException, ElementExistException, RuntimeException)
-{
-
- impl_rename_throw(newName);
-
-}
-
-void OContentHelper::notifyDataSourceModified()
-{
- ::dbaccess::notifyDataSourceModified(m_xParentContainer,sal_True);
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/ModelImpl.cxx b/dbaccess/source/core/dataaccess/ModelImpl.cxx
deleted file mode 100644
index c9987df95..000000000
--- a/dbaccess/source/core/dataaccess/ModelImpl.cxx
+++ /dev/null
@@ -1,1436 +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_dbaccess.hxx"
-
-#include "commandcontainer.hxx"
-#include "connection.hxx"
-#include "core_resource.hrc"
-#include "core_resource.hxx"
-#include "databasecontext.hxx"
-#include "databasedocument.hxx"
-#include "datasource.hxx"
-#include "dbastrings.hrc"
-#include "ModelImpl.hxx"
-#include "userinformation.hxx"
-#include "sdbcoretools.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/container/XSet.hpp>
-#include <com/sun/star/document/MacroExecMode.hpp>
-#include <com/sun/star/embed/XTransactedObject.hpp>
-#include <com/sun/star/embed/XTransactionBroadcaster.hpp>
-#include <com/sun/star/sdb/BooleanComparisonMode.hpp>
-#include <com/sun/star/script/DocumentScriptLibraryContainer.hpp>
-#include <com/sun/star/script/DocumentDialogLibraryContainer.hpp>
-#include <com/sun/star/lang/WrappedTargetRuntimeException.hpp>
-#include <com/sun/star/form/XLoadable.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/interaction.hxx>
-#include <comphelper/mediadescriptor.hxx>
-#include <comphelper/seqstream.hxx>
-#include <comphelper/sequence.hxx>
-#include <connectivity/dbexception.hxx>
-#include <cppuhelper/exc_hlp.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <rtl/digest.h>
-#include <sfx2/signaturestate.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <osl/diagnose.h>
-#include <tools/errcode.hxx>
-#include <tools/urlobj.hxx>
-#include <unotools/sharedunocomponent.hxx>
-
-#include <algorithm>
-
-using namespace ::com::sun::star::document;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::embed;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::io;
-using namespace ::com::sun::star::task;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::view;
-using namespace ::com::sun::star::task;
-using namespace ::com::sun::star::reflection;
-using namespace ::com::sun::star::script;
-using namespace ::cppu;
-using namespace ::osl;
-using namespace ::dbtools;
-using namespace ::comphelper;
-namespace css = ::com::sun::star;
-
-namespace dbaccess
-{
-
-//============================================================
-//= VosMutexFacade
-//============================================================
-VosMutexFacade::VosMutexFacade( ::osl::Mutex& _rMutex )
- :m_rMutex( _rMutex )
-{
-}
-
-void SAL_CALL VosMutexFacade::acquire()
-{
- m_rMutex.acquire();
-}
-
-sal_Bool SAL_CALL VosMutexFacade::tryToAcquire()
-{
- return m_rMutex.tryToAcquire();
-}
-
-void SAL_CALL VosMutexFacade::release()
-{
- m_rMutex.release();
-}
-
-//============================================================
-//= DocumentStorageAccess
-//============================================================
-DBG_NAME( DocumentStorageAccess )
-class DocumentStorageAccess : public ::cppu::WeakImplHelper2< XDocumentSubStorageSupplier
- , XTransactionListener >
-{
- typedef ::std::map< ::rtl::OUString, Reference< XStorage > > NamedStorages;
-
- ::osl::Mutex m_aMutex;
- /// all sub storages which we ever gave to the outer world
- NamedStorages m_aExposedStorages;
- ODatabaseModelImpl* m_pModelImplementation;
- bool m_bPropagateCommitToRoot;
- bool m_bDisposingSubStorages;
-
-public:
- DocumentStorageAccess( ODatabaseModelImpl& _rModelImplementation )
- :m_pModelImplementation( &_rModelImplementation )
- ,m_bPropagateCommitToRoot( true )
- ,m_bDisposingSubStorages( false )
- {
- DBG_CTOR( DocumentStorageAccess, NULL );
- }
-
-protected:
- ~DocumentStorageAccess()
- {
- DBG_DTOR( DocumentStorageAccess, NULL );
- }
-
-public:
- void dispose();
-
- // XDocumentSubStorageSupplier
- virtual Reference< XStorage > SAL_CALL getDocumentSubStorage( const ::rtl::OUString& aStorageName, ::sal_Int32 _nMode ) throw (RuntimeException);
- virtual Sequence< ::rtl::OUString > SAL_CALL getDocumentSubStoragesNames( ) throw (IOException, RuntimeException);
-
- // XTransactionListener
- virtual void SAL_CALL preCommit( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL commited( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL preRevert( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL reverted( const ::com::sun::star::lang::EventObject& aEvent ) throw (::com::sun::star::uno::RuntimeException);
-
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
-
- /// disposes all storages managed by this instance
- void disposeStorages();
-
- /// disposes all known sub storages
- void commitStorages() SAL_THROW(( IOException, RuntimeException ));
-
- /// commits the dedicated "database" storage
- bool commitEmbeddedStorage( bool _bPreventRootCommits );
-
-private:
- /** opens the sub storage with the given name, in the given mode
- */
- Reference< XStorage > impl_openSubStorage_nothrow( const ::rtl::OUString& _rStorageName, sal_Int32 _nMode );
-
- void impl_suspendCommitPropagation()
- {
- OSL_ENSURE( m_bPropagateCommitToRoot, "DocumentStorageAccess::impl_suspendCommitPropagation: already suspended" );
- m_bPropagateCommitToRoot = false;
- }
- void impl_resumeCommitPropagation()
- {
- OSL_ENSURE( !m_bPropagateCommitToRoot, "DocumentStorageAccess::impl_resumeCommitPropagation: not suspended" );
- m_bPropagateCommitToRoot = true;
- }
-
-};
-
-void DocumentStorageAccess::dispose()
-{
- ::osl::MutexGuard aGuard( m_aMutex );
-
- for ( NamedStorages::iterator loop = m_aExposedStorages.begin();
- loop != m_aExposedStorages.end();
- ++loop
- )
- {
- try
- {
- Reference< XTransactionBroadcaster > xBroadcaster( loop->second, UNO_QUERY );
- if ( xBroadcaster.is() )
- xBroadcaster->removeTransactionListener( this );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- m_aExposedStorages.clear();
-
- m_pModelImplementation = NULL;
-}
-
-Reference< XStorage > DocumentStorageAccess::impl_openSubStorage_nothrow( const ::rtl::OUString& _rStorageName, sal_Int32 _nDesiredMode )
-{
- OSL_ENSURE( _rStorageName.getLength(),"ODatabaseModelImpl::impl_openSubStorage_nothrow: Invalid storage name!" );
-
- Reference< XStorage > xStorage;
- try
- {
- Reference< XStorage > xRootStorage( m_pModelImplementation->getOrCreateRootStorage() );
- if ( xRootStorage.is() )
- {
- sal_Int32 nRealMode = m_pModelImplementation->m_bDocumentReadOnly ? ElementModes::READ : _nDesiredMode;
- if ( nRealMode == ElementModes::READ )
- {
- Reference< XNameAccess > xSubStorageNames( xRootStorage, UNO_QUERY );
- if ( xSubStorageNames.is() && !xSubStorageNames->hasByName( _rStorageName ) )
- return xStorage;
- }
-
- xStorage = xRootStorage->openStorageElement( _rStorageName, nRealMode );
-
- Reference< XTransactionBroadcaster > xBroad( xStorage, UNO_QUERY );
- if ( xBroad.is() )
- xBroad->addTransactionListener( this );
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- return xStorage;
-}
-
-void DocumentStorageAccess::disposeStorages()
-{
- m_bDisposingSubStorages = true;
-
- NamedStorages::iterator aEnd = m_aExposedStorages.end();
- for ( NamedStorages::iterator aIter = m_aExposedStorages.begin();
- aIter != aEnd ;
- ++aIter
- )
- {
- try
- {
- ::comphelper::disposeComponent( aIter->second );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- m_aExposedStorages.clear();
-
- m_bDisposingSubStorages = false;
-}
-
-void DocumentStorageAccess::commitStorages() SAL_THROW(( IOException, RuntimeException ))
-{
- try
- {
- for ( NamedStorages::const_iterator aIter = m_aExposedStorages.begin();
- aIter != m_aExposedStorages.end();
- ++aIter
- )
- {
- tools::stor::commitStorageIfWriteable( aIter->second );
- }
- }
- catch(const WrappedTargetException&)
- {
- // WrappedTargetException not allowed to leave
- throw IOException();
- }
-}
-
-bool DocumentStorageAccess::commitEmbeddedStorage( bool _bPreventRootCommits )
-{
- if ( _bPreventRootCommits )
- impl_suspendCommitPropagation();
-
- bool bSuccess = false;
- try
- {
- NamedStorages::const_iterator pos = m_aExposedStorages.find( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "database" ) ) );
- if ( pos != m_aExposedStorages.end() )
- bSuccess = tools::stor::commitStorageIfWriteable( pos->second );
- }
- catch( Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- if ( _bPreventRootCommits )
- impl_resumeCommitPropagation();
-
- return bSuccess;
-
-}
-
-Reference< XStorage > SAL_CALL DocumentStorageAccess::getDocumentSubStorage( const ::rtl::OUString& aStorageName, ::sal_Int32 _nDesiredMode ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- NamedStorages::iterator pos = m_aExposedStorages.find( aStorageName );
- if ( pos == m_aExposedStorages.end() )
- {
- Reference< XStorage > xResult = impl_openSubStorage_nothrow( aStorageName, _nDesiredMode );
- pos = m_aExposedStorages.insert( NamedStorages::value_type( aStorageName, xResult ) ).first;
- }
-
- return pos->second;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL DocumentStorageAccess::getDocumentSubStoragesNames( ) throw (IOException, RuntimeException)
-{
- Reference< XStorage > xRootStor( m_pModelImplementation->getRootStorage() );
- if ( !xRootStor.is() )
- return Sequence< ::rtl::OUString >();
-
- ::std::vector< ::rtl::OUString > aNames;
-
- Reference< XNameAccess > xNames( xRootStor, UNO_QUERY_THROW );
- Sequence< ::rtl::OUString > aElementNames( xNames->getElementNames() );
- for ( sal_Int32 i=0; i<aElementNames.getLength(); ++i )
- {
- if ( xRootStor->isStorageElement( aElementNames[i] ) )
- aNames.push_back( aElementNames[i] );
- }
- return aNames.empty()
- ? Sequence< ::rtl::OUString >()
- : Sequence< ::rtl::OUString >( &aNames[0], aNames.size() );
-}
-
-void SAL_CALL DocumentStorageAccess::preCommit( const css::lang::EventObject& /*aEvent*/ ) throw (Exception, RuntimeException)
-{
- // not interested in
-}
-
-void SAL_CALL DocumentStorageAccess::commited( const css::lang::EventObject& aEvent ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if ( m_pModelImplementation )
- m_pModelImplementation->setModified( sal_True );
-
- if ( m_pModelImplementation && m_bPropagateCommitToRoot )
- {
- Reference< XStorage > xStorage( aEvent.Source, UNO_QUERY );
-
- // check if this is the dedicated "database" sub storage
- NamedStorages::const_iterator pos = m_aExposedStorages.find( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "database" ) ) );
- if ( ( pos != m_aExposedStorages.end() )
- && ( pos->second == xStorage )
- )
- {
- // if so, also commit the root storage
- m_pModelImplementation->commitRootStorage();
- }
- }
-}
-
-void SAL_CALL DocumentStorageAccess::preRevert( const css::lang::EventObject& /*aEvent*/ ) throw (Exception, RuntimeException)
-{
- // not interested in
-}
-
-void SAL_CALL DocumentStorageAccess::reverted( const css::lang::EventObject& /*aEvent*/ ) throw (RuntimeException)
-{
- // not interested in
-}
-
-void SAL_CALL DocumentStorageAccess::disposing( const css::lang::EventObject& Source ) throw ( RuntimeException )
-{
- OSL_ENSURE( Reference< XStorage >( Source.Source, UNO_QUERY ).is(), "DocumentStorageAccess::disposing: No storage? What's this?" );
-
- if ( m_bDisposingSubStorages )
- return;
-
- for ( NamedStorages::iterator find = m_aExposedStorages.begin();
- find != m_aExposedStorages.end();
- ++find
- )
- if ( find->second == Source.Source )
- {
- m_aExposedStorages.erase( find );
- break;
- }
-}
-
-//============================================================
-//= ODatabaseModelImpl
-//============================================================
-DBG_NAME(ODatabaseModelImpl)
-
-ODatabaseModelImpl::ODatabaseModelImpl( const Reference< XMultiServiceFactory >& _rxFactory, ODatabaseContext& _rDBContext )
- :m_xModel()
- ,m_xDataSource()
- ,m_pStorageAccess( NULL )
- ,m_aMutex()
- ,m_aMutexFacade( m_aMutex )
- ,m_aContainer(4)
- ,m_aMacroMode( *this )
- ,m_nImposedMacroExecMode( MacroExecMode::NEVER_EXECUTE )
- ,m_pDBContext( &_rDBContext )
- ,m_refCount(0)
- ,m_aEmbeddedMacros()
- ,m_bModificationLock( false )
- ,m_bDocumentInitialized( false )
- ,m_aContext( _rxFactory )
- ,m_nLoginTimeout(0)
- ,m_bReadOnly(sal_False)
- ,m_bPasswordRequired(sal_False)
- ,m_bSuppressVersionColumns(sal_True)
- ,m_bModified(sal_False)
- ,m_bDocumentReadOnly(sal_False)
- ,m_pSharedConnectionManager(NULL)
- ,m_nControllerLockCount(0)
-{
- // some kind of default
- DBG_CTOR(ODatabaseModelImpl,NULL);
- m_sConnectURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("jdbc:"));
- m_aTableFilter.realloc(1);
- m_aTableFilter[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("%"));
- impl_construct_nothrow();
-}
-
-ODatabaseModelImpl::ODatabaseModelImpl(
- const ::rtl::OUString& _rRegistrationName,
- const Reference< XMultiServiceFactory >& _rxFactory,
- ODatabaseContext& _rDBContext
- )
- :m_xModel()
- ,m_xDataSource()
- ,m_pStorageAccess( NULL )
- ,m_aMutex()
- ,m_aMutexFacade( m_aMutex )
- ,m_aContainer(4)
- ,m_aMacroMode( *this )
- ,m_nImposedMacroExecMode( MacroExecMode::NEVER_EXECUTE )
- ,m_pDBContext( &_rDBContext )
- ,m_refCount(0)
- ,m_aEmbeddedMacros()
- ,m_bModificationLock( false )
- ,m_bDocumentInitialized( false )
- ,m_aContext( _rxFactory )
- ,m_sName(_rRegistrationName)
- ,m_nLoginTimeout(0)
- ,m_bReadOnly(sal_False)
- ,m_bPasswordRequired(sal_False)
- ,m_bSuppressVersionColumns(sal_True)
- ,m_bModified(sal_False)
- ,m_bDocumentReadOnly(sal_False)
- ,m_pSharedConnectionManager(NULL)
- ,m_nControllerLockCount(0)
-{
- DBG_CTOR(ODatabaseModelImpl,NULL);
- impl_construct_nothrow();
-}
-
-ODatabaseModelImpl::~ODatabaseModelImpl()
-{
- DBG_DTOR(ODatabaseModelImpl,NULL);
-}
-
-void ODatabaseModelImpl::impl_construct_nothrow()
-{
- // create the property bag to hold the settings (also known as "Info" property)
- try
- {
- // the set of property value types in the bag is limited:
- Sequence< Type > aAllowedTypes(6);
- Type* pAllowedType = aAllowedTypes.getArray();
- *pAllowedType++ = ::getCppuType( static_cast< sal_Bool* >( NULL ) );
- *pAllowedType++ = ::getCppuType( static_cast< double* >( NULL ) );
- *pAllowedType++ = ::getCppuType( static_cast< ::rtl::OUString* >( NULL ) );
- *pAllowedType++ = ::getCppuType( static_cast< sal_Int32* >( NULL ) );
- *pAllowedType++ = ::getCppuType( static_cast< sal_Int16* >( NULL ) );
- *pAllowedType++ = ::getCppuType( static_cast< Sequence< Any >* >( NULL ) );
-
- Sequence< Any > aInitArgs( 2 );
- aInitArgs[0] <<= NamedValue(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AutomaticAddition" ) ),
- makeAny( (sal_Bool)sal_True )
- );
- aInitArgs[1] <<= NamedValue(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "AllowedTypes" ) ),
- makeAny( aAllowedTypes )
- );
-
- m_xSettings.set( m_aContext.createComponentWithArguments( "com.sun.star.beans.PropertyBag", aInitArgs ), UNO_QUERY_THROW );
-
- // insert the default settings
- Reference< XPropertyContainer > xContainer( m_xSettings, UNO_QUERY_THROW );
- Reference< XSet > xSettingsSet( m_xSettings, UNO_QUERY_THROW );
- const AsciiPropertyValue* pSettings = getDefaultDataSourceSettings();
- for ( ; pSettings->AsciiName; ++pSettings )
- {
- if ( !pSettings->DefaultValue.hasValue() )
- {
- Property aProperty(
- ::rtl::OUString::createFromAscii( pSettings->AsciiName ),
- -1,
- pSettings->ValueType,
- PropertyAttribute::BOUND | PropertyAttribute::MAYBEDEFAULT | PropertyAttribute::MAYBEVOID
- );
- xSettingsSet->insert( makeAny( aProperty ) );
- }
- else
- {
- xContainer->addProperty(
- ::rtl::OUString::createFromAscii( pSettings->AsciiName ),
- PropertyAttribute::BOUND | PropertyAttribute::MAYBEDEFAULT,
- pSettings->DefaultValue
- );
- }
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- m_pDBContext->appendAtTerminateListener(*this);
-}
-
-namespace
-{
- ::rtl::OUString lcl_getContainerStorageName_throw( ODatabaseModelImpl::ObjectType _eType )
- {
- const sal_Char* pAsciiName( NULL );
- switch ( _eType )
- {
- case ODatabaseModelImpl::E_FORM: pAsciiName = "forms"; break;
- case ODatabaseModelImpl::E_REPORT: pAsciiName = "reports"; break;
- case ODatabaseModelImpl::E_QUERY: pAsciiName = "queries"; break;
- case ODatabaseModelImpl::E_TABLE: pAsciiName = "tables"; break;
- default:
- throw RuntimeException();
- }
- return ::rtl::OUString::createFromAscii( pAsciiName );
- }
-
- bool lcl_hasObjectWithMacros_throw( const ODefinitionContainer_Impl& _rObjectDefinitions, const Reference< XStorage >& _rxContainerStorage )
- {
- bool bSomeDocHasMacros = false;
-
- for ( ODefinitionContainer_Impl::const_iterator object = _rObjectDefinitions.begin();
- ( object != _rObjectDefinitions.end() ) && !bSomeDocHasMacros;
- ++object
- )
- {
-#if OSL_DEBUG_LEVEL > 0
- const ::rtl::OUString& rName( object->first ); (void)rName;
-#endif
-
- const TContentPtr& rDefinition( object->second );
- const ::rtl::OUString& rPersistentName( rDefinition->m_aProps.sPersistentName );
-
- if ( !rPersistentName.getLength() )
- { // it's a logical sub folder used to organize the real objects
- const ODefinitionContainer_Impl& rSubFoldersObjectDefinitions( dynamic_cast< const ODefinitionContainer_Impl& >( *rDefinition.get() ) );
- bSomeDocHasMacros = lcl_hasObjectWithMacros_throw( rSubFoldersObjectDefinitions, _rxContainerStorage );
- continue;
- }
-
- bSomeDocHasMacros = ODatabaseModelImpl::objectHasMacros( _rxContainerStorage, rPersistentName );
- }
- return bSomeDocHasMacros;
- }
-
- bool lcl_hasObjectsWithMacros_nothrow( ODatabaseModelImpl& _rModel, const ODatabaseModelImpl::ObjectType _eType )
- {
- bool bSomeDocHasMacros = false;
-
- const OContentHelper_Impl& rContainerData( *_rModel.getObjectContainer( _eType ).get() );
- const ODefinitionContainer_Impl& rObjectDefinitions = dynamic_cast< const ODefinitionContainer_Impl& >( rContainerData );
-
- try
- {
- Reference< XStorage > xContainerStorage( _rModel.getStorage( _eType, ElementModes::READWRITE ) );
- // note the READWRITE here: If the storage already existed before, then the OpenMode will
- // be ignored, anyway.
- // If the storage did not yet exist, then it will be created. If the database document
- // is read-only, the OpenMode will be automatically downgraded to READ. Otherwise,
- // the storage will in fact be created as READWRITE. While this is not strictly necessary
- // for this particular use case here, it is required since the storage is *cached*, and
- // later use cases will need the READWRITE mode.
-
- if ( xContainerStorage.is() )
- bSomeDocHasMacros = lcl_hasObjectWithMacros_throw( rObjectDefinitions, xContainerStorage );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- // be on the safe side: If we can't reliably determine whether there are macros,
- // assume there actually are. Better this way, than the other way round.
- bSomeDocHasMacros = true;
- }
-
- return bSomeDocHasMacros;
- }
-}
-
-bool ODatabaseModelImpl::objectHasMacros( const Reference< XStorage >& _rxContainerStorage, const ::rtl::OUString& _rPersistentName )
-{
- OSL_PRECOND( _rxContainerStorage.is(), "ODatabaseModelImpl::objectHasMacros: this will crash!" );
-
- bool bHasMacros = true;
- try
- {
- if ( !_rxContainerStorage->hasByName( _rPersistentName ) )
- return false;
-
- Reference< XStorage > xObjectStor( _rxContainerStorage->openStorageElement(
- _rPersistentName, ElementModes::READ ) );
-
- bHasMacros = ::sfx2::DocumentMacroMode::storageHasMacros( xObjectStor );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return bHasMacros;
-}
-
-void ODatabaseModelImpl::reset()
-{
- m_bReadOnly = sal_False;
- ::std::vector< TContentPtr > aEmptyContainers( 4 );
- m_aContainer.swap( aEmptyContainers );
-
- if ( m_pStorageAccess )
- {
- m_pStorageAccess->dispose();
- m_pStorageAccess->release();
- m_pStorageAccess = NULL;
- }
-}
-
-void SAL_CALL ODatabaseModelImpl::disposing( const ::com::sun::star::lang::EventObject& Source ) throw(RuntimeException)
-{
- Reference<XConnection> xCon(Source.Source,UNO_QUERY);
- if ( xCon.is() )
- {
- bool bStore = false;
- OWeakConnectionArray::iterator aEnd = m_aConnections.end();
- for (OWeakConnectionArray::iterator i = m_aConnections.begin(); aEnd != i; ++i)
- {
- if ( xCon == i->get() )
- {
- *i = OWeakConnection();
- bStore = true;
- break;
- }
- }
-
- if ( bStore )
- commitRootStorage();
- }
- else
- {
- OSL_FAIL( "ODatabaseModelImpl::disposing: where does this come from?" );
- }
-}
-
-void ODatabaseModelImpl::clearConnections()
-{
- OWeakConnectionArray aConnections;
- aConnections.swap( m_aConnections );
-
- Reference< XConnection > xConn;
- OWeakConnectionArray::iterator aEnd = aConnections.end();
- for ( OWeakConnectionArray::iterator i = aConnections.begin(); aEnd != i; ++i )
- {
- xConn = *i;
- if ( xConn.is() )
- {
- try
- {
- xConn->close();
- }
- catch(const Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- }
-
- m_pSharedConnectionManager = NULL;
- m_xSharedConnectionManager = NULL;
-}
-
-void ODatabaseModelImpl::dispose()
-{
- // dispose the data source and the model
- try
- {
- Reference< XDataSource > xDS( m_xDataSource );
- ::comphelper::disposeComponent( xDS );
-
- Reference< XModel > xModel( m_xModel );
- ::comphelper::disposeComponent( xModel );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- m_xDataSource = WeakReference<XDataSource>();
- m_xModel = WeakReference< XModel >();
-
- ::std::vector<TContentPtr>::iterator aIter = m_aContainer.begin();
- ::std::vector<TContentPtr>::iterator aEnd = m_aContainer.end();
- for (;aIter != aEnd ; ++aIter)
- {
- if ( aIter->get() )
- (*aIter)->m_pDataSource = NULL;
- }
- m_aContainer.clear();
-
- clearConnections();
-
- m_xNumberFormatsSupplier = NULL;
-
- try
- {
- sal_Bool bCouldStore = commitEmbeddedStorage( true );
- // "true" means that committing the embedded storage should not trigger committing the root
- // storage. This is because we are going to commit the root storage ourself, anyway
- disposeStorages();
- if ( bCouldStore )
- commitRootStorage();
-
- impl_switchToStorage_throw( NULL );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- if ( m_pStorageAccess )
- {
- m_pStorageAccess->dispose();
- m_pStorageAccess->release();
- m_pStorageAccess = NULL;
- }
-}
-
-const Reference< XNumberFormatsSupplier > & ODatabaseModelImpl::getNumberFormatsSupplier()
-{
- if (!m_xNumberFormatsSupplier.is())
- {
- // the arguments : the locale of the current user
- UserInformation aUserInfo;
- Sequence< Any > aArguments(1);
- aArguments.getArray()[0] <<= aUserInfo.getUserLanguage();
-
- m_xNumberFormatsSupplier.set(
- m_aContext.createComponentWithArguments( "com.sun.star.util.NumberFormatsSupplier", aArguments ), UNO_QUERY_THROW );
- OSL_ENSURE(m_xNumberFormatsSupplier.is(), "ODatabaseModelImpl::getNumberFormatsSupplier : could not instantiate the formats supplier !");
- }
- return m_xNumberFormatsSupplier;
-}
-
-void ODatabaseModelImpl::setDocFileLocation( const ::rtl::OUString& i_rLoadedFrom )
-{
- ENSURE_OR_THROW( i_rLoadedFrom.getLength(), "invalid URL" );
- m_sDocFileLocation = i_rLoadedFrom;
-}
-
-void ODatabaseModelImpl::setResource( const ::rtl::OUString& i_rDocumentURL, const Sequence< PropertyValue >& _rArgs )
-{
- ENSURE_OR_THROW( i_rDocumentURL.getLength(), "invalid URL" );
-
- ::comphelper::NamedValueCollection aMediaDescriptor( _rArgs );
-#if OSL_DEBUG_LEVEL > 0
- if ( aMediaDescriptor.has( "SalvagedFile" ) )
- {
- ::rtl::OUString sSalvagedFile( aMediaDescriptor.getOrDefault( "SalvagedFile", ::rtl::OUString() ) );
- // If SalvagedFile is an empty string, this indicates "the document is being recovered, but i_rDocumentURL already
- // is the real document URL, not the temporary document location"
- if ( !sSalvagedFile.getLength() )
- sSalvagedFile = i_rDocumentURL;
-
- OSL_ENSURE( sSalvagedFile == i_rDocumentURL, "ODatabaseModelImpl::setResource: inconsistency!" );
- // nowadays, setResource should only be called with the logical URL of the document
- }
-#endif
-
- m_aMediaDescriptor = stripLoadArguments( aMediaDescriptor );
-
- impl_switchToLogicalURL( i_rDocumentURL );
-}
-
-::comphelper::NamedValueCollection ODatabaseModelImpl::stripLoadArguments( const ::comphelper::NamedValueCollection& _rArguments )
-{
- OSL_ENSURE( !_rArguments.has( "Model" ), "ODatabaseModelImpl::stripLoadArguments: this is suspicious (1)!" );
- OSL_ENSURE( !_rArguments.has( "ViewName" ), "ODatabaseModelImpl::stripLoadArguments: this is suspicious (2)!" );
-
- ::comphelper::NamedValueCollection aMutableArgs( _rArguments );
- aMutableArgs.remove( "Model" );
- aMutableArgs.remove( "ViewName" );
- return aMutableArgs;
-}
-
-void ODatabaseModelImpl::disposeStorages() SAL_THROW(())
-{
- getDocumentStorageAccess()->disposeStorages();
-}
-
-Reference< XSingleServiceFactory > ODatabaseModelImpl::createStorageFactory() const
-{
- return Reference< XSingleServiceFactory >( m_aContext.createComponent( "com.sun.star.embed.StorageFactory" ), UNO_QUERY_THROW );
-}
-
-void ODatabaseModelImpl::commitRootStorage()
-{
- Reference< XStorage > xStorage( getOrCreateRootStorage() );
-#if OSL_DEBUG_LEVEL > 0
- bool bSuccess =
-#endif
- commitStorageIfWriteable_ignoreErrors( xStorage );
- OSL_ENSURE( bSuccess || !xStorage.is(),
- "ODatabaseModelImpl::commitRootStorage: could commit the storage!" );
-}
-
-Reference< XStorage > ODatabaseModelImpl::getOrCreateRootStorage()
-{
- if ( !m_xDocumentStorage.is() )
- {
- Reference< XSingleServiceFactory> xStorageFactory = createStorageFactory();
- if ( xStorageFactory.is() )
- {
- Any aSource;
- aSource = m_aMediaDescriptor.get( "Stream" );
- if ( !aSource.hasValue() )
- aSource = m_aMediaDescriptor.get( "InputStream" );
- if ( !aSource.hasValue() && m_sDocFileLocation.getLength() )
- aSource <<= m_sDocFileLocation;
- // TODO: shouldn't we also check URL?
-
- OSL_ENSURE( aSource.hasValue(), "ODatabaseModelImpl::getOrCreateRootStorage: no source to create the storage from!" );
-
- if ( aSource.hasValue() )
- {
- Sequence< Any > aStorageCreationArgs(2);
- aStorageCreationArgs[0] = aSource;
- aStorageCreationArgs[1] <<= ElementModes::READWRITE;
-
- Reference< XStorage > xDocumentStorage;
- try
- {
- xDocumentStorage.set( xStorageFactory->createInstanceWithArguments( aStorageCreationArgs ), UNO_QUERY_THROW );
- }
- catch( const Exception& )
- {
- m_bDocumentReadOnly = sal_True;
- aStorageCreationArgs[1] <<= ElementModes::READ;
- try
- {
- xDocumentStorage.set( xStorageFactory->createInstanceWithArguments( aStorageCreationArgs ), UNO_QUERY_THROW );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- impl_switchToStorage_throw( xDocumentStorage );
- }
- }
- }
- return m_xDocumentStorage.getTyped();
-}
-
-DocumentStorageAccess* ODatabaseModelImpl::getDocumentStorageAccess()
-{
- if ( !m_pStorageAccess )
- {
- m_pStorageAccess = new DocumentStorageAccess( *this );
- m_pStorageAccess->acquire();
- }
- return m_pStorageAccess;
-}
-
-void ODatabaseModelImpl::modelIsDisposing( const bool _wasInitialized, ResetModelAccess )
-{
- m_xModel = Reference< XModel >();
-
- // Basic libraries and Dialog libraries are a model facet, though held at this impl class.
- // They automatically dispose themself when the model they belong to is being disposed.
- // So, to not be tempted to do anything with them, again, we reset them.
- m_xBasicLibraries.clear();
- m_xDialogLibraries.clear();
-
- m_bDocumentInitialized = _wasInitialized;
-}
-
-Reference< XDocumentSubStorageSupplier > ODatabaseModelImpl::getDocumentSubStorageSupplier()
-{
- return getDocumentStorageAccess();
-}
-
-bool ODatabaseModelImpl::commitEmbeddedStorage( bool _bPreventRootCommits )
-{
- return getDocumentStorageAccess()->commitEmbeddedStorage( _bPreventRootCommits );
-}
-
-bool ODatabaseModelImpl::commitStorageIfWriteable_ignoreErrors( const Reference< XStorage >& _rxStorage ) SAL_THROW(())
-{
- bool bSuccess = false;
- try
- {
- bSuccess = tools::stor::commitStorageIfWriteable( _rxStorage );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return bSuccess;
-}
-
-void ODatabaseModelImpl::setModified( sal_Bool _bModified )
-{
- if ( isModifyLocked() )
- return;
-
- try
- {
- Reference< XModifiable > xModi( m_xModel.get(), UNO_QUERY );
- if ( xModi.is() )
- xModi->setModified( _bModified );
- else
- m_bModified = _bModified;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-Reference<XDataSource> ODatabaseModelImpl::getOrCreateDataSource()
-{
- Reference<XDataSource> xDs = m_xDataSource;
- if ( !xDs.is() )
- {
- xDs = new ODatabaseSource(this);
- m_xDataSource = xDs;
- }
- return xDs;
-}
-
-Reference< XModel> ODatabaseModelImpl::getModel_noCreate() const
-{
- return m_xModel;
-}
-
-Reference< XModel > ODatabaseModelImpl::createNewModel_deliverOwnership( bool _bInitialize )
-{
- Reference< XModel > xModel( m_xModel );
- OSL_PRECOND( !xModel.is(), "ODatabaseModelImpl::createNewModel_deliverOwnership: not to be called if there already is a model!" );
- if ( !xModel.is() )
- {
- bool bHadModelBefore = m_bDocumentInitialized;
-
- xModel = ODatabaseDocument::createDatabaseDocument( this, ODatabaseDocument::FactoryAccess() );
- m_xModel = xModel;
-
- try
- {
- Reference< XSet > xModelCollection;
- if ( m_aContext.createComponent( "com.sun.star.frame.GlobalEventBroadcaster", xModelCollection ) )
- xModelCollection->insert( makeAny( xModel ) );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- if ( bHadModelBefore )
- {
- // do an attachResources
- // In case the document is loaded regularly, this is not necessary, as our loader will do it.
- // However, in case that the document is implicitly created by asking the data source for the document,
- // then nobody would call the doc's attachResource. So, we do it here, to ensure it's in a proper
- // state, fires all events, and so on.
- // #i105505#
- xModel->attachResource( xModel->getURL(), m_aMediaDescriptor.getPropertyValues() );
- }
-
- if ( _bInitialize )
- {
- try
- {
- Reference< XLoadable > xLoad( xModel, UNO_QUERY_THROW );
- xLoad->initNew();
- }
- catch( RuntimeException& ) { throw; }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- }
- return xModel;
-}
-
-oslInterlockedCount SAL_CALL ODatabaseModelImpl::acquire()
-{
- return osl_incrementInterlockedCount(&m_refCount);
-}
-
-oslInterlockedCount SAL_CALL ODatabaseModelImpl::release()
-{
- if ( osl_decrementInterlockedCount(&m_refCount) == 0 )
- {
- acquire(); // prevent multiple releases
- m_pDBContext->removeFromTerminateListener(*this);
- dispose();
- m_pDBContext->storeTransientProperties(*this);
- revokeDataSource();
- delete this;
- return 0;
- }
- return m_refCount;
-}
-
-void ODatabaseModelImpl::commitStorages() SAL_THROW(( IOException, RuntimeException ))
-{
- getDocumentStorageAccess()->commitStorages();
-}
-
-Reference< XStorage > ODatabaseModelImpl::getStorage( const ObjectType _eType, const sal_Int32 _nDesiredMode )
-{
- return getDocumentStorageAccess()->getDocumentSubStorage( getObjectContainerStorageName( _eType ), _nDesiredMode );
-}
-
-const AsciiPropertyValue* ODatabaseModelImpl::getDefaultDataSourceSettings()
-{
- static const AsciiPropertyValue aKnownSettings[] =
- {
- // known JDBC settings
- AsciiPropertyValue( "JavaDriverClass", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "JavaDriverClassPath", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "IgnoreCurrency", makeAny( (sal_Bool)sal_False ) ),
- // known settings for file-based drivers
- AsciiPropertyValue( "Extension", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "CharSet", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "HeaderLine", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "FieldDelimiter", makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "," ) ) ) ),
- AsciiPropertyValue( "StringDelimiter", makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "\"" ) ) ) ),
- AsciiPropertyValue( "DecimalDelimiter", makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "." ) ) ) ),
- AsciiPropertyValue( "ThousandDelimiter", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "ShowDeleted", makeAny( (sal_Bool)sal_False ) ),
- // known ODBC settings
- AsciiPropertyValue( "SystemDriverSettings", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "UseCatalog", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "TypeInfoSettings", makeAny( Sequence< Any >()) ),
- // settings related to auto increment handling
- AsciiPropertyValue( "AutoIncrementCreation", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "AutoRetrievingStatement", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "IsAutoRetrievingEnabled", makeAny( (sal_Bool)sal_False ) ),
- // known Adabas D driver setting
- AsciiPropertyValue( "ShutdownDatabase", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "DataCacheSizeIncrement", makeAny( (sal_Int32)20 ) ),
- AsciiPropertyValue( "DataCacheSize", makeAny( (sal_Int32)20 ) ),
- AsciiPropertyValue( "ControlUser", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "ControlPassword", makeAny( ::rtl::OUString() ) ),
- // known LDAP driver settings
- AsciiPropertyValue( "HostName", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "PortNumber", makeAny( (sal_Int32)389 ) ),
- AsciiPropertyValue( "BaseDN", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "MaxRowCount", makeAny( (sal_Int32)100 ) ),
- // known MySQLNative driver settings
- AsciiPropertyValue( "LocalSocket", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "NamedPipe", makeAny( ::rtl::OUString() ) ),
- // misc known driver settings
- AsciiPropertyValue( "ParameterNameSubstitution", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "AddIndexAppendix", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "IgnoreDriverPrivileges", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "ImplicitCatalogRestriction", ::cppu::UnoType< ::rtl::OUString >::get() ),
- AsciiPropertyValue( "ImplicitSchemaRestriction", ::cppu::UnoType< ::rtl::OUString >::get() ),
- AsciiPropertyValue( "PrimaryKeySupport", ::cppu::UnoType< sal_Bool >::get() ),
- AsciiPropertyValue( "ShowColumnDescription", makeAny( (sal_Bool)sal_False ) ),
- // known SDB level settings
- AsciiPropertyValue( "NoNameLengthLimit", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "AppendTableAliasName", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "GenerateASBeforeCorrelationName", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "ColumnAliasInOrderBy", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "EnableSQL92Check", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "BooleanComparisonMode", makeAny( BooleanComparisonMode::EQUAL_INTEGER ) ),
- AsciiPropertyValue( "TableTypeFilterMode", makeAny( (sal_Int32)3 ) ),
- AsciiPropertyValue( "RespectDriverResultSetType", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "UseSchemaInSelect", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "UseCatalogInSelect", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "EnableOuterJoinEscape", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "PreferDosLikeLineEnds", makeAny( (sal_Bool)sal_False ) ),
- AsciiPropertyValue( "FormsCheckRequiredFields", makeAny( (sal_Bool)sal_True ) ),
- AsciiPropertyValue( "EscapeDateTime", makeAny( (sal_Bool)sal_True ) ),
-
- // known services to handle database tasks
- AsciiPropertyValue( "TableAlterationServiceName", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "TableRenameServiceName", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "ViewAlterationServiceName", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "ViewAccessServiceName", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "CommandDefinitions", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "Forms", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "Reports", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "KeyAlterationServiceName", makeAny( ::rtl::OUString() ) ),
- AsciiPropertyValue( "IndexAlterationServiceName", makeAny( ::rtl::OUString() ) ),
-
- AsciiPropertyValue()
- };
- return aKnownSettings;
-}
-
-TContentPtr& ODatabaseModelImpl::getObjectContainer( ObjectType _eType )
-{
- OSL_PRECOND( _eType >= E_FORM && _eType <= E_TABLE, "ODatabaseModelImpl::getObjectContainer: illegal index!" );
- TContentPtr& rContentPtr = m_aContainer[ _eType ];
-
- if ( !rContentPtr.get() )
- {
- rContentPtr = TContentPtr( new ODefinitionContainer_Impl );
- rContentPtr->m_pDataSource = this;
- rContentPtr->m_aProps.aTitle = lcl_getContainerStorageName_throw( _eType );
- }
- return rContentPtr;
-}
-
-void ODatabaseModelImpl::revokeDataSource() const
-{
- if ( m_pDBContext && m_sDocumentURL.getLength() )
- m_pDBContext->revokeDatabaseDocument( *this );
-}
-
-bool ODatabaseModelImpl::adjustMacroMode_AutoReject()
-{
- return m_aMacroMode.adjustMacroMode( NULL );
-}
-
-bool ODatabaseModelImpl::checkMacrosOnLoading()
-{
- Reference< XInteractionHandler > xInteraction;
- xInteraction = m_aMediaDescriptor.getOrDefault( "InteractionHandler", xInteraction );
- return m_aMacroMode.checkMacrosOnLoading( xInteraction );
-}
-
-void ODatabaseModelImpl::resetMacroExecutionMode()
-{
- m_aMacroMode = ::sfx2::DocumentMacroMode( *this );
-}
-
-Reference< XStorageBasedLibraryContainer > ODatabaseModelImpl::getLibraryContainer( bool _bScript )
-{
- Reference< XStorageBasedLibraryContainer >& rxContainer( _bScript ? m_xBasicLibraries : m_xDialogLibraries );
- if ( rxContainer.is() )
- return rxContainer;
-
- Reference< XStorageBasedDocument > xDocument( getModel_noCreate(), UNO_QUERY_THROW );
- // this is only to be called if there already exists a document model - in fact, it is
- // to be called by the document model only
-
- try
- {
- Reference< XStorageBasedLibraryContainer > (*Factory)( const Reference< XComponentContext >&, const Reference< XStorageBasedDocument >&)
- = _bScript ? &DocumentScriptLibraryContainer::create : &DocumentDialogLibraryContainer::create;
-
- rxContainer.set(
- (*Factory)( m_aContext.getUNOContext(), xDocument ),
- UNO_QUERY_THROW
- );
- }
- catch( const RuntimeException& )
- {
- throw;
- }
- catch( const Exception& )
- {
- throw WrappedTargetRuntimeException(
- ::rtl::OUString(),
- xDocument,
- ::cppu::getCaughtException()
- );
- }
- return rxContainer;
-}
-
-void ODatabaseModelImpl::storeLibraryContainersTo( const Reference< XStorage >& _rxToRootStorage )
-{
- if ( m_xBasicLibraries.is() )
- m_xBasicLibraries->storeLibrariesToStorage( _rxToRootStorage );
-
- if ( m_xDialogLibraries.is() )
- m_xDialogLibraries->storeLibrariesToStorage( _rxToRootStorage );
-}
-
-Reference< XStorage > ODatabaseModelImpl::switchToStorage( const Reference< XStorage >& _rxNewRootStorage )
-{
- if ( !_rxNewRootStorage.is() )
- throw IllegalArgumentException();
-
- return impl_switchToStorage_throw( _rxNewRootStorage );
-}
-
-namespace
-{
- void lcl_modifyListening( ::sfx2::IModifiableDocument& _rDocument,
- const Reference< XStorage >& _rxStorage, ::rtl::Reference< ::sfx2::DocumentStorageModifyListener >& _inout_rListener,
- ::osl::SolarMutex& _rMutex, bool _bListen )
- {
- Reference< XModifiable > xModify( _rxStorage, UNO_QUERY );
- OSL_ENSURE( xModify.is() || !_rxStorage.is(), "lcl_modifyListening: storage can't notify us!" );
-
- if ( xModify.is() && !_bListen && _inout_rListener.is() )
- {
- xModify->removeModifyListener( _inout_rListener.get() );
- }
-
- if ( _inout_rListener.is() )
- {
- _inout_rListener->dispose();
- _inout_rListener = NULL;
- }
-
- if ( xModify.is() && _bListen )
- {
- _inout_rListener = new ::sfx2::DocumentStorageModifyListener( _rDocument, _rMutex );
- xModify->addModifyListener( _inout_rListener.get() );
- }
- }
-}
-
-namespace
-{
- static void lcl_rebaseScriptStorage_throw( const Reference< XStorageBasedLibraryContainer >& _rxContainer,
- const Reference< XStorage >& _rxNewRootStorage )
- {
- if ( _rxContainer.is() )
- {
- if ( _rxNewRootStorage.is() )
- _rxContainer->setRootStorage( _rxNewRootStorage );
-// else
- // TODO: what to do here? dispose the container?
- }
- }
-}
-
-Reference< XStorage > ODatabaseModelImpl::impl_switchToStorage_throw( const Reference< XStorage >& _rxNewRootStorage )
-{
- // stop listening for modifications at the old storage
- lcl_modifyListening( *this, m_xDocumentStorage.getTyped(), m_pStorageModifyListener, m_aMutexFacade, false );
-
- // set new storage
- m_xDocumentStorage.reset( _rxNewRootStorage, SharedStorage::TakeOwnership );
-
- // start listening for modifications
- lcl_modifyListening( *this, m_xDocumentStorage.getTyped(), m_pStorageModifyListener, m_aMutexFacade, true );
-
- // forward new storage to Basic and Dialog library containers
- lcl_rebaseScriptStorage_throw( m_xBasicLibraries, m_xDocumentStorage.getTyped() );
- lcl_rebaseScriptStorage_throw( m_xDialogLibraries, m_xDocumentStorage.getTyped() );
-
- m_bReadOnly = !tools::stor::storageIsWritable_nothrow( m_xDocumentStorage.getTyped() );
- // TODO: our data source, if it exists, must broadcast the change of its ReadOnly property
-
- return m_xDocumentStorage.getTyped();
-}
-
-void ODatabaseModelImpl::impl_switchToLogicalURL( const ::rtl::OUString& i_rDocumentURL )
-{
- if ( i_rDocumentURL == m_sDocumentURL )
- return;
-
- const ::rtl::OUString sOldURL( m_sDocumentURL );
- // update our name, if necessary
- if ( ( m_sName == m_sDocumentURL ) // our name is our old URL
- || ( !m_sName.getLength() ) // we do not have a name, yet (i.e. are not registered at the database context)
- )
- {
- INetURLObject aURL( i_rDocumentURL );
- if ( aURL.GetProtocol() != INET_PROT_NOT_VALID )
- {
- m_sName = i_rDocumentURL;
- // TODO: our data source must broadcast the change of the Name property
- }
- }
-
- // remember URL
- m_sDocumentURL = i_rDocumentURL;
-
- // update our location, if necessary
- if ( m_sDocFileLocation.getLength() == 0 )
- m_sDocFileLocation = m_sDocumentURL;
-
- // register at the database context, or change registration
- if ( m_pDBContext )
- {
- if ( sOldURL.getLength() )
- m_pDBContext->databaseDocumentURLChange( sOldURL, m_sDocumentURL );
- else
- m_pDBContext->registerDatabaseDocument( *this );
- }
-}
-
-::rtl::OUString ODatabaseModelImpl::getObjectContainerStorageName( const ObjectType _eType )
-{
- return lcl_getContainerStorageName_throw( _eType );
-}
-
-sal_Int16 ODatabaseModelImpl::getCurrentMacroExecMode() const
-{
- sal_Int16 nCurrentMode = MacroExecMode::NEVER_EXECUTE;
- try
- {
- nCurrentMode = m_aMediaDescriptor.getOrDefault( "MacroExecutionMode", nCurrentMode );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return nCurrentMode;
-}
-
-sal_Bool ODatabaseModelImpl::setCurrentMacroExecMode( sal_uInt16 nMacroMode )
-{
- m_aMediaDescriptor.put( "MacroExecutionMode", nMacroMode );
- return sal_True;
-}
-
-::rtl::OUString ODatabaseModelImpl::getDocumentLocation() const
-{
- return getURL();
- // formerly, we returned getDocFileLocation here, which is the location of the file from which we
- // recovered the "real" document.
- // However, during CWS autorecovery evolving, we clarified (with MAV/MT) the role of XModel::getURL and
- // XStorable::getLocation. In this course, we agreed that for a macro security check, the *document URL*
- // (not the recovery file URL) is to be used: The recovery file lies in the backup folder, and by definition,
- // this folder is considered to be secure. So, the document URL needs to be used to decide about the security.
-}
-
-Reference< XStorage > ODatabaseModelImpl::getZipStorageToSign()
-{
- // we do not support signing the scripting storages, so we're allowed to
- // return <NULL/> here.
- return Reference< XStorage >();
-}
-
-ODatabaseModelImpl::EmbeddedMacros ODatabaseModelImpl::determineEmbeddedMacros()
-{
- if ( !m_aEmbeddedMacros )
- {
- if ( ::sfx2::DocumentMacroMode::storageHasMacros( const_cast< ODatabaseModelImpl* >( this )->getOrCreateRootStorage() ) )
- {
- m_aEmbeddedMacros.reset( eDocumentWideMacros );
- }
- else if ( lcl_hasObjectsWithMacros_nothrow( const_cast< ODatabaseModelImpl& >( *this ), E_FORM )
- || lcl_hasObjectsWithMacros_nothrow( const_cast< ODatabaseModelImpl& >( *this ), E_REPORT )
- )
- {
- m_aEmbeddedMacros.reset( eSubDocumentMacros );
- }
- else
- {
- m_aEmbeddedMacros.reset( eNoMacros );
- }
- }
- return *m_aEmbeddedMacros;
-}
-
-sal_Bool ODatabaseModelImpl::documentStorageHasMacros() const
-{
- const_cast< ODatabaseModelImpl* >( this )->determineEmbeddedMacros();
- return ( *m_aEmbeddedMacros != eNoMacros );
-}
-
-Reference< XEmbeddedScripts > ODatabaseModelImpl::getEmbeddedDocumentScripts() const
-{
- return Reference< XEmbeddedScripts >( getModel_noCreate(), UNO_QUERY );
-}
-
-sal_Int16 ODatabaseModelImpl::getScriptingSignatureState()
-{
- // no support for signatures at the moment
- return SIGNATURESTATE_NOSIGNATURES;
-}
-
-sal_Bool ODatabaseModelImpl::hasTrustedScriptingSignature( sal_Bool /*bAllowUIToAddAuthor*/ )
-{
- // no support for signatures at the moment
- return sal_False;
-}
-
-void ODatabaseModelImpl::showBrokenSignatureWarning( const Reference< XInteractionHandler >& /*_rxInteraction*/ ) const
-{
- OSL_FAIL( "ODatabaseModelImpl::showBrokenSignatureWarning: signatures can't be broken - we do not support them!" );
-}
-
-void ODatabaseModelImpl::storageIsModified()
-{
- setModified( sal_True );
-}
-
-ModelDependentComponent::ModelDependentComponent( const ::rtl::Reference< ODatabaseModelImpl >& _model )
- :m_pImpl( _model )
- ,m_aMutex( _model->getSharedMutex() )
-{
-}
-
-ModelDependentComponent::~ModelDependentComponent()
-{
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/ModelImpl.hxx b/dbaccess/source/core/dataaccess/ModelImpl.hxx
deleted file mode 100644
index 78247ea9c..000000000
--- a/dbaccess/source/core/dataaccess/ModelImpl.hxx
+++ /dev/null
@@ -1,644 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_COREDATAACCESS_MODELIMPL_HXX_
-#define _DBA_COREDATAACCESS_MODELIMPL_HXX_
-
-#include "apitools.hxx"
-#include "bookmarkcontainer.hxx"
-#include "ContentHelper.hxx"
-#include "core_resource.hxx"
-#include "documentevents.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/beans/XPropertyAccess.hpp>
-#include <com/sun/star/container/XContainerListener.hpp>
-#include <com/sun/star/document/XDocumentSubStorageSupplier.hpp>
-#include <com/sun/star/document/XEventListener.hpp>
-#include <com/sun/star/document/XStorageBasedDocument.hpp>
-#include <com/sun/star/embed/ElementModes.hpp>
-#include <com/sun/star/embed/XStorage.hpp>
-#include <com/sun/star/embed/XTransactionListener.hpp>
-#include <com/sun/star/frame/XModel.hpp>
-#include <com/sun/star/frame/XStorable.hpp>
-#include <com/sun/star/lang/NotInitializedException.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-#include <com/sun/star/sdb/XBookmarksSupplier.hpp>
-#include <com/sun/star/sdb/XCompletedConnection.hpp>
-#include <com/sun/star/sdb/XFormDocumentsSupplier.hpp>
-#include <com/sun/star/sdb/XQueryDefinitionsSupplier.hpp>
-#include <com/sun/star/sdb/XReportDocumentsSupplier.hpp>
-#include <com/sun/star/sdbc/XDataSource.hpp>
-#include <com/sun/star/sdbc/XIsolatedConnection.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/util/XCloseable.hpp>
-#include <com/sun/star/util/XFlushable.hpp>
-#include <com/sun/star/util/XModifiable.hpp>
-#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
-#include <com/sun/star/util/XNumberFormatter.hpp>
-#include <com/sun/star/util/XRefreshable.hpp>
-#include <com/sun/star/sdb/XDocumentDataSource.hpp>
-#include <com/sun/star/frame/DoubleInitializationException.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/broadcasthelper.hxx>
-#include <comphelper/namedvaluecollection.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include <comphelper/sharedmutex.hxx>
-#include <connectivity/CommonTools.hxx>
-#include <cppuhelper/propshlp.hxx>
-#include <cppuhelper/weakref.hxx>
-#include <sfx2/docmacromode.hxx>
-#include <sfx2/docstoragemodifylistener.hxx>
-#include <tools/string.hxx>
-#include <unotools/sharedunocomponent.hxx>
-#include <osl/mutex.hxx>
-#include <rtl/ref.hxx>
-
-#include <memory>
-
-namespace comphelper
-{
- class NamedValueCollection;
-}
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
-typedef ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XConnection > OWeakConnection;
-typedef std::vector< OWeakConnection > OWeakConnectionArray;
-
-struct AsciiPropertyValue
-{
- // note: the canonic member order would be AsciiName / DefaultValue, but
- // this crashes on unxlngi6.pro, since there's a bug which somehow results in
- // getDefaultDataSourceSettings returning corrupted Any instances then.
- ::com::sun::star::uno::Any DefaultValue;
- const sal_Char* AsciiName;
- const ::com::sun::star::uno::Type& ValueType;
-
- AsciiPropertyValue()
- :DefaultValue( )
- ,AsciiName( NULL )
- ,ValueType( ::cppu::UnoType< ::cppu::UnoVoidType >::get() )
- {
- }
-
- AsciiPropertyValue( const sal_Char* _pAsciiName, const ::com::sun::star::uno::Any& _rDefaultValue )
- :DefaultValue( _rDefaultValue )
- ,AsciiName( _pAsciiName )
- ,ValueType( _rDefaultValue.getValueType() )
- {
- OSL_ENSURE( ValueType.getTypeClass() != ::com::sun::star::uno::TypeClass_VOID,
- "AsciiPropertyValue::AsciiPropertyValue: NULL values not allowed here, use the other CTOR for this!" );
- }
- AsciiPropertyValue( const sal_Char* _pAsciiName, const ::com::sun::star::uno::Type& _rValeType )
- :DefaultValue()
- ,AsciiName( _pAsciiName )
- ,ValueType( _rValeType )
- {
- OSL_ENSURE( ValueType.getTypeClass() != ::com::sun::star::uno::TypeClass_VOID,
- "AsciiPropertyValue::AsciiPropertyValue: VOID property values not supported!" );
- }
-};
-
-class ODatabaseContext;
-class OSharedConnectionManager;
-
-//============================================================
-//= VosMutexFacade
-//============================================================
-/** a class which provides an IMutex interface to an OSL-based mutex
-*/
-class VosMutexFacade : public ::osl::SolarMutex
-{
-public:
- /** beware of life time: the mutex you pass here must live as least as long
- as the VosMutexFacade instance lives.
- */
- VosMutexFacade( ::osl::Mutex& _rMutex );
-
- // IMutex
- virtual void SAL_CALL acquire();
- virtual sal_Bool SAL_CALL tryToAcquire();
- virtual void SAL_CALL release();
-
-private:
- ::osl::Mutex& m_rMutex;
-};
-
-
-//============================================================
-//= ODatabaseModelImpl
-//============================================================
-typedef ::utl::SharedUNOComponent< ::com::sun::star::embed::XStorage > SharedStorage;
-
-class ODatabaseContext;
-class DocumentStorageAccess;
-class OSharedConnectionManager;
-class ODatabaseModelImpl :public ::rtl::IReference
- ,public ::sfx2::IMacroDocumentAccess
- ,public ::sfx2::IModifiableDocument
-{
-public:
- enum ObjectType
- {
- E_FORM = 0,
- E_REPORT = 1,
- E_QUERY = 2,
- E_TABLE = 3
- };
-
- enum EmbeddedMacros
- {
- // the database document (storage) itself contains macros
- eDocumentWideMacros,
- // there are sub document( storage)s containing macros
- eSubDocumentMacros,
- // there are no known macro( storage)s
- eNoMacros
- };
-
-private:
- OModuleClient m_aModuleClient;
- ::com::sun::star::uno::WeakReference< ::com::sun::star::frame::XModel > m_xModel;
- ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XDataSource > m_xDataSource;
-
- DocumentStorageAccess* m_pStorageAccess;
- ::comphelper::SharedMutex m_aMutex;
- VosMutexFacade m_aMutexFacade;
- ::std::vector< TContentPtr > m_aContainer; // one for each ObjectType
- ::sfx2::DocumentMacroMode m_aMacroMode;
- sal_Int16 m_nImposedMacroExecMode;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::script::XStorageBasedLibraryContainer > m_xBasicLibraries;
- ::com::sun::star::uno::Reference< ::com::sun::star::script::XStorageBasedLibraryContainer > m_xDialogLibraries;
-
- SharedStorage m_xDocumentStorage;
- ::rtl::Reference< ::sfx2::DocumentStorageModifyListener > m_pStorageModifyListener;
- ODatabaseContext* m_pDBContext;
- DocumentEventsData m_aDocumentEvents;
-
- ::comphelper::NamedValueCollection m_aMediaDescriptor;
- /// the URL the document was loaded from
- ::rtl::OUString m_sDocFileLocation;
-
- oslInterlockedCount m_refCount;
-
- /// do we have any object (forms/reports) which contains macros?
- ::boost::optional< EmbeddedMacros > m_aEmbeddedMacros;
-
- /// true if setting the Modified flag of the document is currently locked
- bool m_bModificationLock;
-
- /// true if and only if a database document existed previously (though meanwhile disposed), and was already initialized
- bool m_bDocumentInitialized;
-
- /** the URL which the document should report as it's URL
-
- This might differ from ->m_sDocFileLocation in case the document was loaded
- as part of a crash recovery process. In this case, ->m_sDocFileLocation points to
- the temporary file where the DB had been saved to, after a crash.
- ->m_sDocumentURL then is the URL of the document which actually had
- been recovered.
- */
- ::rtl::OUString m_sDocumentURL;
-
-public:
- OWeakConnectionArray m_aConnections;
- const ::comphelper::ComponentContext m_aContext;
-
-public:
- ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess > m_xCommandDefinitions;
- ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess > m_xTableDefinitions;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >
- m_xNumberFormatsSupplier;
- ::rtl::OUString m_sConnectURL;
- ::rtl::OUString m_sName; // transient, our creator has to tell us the title
- ::rtl::OUString m_sUser;
- ::rtl::OUString m_aPassword; // transient !
- ::rtl::OUString m_sFailedPassword;
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>
- m_aLayoutInformation;
- sal_Int32 m_nLoginTimeout;
- sal_Bool m_bReadOnly : 1;
- sal_Bool m_bPasswordRequired : 1;
- sal_Bool m_bSuppressVersionColumns : 1;
- sal_Bool m_bModified : 1;
- sal_Bool m_bDocumentReadOnly : 1;
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyAccess >
- m_xSettings;
- ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aTableFilter;
- ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aTableTypeFilter;
- OSharedConnectionManager* m_pSharedConnectionManager;
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >
- m_xSharedConnectionManager;
- sal_uInt16 m_nControllerLockCount;
-
- void reset();
-
- /** determines whether the database document has an embedded data storage
- */
- inline bool isEmbeddedDatabase() const { return ( m_sConnectURL.compareToAscii( "sdbc:embedded:", 14 ) == 0 ); }
-
- /** stores the embedded storage ("database")
-
- @param _bPreventRootCommits
- Normally, committing the embedded storage results in also commiting the root storage
- - this is an automatism for data safety reasons.
- If you pass <TRUE/> here, committing the root storage is prevented for this particular
- call.
- @return <TRUE/> if the storage could be commited, otherwise <FALSE/>
- */
- bool commitEmbeddedStorage( bool _bPreventRootCommits = false );
-
- /// commits all sub storages
- void commitStorages()
- SAL_THROW(( ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException ));
-
- ODatabaseModelImpl(
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory,
- ODatabaseContext& _pDBContext
- );
- virtual ~ODatabaseModelImpl();
-
- ODatabaseModelImpl(
- const ::rtl::OUString& _rRegistrationName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxFactory,
- ODatabaseContext& _rDBContext
- );
-
- // XEventListener
- void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
-
- void setModified( sal_Bool bModified );
-
- void dispose();
-
- inline ::rtl::OUString getURL() const { return m_sDocumentURL; }
- inline ::rtl::OUString getDocFileLocation() const { return m_sDocFileLocation; }
-
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >
- getStorage(
- const ObjectType _eType, const sal_Int32 _nDesiredMode = ::com::sun::star::embed::ElementModes::READWRITE );
-
-// helper
- const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >&
- getNumberFormatsSupplier();
-
- DocumentEventsData&
- getDocumentEvents() { return m_aDocumentEvents; }
-
- const ::comphelper::NamedValueCollection&
- getMediaDescriptor() const { return m_aMediaDescriptor; }
-
- void setResource(
- const ::rtl::OUString& _rURL,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rArgs
- );
- void setDocFileLocation(
- const ::rtl::OUString& i_rLoadedFrom
- );
-
- static ::comphelper::NamedValueCollection
- stripLoadArguments( const ::comphelper::NamedValueCollection& _rArguments );
-
-// other stuff
- void flushTables();
-
- // disposes all elements in m_aStorages, and clears it
- void disposeStorages() SAL_THROW(());
-
- /// creates a ->com::sun::star::embed::StorageFactory
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XSingleServiceFactory >
- createStorageFactory() const;
-
- /// commits our storage
- void commitRootStorage();
-
- /// commits a given storage if it's not readonly, ignoring (but asserting) all errors
- static bool commitStorageIfWriteable_ignoreErrors(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage
- )
- SAL_THROW(());
-
- void clearConnections();
-
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > getOrCreateRootStorage();
- inline ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > getRootStorage() const { return m_xDocumentStorage.getTyped(); }
- inline void resetRootStroage() { impl_switchToStorage_throw( NULL ); }
-
- /** returns the data source. If it doesn't exist it will be created
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource> getOrCreateDataSource();
-
- /** returns the model, if there already exists one
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > getModel_noCreate() const;
-
- /** returns a new ->ODatabaseDocument
-
- @param _bInitializeIfNecessary
- calls XLoadable::initNew on the newly created model, if necessary
-
- @precond
- No ->ODatabaseDocument exists so far
-
- @seealso
- getModel_noCreate
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel > createNewModel_deliverOwnership( bool _bInitialize );
-
- struct ResetModelAccess { friend class ODatabaseDocument; private: ResetModelAccess() { } };
-
- /** resets the model to NULL
-
- Only to be called when the model is being disposed
- */
- void modelIsDisposing( const bool _wasInitialized, ResetModelAccess );
-
- bool hadInitializedDocument() const { return m_bDocumentInitialized; }
-
- DocumentStorageAccess*
- getDocumentStorageAccess();
-
- ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentSubStorageSupplier >
- getDocumentSubStorageSupplier();
-
- inline const ::comphelper::SharedMutex& getSharedMutex() const { return m_aMutex; }
-
- /** @see osl_incrementInterlockedCount.
- */
- virtual oslInterlockedCount SAL_CALL acquire();
-
- /** @see osl_decrementInterlockedCount.
- */
- virtual oslInterlockedCount SAL_CALL release();
-
- /// returns a all known data source settings, including their default values
- static const AsciiPropertyValue* getDefaultDataSourceSettings();
-
- /** retrieves the requested container of objects (forms/reports/tables/queries)
- */
- TContentPtr& getObjectContainer( const ObjectType _eType );
-
- /** returns the name of the storage which is used to stored objects of the given type, if applicable
- */
- static ::rtl::OUString
- getObjectContainerStorageName( const ObjectType _eType );
-
- /** revokes the data source registration at the database context
- */
- void revokeDataSource() const;
-
- /** determines whether a given object storage contains macros
- */
- static bool objectHasMacros(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxContainerStorage,
- const ::rtl::OUString& _rPersistentName
- );
-
- /** determines which kind of embedded macros are present in the document
- */
- EmbeddedMacros determineEmbeddedMacros();
-
- /** checks our document's macro execution mode, using the interaction handler as supplied with our
- load arguments
- */
- bool checkMacrosOnLoading();
-
- /** adjusts our document's macro execution mode, without using any UI, assuming the user
- would reject execution of macros, if she would have been asked.
-
- If checkMacrosOnLoading has been called before (and thus the macro execution mode
- is already adjusted), then the current execution mode is simply returned.
-
- @return
- whether or not macro execution is allowed
- */
- bool adjustMacroMode_AutoReject();
-
- /** resets our macro execute mode, so next time the checkMacrosOnLoading is called, it will
- behave as if it has never been called before
- */
- void resetMacroExecutionMode();
-
- /** ensures that ->m_xBasicLibraries resp. m_xDialogLibraries exists
-
- @return
- the requested library container. Is never <NULL/>.
-
- @throws RuntimeException
- if something does wrong, which indicates a server error in the installation
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::script::XStorageBasedLibraryContainer >
- getLibraryContainer( bool _bScript );
-
- /** lets our library containers store themself into the given root storage
- */
- void storeLibraryContainersTo( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxToRootStorage );
-
- /** rebases the document to the given storage
-
- No actual committing, copying, saving, whatsoever happens. The storage is just remembered as the documents
- new storage, nothing more.
-
- @throws ::com::sun::star::lang::IllegalArgumentException
- if the given storage is <NULL/>
- @throws ::com::sun::star::lang::RuntimeException
- if any of the invoked operations does so
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >
- switchToStorage(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxNewRootStorage
- );
-
- /** returns the macro mode imposed by an external instance, which passed it to attachResource
- */
- sal_Int16 getImposedMacroExecMode() const
- {
- return m_nImposedMacroExecMode;
- }
- void setImposedMacroExecMode( const sal_Int16 _nMacroMode )
- {
- m_nImposedMacroExecMode = _nMacroMode;
- }
-
-public:
- // IMacroDocumentAccess overridables
- virtual sal_Int16 getCurrentMacroExecMode() const;
- virtual sal_Bool setCurrentMacroExecMode( sal_uInt16 );
- virtual ::rtl::OUString getDocumentLocation() const;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > getZipStorageToSign();
- virtual sal_Bool documentStorageHasMacros() const;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::document::XEmbeddedScripts > getEmbeddedDocumentScripts() const;
- virtual sal_Int16 getScriptingSignatureState();
- virtual sal_Bool hasTrustedScriptingSignature( sal_Bool bAllowUIToAddAuthor );
- virtual void showBrokenSignatureWarning( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& _rxInteraction ) const;
-
- // IModifiableDocument
- virtual void storageIsModified();
-
- // don't use directly, use the ModifyLock class instead
- void lockModify() { m_bModificationLock = true; }
- void unlockModify() { m_bModificationLock = false; }
- bool isModifyLocked() const { return m_bModificationLock; }
-
-private:
- void impl_construct_nothrow();
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >
- impl_switchToStorage_throw( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxNewRootStorage );
-
- /** switches to the given document URL, which denotes the logical URL of the document, not necessariy the
- URL where the doc was loaded/recovered from
- */
- void impl_switchToLogicalURL(
- const ::rtl::OUString& i_rDocumentURL
- );
-
-};
-
-/** a small base class for UNO components whose functionality depends on a ODatabaseModelImpl
-*/
-class ModelDependentComponent
-{
-protected:
- ::rtl::Reference< ODatabaseModelImpl > m_pImpl;
- mutable ::comphelper::SharedMutex m_aMutex;
-
-protected:
- ModelDependentComponent( const ::rtl::Reference< ODatabaseModelImpl >& _model );
- virtual ~ModelDependentComponent();
-
- /** returns the component itself
- */
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getThis() const = 0;
-
- inline ::osl::Mutex& getMutex() const
- {
- return m_aMutex;
- }
-
-public:
- struct GuardAccess { friend class ModelMethodGuard; private: GuardAccess() { } };
-
- /** returns the mutex used for thread safety
-
- @throws ::com::sun::star::lang::DisposedException
- if m_pImpl is <NULL/>. Usually, you will set this member in your derived
- component's <code>dispose</code> method to <NULL/>.
- */
- inline ::osl::Mutex& getMutex( GuardAccess ) const
- {
- return getMutex();
- }
- inline ::rtl::Reference< ODatabaseModelImpl > getImpl( GuardAccess ) const
- {
- return m_pImpl;
- }
-
- /// checks whether the component is already disposed, throws a DisposedException if so
- inline void checkDisposed() const
- {
- if ( !m_pImpl.is() )
- throw ::com::sun::star::lang::DisposedException( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Component is already disposed.")), getThis() );
- }
-
- inline void lockModify()
- {
- m_pImpl->lockModify();
- }
-
- inline void unlockModify()
- {
- m_pImpl->unlockModify();
- }
-};
-
-class ModifyLock
-{
-public:
- ModifyLock( ModelDependentComponent& _component )
- :m_rComponent( _component )
- {
- m_rComponent.lockModify();
- }
-
- ~ModifyLock()
- {
- m_rComponent.unlockModify();
- }
-
-private:
- ModelDependentComponent& m_rComponent;
-};
-
-/** a guard for public methods of objects dependent on a ODatabaseModelImpl instance
-
- Just put this guard onto the stack at the beginning of your method. Don't bother yourself
- with a MutexGuard, checks for being disposed, and the like.
-*/
-class ModelMethodGuard : public ::osl::ResettableMutexGuard
-{
-private:
- typedef ::osl::ResettableMutexGuard BaseMutexGuard;
-
-public:
- /** constructs the guard
-
- @param _component
- the component whose functionality depends on a ODatabaseModelImpl instance
-
- @throws ::com::sun::star::lang::DisposedException
- If the given component is already disposed
- */
- ModelMethodGuard( const ModelDependentComponent& _component )
- :BaseMutexGuard( _component.getMutex( ModelDependentComponent::GuardAccess() ) )
- {
- _component.checkDisposed();
- }
-
- ~ModelMethodGuard()
- {
- }
-};
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // _DBA_COREDATAACCESS_DATALINK_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/SharedConnection.cxx b/dbaccess/source/core/dataaccess/SharedConnection.cxx
deleted file mode 100644
index 7f2cad014..000000000
--- a/dbaccess/source/core/dataaccess/SharedConnection.cxx
+++ /dev/null
@@ -1,169 +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_dbaccess.hxx"
-#include "SharedConnection.hxx"
-#include <tools/debug.hxx>
-
-
-namespace dbaccess
-{
- 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 connectivity;
-
-DBG_NAME(OSharedConnection)
-OSharedConnection::OSharedConnection(Reference< XAggregation >& _rxProxyConnection)
- : OSharedConnection_BASE(m_aMutex)
-{
- DBG_CTOR(OSharedConnection,NULL);
- setDelegation(_rxProxyConnection,m_refCount);
-}
-
-OSharedConnection::~OSharedConnection()
-{
- DBG_DTOR(OSharedConnection,NULL);
-}
-
-void SAL_CALL OSharedConnection::disposing(void)
-{
- OSharedConnection_BASE::disposing();
- OConnectionWrapper::disposing();
-}
-
-Reference< XStatement > SAL_CALL OSharedConnection::createStatement( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
- return m_xConnection->createStatement();
-}
-
-Reference< XPreparedStatement > SAL_CALL OSharedConnection::prepareStatement( const ::rtl::OUString& sql ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
- return m_xConnection->prepareStatement(sql);
-}
-
-Reference< XPreparedStatement > SAL_CALL OSharedConnection::prepareCall( const ::rtl::OUString& sql ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
- return m_xConnection->prepareCall(sql);
-}
-
-::rtl::OUString SAL_CALL OSharedConnection::nativeSQL( const ::rtl::OUString& sql ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
- return m_xConnection->nativeSQL(sql);
-}
-
-sal_Bool SAL_CALL OSharedConnection::getAutoCommit( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
- return m_xConnection->getAutoCommit();
-}
-
-void SAL_CALL OSharedConnection::commit( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
- m_xConnection->commit();
-}
-
-void SAL_CALL OSharedConnection::rollback( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
- m_xConnection->rollback();
-}
-
-sal_Bool SAL_CALL OSharedConnection::isClosed( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- if ( !m_xConnection.is() )
- return sal_True;
-
- return m_xConnection->isClosed();
-}
-
-Reference< XDatabaseMetaData > SAL_CALL OSharedConnection::getMetaData( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
-
- return m_xConnection->getMetaData();
-}
-
-sal_Bool SAL_CALL OSharedConnection::isReadOnly( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
- return m_xConnection->isReadOnly();
-}
-
-::rtl::OUString SAL_CALL OSharedConnection::getCatalog( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
- return m_xConnection->getCatalog();
-}
-
-sal_Int32 SAL_CALL OSharedConnection::getTransactionIsolation( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
- return m_xConnection->getTransactionIsolation();
-}
-
-Reference< ::com::sun::star::container::XNameAccess > SAL_CALL OSharedConnection::getTypeMap( ) throw(SQLException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- checkDisposed(rBHelper.bDisposed);
-
- return m_xConnection->getTypeMap();
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/SharedConnection.hxx b/dbaccess/source/core/dataaccess/SharedConnection.hxx
deleted file mode 100644
index 4d21609d8..000000000
--- a/dbaccess/source/core/dataaccess/SharedConnection.hxx
+++ /dev/null
@@ -1,144 +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.
- *
- ************************************************************************/
-#ifndef DBA_CORE_SHARED_CONNECTION_HXX
-#define DBA_CORE_SHARED_CONNECTION_HXX
-
-#include "connectivity/ConnectionWrapper.hxx"
-#include <cppuhelper/component.hxx>
-#include <connectivity/CommonTools.hxx>
-#include <cppuhelper/compbase1.hxx>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
-#include <com/sun/star/sdbc/SQLWarning.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/sdb/XSQLQueryComposerFactory.hpp>
-#include <com/sun/star/sdb/XCommandPreparation.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/sdbcx/XViewsSupplier.hpp>
-#include <com/sun/star/sdb/XQueriesSupplier.hpp>
-#include <comphelper/sequence.hxx>
-
-
-namespace dbaccess
-{
- //=======================================================================================
- //= OSharedConnection: This class implements a simple forwarding of connection calls.
- //= All methods will be forwarded with exception of the set methods, which are not allowed
- //= to be called on shared connections. Instances of this class will be created when the
- //= datasource is asked for not isolated connection.
- //=======================================================================================
- typedef ::cppu::WeakComponentImplHelper1< ::com::sun::star::sdbc::XConnection
- > OSharedConnection_BASE;
- typedef ::connectivity::OConnectionWrapper OSharedConnection_BASE2;
-
- class OSharedConnection : public ::comphelper::OBaseMutex
- , public OSharedConnection_BASE
- , public OSharedConnection_BASE2
- {
- protected:
- virtual void SAL_CALL disposing(void);
- virtual ~OSharedConnection();
- public:
- OSharedConnection(::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation >& _rxProxyConnection);
-
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw (::com::sun::star::uno::RuntimeException);
-
- virtual void SAL_CALL acquire() throw() { OSharedConnection_BASE::acquire(); }
- virtual void SAL_CALL release() throw() { OSharedConnection_BASE::release(); }
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw (::com::sun::star::uno::RuntimeException)
- {
- return ::comphelper::concatSequences(
- OSharedConnection_BASE::getTypes(),
- OSharedConnection_BASE2::getTypes()
- );
- }
-
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type& _rType ) throw (::com::sun::star::uno::RuntimeException)
- {
- ::com::sun::star::uno::Any aReturn = OSharedConnection_BASE::queryInterface(_rType);
- if ( !aReturn.hasValue() )
- aReturn = OSharedConnection_BASE2::queryInterface(_rType);
- return aReturn;
- }
-
- // XCloseable
- virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
- {
- {
- ::osl::MutexGuard aGuard( m_aMutex );
- ::connectivity::checkDisposed(rBHelper.bDisposed);
- }
- dispose();
- }
-
- // XConnection
- virtual void SAL_CALL setAutoCommit( sal_Bool /*autoCommit*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
- {
- throw ::com::sun::star::sdbc::SQLException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("This call is not allowed when sharing connections.")),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S10000")),0,::com::sun::star::uno::Any());
- }
- virtual void SAL_CALL setReadOnly( sal_Bool /*readOnly*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
- {
- throw ::com::sun::star::sdbc::SQLException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("This call is not allowed when sharing connections.")),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S10000")),0,::com::sun::star::uno::Any());
- }
- virtual void SAL_CALL setCatalog( const ::rtl::OUString& /*catalog*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
- {
- throw ::com::sun::star::sdbc::SQLException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("This call is not allowed when sharing connections.")),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S10000")),0,::com::sun::star::uno::Any());
- }
- virtual void SAL_CALL setTransactionIsolation( sal_Int32 /*level*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
- {
- throw ::com::sun::star::sdbc::SQLException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("This call is not allowed when sharing connections.")),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S10000")),0,::com::sun::star::uno::Any());
- }
- virtual void SAL_CALL setTypeMap( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& /*typeMap*/ ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException)
- {
- throw ::com::sun::star::sdbc::SQLException(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("This call is not allowed when sharing connections.")),*this,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S10000")),0,::com::sun::star::uno::Any());
- }
- // XConnection
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > SAL_CALL createStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareStatement( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareCall( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL nativeSQL( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL getAutoCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL commit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL rollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isClosed( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isReadOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getCatalog( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getTransactionIsolation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTypeMap( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- };
-
-#ifdef IMPLEMENT_GET_IMPLEMENTATION_ID
- IMPLEMENT_GET_IMPLEMENTATION_ID( OSharedConnection );
-#endif
-
-} // namespace dbaccess
-
-#endif // DBA_CORE_SHARED_CONNECTION_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/bookmarkcontainer.cxx b/dbaccess/source/core/dataaccess/bookmarkcontainer.cxx
deleted file mode 100644
index 9038df36c..000000000
--- a/dbaccess/source/core/dataaccess/bookmarkcontainer.cxx
+++ /dev/null
@@ -1,372 +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_dbaccess.hxx"
-
-#include "bookmarkcontainer.hxx"
-#include "dbastrings.hrc"
-#include "apitools.hxx"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-
-#include <tools/debug.hxx>
-#include <osl/diagnose.h>
-#include <comphelper/sequence.hxx>
-#include <comphelper/enumhelper.hxx>
-#include <comphelper/extract.hxx>
-#include <com/sun/star/lang/XComponent.hpp>
-#include <comphelper/types.hxx>
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::container;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-namespace dbaccess
-{
-
-//==========================================================================
-//= OBookmarkContainer
-//==========================================================================
-DBG_NAME(OBookmarkContainer)
-
-OBookmarkContainer::OBookmarkContainer(OWeakObject& _rParent, Mutex& _rMutex)
- :m_rParent(_rParent)
- ,m_aContainerListeners(_rMutex)
- ,m_rMutex(_rMutex)
-{
- DBG_CTOR(OBookmarkContainer, NULL);
-}
-
-void OBookmarkContainer::dispose()
-{
- MutexGuard aGuard(m_rMutex);
-
- // say goodbye to our listeners
- EventObject aEvt(*this);
- m_aContainerListeners.disposeAndClear(aEvt);
-
- // remove our elements
- m_aBookmarksIndexed.clear();
- m_aBookmarks.clear();
-}
-
-void SAL_CALL OBookmarkContainer::acquire( ) throw()
-{
- m_rParent.acquire();
-}
-
-void SAL_CALL OBookmarkContainer::release( ) throw()
-{
- m_rParent.release();
-}
-
-OBookmarkContainer::~OBookmarkContainer()
-{
- DBG_DTOR(OBookmarkContainer, NULL);
-}
-
-// XServiceInfo
-::rtl::OUString SAL_CALL OBookmarkContainer::getImplementationName( ) throw(RuntimeException)
-{
- return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.dba.OBookmarkContainer"));
-}
-
-sal_Bool SAL_CALL OBookmarkContainer::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- checkValid(sal_False);
- return findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL OBookmarkContainer::getSupportedServiceNames( ) throw(RuntimeException)
-{
- Sequence< ::rtl::OUString > aReturn(1);
- aReturn.getArray()[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.DefinitionContainer"));
- return aReturn;
-}
-
-// XNameContainer
-void SAL_CALL OBookmarkContainer::insertByName( const ::rtl::OUString& _rName, const Any& aElement ) throw(IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- checkValid(sal_True);
-
- if (checkExistence(_rName))
- throw ElementExistException();
-
- if (0 == _rName.getLength())
- throw IllegalArgumentException();
-
- // approve the new object
- ::rtl::OUString sNewLink;
- if (!(aElement >>= sNewLink))
- throw IllegalArgumentException();
-
-
- implAppend(_rName, sNewLink);
-
- // notify the listeners
- if (m_aContainerListeners.getLength())
- {
- ContainerEvent aEvent(*this, makeAny(_rName), makeAny(sNewLink), Any());
- OInterfaceIteratorHelper aListenerIterator(m_aContainerListeners);
- while (aListenerIterator.hasMoreElements())
- static_cast< XContainerListener* >(aListenerIterator.next())->elementInserted(aEvent);
- }
-}
-
-void SAL_CALL OBookmarkContainer::removeByName( const ::rtl::OUString& _rName ) throw(NoSuchElementException, WrappedTargetException, RuntimeException)
-{
- ::rtl::OUString sOldBookmark;
- {
- MutexGuard aGuard(m_rMutex);
- checkValid(sal_True);
-
- // check the arguments
- if (!_rName.getLength())
- throw IllegalArgumentException();
-
- if (!checkExistence(_rName))
- throw NoSuchElementException();
-
- // the old element (for the notifications)
- sOldBookmark = m_aBookmarks[_rName];
-
- // do the removal
- implRemove(_rName);
- }
-
- // notify the listeners
- if (m_aContainerListeners.getLength())
- {
- ContainerEvent aEvent(*this, makeAny(_rName), makeAny(sOldBookmark), Any());
- OInterfaceIteratorHelper aListenerIterator(m_aContainerListeners);
- while (aListenerIterator.hasMoreElements())
- static_cast< XContainerListener* >(aListenerIterator.next())->elementRemoved(aEvent);
- }
-}
-
-// XNameReplace
-void SAL_CALL OBookmarkContainer::replaceByName( const ::rtl::OUString& _rName, const Any& aElement ) throw(IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException)
-{
- ClearableMutexGuard aGuard(m_rMutex);
- checkValid(sal_True);
-
- // check the arguments
- if (!_rName.getLength())
- throw IllegalArgumentException();
-
- // do we have such an element?
- if (!checkExistence(_rName))
- throw NoSuchElementException();
-
- // approve the new object
- ::rtl::OUString sNewLink;
- if (!(aElement >>= sNewLink))
- throw IllegalArgumentException();
-
- // the old element (for the notifications)
- ::rtl::OUString sOldLink = m_aBookmarks[_rName];
-
- // do the replace
- implReplace(_rName, sNewLink);
-
- // notify the listeners
- aGuard.clear();
- if (m_aContainerListeners.getLength())
- {
- ContainerEvent aEvent(*this, makeAny(_rName), makeAny(sNewLink), makeAny(sOldLink));
- OInterfaceIteratorHelper aListenerIterator(m_aContainerListeners);
- while (aListenerIterator.hasMoreElements())
- static_cast< XContainerListener* >(aListenerIterator.next())->elementReplaced(aEvent);
- }
-}
-
-void SAL_CALL OBookmarkContainer::addContainerListener( const Reference< XContainerListener >& _rxListener ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- if (_rxListener.is())
- m_aContainerListeners.addInterface(_rxListener);
-}
-
-void SAL_CALL OBookmarkContainer::removeContainerListener( const Reference< XContainerListener >& _rxListener ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- if (_rxListener.is())
- m_aContainerListeners.removeInterface(_rxListener);
-}
-
-// XElementAccess
-Type SAL_CALL OBookmarkContainer::getElementType( ) throw (RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- checkValid(sal_False);
- return ::getCppuType( static_cast< ::rtl::OUString* >(NULL) );
-}
-
-sal_Bool SAL_CALL OBookmarkContainer::hasElements( ) throw (RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- checkValid(sal_False);
- return !m_aBookmarks.empty();
-}
-
-// XEnumerationAccess
-Reference< XEnumeration > SAL_CALL OBookmarkContainer::createEnumeration( ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- checkValid(sal_False);
- return new ::comphelper::OEnumerationByIndex(static_cast<XIndexAccess*>(this));
-}
-
-// XIndexAccess
-sal_Int32 SAL_CALL OBookmarkContainer::getCount( ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- checkValid(sal_False);
- return m_aBookmarks.size();
-}
-
-Any SAL_CALL OBookmarkContainer::getByIndex( sal_Int32 _nIndex ) throw(IndexOutOfBoundsException, WrappedTargetException, RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- checkValid(sal_False);
-
- if ((_nIndex < 0) || (_nIndex >= (sal_Int32)m_aBookmarksIndexed.size()))
- throw IndexOutOfBoundsException();
-
- return makeAny(m_aBookmarksIndexed[_nIndex]->second);
-}
-
-Any SAL_CALL OBookmarkContainer::getByName( const ::rtl::OUString& _rName ) throw(NoSuchElementException, WrappedTargetException, RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- checkValid(sal_False);
-
- if (!checkExistence(_rName))
- throw NoSuchElementException();
-
- return makeAny(m_aBookmarks[_rName]);
-}
-
-Sequence< ::rtl::OUString > SAL_CALL OBookmarkContainer::getElementNames( ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- checkValid(sal_False);
-
- Sequence< ::rtl::OUString > aNames(m_aBookmarks.size());
- ::rtl::OUString* pNames = aNames.getArray();
- ;
- for ( ConstMapIteratorVectorIterator aNameIter = m_aBookmarksIndexed.begin();
- aNameIter != m_aBookmarksIndexed.end();
- ++pNames, ++aNameIter
- )
- {
- *pNames = (*aNameIter)->first;
- }
-
- return aNames;
-}
-
-sal_Bool SAL_CALL OBookmarkContainer::hasByName( const ::rtl::OUString& _rName ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_rMutex);
- checkValid(sal_False);
-
- return checkExistence(_rName);
-}
-
-void OBookmarkContainer::implRemove(const ::rtl::OUString& _rName)
-{
- MutexGuard aGuard(m_rMutex);
-
- // look for the name in the index access vector
- MapString2StringIterator aMapPos = m_aBookmarks.end();
- for ( MapIteratorVectorIterator aSearch = m_aBookmarksIndexed.begin();
- aSearch != m_aBookmarksIndexed.end();
- ++aSearch
- )
- {
-#ifdef DBG_UTIL
- ::rtl::OUString sName = (*aSearch)->first;
-#endif
- if ((*aSearch)->first == _rName)
- {
- aMapPos = *aSearch;
- m_aBookmarksIndexed.erase(aSearch);
- break;
- }
- }
-
- if (m_aBookmarks.end() == aMapPos)
- {
- OSL_FAIL("OBookmarkContainer::implRemove: inconsistence!");
- return;
- }
-
- // remove the map entries
- m_aBookmarks.erase(aMapPos);
-}
-
-void OBookmarkContainer::implAppend(const ::rtl::OUString& _rName, const ::rtl::OUString& _rDocumentLocation)
-{
- MutexGuard aGuard(m_rMutex);
-
- OSL_ENSURE(m_aBookmarks.find(_rName) == m_aBookmarks.end(),"Bookmark already known!");
- m_aBookmarksIndexed.push_back(m_aBookmarks.insert( MapString2String::value_type(_rName,_rDocumentLocation)).first);
-}
-
-void OBookmarkContainer::implReplace(const ::rtl::OUString& _rName, const ::rtl::OUString& _rNewLink)
-{
- MutexGuard aGuard(m_rMutex);
- OSL_ENSURE(checkExistence(_rName), "OBookmarkContainer::implReplace : invalid name !");
-
- m_aBookmarks[_rName] = _rNewLink;
-}
-
-void OBookmarkContainer::checkValid(sal_Bool /*_bIntendWriteAccess*/) const throw (RuntimeException, DisposedException)
-{
-}
-
-Reference< XInterface > SAL_CALL OBookmarkContainer::getParent( ) throw (RuntimeException)
-{
- return m_rParent;
-}
-
-void SAL_CALL OBookmarkContainer::setParent( const Reference< XInterface >& /*Parent*/ ) throw (NoSupportException, RuntimeException)
-{
- throw NoSupportException();
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/bookmarkcontainer.hxx b/dbaccess/source/core/dataaccess/bookmarkcontainer.hxx
deleted file mode 100644
index 648d5654d..000000000
--- a/dbaccess/source/core/dataaccess/bookmarkcontainer.hxx
+++ /dev/null
@@ -1,179 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_BOOKMARKCONTAINER_HXX_
-#define _DBA_CORE_BOOKMARKCONTAINER_HXX_
-
-#include <cppuhelper/interfacecontainer.hxx>
-#include <cppuhelper/implbase6.hxx>
-#include <comphelper/stl_types.hxx>
-#include <osl/mutex.hxx>
-#include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/container/XContainer.hpp>
-#include <com/sun/star/container/XEnumerationAccess.hpp>
-#include <com/sun/star/container/XIndexAccess.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-
-namespace dbaccess
-{
-
-//==========================================================================
-//= OBookmarkContainer - base class of collections of database definition
-//= documents
-//==========================================================================
-typedef ::cppu::WeakImplHelper6 <
- ::com::sun::star::container::XIndexAccess
- , ::com::sun::star::container::XNameContainer
- , ::com::sun::star::container::XEnumerationAccess
- , ::com::sun::star::container::XContainer
- , ::com::sun::star::lang::XServiceInfo
- , ::com::sun::star::container::XChild
- > OBookmarkContainer_Base;
-
-class OBookmarkContainer
- :public OBookmarkContainer_Base
-{
-protected:
- DECLARE_STL_USTRINGACCESS_MAP(::rtl::OUString, MapString2String);
- DECLARE_STL_VECTOR(MapString2StringIterator, MapIteratorVector);
-
- MapString2String m_aBookmarks; // the bookmarks itself
- MapIteratorVector m_aBookmarksIndexed; // for index access to the
-
-protected:
- ::cppu::OWeakObject& m_rParent; // for the ref counting
- ::cppu::OInterfaceContainerHelper
- m_aContainerListeners;
- ::osl::Mutex& m_rMutex;
-
-
-public:
- /** constructs the container.<BR>
- after the construction of the object the creator has to call <code>initialize</code>.
- @param _rParent the parent object which is used for ref counting
- @param _rMutex the parent's mutex object for access safety
- */
- OBookmarkContainer(
- ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex
- );
-
- /** looks like the dtor ...
- */
- virtual ~OBookmarkContainer();
-
-// ::com::sun::star::uno::XInterface
- virtual void SAL_CALL acquire( ) throw();
- virtual void SAL_CALL release( ) throw();
-
-// ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XElementAccess
- virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasElements( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XEnumerationAccess
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XIndexAccess
- virtual sal_Int32 SAL_CALL getCount( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 _nIndex ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XNameContainer
- virtual void SAL_CALL insertByName( const ::rtl::OUString& _rName, const ::com::sun::star::uno::Any& aElement ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeByName( const ::rtl::OUString& _rName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XNameReplace
- virtual void SAL_CALL replaceByName( const ::rtl::OUString& _rName, const ::com::sun::star::uno::Any& aElement ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XNameAccess
- virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XContainer
- virtual void SAL_CALL addContainerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeContainerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XChild
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
-
-// helper
- /** tell the container to free all resources. After that it's in a state like after the construction, i.e.
- you may call <code>initialize</code> again (maybe with another configuration node).
- */
- virtual void dispose();
-
-
-protected:
- /** checks whether the object is basically alive, i.e. it has been fully initialized (@see initialize) and
- not disposed (@see dispose)
- @param _bIntendWriteAccess determines whether or not the caller intends to modify the configuration.
- if sal_True and the configuration is readonly, a runtime exception with
- a description string is thrown.
- */
- void checkValid(sal_Bool _bIntendWriteAccess) const throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::DisposedException);
-
- /** quickly checks if there already is an element with a given name. No access to the configuration occures, i.e.
- if there is such an object which is not already loaded, it won't be loaded now.
- @param _rName the object name to check
- @return sal_True if there already exists such an object
- */
- inline sal_Bool checkExistence(const ::rtl::OUString& _rName);
-
- void implAppend(
- const ::rtl::OUString& _rName,
- const ::rtl::OUString& _rDocumentLocation
- );
-
- void implRemove(const ::rtl::OUString& _rName);
-
- void implReplace(
- const ::rtl::OUString& _rName,
- const ::rtl::OUString& _rNewLink);
-
-};
-
-inline sal_Bool OBookmarkContainer::checkExistence(const ::rtl::OUString& _rName)
-{
- return m_aBookmarks.find(_rName) != m_aBookmarks.end();
-}
-
-} // namespace dbaccess
-
-#endif // _DBA_CORE_BOOKMARKCONTAINER_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/commandcontainer.cxx b/dbaccess/source/core/dataaccess/commandcontainer.cxx
deleted file mode 100644
index 3394cd0f0..000000000
--- a/dbaccess/source/core/dataaccess/commandcontainer.cxx
+++ /dev/null
@@ -1,101 +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_dbaccess.hxx"
-
-#include "commandcontainer.hxx"
-#include "commanddefinition.hxx"
-
-#include <tools/debug.hxx>
-#include "dbastrings.hrc"
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::ucb;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-namespace dbaccess
-{
-
-//==========================================================================
-//= OCommandContainer
-//==========================================================================
-DBG_NAME(OCommandContainer)
-
-OCommandContainer::OCommandContainer( const Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB
- ,const Reference< XInterface >& _xParentContainer
- ,const TContentPtr& _pImpl
- ,sal_Bool _bTables
- )
- :ODefinitionContainer(_xORB,_xParentContainer,_pImpl,!_bTables)
- ,m_bTables(_bTables)
-{
- DBG_CTOR(OCommandContainer, NULL);
-}
-
-OCommandContainer::~OCommandContainer()
-{
- DBG_DTOR(OCommandContainer, NULL);
-}
-
-IMPLEMENT_FORWARD_XINTERFACE2( OCommandContainer,ODefinitionContainer,OCommandContainer_BASE)
-IMPLEMENT_TYPEPROVIDER2(OCommandContainer,ODefinitionContainer,OCommandContainer_BASE);
-
-Reference< XContent > OCommandContainer::createObject( const ::rtl::OUString& _rName)
-{
- const ODefinitionContainer_Impl& rDefinitions( getDefinitions() );
- OSL_ENSURE( rDefinitions.find(_rName) != rDefinitions.end(), "OCommandContainer::createObject: Invalid entry in map!" );
-
- const TContentPtr& pElementContent( rDefinitions.find( _rName )->second );
- if ( m_bTables )
- return new OComponentDefinition( *this, _rName, m_aContext.getLegacyServiceFactory(), pElementContent, m_bTables );
- return new OCommandDefinition( *this, _rName, m_aContext.getLegacyServiceFactory(), pElementContent );
-}
-
-Reference< XInterface > SAL_CALL OCommandContainer::createInstanceWithArguments(const Sequence< Any >& /*aArguments*/ ) throw (Exception, RuntimeException)
-{
- return createInstance( );
-}
-
-Reference< XInterface > SAL_CALL OCommandContainer::createInstance( ) throw (Exception, RuntimeException)
-{
- return m_aContext.createComponent( (::rtl::OUString)( m_bTables ? SERVICE_SDB_TABLEDEFINITION : SERVICE_SDB_COMMAND_DEFINITION ) );
-}
-
-::rtl::OUString OCommandContainer::determineContentType() const
-{
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "application/vnd.org.openoffice.DatabaseCommandDefinitionContainer" ) );
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/commandcontainer.hxx b/dbaccess/source/core/dataaccess/commandcontainer.hxx
deleted file mode 100644
index a425d7795..000000000
--- a/dbaccess/source/core/dataaccess/commandcontainer.hxx
+++ /dev/null
@@ -1,85 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_COREDATAACCESS_COMMANDCONTAINER_HXX_
-#define _DBA_COREDATAACCESS_COMMANDCONTAINER_HXX_
-
-#include "definitioncontainer.hxx"
-
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-
-#include <cppuhelper/implbase1.hxx>
-
-namespace dbaccess
-{
-//==========================================================================
-//= OCommandContainer
-//==========================================================================
-
-typedef ::cppu::ImplHelper1 < ::com::sun::star::lang::XSingleServiceFactory
- > OCommandContainer_BASE;
-
-class OCommandContainer : public ODefinitionContainer
- ,public OCommandContainer_BASE
-{
- sal_Bool m_bTables;
-
-public:
- /** constructs the container.<BR>
- */
- OCommandContainer(
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xParentContainer
- ,const TContentPtr& _pImpl
- ,sal_Bool _bTables
- );
-
- DECLARE_XINTERFACE( )
- DECLARE_TYPEPROVIDER( );
-
- // XSingleServiceFactory
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstance( ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstanceWithArguments( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
-
-protected:
- virtual ~OCommandContainer();
-
- // ODefinitionContainer
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent > createObject(const ::rtl::OUString& _rName);
-
-protected:
- // OContentHelper overridables
- virtual ::rtl::OUString determineContentType() const;
-};
-
-} // namespace dbaccess
-
-
-#endif // _DBA_COREDATAACCESS_COMMANDCONTAINER_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/commanddefinition.cxx b/dbaccess/source/core/dataaccess/commanddefinition.cxx
deleted file mode 100644
index eda4a6335..000000000
--- a/dbaccess/source/core/dataaccess/commanddefinition.cxx
+++ /dev/null
@@ -1,167 +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_dbaccess.hxx"
-
-#include "commanddefinition.hxx"
-#include "apitools.hxx"
-#include "dbastrings.hrc"
-#include "module_dba.hxx"
-
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-
-#include <tools/debug.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/componentcontext.hxx>
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::container;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-namespace dbaccess
-{
-
-//==========================================================================
-//= OCommandDefinition
-//==========================================================================
-extern "C" void SAL_CALL createRegistryInfo_OCommandDefinition()
-{
- static ::dba::OAutoRegistration< OCommandDefinition > aAutoRegistration;
-}
-
-DBG_NAME(OCommandDefinition)
-
-void OCommandDefinition::registerProperties()
-{
- OCommandDefinition_Impl& rCommandDefinition( getCommandDefinition() );
- registerProperty(PROPERTY_COMMAND, PROPERTY_ID_COMMAND, PropertyAttribute::BOUND,
- &rCommandDefinition.m_sCommand, ::getCppuType(&rCommandDefinition.m_sCommand));
-
- registerProperty(PROPERTY_ESCAPE_PROCESSING, PROPERTY_ID_ESCAPE_PROCESSING, PropertyAttribute::BOUND,
- &rCommandDefinition.m_bEscapeProcessing, ::getBooleanCppuType());
-
- registerProperty(PROPERTY_UPDATE_TABLENAME, PROPERTY_ID_UPDATE_TABLENAME, PropertyAttribute::BOUND,
- &rCommandDefinition.m_sUpdateTableName, ::getCppuType(&rCommandDefinition.m_sUpdateTableName));
-
- registerProperty(PROPERTY_UPDATE_SCHEMANAME, PROPERTY_ID_UPDATE_SCHEMANAME, PropertyAttribute::BOUND,
- &rCommandDefinition.m_sUpdateSchemaName, ::getCppuType(&rCommandDefinition.m_sUpdateSchemaName));
-
- registerProperty(PROPERTY_UPDATE_CATALOGNAME, PROPERTY_ID_UPDATE_CATALOGNAME, PropertyAttribute::BOUND,
- &rCommandDefinition.m_sUpdateCatalogName, ::getCppuType(&rCommandDefinition.m_sUpdateCatalogName));
- registerProperty(PROPERTY_LAYOUTINFORMATION, PROPERTY_ID_LAYOUTINFORMATION, PropertyAttribute::BOUND,
- &rCommandDefinition.m_aLayoutInformation, ::getCppuType(&rCommandDefinition.m_aLayoutInformation));
-}
-
-OCommandDefinition::OCommandDefinition(const Reference< XMultiServiceFactory >& _xORB
- ,const Reference< XInterface >& _rxContainer
- ,const TContentPtr& _pImpl)
- :OComponentDefinition(_xORB,_rxContainer,_pImpl,sal_False)
-{
- DBG_CTOR(OCommandDefinition, NULL);
- registerProperties();
-}
-
-OCommandDefinition::~OCommandDefinition()
-{
- DBG_DTOR(OCommandDefinition, NULL);
-}
-
-OCommandDefinition::OCommandDefinition( const Reference< XInterface >& _rxContainer
- ,const ::rtl::OUString& _rElementName
- ,const Reference< XMultiServiceFactory >& _xORB
- ,const TContentPtr& _pImpl)
- :OComponentDefinition(_rxContainer,_rElementName,_xORB,_pImpl,sal_False)
-{
- DBG_CTOR(OCommandDefinition, NULL);
- registerProperties();
-}
-
-IMPLEMENT_IMPLEMENTATION_ID(OCommandDefinition);
-IMPLEMENT_GETTYPES2(OCommandDefinition,OCommandDefinition_Base,OComponentDefinition);
-IMPLEMENT_FORWARD_XINTERFACE2( OCommandDefinition,OComponentDefinition,OCommandDefinition_Base)
-IMPLEMENT_PROPERTYCONTAINER_DEFAULTS2(OCommandDefinition,OCommandDefinition_PROP)
-
-::rtl::OUString OCommandDefinition::getImplementationName_static( ) throw(RuntimeException)
-{
- return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.dba.OCommandDefinition"));
-}
-
-::rtl::OUString SAL_CALL OCommandDefinition::getImplementationName( ) throw(RuntimeException)
-{
- return getImplementationName_static();
-}
-
-Sequence< ::rtl::OUString > OCommandDefinition::getSupportedServiceNames_static( ) throw(RuntimeException)
-{
- Sequence< ::rtl::OUString > aServices(3);
- aServices.getArray()[0] = SERVICE_SDB_QUERYDEFINITION;
- aServices.getArray()[1] = SERVICE_SDB_COMMAND_DEFINITION;
- aServices.getArray()[2] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ucb.Content"));
- return aServices;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL OCommandDefinition::getSupportedServiceNames( ) throw(RuntimeException)
-{
- return getSupportedServiceNames_static();
-}
-
-Reference< XInterface > OCommandDefinition::Create(const Reference< XComponentContext >& _rxContext)
-{
- ::comphelper::ComponentContext aContext( _rxContext );
- return *(new OCommandDefinition( aContext.getLegacyServiceFactory(), NULL, TContentPtr( new OCommandDefinition_Impl ) ) );
-}
-
-void SAL_CALL OCommandDefinition::rename( const ::rtl::OUString& newName ) throw (SQLException, ElementExistException, RuntimeException)
-{
- try
- {
- sal_Int32 nHandle = PROPERTY_ID_NAME;
- osl::ClearableGuard< osl::Mutex > aGuard(m_aMutex);
- Any aOld = makeAny(m_pImpl->m_aProps.aTitle);
- aGuard.clear();
- Any aNew = makeAny(newName);
- fire(&nHandle, &aNew, &aOld, 1, sal_True );
-
- m_pImpl->m_aProps.aTitle = newName;
- fire(&nHandle, &aNew, &aOld, 1, sal_False );
- }
- catch(const PropertyVetoException&)
- {
- throw ElementExistException(newName,*this);
- }
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/commanddefinition.hxx b/dbaccess/source/core/dataaccess/commanddefinition.hxx
deleted file mode 100644
index b823c08f8..000000000
--- a/dbaccess/source/core/dataaccess/commanddefinition.hxx
+++ /dev/null
@@ -1,123 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_COREDATAACESS_COMMANDDEFINITION_HXX_
-#define _DBA_COREDATAACESS_COMMANDDEFINITION_HXX_
-
-#include "commandbase.hxx"
-#include <comphelper/propertycontainer.hxx>
-#include "apitools.hxx"
-#include <comphelper/uno3.hxx>
-#include <com/sun/star/sdbcx/XRename.hpp>
-#include <cppuhelper/implbase1.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include "datasettings.hxx"
-#include <com/sun/star/container/XNameAccess.hpp>
-#include "ContentHelper.hxx"
-#include "ComponentDefinition.hxx"
-
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
-//=========================================================================
-//= OCommandDefinition - a database "document" which describes a query
-//=========================================================================
- class OCommandDefinition_Impl : public OComponentDefinition_Impl
- ,public OCommandBase
- {
- public:
- };
-
-typedef ::cppu::ImplHelper1 < ::com::sun::star::sdbcx::XRename
- > OCommandDefinition_Base;
-class OCommandDefinition;
-typedef ::comphelper::OPropertyArrayUsageHelper< OCommandDefinition >
- OCommandDefinition_PROP;
-
-class OCommandDefinition :public OComponentDefinition
- ,public OCommandDefinition_Base
- ,public OCommandDefinition_PROP
-{
-protected:
- virtual ~OCommandDefinition();
-
- OCommandDefinition(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xParentContainer
- ,const TContentPtr& _pImpl
- );
-
- inline const OCommandDefinition_Impl& getCommandDefinition() const { return dynamic_cast< const OCommandDefinition_Impl& >( *m_pImpl.get() ); }
- inline OCommandDefinition_Impl& getCommandDefinition() { return dynamic_cast< OCommandDefinition_Impl& >( *m_pImpl.get() ); }
-
-public:
-
- OCommandDefinition(
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContainer
- ,const ::rtl::OUString& _rElementName
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&
- ,const TContentPtr& _pImpl
- );
-
-// com::sun::star::lang::XTypeProvider
- DECLARE_TYPEPROVIDER( );
-
-// ::com::sun::star::uno::XInterface
- DECLARE_XINTERFACE( )
-
-// ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::lang::XServiceInfo - static methods
- static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::rtl::OUString getImplementationName_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL
- Create(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >&);
-
- // XRename
- virtual void SAL_CALL rename( const ::rtl::OUString& newName ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException);
-
- // OPropertySetHelper
- DECLARE_PROPERTYCONTAINER_DEFAULTS( );
-
-private:
- // helper
- void registerProperties();
-};
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // _DBA_COREDATAACESS_COMMANDDEFINITION_HXX_
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/connection.cxx b/dbaccess/source/core/dataaccess/connection.cxx
deleted file mode 100644
index 4bfd31386..000000000
--- a/dbaccess/source/core/dataaccess/connection.cxx
+++ /dev/null
@@ -1,895 +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_dbaccess.hxx"
-
-#include "connection.hxx"
-#include "dbastrings.hrc"
-#include "datasource.hxx"
-#include "core_resource.hrc"
-#include "core_resource.hxx"
-#include "statement.hxx"
-#include "preparedstatement.hxx"
-#include "callablestatement.hxx"
-#include "ContainerMediator.hxx"
-#include "SingleSelectQueryComposer.hxx"
-#include "querycomposer.hxx"
-#include "sdbcoretools.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/sdb/CommandType.hpp>
-#include <com/sun/star/sdbc/XDriverAccess.hpp>
-#include <com/sun/star/sdbcx/XDataDefinitionSupplier.hpp>
-#include <com/sun/star/reflection/XProxyFactory.hpp>
-#include <com/sun/star/beans/NamedValue.hpp>
-/** === end UNO includes === **/
-#include <connectivity/dbtools.hxx>
-#include <connectivity/dbmetadata.hxx>
-#include <connectivity/dbexception.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <osl/diagnose.h>
-#include <comphelper/extract.hxx>
-#include <comphelper/uno3.hxx>
-#include <comphelper/sequence.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <rtl/logfile.hxx>
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::sdb::application;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::reflection;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::graphic;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-using namespace ::dbtools;
-
-using ::com::sun::star::sdb::tools::XTableName;
-using ::com::sun::star::sdb::tools::XObjectNames;
-using ::com::sun::star::sdb::tools::XDataSourceMetaData;
-
-namespace dbaccess
-{
-
-//==========================================================================
-// XServiceInfo
-rtl::OUString OConnection::getImplementationName( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getImplementationName" );
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.dbaccess.Connection"));
-}
-
-sal_Bool OConnection::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::supportsService" );
- return findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > OConnection::getSupportedServiceNames( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getSupportedServiceNames" );
- Sequence< ::rtl::OUString > aSupported = OConnectionWrapper::getSupportedServiceNames();
-
- if ( 0 == findValue( aSupported, SERVICE_SDB_CONNECTION, sal_True ).getLength() )
- {
- sal_Int32 nLen = aSupported.getLength();
- aSupported.realloc( nLen + 1 );
- aSupported[ nLen ] = SERVICE_SDB_CONNECTION;
- }
-
- return aSupported;
-}
-
-// XCloseable
-void OConnection::close(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::close" );
- // being closed is the same as being disposed
- dispose();
-}
-
-sal_Bool OConnection::isClosed(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::isClosed" );
- MutexGuard aGuard(m_aMutex);
- return !m_xMasterConnection.is();
-}
-
-// XConnection
-Reference< XStatement > OConnection::createStatement(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::createStatement" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
-
- Reference< XStatement > xStatement;
- Reference< XStatement > xMasterStatement = m_xMasterConnection->createStatement();
- if ( xMasterStatement.is() )
- {
- xStatement = new OStatement(this, xMasterStatement);
- m_aStatements.push_back(WeakReferenceHelper(xStatement));
- }
- return xStatement;
-}
-Reference< XPreparedStatement > OConnection::prepareStatement(const rtl::OUString& sql) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::prepareStatement" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
-
- // TODO convert the SQL to SQL the driver understands
- Reference< XPreparedStatement > xStatement;
- Reference< XPreparedStatement > xMasterStatement = m_xMasterConnection->prepareStatement(sql);
- if ( xMasterStatement.is() )
- {
- xStatement = new OPreparedStatement(this, xMasterStatement);
- m_aStatements.push_back(WeakReferenceHelper(xStatement));
- }
- return xStatement;
-}
-
-Reference< XPreparedStatement > OConnection::prepareCall(const rtl::OUString& sql) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::prepareCall" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
-
- Reference< XPreparedStatement > xStatement;
- Reference< XPreparedStatement > xMasterStatement = m_xMasterConnection->prepareCall(sql);
- if ( xMasterStatement.is() )
- {
- xStatement = new OCallableStatement(this, xMasterStatement);
- m_aStatements.push_back(WeakReferenceHelper(xStatement));
- }
- return xStatement;
-}
-
-rtl::OUString OConnection::nativeSQL(const rtl::OUString& sql) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::nativeSQL" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- return m_xMasterConnection->nativeSQL(sql);
-}
-
-void OConnection::setAutoCommit(sal_Bool autoCommit) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::setAutoCommit" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- m_xMasterConnection->setAutoCommit(autoCommit);
-}
-
-sal_Bool OConnection::getAutoCommit(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getAutoCommit" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- return m_xMasterConnection->getAutoCommit();
-}
-
-void OConnection::commit(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::commit" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- m_xMasterConnection->commit();
-}
-
-void OConnection::rollback(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::rollback" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- m_xMasterConnection->rollback();
-}
-
-Reference< XDatabaseMetaData > OConnection::getMetaData(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getMetaData" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- return m_xMasterConnection->getMetaData();
-}
-
-void OConnection::setReadOnly(sal_Bool readOnly) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::setReadOnly" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- m_xMasterConnection->setReadOnly(readOnly);
-}
-
-sal_Bool OConnection::isReadOnly(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::isReadOnly" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- return m_xMasterConnection->isReadOnly();
-}
-
-void OConnection::setCatalog(const rtl::OUString& catalog) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::setCatalog" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- m_xMasterConnection->setCatalog(catalog);
-}
-
-rtl::OUString OConnection::getCatalog(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getCatalog" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- return m_xMasterConnection->getCatalog();
-}
-
-void OConnection::setTransactionIsolation(sal_Int32 level) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::setTransactionIsolation" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- m_xMasterConnection->setTransactionIsolation(level);
-}
-
-sal_Int32 OConnection::getTransactionIsolation(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getTransactionIsolation" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- return m_xMasterConnection->getTransactionIsolation();
-}
-
-Reference< XNameAccess > OConnection::getTypeMap(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getTypeMap" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- return m_xMasterConnection->getTypeMap();
-}
-
-void OConnection::setTypeMap(const Reference< XNameAccess > & typeMap) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::setTypeMap" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- m_xMasterConnection->setTypeMap(typeMap);
-}
-//==========================================================================
-//= OConnection
-//==========================================================================
-DBG_NAME(OConnection)
-
-OConnection::OConnection(ODatabaseSource& _rDB
- , Reference< XConnection >& _rxMaster
- , const Reference< XMultiServiceFactory >& _rxORB)
- :OSubComponent(m_aMutex, static_cast< OWeakObject* >(&_rDB))
- // as the queries reroute their refcounting to us, this m_aMutex is okey. If the queries
- // container would do it's own refcounting, it would have to aquire m_pMutex
- // same for tables
- ,m_aTableFilter(_rDB.m_pImpl->m_aTableFilter)
- ,m_aTableTypeFilter(_rDB.m_pImpl->m_aTableTypeFilter)
- ,m_aContext( _rxORB )
- ,m_xMasterConnection(_rxMaster)
- ,m_pTables(NULL)
- ,m_pViews(NULL)
- ,m_aWarnings( Reference< XWarningsSupplier >( _rxMaster, UNO_QUERY ) )
- ,m_nInAppend(0)
- ,m_bSupportsViews(sal_False)
- ,m_bSupportsUsers(sal_False)
- ,m_bSupportsGroups(sal_False)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::OConnection" );
- DBG_CTOR(OConnection,NULL);
- osl_incrementInterlockedCount(&m_refCount);
-
- try
- {
- Reference< XProxyFactory > xProxyFactory(
- _rxORB->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.reflection.ProxyFactory"))),UNO_QUERY);
- Reference<XAggregation> xAgg = xProxyFactory->createProxy(_rxMaster.get());
- setDelegation(xAgg,m_refCount);
- OSL_ENSURE(m_xConnection.is(), "OConnection::OConnection : invalid master connection !");
- }
- catch(const Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- m_xTableUIProvider = m_xTableUIProvider.query( m_xMasterConnection );
-
- try
- {
- m_xQueries = new OQueryContainer(Reference< XNameContainer >(_rDB.getQueryDefinitions( ),UNO_QUERY), this,_rxORB, &m_aWarnings);
-
- sal_Bool bCase = sal_True;
- Reference<XDatabaseMetaData> xMeta;
- try
- {
- xMeta = getMetaData();
- bCase = xMeta.is() && xMeta->supportsMixedCaseQuotedIdentifiers();
- }
- catch(const SQLException&)
- {
- }
- Reference< XNameContainer > xTableDefinitions(_rDB.getTables(),UNO_QUERY);
- m_pTables = new OTableContainer( *this, m_aMutex, this, bCase, xTableDefinitions, this, &m_aWarnings,m_nInAppend );
-
- // check if we supports types
- if ( xMeta.is() )
- {
- Reference<XResultSet> xRes = xMeta->getTableTypes();
- if(xRes.is())
- {
- ::rtl::OUString sView(RTL_CONSTASCII_USTRINGPARAM("VIEW"));
- Reference<XRow> xRow(xRes,UNO_QUERY);
- while(xRes->next())
- {
- ::rtl::OUString sValue = xRow->getString(1);
- if( !xRow->wasNull() && sValue == sView)
- {
- m_bSupportsViews = sal_True;
- break;
- }
- }
- }
- // some dbs don't support this type so we should ask if a XViewsSupplier is supported
- if(!m_bSupportsViews)
- {
- Reference< XViewsSupplier > xMaster(getMasterTables(),UNO_QUERY);
-
- if (xMaster.is() && xMaster->getViews().is())
- m_bSupportsViews = sal_True;
- }
- if(m_bSupportsViews)
- {
- m_pViews = new OViewContainer(*this, m_aMutex, this, bCase,this,&m_aWarnings,m_nInAppend);
- m_pViews->addContainerListener(m_pTables);
- m_pTables->addContainerListener(m_pViews);
- }
- m_bSupportsUsers = Reference< XUsersSupplier> (getMasterTables(),UNO_QUERY).is();
- m_bSupportsGroups = Reference< XGroupsSupplier> (getMasterTables(),UNO_QUERY).is();
-
- impl_checkTableQueryNames_nothrow();
- }
- }
- catch(const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- osl_decrementInterlockedCount( &m_refCount );
-}
-
-OConnection::~OConnection()
-{
- delete m_pTables;
- delete m_pViews;
- DBG_DTOR(OConnection,NULL);
-}
-
-// XWarningsSupplier
-Any SAL_CALL OConnection::getWarnings() throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getWarnings" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- return m_aWarnings.getWarnings();
-}
-
-void SAL_CALL OConnection::clearWarnings( ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::clearWarnings" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- m_aWarnings.clearWarnings();
-}
-
-namespace
-{
- struct CompareTypeByName : public ::std::binary_function< Type, Type, bool >
- {
- bool operator() ( const Type& _rLHS, const Type& _rRHS ) const
- {
- return _rLHS.getTypeName() < _rRHS.getTypeName();
- }
- };
- typedef ::std::set< Type, CompareTypeByName > TypeBag;
-
- void lcl_copyTypes( TypeBag& _out_rTypes, const Sequence< Type >& _rTypes )
- {
- ::std::copy( _rTypes.getConstArray(), _rTypes.getConstArray() + _rTypes.getLength(),
- ::std::insert_iterator< TypeBag >( _out_rTypes, _out_rTypes.begin() ) );
- }
-}
-
-// com::sun::star::lang::XTypeProvider
-Sequence< Type > OConnection::getTypes() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getTypes" );
- TypeBag aNormalizedTypes;
-
- lcl_copyTypes( aNormalizedTypes, OSubComponent::getTypes() );
- lcl_copyTypes( aNormalizedTypes, OConnection_Base::getTypes() );
- lcl_copyTypes( aNormalizedTypes, ::connectivity::OConnectionWrapper::getTypes() );
-
- if ( !m_bSupportsViews )
- aNormalizedTypes.erase( XViewsSupplier::static_type() );
- if ( !m_bSupportsUsers )
- aNormalizedTypes.erase( XUsersSupplier::static_type() );
- if ( !m_bSupportsGroups )
- aNormalizedTypes.erase( XGroupsSupplier::static_type() );
-
- Sequence< Type > aSupportedTypes( aNormalizedTypes.size() );
- ::std::copy( aNormalizedTypes.begin(), aNormalizedTypes.end(), aSupportedTypes.getArray() );
- return aSupportedTypes;
-}
-
-Sequence< sal_Int8 > OConnection::getImplementationId() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getImplementationId" );
- return getUnoTunnelImplementationId();
-}
-
-// com::sun::star::uno::XInterface
-Any OConnection::queryInterface( const Type & rType ) throw (RuntimeException)
-{
- if ( !m_bSupportsViews && rType.equals( XViewsSupplier::static_type() ) )
- return Any();
- else if ( !m_bSupportsUsers && rType.equals( XUsersSupplier::static_type() ) )
- return Any();
- else if ( !m_bSupportsGroups && rType.equals( XGroupsSupplier::static_type() ) )
- return Any();
- Any aReturn = OSubComponent::queryInterface( rType );
- if (!aReturn.hasValue())
- {
- aReturn = OConnection_Base::queryInterface( rType );
- if (!aReturn.hasValue())
- aReturn = OConnectionWrapper::queryInterface( rType );
- }
- return aReturn;
-}
-
-void OConnection::acquire() throw ()
-{
- // include this one when you want to see who calls it (call graph)
- OSubComponent::acquire();
-}
-
-void OConnection::release() throw ()
-{
- // include this one when you want to see who calls it (call graph)
- OSubComponent::release();
-}
-
-// OSubComponent
-void OConnection::disposing()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::disposing" );
- MutexGuard aGuard(m_aMutex);
-
- OSubComponent::disposing();
- OConnectionWrapper::disposing();
-
- OWeakRefArrayIterator aEnd = m_aStatements.end();
- for (OWeakRefArrayIterator i = m_aStatements.begin(); aEnd != i; ++i)
- {
- Reference<XComponent> xComp(i->get(),UNO_QUERY);
- ::comphelper::disposeComponent(xComp);
- }
- m_aStatements.clear();
- m_xMasterTables = NULL;
-
- if(m_pTables)
- m_pTables->dispose();
- if(m_pViews)
- m_pViews->dispose();
-
- ::comphelper::disposeComponent(m_xQueries);
-
- OWeakRefArrayIterator aComposerEnd = m_aComposers.end();
- for (OWeakRefArrayIterator j = m_aComposers.begin(); aComposerEnd != j; ++j)
- {
- Reference<XComponent> xComp(j->get(),UNO_QUERY);
- ::comphelper::disposeComponent(xComp);
- }
-
- m_aComposers.clear();
-
- try
- {
- if (m_xMasterConnection.is())
- m_xMasterConnection->close();
- }
- catch(const Exception&)
- {
- }
- m_xMasterConnection = NULL;
-}
-
-// XChild
-Reference< XInterface > OConnection::getParent(void) throw( RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getParent" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- return m_xParent;
-}
-
-void OConnection::setParent(const Reference< XInterface > & /*Parent*/) throw( NoSupportException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::setParent" );
- throw NoSupportException();
-}
-
-// XSQLQueryComposerFactory
-Reference< XSQLQueryComposer > OConnection::createQueryComposer(void) throw( RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::createQueryComposer" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
-
- // Reference< XNumberFormatsSupplier > xSupplier = pParent->getNumberFormatsSupplier();
- Reference< XSQLQueryComposer > xComposer( new OQueryComposer( this ) );
- m_aComposers.push_back(WeakReferenceHelper(xComposer));
- return xComposer;
-}
-
-void OConnection::impl_fillTableFilter()
-{
- Reference<XPropertySet> xProp(getParent(),UNO_QUERY);
- if ( xProp.is() )
- {
- xProp->getPropertyValue(PROPERTY_TABLEFILTER) >>= m_aTableFilter;
- xProp->getPropertyValue(PROPERTY_TABLETYPEFILTER) >>= m_aTableTypeFilter;
- }
-}
-
-void OConnection::refresh(const Reference< XNameAccess >& _rToBeRefreshed)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::refresh" );
- if ( _rToBeRefreshed == Reference< XNameAccess >(m_pTables) )
- {
- if (m_pTables && !m_pTables->isInitialized())
- {
- impl_fillTableFilter();
- // check if our "master connection" can supply tables
- getMasterTables();
-
- if (m_xMasterTables.is() && m_xMasterTables->getTables().is())
- { // yes -> wrap them
- m_pTables->construct(m_xMasterTables->getTables(),m_aTableFilter, m_aTableTypeFilter);
- }
- else
- { // no -> use an own container
- m_pTables->construct(m_aTableFilter, m_aTableTypeFilter);
- }
- }
- }
- else if ( _rToBeRefreshed == Reference< XNameAccess >(m_pViews) )
- {
- if (m_pViews && !m_pViews->isInitialized())
- {
- impl_fillTableFilter();
- // check if our "master connection" can supply tables
- Reference< XViewsSupplier > xMaster(getMasterTables(),UNO_QUERY);
-
- if (xMaster.is() && xMaster->getViews().is())
- m_pViews->construct(xMaster->getViews(),m_aTableFilter, m_aTableTypeFilter);
- else
- m_pViews->construct(m_aTableFilter, m_aTableTypeFilter);
- }
- }
-}
-
-// XTablesSupplier
-Reference< XNameAccess > OConnection::getTables() throw( RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getTables" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
-
- refresh(m_pTables);
-
- return m_pTables;
-}
-
-Reference< XNameAccess > SAL_CALL OConnection::getViews( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getViews" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
-
- refresh(m_pViews);
-
- return m_pViews;
-}
-// XQueriesSupplier
-Reference< XNameAccess > OConnection::getQueries(void) throw( RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getQueries" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
-
- return m_xQueries;
-}
-
-// ::com::sun::star::sdb::XCommandPreparation
-Reference< XPreparedStatement > SAL_CALL OConnection::prepareCommand( const ::rtl::OUString& command, sal_Int32 commandType ) throw(::com::sun::star::sdbc::SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::prepareCommand" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
-
- rtl::OUString aStatement;
- switch (commandType)
- {
- case CommandType::TABLE:
- {
- aStatement = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SELECT * FROM "));
-
- ::rtl::OUString sCatalog, sSchema, sTable;
- ::dbtools::qualifiedNameComponents( getMetaData(), command, sCatalog, sSchema, sTable, ::dbtools::eInDataManipulation );
- aStatement += ::dbtools::composeTableNameForSelect( this, sCatalog, sSchema, sTable );
- }
- break;
- case CommandType::QUERY:
- if ( m_xQueries->hasByName(command) )
- {
- Reference< XPropertySet > xQuery(m_xQueries->getByName(command),UNO_QUERY);
- xQuery->getPropertyValue(PROPERTY_COMMAND) >>= aStatement;
- }
- break;
- default:
- aStatement = command;
- }
- // TODO EscapeProcessing
- return prepareStatement(aStatement);
-}
-
-Reference< XInterface > SAL_CALL OConnection::createInstance( const ::rtl::OUString& _sServiceSpecifier ) throw (Exception, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::createInstance" );
- Reference< XServiceInfo > xRet;
- if ( ( SERVICE_NAME_SINGLESELECTQUERYCOMPOSER == _sServiceSpecifier )
- || ( _sServiceSpecifier.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.sdb.SingleSelectQueryAnalyzer" ) ) )
- )
- {
- xRet = new OSingleSelectQueryComposer( getTables(),this, m_aContext );
- m_aComposers.push_back(WeakReferenceHelper(xRet));
- }
- else
- {
- if ( _sServiceSpecifier.getLength() )
- {
- TSupportServices::iterator aFind = m_aSupportServices.find(_sServiceSpecifier);
- if ( aFind == m_aSupportServices.end() )
- {
- Sequence<Any> aArgs(1);
- Reference<XConnection> xMy(this);
- aArgs[0] <<= NamedValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ActiveConnection")),makeAny(xMy));
- aFind = m_aSupportServices.insert(TSupportServices::value_type(_sServiceSpecifier,m_aContext.createComponentWithArguments(_sServiceSpecifier,aArgs))).first;
- }
- return aFind->second;
- }
- }
- return Reference< XInterface >(xRet,UNO_QUERY);
-}
-
-Reference< XInterface > SAL_CALL OConnection::createInstanceWithArguments( const ::rtl::OUString& _sServiceSpecifier, const Sequence< Any >& /*Arguments*/ ) throw (Exception, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::createInstanceWithArguments" );
- return createInstance(_sServiceSpecifier);
-}
-
-Sequence< ::rtl::OUString > SAL_CALL OConnection::getAvailableServiceNames( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getAvailableServiceNames" );
- Sequence< ::rtl::OUString > aRet(1);
- aRet[0] = SERVICE_NAME_SINGLESELECTQUERYCOMPOSER;
- return aRet;
-}
-
-Reference< XTablesSupplier > OConnection::getMasterTables()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getMasterTables" );
-// check if out "master connection" can supply tables
- if(!m_xMasterTables.is())
- {
- try
- {
- Reference<XDatabaseMetaData> xMeta = getMetaData();
- if ( xMeta.is() )
- m_xMasterTables = ::dbtools::getDataDefinitionByURLAndConnection( xMeta->getURL(), m_xMasterConnection, m_aContext.getLegacyServiceFactory() );
- }
- catch(const SQLException&)
- {
- }
- }
- return m_xMasterTables;
-}
-
-// XUsersSupplier
-Reference< XNameAccess > SAL_CALL OConnection::getUsers( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getUsers" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
-
- Reference<XUsersSupplier> xUsr(getMasterTables(),UNO_QUERY);
- return xUsr.is() ? xUsr->getUsers() : Reference< XNameAccess >();
-}
-
-// XGroupsSupplier
-Reference< XNameAccess > SAL_CALL OConnection::getGroups( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getGroups" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- Reference<XGroupsSupplier> xGrp(getMasterTables(),UNO_QUERY);
- return xGrp.is() ? xGrp->getGroups() : Reference< XNameAccess >();
-}
-
-void OConnection::impl_loadConnectionTools_throw()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::impl_loadConnectionTools_throw" );
- Sequence< Any > aArguments( 1 );
- aArguments[0] <<= NamedValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Connection" ) ), makeAny( Reference< XConnection >( this ) ) );
-
- if ( !m_aContext.createComponentWithArguments( "com.sun.star.sdb.tools.ConnectionTools", aArguments, m_xConnectionTools ) )
- throw RuntimeException( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "service not registered: com.sun.star.sdb.tools.ConnectionTools" ) ), *this );
-}
-
-Reference< XTableName > SAL_CALL OConnection::createTableName( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::createTableName" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- impl_loadConnectionTools_throw();
-
- return m_xConnectionTools->createTableName();
-}
-
-Reference< XObjectNames > SAL_CALL OConnection::getObjectNames( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getObjectNames" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- impl_loadConnectionTools_throw();
-
- return m_xConnectionTools->getObjectNames();
-}
-
-Reference< XDataSourceMetaData > SAL_CALL OConnection::getDataSourceMetaData( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getDataSourceMetaData" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- impl_loadConnectionTools_throw();
-
- return m_xConnectionTools->getDataSourceMetaData();
-}
-
-Reference< ::com::sun::star::container::XNameAccess > SAL_CALL OConnection::getFieldsByCommandDescriptor( ::sal_Int32 commandType, const ::rtl::OUString& command, ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& keepFieldsAlive ) throw (::com::sun::star::sdbc::SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getFieldsByCommandDescriptor" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- impl_loadConnectionTools_throw();
-
- return m_xConnectionTools->getFieldsByCommandDescriptor(commandType,command,keepFieldsAlive);
-}
-
-Reference< XSingleSelectQueryComposer > SAL_CALL OConnection::getComposer( ::sal_Int32 commandType, const ::rtl::OUString& command ) throw (::com::sun::star::uno::RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getComposer" );
- MutexGuard aGuard(m_aMutex);
- checkDisposed();
- impl_loadConnectionTools_throw();
-
- return m_xConnectionTools->getComposer(commandType,command);
-}
-
-void OConnection::impl_checkTableQueryNames_nothrow()
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::impl_checkTableQueryNames_nothrow" );
- DatabaseMetaData aMeta( static_cast< XConnection* >( this ) );
- if ( !aMeta.supportsSubqueriesInFrom() )
- // nothing to do
- return;
-
- try
- {
- Reference< XNameAccess > xTables( getTables() );
- Sequence< ::rtl::OUString > aTableNames( xTables->getElementNames() );
- ::std::set< ::rtl::OUString > aSortedTableNames( aTableNames.getConstArray(), aTableNames.getConstArray() + aTableNames.getLength() );
-
- Reference< XNameAccess > xQueries( getQueries() );
- Sequence< ::rtl::OUString > aQueryNames( xQueries->getElementNames() );
-
- for ( const ::rtl::OUString* pQueryName = aQueryNames.getConstArray();
- pQueryName != aQueryNames.getConstArray() + aQueryNames.getLength();
- ++pQueryName
- )
- {
- if ( aSortedTableNames.find( *pQueryName ) != aSortedTableNames.end() )
- {
- ::rtl::OUString sConflictWarning( DBACORE_RESSTRING( RID_STR_CONFLICTING_NAMES ) );
- m_aWarnings.appendWarning( sConflictWarning, "01SB0", *this );
- }
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-Reference< XGraphic > SAL_CALL OConnection::getTableIcon( const ::rtl::OUString& _TableName, ::sal_Int32 _ColorMode ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getTableIcon" );
- Reference< XGraphic > xReturn;
-
- // ask our aggregate
- if ( m_xTableUIProvider.is() )
- xReturn = m_xTableUIProvider->getTableIcon( _TableName, _ColorMode );
-
- // ask ourself
- // well, we don't have own functionality here ...
- // In the future, we might decide to delegate the complete handling to this interface.
- // In this case, we would need to load the icon here.
-
- return xReturn;
-}
-
-Reference< XInterface > SAL_CALL OConnection::getTableEditor( const Reference< XDatabaseDocumentUI >& _DocumentUI, const ::rtl::OUString& _TableName ) throw (IllegalArgumentException, WrappedTargetException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "OConnection::getTableEditor" );
- Reference< XInterface > xReturn;
-
- // ask our aggregate
- if ( m_xTableUIProvider.is() )
- xReturn = m_xTableUIProvider->getTableEditor( _DocumentUI, _TableName );
-
- // ask ourself
- // well, we don't have own functionality here ...
- // In the future, we might decide to delegate the complete handling to this interface.
- // In this case, we would need to instantiate an css.sdb.TableDesign here.
-
- return xReturn;
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/connection.hxx b/dbaccess/source/core/dataaccess/connection.hxx
deleted file mode 100644
index 2918d4f74..000000000
--- a/dbaccess/source/core/dataaccess/connection.hxx
+++ /dev/null
@@ -1,254 +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.
- *
- ************************************************************************/
-#ifndef _DBA_CORE_CONNECTION_HXX_
-#define _DBA_CORE_CONNECTION_HXX_
-
-#include "apitools.hxx"
-#include "querycontainer.hxx"
-#include "tablecontainer.hxx"
-#include "viewcontainer.hxx"
-#include "RefreshListener.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdb/XSQLQueryComposerFactory.hpp>
-#include <com/sun/star/sdb/XCommandPreparation.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/sdbcx/XViewsSupplier.hpp>
-#include <com/sun/star/sdbcx/XUsersSupplier.hpp>
-#include <com/sun/star/sdbcx/XGroupsSupplier.hpp>
-#include <com/sun/star/sdb/XQueriesSupplier.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/sdb/tools/XConnectionTools.hpp>
-#include <com/sun/star/sdb/application/XTableUIProvider.hpp>
-/** === end UNO includes === **/
-
-#if ! defined(INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_14)
-#define INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_14
-#define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 14
-#include <comphelper/implbase_var.hxx>
-#endif
-#include <comphelper/componentcontext.hxx>
-#include <comphelper/stl_types.hxx>
-#include <connectivity/ConnectionWrapper.hxx>
-#include <connectivity/warningscontainer.hxx>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
-//==========================================================================
-//==========================================================================
-typedef ::comphelper::ImplHelper14 < ::com::sun::star::container::XChild
- , ::com::sun::star::sdbcx::XTablesSupplier
- , ::com::sun::star::sdbcx::XViewsSupplier
- , ::com::sun::star::sdbc::XConnection
- , ::com::sun::star::sdbc::XWarningsSupplier
- , ::com::sun::star::sdb::XQueriesSupplier
- , ::com::sun::star::sdb::XSQLQueryComposerFactory
- , ::com::sun::star::sdb::XCommandPreparation
- , ::com::sun::star::lang::XServiceInfo
- , ::com::sun::star::lang::XMultiServiceFactory
- , ::com::sun::star::sdbcx::XUsersSupplier
- , ::com::sun::star::sdbcx::XGroupsSupplier
- , ::com::sun::star::sdb::tools::XConnectionTools
- , ::com::sun::star::sdb::application::XTableUIProvider
- > OConnection_Base;
-
-class ODatabaseSource;
-//==========================================================================
-//= OConnection
-//==========================================================================
-class OConnection :public ::comphelper::OBaseMutex
- ,public OSubComponent
- ,public ::connectivity::OConnectionWrapper
- ,public OConnection_Base
- ,public IRefreshListener
-{
-protected:
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier >
- m_xMasterTables; // just to avoid the recreation of the catalog
- OWeakRefArray m_aStatements;
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >
- m_xQueries;
- OWeakRefArray m_aComposers;
-
- // the filter as set on the parent data link at construction of the connection
- ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aTableFilter;
- ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aTableTypeFilter;
- ::comphelper::ComponentContext m_aContext;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xMasterConnection;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdb::tools::XConnectionTools > m_xConnectionTools;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XTableUIProvider > m_xTableUIProvider;
-
- // defines the helper services for example to query the command of a view
- // @ see com.sun.star.sdb.tools.XViewAccess
- DECLARE_STL_USTRINGACCESS_MAP( ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface>, TSupportServices);
- TSupportServices m_aSupportServices;
-
-
- OTableContainer* m_pTables;
- OViewContainer* m_pViews;
- ::dbtools::WarningsContainer m_aWarnings;
- oslInterlockedCount m_nInAppend;
- sal_Bool m_bSupportsViews; // true when the getTableTypes return "VIEW" as type
- sal_Bool m_bSupportsUsers;
- sal_Bool m_bSupportsGroups;
-
-protected:
- virtual ~OConnection();
-public:
- OConnection(ODatabaseSource& _rDB
- ,::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxMaster
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB);
-
-// com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
-// com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw( );
- virtual void SAL_CALL release() throw( );
-
-// OComponentHelper
- virtual void SAL_CALL disposing(void);
-
-// ::com::sun::star::container::XChild
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent( ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw(::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdbcx::XTablesSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTables( ) throw(::com::sun::star::uno::RuntimeException);
-// ::com::sun::star::sdbcx::XViewsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getViews( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdb::XQueriesSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getQueries( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdb::XSQLQueryComposerFactory
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSQLQueryComposer > SAL_CALL createQueryComposer( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdb::XCommandPreparation
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareCommand( const ::rtl::OUString& command, sal_Int32 commandType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdbc::XWarningsSupplier
- virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
-// XConnection
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > SAL_CALL createStatement( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareStatement( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > SAL_CALL prepareCall( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL nativeSQL( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setAutoCommit( sal_Bool autoCommit ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL getAutoCommit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL commit( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL rollback( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isClosed( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setReadOnly( sal_Bool readOnly ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isReadOnly( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setCatalog( const ::rtl::OUString& catalog ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getCatalog( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setTransactionIsolation( sal_Int32 level ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getTransactionIsolation( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTypeMap( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setTypeMap( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdbc::XCloseable
- virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // XMultiServiceFactory
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstance( const ::rtl::OUString& aServiceSpecifier ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstanceWithArguments( const ::rtl::OUString& ServiceSpecifier, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& Arguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableServiceNames( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XUsersSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getUsers( ) throw(::com::sun::star::uno::RuntimeException);
- // XGroupsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getGroups( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XConnectionTools
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdb::tools::XTableName > SAL_CALL createTableName( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdb::tools::XObjectNames > SAL_CALL getObjectNames( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdb::tools::XDataSourceMetaData > SAL_CALL getDataSourceMetaData( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getFieldsByCommandDescriptor( ::sal_Int32 commandType, const ::rtl::OUString& command, ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& keepFieldsAlive ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryComposer > SAL_CALL getComposer( ::sal_Int32 commandType, const ::rtl::OUString& command ) throw (::com::sun::star::uno::RuntimeException);
-
- // XTableUIProvider
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > SAL_CALL getTableIcon( const ::rtl::OUString& TableName, ::sal_Int32 ColorMode ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getTableEditor( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& DocumentUI, const ::rtl::OUString& TableName ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
- // IRefreshListener
- virtual void refresh(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rToBeRefreshed);
-
-protected:
- inline void checkDisposed() throw (::com::sun::star::lang::DisposedException)
- {
- if ( rBHelper.bDisposed || !m_xConnection.is() )
- throw ::com::sun::star::lang::DisposedException();
- }
-
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XTablesSupplier > getMasterTables();
-
-private:
- /** checks whether or not there are naming conflicts between tables and queries
- */
- void impl_checkTableQueryNames_nothrow();
-
- /** loads the XConnectionTools implementation which we forward the respective functionality to
-
- @throws ::com::sun::star::uno::RuntimeException
- if the implementation cannot be loaded
-
- @postcond
- m_xConnectionTools is nol <NULL/>
- */
- void impl_loadConnectionTools_throw();
-
- /** reads the table filter and table type filter from the datasourfce
- */
- void impl_fillTableFilter();
-};
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // _DBA_CORE_CONNECTION_HXX_
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/dataaccessdescriptor.cxx b/dbaccess/source/core/dataaccess/dataaccessdescriptor.cxx
deleted file mode 100644
index 0a5432f79..000000000
--- a/dbaccess/source/core/dataaccess/dataaccessdescriptor.cxx
+++ /dev/null
@@ -1,328 +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_dbaccess.hxx"
-
-#include "dbastrings.hrc"
-#include "module_dba.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/sdb/CommandType.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/sdbc/XResultSet.hpp>
-#include <com/sun/star/sdb/XDataAccessDescriptorFactory.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/broadcasthelper.hxx>
-#include <comphelper/componentcontext.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include <comphelper/propertycontainer.hxx>
-#include <comphelper/uno3.hxx>
-#include <cppuhelper/implbase1.hxx>
-#include <cppuhelper/implbase2.hxx>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::lang::XServiceInfo;
- using ::com::sun::star::lang::XMultiServiceFactory;
- using ::com::sun::star::beans::XPropertySetInfo;
- using ::com::sun::star::beans::Property;
- using ::com::sun::star::sdbc::XConnection;
- using ::com::sun::star::sdbc::XResultSet;
- using ::com::sun::star::sdb::XDataAccessDescriptorFactory;
- using ::com::sun::star::beans::XPropertySet;
- using ::com::sun::star::uno::XComponentContext;
- using ::com::sun::star::beans::PropertyValue;
- /** === end UNO using === **/
-
- namespace PropertyAttribute = ::com::sun::star::beans::PropertyAttribute;
- namespace CommandType = ::com::sun::star::sdb::CommandType;
-
- //====================================================================
- //= DataAccessDescriptor
- //====================================================================
- typedef ::comphelper::OMutexAndBroadcastHelper DataAccessDescriptor_MutexBase;
-
- typedef ::cppu::WeakImplHelper1 < XServiceInfo
- > DataAccessDescriptor_TypeBase;
-
- typedef ::comphelper::OPropertyContainer DataAccessDescriptor_PropertyBase;
-
- class DataAccessDescriptor :public DataAccessDescriptor_MutexBase
- ,public DataAccessDescriptor_TypeBase
- ,public DataAccessDescriptor_PropertyBase
- ,public ::comphelper::OPropertyArrayUsageHelper< DataAccessDescriptor >
- {
- public:
- DataAccessDescriptor( const ::comphelper::ComponentContext& _rContext );
-
- // UNO
- DECLARE_XINTERFACE()
- DECLARE_XTYPEPROVIDER()
-
- // XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (RuntimeException);
- virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (RuntimeException);
- virtual Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (RuntimeException);
-
- protected:
- ~DataAccessDescriptor();
-
- protected:
- // XPropertySet
- virtual Reference< XPropertySetInfo > SAL_CALL getPropertySetInfo() throw(RuntimeException);
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- // OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
- private:
- ::comphelper::ComponentContext m_aContext;
-
- // </properties>
- ::rtl::OUString m_sDataSourceName;
- ::rtl::OUString m_sDatabaseLocation;
- ::rtl::OUString m_sConnectionResource;
- Sequence< PropertyValue > m_aConnectionInfo;
- Reference< XConnection > m_xActiveConnection;
- ::rtl::OUString m_sCommand;
- sal_Int32 m_nCommandType;
- ::rtl::OUString m_sFilter;
- ::rtl::OUString m_sOrder;
- ::rtl::OUString m_sHavingClause;
- ::rtl::OUString m_sGroupBy;
- sal_Bool m_bEscapeProcessing;
- Reference< XResultSet > m_xResultSet;
- Sequence< Any > m_aSelection;
- sal_Bool m_bBookmarkSelection;
- ::rtl::OUString m_sColumnName;
- Reference< XPropertySet > m_xColumn;
- // </properties>
- };
-
-#define REGISTER_PROPERTY( propname, member ) \
- registerProperty( PROPERTY_##propname, PROPERTY_ID_##propname, PropertyAttribute::BOUND, &member, ::getCppuType( &member ) )
-
- DataAccessDescriptor::DataAccessDescriptor( const ::comphelper::ComponentContext& _rContext )
- :DataAccessDescriptor_MutexBase()
- ,DataAccessDescriptor_TypeBase()
- ,DataAccessDescriptor_PropertyBase( m_aBHelper )
- ,m_aContext( _rContext )
- ,m_sDataSourceName()
- ,m_sDatabaseLocation()
- ,m_sConnectionResource()
- ,m_aConnectionInfo()
- ,m_xActiveConnection()
- ,m_sCommand()
- ,m_nCommandType( CommandType::COMMAND )
- ,m_sFilter()
- ,m_sOrder()
- ,m_sHavingClause()
- ,m_sGroupBy()
- ,m_bEscapeProcessing( sal_True )
- ,m_xResultSet()
- ,m_aSelection()
- ,m_bBookmarkSelection( sal_True )
- ,m_sColumnName()
- ,m_xColumn()
- {
- REGISTER_PROPERTY( DATASOURCENAME, m_sDataSourceName );
- REGISTER_PROPERTY( DATABASE_LOCATION, m_sDatabaseLocation );
- REGISTER_PROPERTY( CONNECTION_RESOURCE, m_sConnectionResource );
- REGISTER_PROPERTY( CONNECTION_INFO, m_aConnectionInfo );
- REGISTER_PROPERTY( ACTIVE_CONNECTION, m_xActiveConnection );
- REGISTER_PROPERTY( COMMAND, m_sCommand );
- REGISTER_PROPERTY( COMMAND_TYPE, m_nCommandType );
- REGISTER_PROPERTY( FILTER, m_sFilter );
- REGISTER_PROPERTY( ORDER, m_sOrder );
- REGISTER_PROPERTY( HAVING_CLAUSE, m_sHavingClause );
- REGISTER_PROPERTY( GROUP_BY, m_sGroupBy );
- REGISTER_PROPERTY( ESCAPE_PROCESSING, m_bEscapeProcessing );
- REGISTER_PROPERTY( RESULT_SET, m_xResultSet );
- REGISTER_PROPERTY( SELECTION, m_aSelection );
- REGISTER_PROPERTY( BOOKMARK_SELECTION, m_bBookmarkSelection );
- REGISTER_PROPERTY( COLUMN_NAME, m_sColumnName );
- REGISTER_PROPERTY( COLUMN, m_xColumn );
- }
-
- DataAccessDescriptor::~DataAccessDescriptor()
- {
- }
-
- IMPLEMENT_FORWARD_XINTERFACE2( DataAccessDescriptor, DataAccessDescriptor_TypeBase, DataAccessDescriptor_PropertyBase );
-
- IMPLEMENT_FORWARD_XTYPEPROVIDER2( DataAccessDescriptor, DataAccessDescriptor_TypeBase, DataAccessDescriptor_PropertyBase );
-
- ::rtl::OUString SAL_CALL DataAccessDescriptor::getImplementationName() throw (RuntimeException)
- {
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.dba.DataAccessDescriptor" ) );
- }
-
- ::sal_Bool SAL_CALL DataAccessDescriptor::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
- {
- Sequence< ::rtl::OUString > aServices( getSupportedServiceNames() );
- const ::rtl::OUString* pStart = aServices.getConstArray();
- const ::rtl::OUString* pEnd = aServices.getConstArray() + aServices.getLength();
- return ::std::find( pStart, pEnd, rServiceName ) != pEnd;
- }
-
- Sequence< ::rtl::OUString > SAL_CALL DataAccessDescriptor::getSupportedServiceNames( ) throw (RuntimeException)
- {
- Sequence< ::rtl::OUString > aServices(1);
- aServices[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.DataAccessDescriptor" ) );
- return aServices;
- }
-
- Reference< XPropertySetInfo > SAL_CALL DataAccessDescriptor::getPropertySetInfo() throw(RuntimeException)
- {
- Reference< XPropertySetInfo > xInfo( createPropertySetInfo( getInfoHelper() ) );
- return xInfo;
- }
-
- ::cppu::IPropertyArrayHelper& DataAccessDescriptor::getInfoHelper()
- {
- return *getArrayHelper();
- }
-
- ::cppu::IPropertyArrayHelper* DataAccessDescriptor::createArrayHelper( ) const
- {
- Sequence< Property > aProps;
- describeProperties( aProps );
- return new ::cppu::OPropertyArrayHelper( aProps );
- }
-
- //====================================================================
- //= DataAccessDescriptorFactory
- //====================================================================
- typedef ::cppu::WeakImplHelper2 < XServiceInfo
- , XDataAccessDescriptorFactory
- > DataAccessDescriptorFactory_Base;
- class DataAccessDescriptorFactory : public DataAccessDescriptorFactory_Base
- {
- public:
- // XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (RuntimeException);
- virtual ::sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw (RuntimeException);
- virtual Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw (RuntimeException);
-
- // XServiceInfo - static versions
- static Sequence< ::rtl::OUString > getSupportedServiceNames_static(void) throw( RuntimeException );
- static ::rtl::OUString getImplementationName_static(void) throw( RuntimeException );
- static Reference< XInterface > Create(const Reference< XComponentContext >& _rxContext);
- static ::rtl::OUString getSingletonName_static();
-
- // XDataAccessDescriptorFactory
- virtual Reference< XPropertySet > SAL_CALL createDataAccessDescriptor( ) throw (RuntimeException);
-
- protected:
- DataAccessDescriptorFactory( const Reference< XComponentContext >& _rxContext );
- ~DataAccessDescriptorFactory();
-
- private:
- ::comphelper::ComponentContext m_aContext;
- };
-
- DataAccessDescriptorFactory::DataAccessDescriptorFactory( const Reference< XComponentContext >& _rxContext )
- :m_aContext( _rxContext )
- {
- }
-
- DataAccessDescriptorFactory::~DataAccessDescriptorFactory()
- {
- }
-
- ::rtl::OUString DataAccessDescriptorFactory::getSingletonName_static()
- {
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.DataAccessDescriptorFactory" ) );
- }
-
- Sequence< ::rtl::OUString > DataAccessDescriptorFactory::getSupportedServiceNames_static() throw( RuntimeException )
- {
- Sequence< ::rtl::OUString > aServices(1);
- aServices[0] = getSingletonName_static();
- return aServices;
- }
-
- ::rtl::OUString DataAccessDescriptorFactory::getImplementationName_static() throw( RuntimeException )
- {
- return ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.dba.DataAccessDescriptorFactory" ) );
- }
-
- Reference< XInterface > DataAccessDescriptorFactory::Create( const Reference< XComponentContext >& _rxContext )
- {
- return *( new DataAccessDescriptorFactory( _rxContext ) );
- }
-
- ::rtl::OUString SAL_CALL DataAccessDescriptorFactory::getImplementationName() throw (RuntimeException)
- {
- return getImplementationName_static();
- }
-
- ::sal_Bool SAL_CALL DataAccessDescriptorFactory::supportsService( const ::rtl::OUString& rServiceName ) throw (RuntimeException)
- {
- Sequence< ::rtl::OUString > aServices( getSupportedServiceNames_static() );
- const ::rtl::OUString* pStart = aServices.getConstArray();
- const ::rtl::OUString* pEnd = aServices.getConstArray() + aServices.getLength();
- return ::std::find( pStart, pEnd, rServiceName ) != pEnd;
- }
-
- Sequence< ::rtl::OUString > SAL_CALL DataAccessDescriptorFactory::getSupportedServiceNames( ) throw (RuntimeException)
- {
- return getSupportedServiceNames_static();
- }
-
- Reference< XPropertySet > SAL_CALL DataAccessDescriptorFactory::createDataAccessDescriptor( ) throw (RuntimeException)
- {
- return new DataAccessDescriptor( m_aContext );
- }
-
-} // namespace dbaccess
-
-extern "C" void SAL_CALL createRegistryInfo_DataAccessDescriptorFactory()
-{
- static ::dba::OSingletonRegistration< ::dbaccess::DataAccessDescriptorFactory > aAutoRegistration;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/databasecontext.cxx b/dbaccess/source/core/dataaccess/databasecontext.cxx
deleted file mode 100644
index f0ba9e6c6..000000000
--- a/dbaccess/source/core/dataaccess/databasecontext.cxx
+++ /dev/null
@@ -1,765 +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_dbaccess.hxx"
-
-#include "apitools.hxx"
-#include "core_resource.hrc"
-#include "core_resource.hxx"
-#include "databasecontext.hxx"
-#include "databasedocument.hxx"
-#include "databaseregistrations.hxx"
-#include "datasource.hxx"
-#include "dbastrings.hrc"
-#include "module_dba.hxx"
-
-/** === being UNO includes === **/
-#include <com/sun/star/beans/NamedValue.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/document/MacroExecMode.hpp>
-#include <com/sun/star/document/XFilter.hpp>
-#include <com/sun/star/document/XImporter.hpp>
-#include <com/sun/star/frame/XDesktop.hpp>
-#include <com/sun/star/frame/XModel.hpp>
-#include <com/sun/star/frame/XModel2.hpp>
-#include <com/sun/star/frame/XTerminateListener.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/registry/InvalidRegistryException.hpp>
-#include <com/sun/star/sdbc/XDataSource.hpp>
-#include <com/sun/star/task/InteractionClassification.hpp>
-#include <com/sun/star/ucb/InteractiveIOException.hpp>
-#include <com/sun/star/ucb/IOErrorCode.hpp>
-#include <com/sun/star/util/XCloseable.hpp>
-/** === end UNO includes === **/
-
-#include <basic/basmgr.hxx>
-#include <comphelper/enumhelper.hxx>
-#include <comphelper/evtlistenerhlp.hxx>
-#include <comphelper/namedvaluecollection.hxx>
-#include <comphelper/processfactory.hxx>
-#include <comphelper/sequence.hxx>
-#include <cppuhelper/implbase1.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <cppuhelper/exc_hlp.hxx>
-#include <svl/filenotation.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <tools/fsys.hxx>
-#include <tools/urlobj.hxx>
-#include <ucbhelper/content.hxx>
-#include <unotools/confignode.hxx>
-#include <unotools/pathoptions.hxx>
-#include <unotools/sharedunocomponent.hxx>
-#include <list>
-#include <boost/bind.hpp>
-
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::document;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::registry;
-using namespace ::com::sun::star;
-using namespace ::cppu;
-using namespace ::osl;
-using namespace ::utl;
-
-using ::com::sun::star::task::InteractionClassification_ERROR;
-using ::com::sun::star::ucb::IOErrorCode_NO_FILE;
-using ::com::sun::star::ucb::InteractiveIOException;
-using ::com::sun::star::ucb::IOErrorCode_NOT_EXISTING;
-using ::com::sun::star::ucb::IOErrorCode_NOT_EXISTING_PATH;
-
-
-namespace dbaccess
-{
-
- typedef ::cppu::WeakImplHelper1 < XTerminateListener
- > DatabaseDocumentLoader_Base;
- class DatabaseDocumentLoader : public DatabaseDocumentLoader_Base
- {
- private:
- Reference< XDesktop > m_xDesktop;
- ::std::list< const ODatabaseModelImpl* > m_aDatabaseDocuments;
-
- public:
- DatabaseDocumentLoader( const comphelper::ComponentContext& _aContext);
-
- inline void append(const ODatabaseModelImpl& _rModelImpl )
- {
- m_aDatabaseDocuments.push_back(&_rModelImpl);
- }
- inline void remove(const ODatabaseModelImpl& _rModelImpl) { m_aDatabaseDocuments.remove(&_rModelImpl); }
-
- private:
- // XTerminateListener
- virtual void SAL_CALL queryTermination( const lang::EventObject& Event ) throw (TerminationVetoException, RuntimeException);
- virtual void SAL_CALL notifyTermination( const lang::EventObject& Event ) throw (RuntimeException);
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
- };
-
- DatabaseDocumentLoader::DatabaseDocumentLoader( const comphelper::ComponentContext& _aContext )
- {
- acquire();
- try
- {
- m_xDesktop.set( _aContext.createComponent( (rtl::OUString)SERVICE_FRAME_DESKTOP ), UNO_QUERY_THROW );
- m_xDesktop->addTerminateListener( this );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- struct TerminateFunctor : ::std::unary_function<ODatabaseModelImpl* , void>
- {
- void operator()( const ODatabaseModelImpl* _pModelImpl ) const
- {
- try
- {
- const Reference< XModel2> xModel( _pModelImpl ->getModel_noCreate(),UNO_QUERY_THROW );
- if ( !xModel->getControllers()->hasMoreElements() )
- {
- Reference<util::XCloseable> xCloseable(xModel,UNO_QUERY_THROW);
- xCloseable->close(sal_False);
- }
- }
- catch(const CloseVetoException&)
- {
- throw TerminationVetoException();
- }
- }
- };
-
- void SAL_CALL DatabaseDocumentLoader::queryTermination( const lang::EventObject& /*Event*/ ) throw (TerminationVetoException, RuntimeException)
- {
- ::std::list< const ODatabaseModelImpl* > aCopy(m_aDatabaseDocuments);
- ::std::for_each(aCopy.begin(),aCopy.end(),TerminateFunctor());
- }
-
- void SAL_CALL DatabaseDocumentLoader::notifyTermination( const lang::EventObject& /*Event*/ ) throw (RuntimeException)
- {
- }
-
- void SAL_CALL DatabaseDocumentLoader::disposing( const lang::EventObject& /*Source*/ ) throw (RuntimeException)
- {
- }
-
-//= ODatabaseContext
-//==========================================================================
-
-ODatabaseContext::ODatabaseContext( const Reference< XComponentContext >& _rxContext )
- :DatabaseAccessContext_Base(m_aMutex)
- ,m_aContext( _rxContext )
- ,m_aContainerListeners(m_aMutex)
-{
- m_pDatabaseDocumentLoader = new DatabaseDocumentLoader( m_aContext );
- ::basic::BasicManagerRepository::registerCreationListener( *this );
-
- osl_incrementInterlockedCount( &m_refCount );
- {
- m_xDBRegistrationAggregate.set( createDataSourceRegistrations( m_aContext ), UNO_SET_THROW );
- m_xDatabaseRegistrations.set( m_xDBRegistrationAggregate, UNO_QUERY_THROW );
-
- m_xDBRegistrationAggregate->setDelegator( *this );
- }
- osl_decrementInterlockedCount( &m_refCount );
-}
-
-ODatabaseContext::~ODatabaseContext()
-{
- ::basic::BasicManagerRepository::revokeCreationListener( *this );
- if ( m_pDatabaseDocumentLoader )
- m_pDatabaseDocumentLoader->release();
-
- m_xDBRegistrationAggregate->setDelegator( NULL );
- m_xDBRegistrationAggregate.clear();
- m_xDatabaseRegistrations.clear();
-}
-
-// Helper
-rtl::OUString ODatabaseContext::getImplementationName_static() throw( RuntimeException )
-
-{
- return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.dba.ODatabaseContext"));
-}
-
-Reference< XInterface > ODatabaseContext::Create(const Reference< XComponentContext >& _rxContext)
-{
- return *( new ODatabaseContext( _rxContext ) );
-}
-
-Sequence< rtl::OUString > ODatabaseContext::getSupportedServiceNames_static(void) throw( RuntimeException )
-{
- Sequence< ::rtl::OUString > aSNS( 1 );
- aSNS[0] = SERVICE_SDB_DATABASECONTEXT;
- return aSNS;
-}
-
-// XServiceInfo
-rtl::OUString ODatabaseContext::getImplementationName( ) throw(RuntimeException)
-{
- return getImplementationName_static();
-}
-
-sal_Bool ODatabaseContext::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Sequence< ::rtl::OUString > ODatabaseContext::getSupportedServiceNames( ) throw (RuntimeException)
-{
- return getSupportedServiceNames_static();
-}
-
-Reference< XInterface > ODatabaseContext::impl_createNewDataSource()
-{
- ::rtl::Reference<ODatabaseModelImpl> pImpl( new ODatabaseModelImpl( m_aContext.getLegacyServiceFactory(), *this ) );
- Reference< XDataSource > xDataSource( pImpl->getOrCreateDataSource() );
-
- return xDataSource.get();
-}
-
-Reference< XInterface > SAL_CALL ODatabaseContext::createInstance( ) throw (Exception, RuntimeException)
-{
- // for convenience of the API user, we ensure the document is fully initialized (effectively: XLoadable::initNew
- // has been called at the DatabaseDocument).
- return impl_createNewDataSource();
-}
-
-Reference< XInterface > SAL_CALL ODatabaseContext::createInstanceWithArguments( const Sequence< Any >& _rArguments ) throw (Exception, RuntimeException)
-{
- ::comphelper::NamedValueCollection aArgs( _rArguments );
- ::rtl::OUString sURL = aArgs.getOrDefault( (::rtl::OUString)INFO_POOLURL, ::rtl::OUString() );
-
- Reference< XInterface > xDataSource;
- if ( sURL.getLength() )
- xDataSource = getObject( sURL );
-
- if ( !xDataSource.is() )
- xDataSource = impl_createNewDataSource();
-
- return xDataSource;
-}
-
-// DatabaseAccessContext_Base
-void ODatabaseContext::disposing()
-{
- // notify our listener
- com::sun::star::lang::EventObject aDisposeEvent(static_cast< XContainer* >(this));
- m_aContainerListeners.disposeAndClear(aDisposeEvent);
-
- // dispose the data sources
- ObjectCache::iterator aEnd = m_aDatabaseObjects.end();
- for ( ObjectCache::iterator aIter = m_aDatabaseObjects.begin();
- aIter != aEnd;
- ++aIter
- )
- {
- aIter->second->dispose();
- }
- m_aDatabaseObjects.clear();
-}
-
-// XNamingService
-Reference< XInterface > ODatabaseContext::getRegisteredObject(const rtl::OUString& _rName) throw( Exception, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(DatabaseAccessContext_Base::rBHelper.bDisposed);
-
- ::rtl::OUString sURL( getDatabaseLocation( _rName ) );
-
- if ( !sURL.getLength() )
- // there is a registration for this name, but no URL
- throw IllegalArgumentException();
-
- // check if URL is already loaded
- Reference< XInterface > xExistent = getObject( sURL );
- if ( xExistent.is() )
- return xExistent;
-
- return loadObjectFromURL( _rName, sURL );
-}
-
-Reference< XInterface > ODatabaseContext::loadObjectFromURL(const ::rtl::OUString& _rName,const ::rtl::OUString& _sURL)
-{
- INetURLObject aURL( _sURL );
- if ( aURL.GetProtocol() == INET_PROT_NOT_VALID )
- throw NoSuchElementException( _rName, *this );
-
- try
- {
- ::ucbhelper::Content aContent( _sURL, NULL );
- if ( !aContent.isDocument() )
- throw InteractiveIOException(
- _sURL, *this, InteractionClassification_ERROR, IOErrorCode_NO_FILE
- );
- }
- catch ( const InteractiveIOException& e )
- {
- if ( ( e.Code == IOErrorCode_NO_FILE )
- || ( e.Code == IOErrorCode_NOT_EXISTING )
- || ( e.Code == IOErrorCode_NOT_EXISTING_PATH )
- )
- {
- // #i40463# #i39187#
- String sErrorMessage( DBACORE_RESSTRING( RID_STR_FILE_DOES_NOT_EXIST ) );
- ::svt::OFileNotation aTransformer( _sURL );
- sErrorMessage.SearchAndReplaceAscii( "$file$", aTransformer.get( ::svt::OFileNotation::N_SYSTEM ) );
-
- SQLException aError;
- aError.Message = sErrorMessage;
-
- throw WrappedTargetException( _sURL, *this, makeAny( aError ) );
- }
- throw WrappedTargetException( _sURL, *this, ::cppu::getCaughtException() );
- }
- catch( const Exception& )
- {
- throw WrappedTargetException( _sURL, *this, ::cppu::getCaughtException() );
- }
-
- OSL_ENSURE( m_aDatabaseObjects.find( _sURL ) == m_aDatabaseObjects.end(),
- "ODatabaseContext::loadObjectFromURL: not intended for already-cached objects!" );
-
- ::rtl::Reference< ODatabaseModelImpl > pModelImpl;
- {
- pModelImpl.set( new ODatabaseModelImpl( _rName, m_aContext.getLegacyServiceFactory(), *this ) );
-
- Reference< XModel > xModel( pModelImpl->createNewModel_deliverOwnership( false ), UNO_SET_THROW );
- Reference< XLoadable > xLoad( xModel, UNO_QUERY_THROW );
-
- ::comphelper::NamedValueCollection aArgs;
- aArgs.put( "URL", _sURL );
- aArgs.put( "MacroExecutionMode", MacroExecMode::USE_CONFIG );
- aArgs.put( "InteractionHandler", m_aContext.createComponent( "com.sun.star.task.InteractionHandler" ) );
-
- Sequence< PropertyValue > aResource( aArgs.getPropertyValues() );
- xLoad->load( aResource );
- xModel->attachResource( _sURL, aResource );
-
- ::utl::CloseableComponent aEnsureClose( xModel );
- }
-
- setTransientProperties( _sURL, *pModelImpl );
-
- return pModelImpl->getOrCreateDataSource().get();
-}
-
-void ODatabaseContext::appendAtTerminateListener(const ODatabaseModelImpl& _rDataSourceModel)
-{
- m_pDatabaseDocumentLoader->append(_rDataSourceModel);
-}
-
-void ODatabaseContext::removeFromTerminateListener(const ODatabaseModelImpl& _rDataSourceModel)
-{
- m_pDatabaseDocumentLoader->remove(_rDataSourceModel);
-}
-
-void ODatabaseContext::setTransientProperties(const ::rtl::OUString& _sURL, ODatabaseModelImpl& _rDataSourceModel )
-{
- if ( m_aDatasourceProperties.end() == m_aDatasourceProperties.find(_sURL) )
- return;
- try
- {
- ::rtl::OUString sAuthFailedPassword;
- Reference< XPropertySet > xDSProps( _rDataSourceModel.getOrCreateDataSource(), UNO_QUERY_THROW );
- const Sequence< PropertyValue >& rSessionPersistentProps = m_aDatasourceProperties[_sURL];
- const PropertyValue* pProp = rSessionPersistentProps.getConstArray();
- const PropertyValue* pPropsEnd = rSessionPersistentProps.getConstArray() + rSessionPersistentProps.getLength();
- for ( ; pProp != pPropsEnd; ++pProp )
- {
- if ( pProp->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "AuthFailedPassword" ) ) )
- {
- OSL_VERIFY( pProp->Value >>= sAuthFailedPassword );
- }
- else
- {
- xDSProps->setPropertyValue( pProp->Name, pProp->Value );
- }
- }
-
- _rDataSourceModel.m_sFailedPassword = sAuthFailedPassword;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-void ODatabaseContext::registerObject(const rtl::OUString& _rName, const Reference< XInterface > & _rxObject) throw( Exception, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(DatabaseAccessContext_Base::rBHelper.bDisposed);
-
- if ( !_rName.getLength() )
- throw IllegalArgumentException( ::rtl::OUString(), *this, 1 );
-
- Reference< XDocumentDataSource > xDocDataSource( _rxObject, UNO_QUERY );
- Reference< XModel > xModel( xDocDataSource.is() ? xDocDataSource->getDatabaseDocument() : Reference< XOfficeDatabaseDocument >(), UNO_QUERY );
- if ( !xModel.is() )
- throw IllegalArgumentException( ::rtl::OUString(), *this, 2 );
-
- ::rtl::OUString sURL = xModel->getURL();
- if ( !sURL.getLength() )
- throw IllegalArgumentException( DBACORE_RESSTRING( RID_STR_DATASOURCE_NOT_STORED ), *this, 2 );
-
- registerDatabaseLocation( _rName, sURL );
-
- ODatabaseSource::setName( xDocDataSource, _rName, ODatabaseSource::DBContextAccess() );
-
- // notify our container listeners
- ContainerEvent aEvent(static_cast<XContainer*>(this), makeAny(_rName), makeAny(_rxObject), Any());
- m_aContainerListeners.notifyEach( &XContainerListener::elementInserted, aEvent );
-}
-
-void ODatabaseContext::storeTransientProperties( ODatabaseModelImpl& _rModelImpl)
-{
- Reference< XPropertySet > xSource( _rModelImpl.getOrCreateDataSource(), UNO_QUERY );
- ::comphelper::NamedValueCollection aRememberProps;
-
- try
- {
- // get the info about the properties, check which ones are transient and not readonly
- Reference< XPropertySetInfo > xSetInfo;
- if (xSource.is())
- xSetInfo = xSource->getPropertySetInfo();
- Sequence< Property > aProperties;
- if (xSetInfo.is())
- aProperties = xSetInfo->getProperties();
-
- if (aProperties.getLength())
- {
- const Property* pProperties = aProperties.getConstArray();
- for ( sal_Int32 i=0; i<aProperties.getLength(); ++i, ++pProperties )
- {
- if ( ( ( pProperties->Attributes & PropertyAttribute::TRANSIENT) != 0 )
- && ( ( pProperties->Attributes & PropertyAttribute::READONLY) == 0 )
- )
- {
- // found such a property
- aRememberProps.put( pProperties->Name, xSource->getPropertyValue( pProperties->Name ) );
- }
- }
- }
- }
- catch ( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- // additionally, remember the "failed password", which is not available as property
- // #i86178#
- aRememberProps.put( "AuthFailedPassword", _rModelImpl.m_sFailedPassword );
-
- ::rtl::OUString sDocumentURL( _rModelImpl.getURL() );
- if ( m_aDatabaseObjects.find( sDocumentURL ) != m_aDatabaseObjects.end() )
- {
- m_aDatasourceProperties[ sDocumentURL ] = aRememberProps.getPropertyValues();
- }
- else if ( m_aDatabaseObjects.find( _rModelImpl.m_sName ) != m_aDatabaseObjects.end() )
- {
- OSL_FAIL( "ODatabaseContext::storeTransientProperties: a database document register by name? This shouldn't happen anymore!" );
- // all the code should have been changed so that registration is by URL only
- m_aDatasourceProperties[ _rModelImpl.m_sName ] = aRememberProps.getPropertyValues();
- }
- else
- {
- OSL_ENSURE( ( sDocumentURL.getLength() == 0 ) && ( _rModelImpl.m_sName.getLength() == 0 ),
- "ODatabaseContext::storeTransientProperties: a non-empty data source which I do not know?!" );
- }
-}
-
-void SAL_CALL ODatabaseContext::addContainerListener( const Reference< XContainerListener >& _rxListener ) throw(RuntimeException)
-{
- m_aContainerListeners.addInterface(_rxListener);
-}
-
-void SAL_CALL ODatabaseContext::removeContainerListener( const Reference< XContainerListener >& _rxListener ) throw(RuntimeException)
-{
- m_aContainerListeners.removeInterface(_rxListener);
-}
-
-void ODatabaseContext::revokeObject(const rtl::OUString& _rName) throw( Exception, RuntimeException )
-{
- ClearableMutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(DatabaseAccessContext_Base::rBHelper.bDisposed);
-
- ::rtl::OUString sURL = getDatabaseLocation( _rName );
-
- revokeDatabaseLocation( _rName );
- // will throw if something goes wrong
-
- if ( m_aDatabaseObjects.find( _rName ) != m_aDatabaseObjects.end() )
- {
- m_aDatasourceProperties[ sURL ] = m_aDatasourceProperties[ _rName ];
- }
-
- // check if URL is already loaded
- ObjectCacheIterator aExistent = m_aDatabaseObjects.find( sURL );
- if ( aExistent != m_aDatabaseObjects.end() )
- m_aDatabaseObjects.erase( aExistent );
-
- // notify our container listeners
- ContainerEvent aEvent( *this, makeAny( _rName ), Any(), Any() );
- aGuard.clear();
- m_aContainerListeners.notifyEach( &XContainerListener::elementRemoved, aEvent );
-}
-
-::sal_Bool SAL_CALL ODatabaseContext::hasRegisteredDatabase( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, RuntimeException)
-{
- return m_xDatabaseRegistrations->hasRegisteredDatabase( _Name );
-}
-
-Sequence< ::rtl::OUString > SAL_CALL ODatabaseContext::getRegistrationNames() throw (RuntimeException)
-{
- return m_xDatabaseRegistrations->getRegistrationNames();
-}
-
-::rtl::OUString SAL_CALL ODatabaseContext::getDatabaseLocation( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, NoSuchElementException, RuntimeException)
-{
- return m_xDatabaseRegistrations->getDatabaseLocation( _Name );
-}
-
-void SAL_CALL ODatabaseContext::registerDatabaseLocation( const ::rtl::OUString& _Name, const ::rtl::OUString& _Location ) throw (IllegalArgumentException, ElementExistException, RuntimeException)
-{
- m_xDatabaseRegistrations->registerDatabaseLocation( _Name, _Location );
-}
-
-void SAL_CALL ODatabaseContext::revokeDatabaseLocation( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, NoSuchElementException, IllegalAccessException, RuntimeException)
-{
- m_xDatabaseRegistrations->revokeDatabaseLocation( _Name );
-}
-
-void SAL_CALL ODatabaseContext::changeDatabaseLocation( const ::rtl::OUString& _Name, const ::rtl::OUString& _NewLocation ) throw (IllegalArgumentException, NoSuchElementException, IllegalAccessException, RuntimeException)
-{
- m_xDatabaseRegistrations->changeDatabaseLocation( _Name, _NewLocation );
-}
-
-::sal_Bool SAL_CALL ODatabaseContext::isDatabaseRegistrationReadOnly( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, NoSuchElementException, RuntimeException)
-{
- return m_xDatabaseRegistrations->isDatabaseRegistrationReadOnly( _Name );
-}
-
-void SAL_CALL ODatabaseContext::addDatabaseRegistrationsListener( const Reference< XDatabaseRegistrationsListener >& _Listener ) throw (RuntimeException)
-{
- m_xDatabaseRegistrations->addDatabaseRegistrationsListener( _Listener );
-}
-
-void SAL_CALL ODatabaseContext::removeDatabaseRegistrationsListener( const Reference< XDatabaseRegistrationsListener >& _Listener ) throw (RuntimeException)
-{
- m_xDatabaseRegistrations->removeDatabaseRegistrationsListener( _Listener );
-}
-
-// ::com::sun::star::container::XElementAccess
-Type ODatabaseContext::getElementType( ) throw(RuntimeException)
-{
- return::getCppuType(static_cast<Reference<XDataSource>*>(NULL));
-}
-
-sal_Bool ODatabaseContext::hasElements(void) throw( RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(DatabaseAccessContext_Base::rBHelper.bDisposed);
-
- return 0 != getElementNames().getLength();
-}
-
-// ::com::sun::star::container::XEnumerationAccess
-Reference< ::com::sun::star::container::XEnumeration > ODatabaseContext::createEnumeration(void) throw( RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- return new ::comphelper::OEnumerationByName(static_cast<XNameAccess*>(this));
-}
-
-// ::com::sun::star::container::XNameAccess
-Any ODatabaseContext::getByName(const rtl::OUString& _rName) throw( NoSuchElementException,
- WrappedTargetException, RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(DatabaseAccessContext_Base::rBHelper.bDisposed);
- if ( !_rName.getLength() )
- throw NoSuchElementException(_rName, *this);
-
- try
- {
- Reference< XInterface > xExistent = getObject( _rName );
- if ( xExistent.is() )
- return makeAny( xExistent );
-
- // see whether this is an registered name
- ::rtl::OUString sURL;
- if ( hasRegisteredDatabase( _rName ) )
- {
- sURL = getDatabaseLocation( _rName );
- // is the object cached under its URL?
- xExistent = getObject( sURL );
- }
- else
- // interpret the name as URL
- sURL = _rName;
-
- if ( !xExistent.is() )
- // try to load this as URL
- xExistent = loadObjectFromURL( _rName, sURL );
- return makeAny( xExistent );
- }
- catch (const NoSuchElementException&)
- { // let these exceptions through
- throw;
- }
- catch (const WrappedTargetException&)
- { // let these exceptions through
- throw;
- }
- catch (const RuntimeException&)
- { // let these exceptions through
- throw;
- }
- catch (const Exception&)
- { // exceptions other than the speciafied ones -> wrap
- Any aError = ::cppu::getCaughtException();
- throw WrappedTargetException(_rName, *this, aError );
- }
-}
-
-Sequence< rtl::OUString > ODatabaseContext::getElementNames(void) throw( RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(DatabaseAccessContext_Base::rBHelper.bDisposed);
-
- return getRegistrationNames();
-}
-
-sal_Bool ODatabaseContext::hasByName(const rtl::OUString& _rName) throw( RuntimeException )
-{
- MutexGuard aGuard(m_aMutex);
- ::connectivity::checkDisposed(DatabaseAccessContext_Base::rBHelper.bDisposed);
-
- return hasRegisteredDatabase( _rName );
-}
-
-Reference< XInterface > ODatabaseContext::getObject( const ::rtl::OUString& _rURL )
-{
- ObjectCacheIterator aFind = m_aDatabaseObjects.find( _rURL );
- Reference< XInterface > xExistent;
- if ( aFind != m_aDatabaseObjects.end() )
- xExistent = aFind->second->getOrCreateDataSource();
- return xExistent;
-}
-
-void ODatabaseContext::registerDatabaseDocument( ODatabaseModelImpl& _rModelImpl )
-{
- ::rtl::OUString sURL( _rModelImpl.getURL() );
-#if OSL_DEBUG_LEVEL > 1
- OSL_TRACE( "DatabaseContext: registering %s", ::rtl::OUStringToOString( sURL, RTL_TEXTENCODING_UTF8 ).getStr() );
-#endif
- if ( m_aDatabaseObjects.find( sURL ) == m_aDatabaseObjects.end() )
- {
- m_aDatabaseObjects[ sURL ] = &_rModelImpl;
- setTransientProperties( sURL, _rModelImpl );
- }
- else
- OSL_FAIL( "ODatabaseContext::registerDatabaseDocument: already have an object registered for this URL!" );
-}
-
-void ODatabaseContext::revokeDatabaseDocument( const ODatabaseModelImpl& _rModelImpl )
-{
- ::rtl::OUString sURL( _rModelImpl.getURL() );
-#if OSL_DEBUG_LEVEL > 1
- OSL_TRACE( "DatabaseContext: deregistering %s", ::rtl::OUStringToOString( sURL, RTL_TEXTENCODING_UTF8 ).getStr() );
-#endif
- m_aDatabaseObjects.erase( sURL );
-}
-
-void ODatabaseContext::databaseDocumentURLChange( const ::rtl::OUString& _rOldURL, const ::rtl::OUString& _rNewURL )
-{
-#if OSL_DEBUG_LEVEL > 1
- OSL_TRACE( "DatabaseContext: changing registration from %s to %s",
- ::rtl::OUStringToOString( _rOldURL, RTL_TEXTENCODING_UTF8 ).getStr(),
- ::rtl::OUStringToOString( _rNewURL, RTL_TEXTENCODING_UTF8 ).getStr() );
-#endif
- ObjectCache::iterator oldPos = m_aDatabaseObjects.find( _rOldURL );
- ENSURE_OR_THROW( oldPos != m_aDatabaseObjects.end(), "illegal old database document URL" );
- ObjectCache::iterator newPos = m_aDatabaseObjects.find( _rNewURL );
- ENSURE_OR_THROW( newPos == m_aDatabaseObjects.end(), "illegal new database document URL" );
-
- m_aDatabaseObjects[ _rNewURL ] = oldPos->second;
- m_aDatabaseObjects.erase( oldPos );
-}
-
-sal_Int64 SAL_CALL ODatabaseContext::getSomething( const Sequence< sal_Int8 >& rId ) throw(RuntimeException)
-{
- if (rId.getLength() == 16 && 0 == rtl_compareMemory(getUnoTunnelImplementationId().getConstArray(), rId.getConstArray(), 16 ) )
- return reinterpret_cast<sal_Int64>(this);
-
- return 0;
-}
-
-Sequence< sal_Int8 > ODatabaseContext::getUnoTunnelImplementationId()
-{
- static ::cppu::OImplementationId * pId = 0;
- if (! pId)
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- if (! pId)
- {
- static ::cppu::OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-void ODatabaseContext::onBasicManagerCreated( const Reference< XModel >& _rxForDocument, BasicManager& _rBasicManager )
-{
- // if it's a database document ...
- Reference< XOfficeDatabaseDocument > xDatabaseDocument( _rxForDocument, UNO_QUERY );
- // ... or a sub document of a database document ...
- if ( !xDatabaseDocument.is() )
- {
- Reference< XChild > xDocAsChild( _rxForDocument, UNO_QUERY );
- if ( xDocAsChild.is() )
- xDatabaseDocument.set( xDocAsChild->getParent(), UNO_QUERY );
- }
-
- // ... whose BasicManager has just been created, then add the global DatabaseDocument variable to its scope.
- if ( xDatabaseDocument.is() )
- _rBasicManager.SetGlobalUNOConstant( "ThisDatabaseDocument", makeAny( xDatabaseDocument ) );
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/databasecontext.hxx b/dbaccess/source/core/dataaccess/databasecontext.hxx
deleted file mode 100644
index 71d5fb4eb..000000000
--- a/dbaccess/source/core/dataaccess/databasecontext.hxx
+++ /dev/null
@@ -1,214 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_COREDATAACCESS_DATABASECONTEXT_HXX_
-#define _DBA_COREDATAACCESS_DATABASECONTEXT_HXX_
-
-#include "ModelImpl.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/container/ElementExistException.hpp>
-#include <com/sun/star/container/XContainer.hpp>
-#include <com/sun/star/container/XEnumerationAccess.hpp>
-#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/lang/XEventListener.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <com/sun/star/sdb/XDatabaseEnvironment.hpp>
-#include <com/sun/star/sdb/XDatabaseRegistrations.hpp>
-#include <com/sun/star/uno/XNamingService.hpp>
-#include <com/sun/star/uno/XAggregation.hpp>
-/** === end UNO includes === **/
-
-#include <basic/basicmanagerrepository.hxx>
-#include <comphelper/componentcontext.hxx>
-#include <comphelper/stl_types.hxx>
-#include <cppuhelper/compbase8.hxx>
-#include <cppuhelper/interfacecontainer.hxx>
-
-#include <boost/shared_ptr.hpp>
-
-// needed for registration
-namespace com { namespace sun { namespace star {
- namespace lang
- {
- class XMultiServiceFactory;
- class IllegalArgumentException;
- }
-} } }
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-class DatabaseDocumentLoader;
-//============================================================
-//= ODatabaseContext
-//============================================================
-::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
- ODatabaseContext_CreateInstance(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&);
-
-typedef ::cppu::WeakComponentImplHelper8 < ::com::sun::star::lang::XServiceInfo
- , ::com::sun::star::container::XEnumerationAccess
- , ::com::sun::star::container::XNameAccess
- , ::com::sun::star::uno::XNamingService
- , ::com::sun::star::container::XContainer
- , ::com::sun::star::lang::XSingleServiceFactory
- , ::com::sun::star::lang::XUnoTunnel
- , ::com::sun::star::sdb::XDatabaseRegistrations
- > DatabaseAccessContext_Base;
-
-class ODatabaseContext :public DatabaseAccessContext_Base
- ,public ::basic::BasicManagerCreationListener
-{
-private:
- /** loads the given object from the given URL
- @throws WrappedTargetException
- if an error occurs accessing the URL via the UCB
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > loadObjectFromURL(const ::rtl::OUString& _rName,const ::rtl::OUString& _sURL);
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getObject( const ::rtl::OUString& _rURL );
-
- /** sets all properties which were transient at the data source. e.g. password
- @param _sURL The file URL of the data source
- @param _xObject The data source itself.
- */
- void setTransientProperties(const ::rtl::OUString& _sURL, ODatabaseModelImpl& _rDataSourceModel );
-
- /** creates a new data source
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
- impl_createNewDataSource();
-
-protected:
- ::osl::Mutex m_aMutex;
- ::comphelper::ComponentContext m_aContext;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation >
- m_xDBRegistrationAggregate;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XDatabaseRegistrations >
- m_xDatabaseRegistrations;
-
- DECLARE_STL_USTRINGACCESS_MAP( ODatabaseModelImpl*, ObjectCache );
- ObjectCache m_aDatabaseObjects;
-
- DECLARE_STL_USTRINGACCESS_MAP( ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >, PropertyCache );
- PropertyCache m_aDatasourceProperties;
- // as we hold our data sources weak, we have to cache all properties on the data sources which are
- // transient but stored as long as the session lasts. The database context is the session (as it lives
- // as long as the session does), but the data sources may die before the session does, and then be
- // recreated afterwards. So it's our (the context's) responsibility to store the session-persistent
- // properties.
-
- ::cppu::OInterfaceContainerHelper m_aContainerListeners;
- DatabaseDocumentLoader* m_pDatabaseDocumentLoader;
-
-public:
- ODatabaseContext( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >& );
- virtual ~ODatabaseContext();
-
-
- // OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- // XSingleServiceFactory
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstance( ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstanceWithArguments( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& _rArguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
-
- // XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XServiceInfo - static methods
- static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::rtl::OUString getImplementationName_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
- SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >&);
-
- // XElementAccess
- virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasElements( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XEnumerationAccess
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XNameAccess
- virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException);
-
- // XNamingService
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getRegisteredObject( const ::rtl::OUString& Name ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL registerObject( const ::rtl::OUString& Name, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Object ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL revokeObject( const ::rtl::OUString& Name ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
-
- // XDatabaseRegistrations
- virtual ::sal_Bool SAL_CALL hasRegisteredDatabase( const ::rtl::OUString& Name ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getRegistrationNames() throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getDatabaseLocation( const ::rtl::OUString& Name ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL registerDatabaseLocation( const ::rtl::OUString& Name, const ::rtl::OUString& Location ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL revokeDatabaseLocation( const ::rtl::OUString& Name ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::IllegalAccessException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL changeDatabaseLocation( const ::rtl::OUString& Name, const ::rtl::OUString& NewLocation ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::IllegalAccessException, ::com::sun::star::uno::RuntimeException);
- virtual ::sal_Bool SAL_CALL isDatabaseRegistrationReadOnly( const ::rtl::OUString& Name ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL addDatabaseRegistrationsListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XDatabaseRegistrationsListener >& Listener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeDatabaseRegistrationsListener( const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XDatabaseRegistrationsListener >& Listener ) throw (::com::sun::star::uno::RuntimeException);
-
- // XContainer
- virtual void SAL_CALL addContainerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeContainerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::lang::XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
- static ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId();
-
- void registerDatabaseDocument( ODatabaseModelImpl& _rModelImpl);
- void revokeDatabaseDocument( const ODatabaseModelImpl& _rModelImpl);
- void databaseDocumentURLChange(const ::rtl::OUString& _sOldName, const ::rtl::OUString& _sNewName);
- void storeTransientProperties( ODatabaseModelImpl& _rModelImpl);
- void appendAtTerminateListener(const ODatabaseModelImpl& _rDataSourceModel);
- void removeFromTerminateListener(const ODatabaseModelImpl& _rDataSourceModel);
-
-private:
- // BasicManagerCreationListener
- virtual void onBasicManagerCreated(
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModel >& _rxForDocument,
- BasicManager& _rBasicManager
- );
-};
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // _DBA_COREDATAACCESS_DATABASECONTEXT_HXX_
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/databasedocument.cxx b/dbaccess/source/core/dataaccess/databasedocument.cxx
deleted file mode 100644
index 16e5c062e..000000000
--- a/dbaccess/source/core/dataaccess/databasedocument.cxx
+++ /dev/null
@@ -1,2090 +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_dbaccess.hxx"
-
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include "datasource.hxx"
-#include "databasedocument.hxx"
-#include "dbastrings.hrc"
-#include "module_dba.hxx"
-#include "documenteventexecutor.hxx"
-#include "databasecontext.hxx"
-#include "documentcontainer.hxx"
-#include "sdbcoretools.hxx"
-#include "recovery/dbdocrecovery.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/Optional.hpp>
-#include <com/sun/star/document/XExporter.hpp>
-#include <com/sun/star/document/XFilter.hpp>
-#include <com/sun/star/document/XImporter.hpp>
-#include <com/sun/star/embed/EntryInitModes.hpp>
-#include <com/sun/star/embed/XEmbedPersist.hpp>
-#include <com/sun/star/embed/XTransactedObject.hpp>
-#include <com/sun/star/embed/XTransactionBroadcaster.hpp>
-#include <com/sun/star/io/XActiveDataSource.hpp>
-#include <com/sun/star/io/XSeekable.hpp>
-#include <com/sun/star/io/XOutputStream.hpp>
-#include <com/sun/star/io/XTruncate.hpp>
-#include <com/sun/star/script/provider/XScriptProviderFactory.hpp>
-#include <com/sun/star/task/ErrorCodeIOException.hpp>
-#include <com/sun/star/task/XStatusIndicator.hpp>
-#include <com/sun/star/task/XStatusIndicatorFactory.hpp>
-#include <com/sun/star/ucb/XSimpleFileAccess.hpp>
-#include <com/sun/star/ui/XUIConfigurationStorage.hpp>
-#include <com/sun/star/view/XSelectionSupplier.hpp>
-#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
-#include <com/sun/star/ucb/XContent.hpp>
-#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/documentconstants.hxx>
-#include <comphelper/enumhelper.hxx>
-#include <comphelper/genericpropertyset.hxx>
-#include <comphelper/interaction.hxx>
-#include <comphelper/mediadescriptor.hxx>
-#include <comphelper/namedvaluecollection.hxx>
-#include <comphelper/numberedcollection.hxx>
-#include <comphelper/property.hxx>
-#include <comphelper/storagehelper.hxx>
-#include <comphelper/genericpropertyset.hxx>
-#include <comphelper/property.hxx>
-
-#include <connectivity/dbtools.hxx>
-
-#include <cppuhelper/exc_hlp.hxx>
-#include <framework/titlehelper.hxx>
-#include <unotools/saveopt.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <osl/diagnose.h>
-#include <tools/errcode.hxx>
-#include <tools/urlobj.hxx>
-
-#include <boost/bind.hpp>
-
-#include <algorithm>
-#include <functional>
-#include <list>
-
-#define MAP_LEN(x) x, sizeof(x) - 1
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::document;
-using namespace ::com::sun::star::io;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::embed;
-using namespace ::com::sun::star::task;
-using namespace ::com::sun::star::view;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::xml::sax;
-using namespace ::com::sun::star::script;
-using namespace ::com::sun::star::script::provider;
-using namespace ::com::sun::star::ui;
-using namespace ::cppu;
-using namespace ::osl;
-
-using ::com::sun::star::awt::XWindow;
-using ::com::sun::star::ucb::XContent;
-using ::com::sun::star::sdb::application::XDatabaseDocumentUI;
-
-namespace dbaccess
-{
-
-//============================================================
-//= ViewMonitor
-//============================================================
-
-bool ViewMonitor::onControllerConnected( const Reference< XController >& _rxController )
-{
- bool bFirstControllerEver = ( m_bEverHadController == false );
- m_bEverHadController = true;
-
- m_xLastConnectedController = _rxController;
- m_bLastIsFirstEverController = bFirstControllerEver;
-
- return bFirstControllerEver;
-}
-
-bool ViewMonitor::onSetCurrentController( const Reference< XController >& _rxController )
-{
- // we interpret this as "loading the document (including UI) is finished",
- // if and only if this is the controller which was last connected, and it was the
- // first controller ever connected
- bool bLoadFinished = ( _rxController == m_xLastConnectedController ) && m_bLastIsFirstEverController;
-
- // notify the respective events
- if ( bLoadFinished )
- m_rEventNotifier.notifyDocumentEventAsync( m_bIsNewDocument ? "OnNew" : "OnLoad" );
-
- return bLoadFinished;
-}
-
-//============================================================
-//= ODatabaseDocument
-//============================================================
-DBG_NAME(ODatabaseDocument)
-
-extern "C" void SAL_CALL createRegistryInfo_ODatabaseDocument()
-{
- static ::dba::OAutoRegistration< ODatabaseDocument > aAutoRegistration;
-}
-
-ODatabaseDocument::ODatabaseDocument(const ::rtl::Reference<ODatabaseModelImpl>& _pImpl )
- :ModelDependentComponent( _pImpl )
- ,ODatabaseDocument_OfficeDocument( getMutex() )
- ,m_aModifyListeners( getMutex() )
- ,m_aCloseListener( getMutex() )
- ,m_aStorageListeners( getMutex() )
- ,m_pEventContainer( new DocumentEvents( *this, getMutex(), _pImpl->getDocumentEvents() ) )
- ,m_pEventExecutor( NULL ) // initialized below, ref-count-protected
- ,m_aEventNotifier( *this, getMutex() )
- ,m_aViewMonitor( m_aEventNotifier )
- ,m_eInitState( NotInitialized )
- ,m_bClosing( false )
- ,m_bAllowDocumentScripting( false )
- ,m_bHasBeenRecovered( false )
-{
- DBG_CTOR(ODatabaseDocument,NULL);
- OSL_TRACE( "DD: ctor: %p: %p", this, m_pImpl.get() );
-
- osl_incrementInterlockedCount( &m_refCount );
- {
- impl_reparent_nothrow( m_xForms );
- impl_reparent_nothrow( m_xReports );
- impl_reparent_nothrow( m_pImpl->m_xTableDefinitions );
- impl_reparent_nothrow( m_pImpl->m_xCommandDefinitions );
-
- m_pEventExecutor = new DocumentEventExecutor( m_pImpl->m_aContext, this );
- }
- osl_decrementInterlockedCount( &m_refCount );
-
- // if there previously was a document instance for the same Impl which was already initialized,
- // then consider ourself initialized, too.
- // #i94840#
- if ( m_pImpl->hadInitializedDocument() )
- {
- // Note we set our init-state to "Initializing", not "Initialized". We're created from inside the ModelImpl,
- // which is expected to call attachResource in case there was a previous incarnation of the document,
- // so we can properly finish our initialization then.
- impl_setInitializing();
-
- if ( m_pImpl->getURL().getLength() )
- {
- // if the previous incarnation of the DatabaseDocument already had an URL, then creating this incarnation
- // here is effectively loading the document.
- // #i105505#
- m_aViewMonitor.onLoadedDocument();
- }
- }
-}
-
-ODatabaseDocument::~ODatabaseDocument()
-{
- OSL_TRACE( "DD: dtor: %p: %p", this, m_pImpl.get() );
- DBG_DTOR(ODatabaseDocument,NULL);
- if ( !ODatabaseDocument_OfficeDocument::rBHelper.bInDispose && !ODatabaseDocument_OfficeDocument::rBHelper.bDisposed )
- {
- acquire();
- dispose();
- }
-
- delete m_pEventContainer, m_pEventContainer = NULL;
-}
-
-Any SAL_CALL ODatabaseDocument::queryInterface( const Type& _rType ) throw (RuntimeException)
-{
- // strip XEmbeddedScripts and XScriptInvocationContext if we have any form/report
- // which already contains macros. In this case, the database document itself is not
- // allowed to contain macros, too.
- if ( !m_bAllowDocumentScripting
- && ( _rType.equals( XEmbeddedScripts::static_type() )
- || _rType.equals( XScriptInvocationContext::static_type() )
- )
- )
- return Any();
-
- Any aReturn = ODatabaseDocument_OfficeDocument::queryInterface(_rType);
- if (!aReturn.hasValue())
- aReturn = ODatabaseDocument_Title::queryInterface(_rType);
- return aReturn;
-}
-
-void SAL_CALL ODatabaseDocument::acquire( ) throw ()
-{
- ODatabaseDocument_OfficeDocument::acquire();
-}
-
-void SAL_CALL ODatabaseDocument::release( ) throw ()
-{
- ODatabaseDocument_OfficeDocument::release();
-}
-
-Sequence< Type > SAL_CALL ODatabaseDocument::getTypes( ) throw (RuntimeException)
-{
- Sequence< Type > aTypes = ::comphelper::concatSequences(
- ODatabaseDocument_OfficeDocument::getTypes(),
- ODatabaseDocument_Title::getTypes()
- );
-
- // strip XEmbeddedScripts and XScriptInvocationContext if we have any form/report
- // which already contains macros. In this case, the database document itself is not
- // allowed to contain macros, too.
- if ( !m_bAllowDocumentScripting )
- {
- Sequence< Type > aStrippedTypes( aTypes.getLength() );
- Type* pStripTo( aStrippedTypes.getArray() );
-
- // strip XEmbeddedScripts, and immediately re-assign to aTypes
- aTypes = Sequence< Type >(
- pStripTo,
- ::std::remove_copy_if(
- aTypes.getConstArray(),
- aTypes.getConstArray() + aTypes.getLength(),
- pStripTo,
- ::std::bind2nd( ::std::equal_to< Type >(), XEmbeddedScripts::static_type() )
- ) - pStripTo
- );
-
- // strip XScriptInvocationContext, and immediately re-assign to aTypes
- aTypes = Sequence< Type >(
- pStripTo,
- ::std::remove_copy_if(
- aTypes.getConstArray(),
- aTypes.getConstArray() + aTypes.getLength(),
- pStripTo,
- ::std::bind2nd( ::std::equal_to< Type >(), XScriptInvocationContext::static_type() )
- ) - pStripTo
- );
- }
-
- return aTypes;
-}
-
-Sequence< sal_Int8 > SAL_CALL ODatabaseDocument::getImplementationId( ) throw (RuntimeException)
-{
- static ::cppu::OImplementationId * pId = 0;
- if (! pId)
- {
- ::osl::MutexGuard aGuard( ::osl::Mutex::getGlobalMutex() );
- if (! pId)
- {
- static ::cppu::OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-// local functions
-namespace
-{
- Reference< XStatusIndicator > lcl_extractStatusIndicator( const ::comphelper::NamedValueCollection& _rArguments )
- {
- Reference< XStatusIndicator > xStatusIndicator;
- return _rArguments.getOrDefault( "StatusIndicator", xStatusIndicator );
- }
-
- static void lcl_triggerStatusIndicator_throw( const ::comphelper::NamedValueCollection& _rArguments, DocumentGuard& _rGuard, const bool _bStart )
- {
- Reference< XStatusIndicator > xStatusIndicator( lcl_extractStatusIndicator( _rArguments ) );
- if ( !xStatusIndicator.is() )
- return;
-
- _rGuard.clear();
- try
- {
- if ( _bStart )
- xStatusIndicator->start( ::rtl::OUString(), (sal_Int32)1000000 );
- else
- xStatusIndicator->end();
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- _rGuard.reset();
- // note that |reset| can throw a DisposedException
- }
-
- static void lcl_extractStatusIndicator( const ::comphelper::NamedValueCollection& _rArguments, Sequence< Any >& _rCallArgs )
- {
- Reference< XStatusIndicator > xStatusIndicator( lcl_extractStatusIndicator( _rArguments ) );
- if ( !xStatusIndicator.is() )
- return;
-
- sal_Int32 nLength = _rCallArgs.getLength();
- _rCallArgs.realloc( nLength + 1 );
- _rCallArgs[ nLength ] <<= xStatusIndicator;
- }
-
- static void lcl_extractAndStartStatusIndicator( const ::comphelper::NamedValueCollection& _rArguments, Reference< XStatusIndicator >& _rxStatusIndicator,
- Sequence< Any >& _rCallArgs )
- {
- _rxStatusIndicator = lcl_extractStatusIndicator( _rArguments );
- if ( !_rxStatusIndicator.is() )
- return;
-
- try
- {
- _rxStatusIndicator->start( ::rtl::OUString(), (sal_Int32)1000000 );
-
- sal_Int32 nLength = _rCallArgs.getLength();
- _rCallArgs.realloc( nLength + 1 );
- _rCallArgs[ nLength ] <<= _rxStatusIndicator;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- static Sequence< PropertyValue > lcl_appendFileNameToDescriptor( const ::comphelper::NamedValueCollection& _rDescriptor, const ::rtl::OUString _rURL )
- {
- ::comphelper::NamedValueCollection aMutableDescriptor( _rDescriptor );
- if ( _rURL.getLength() )
- {
- aMutableDescriptor.put( "FileName", _rURL );
- aMutableDescriptor.put( "URL", _rURL );
- }
- return aMutableDescriptor.getPropertyValues();
- }
-}
-
-void ODatabaseDocument::impl_setInitialized()
-{
- m_eInitState = Initialized;
-
- // start event notifications
- m_aEventNotifier.onDocumentInitialized();
-}
-
-void ODatabaseDocument::impl_reset_nothrow()
-{
- try
- {
- m_pImpl->clearConnections();
- m_pImpl->disposeStorages();
- m_pImpl->resetRootStroage();
-
- clearObjectContainer( m_xForms );
- clearObjectContainer( m_xReports );
- clearObjectContainer( m_pImpl->m_xTableDefinitions );
- clearObjectContainer( m_pImpl->m_xCommandDefinitions );
-
- m_eInitState = NotInitialized;
-
- m_pImpl->reset();
- }
- catch(const Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- m_pImpl->m_bDocumentReadOnly = sal_False;
-}
-
-void ODatabaseDocument::impl_import_nolck_throw( const ::comphelper::ComponentContext _rContext, const Reference< XInterface >& _rxTargetComponent,
- const ::comphelper::NamedValueCollection& _rResource )
-{
- Sequence< Any > aFilterCreationArgs;
- Reference< XStatusIndicator > xStatusIndicator;
- lcl_extractAndStartStatusIndicator( _rResource, xStatusIndicator, aFilterCreationArgs );
-
- /** property map for import info set */
- comphelper::PropertyMapEntry aExportInfoMap[] =
- {
- { MAP_LEN( "BaseURI"), 0,&::getCppuType( (::rtl::OUString *)0 ),beans::PropertyAttribute::MAYBEVOID, 0 },
- { MAP_LEN( "StreamName"), 0,&::getCppuType( (::rtl::OUString *)0 ),beans::PropertyAttribute::MAYBEVOID, 0 },
- { NULL, 0, 0, NULL, 0, 0 }
- };
- uno::Reference< beans::XPropertySet > xInfoSet( comphelper::GenericPropertySet_CreateInstance( new comphelper::PropertySetInfo( aExportInfoMap ) ) );
- xInfoSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("BaseURI")), uno::makeAny(_rResource.getOrDefault("URL",::rtl::OUString())));
- xInfoSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("StreamName")), uno::makeAny(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("content.xml"))));
-
- const sal_Int32 nCount = aFilterCreationArgs.getLength();
- aFilterCreationArgs.realloc(nCount + 1);
- aFilterCreationArgs[nCount] <<= xInfoSet;
-
- Reference< XImporter > xImporter(
- _rContext.createComponentWithArguments( "com.sun.star.comp.sdb.DBFilter", aFilterCreationArgs ),
- UNO_QUERY_THROW );
-
- Reference< XComponent > xComponent( _rxTargetComponent, UNO_QUERY_THROW );
- xImporter->setTargetDocument( xComponent );
-
- Reference< XFilter > xFilter( xImporter, UNO_QUERY_THROW );
- Sequence< PropertyValue > aFilterArgs( ODatabaseModelImpl::stripLoadArguments( _rResource ).getPropertyValues() );
- xFilter->filter( aFilterArgs );
-
- if ( xStatusIndicator.is() )
- xStatusIndicator->end();
-}
-
-void SAL_CALL ODatabaseDocument::initNew( ) throw (DoubleInitializationException, IOException, Exception, RuntimeException)
-{
- // SYNCHRONIZED ->
- DocumentGuard aGuard( *this, DocumentGuard::InitMethod );
-
- impl_reset_nothrow();
-
- impl_setInitializing();
-
- // create a temporary storage
- Reference< XStorage > xTempStor( ::comphelper::OStorageHelper::GetTemporaryStorage(
- m_pImpl->m_aContext.getLegacyServiceFactory() ) );
-
- // store therein
- impl_storeToStorage_throw( xTempStor, Sequence< PropertyValue >(), aGuard );
-
- // let the impl know we're now based on this storage
- m_pImpl->switchToStorage( xTempStor );
-
- // for the newly created document, allow document-wide scripting
- m_bAllowDocumentScripting = true;
-
- impl_setInitialized();
-
- m_aEventNotifier.notifyDocumentEventAsync( "OnTitleChanged" );
-
- impl_setModified_nothrow( sal_False, aGuard );
- // <- SYNCHRONIZED
-
- m_aEventNotifier.notifyDocumentEvent( "OnCreate" );
-
- impl_notifyStorageChange_nolck_nothrow( xTempStor );
-}
-
-void SAL_CALL ODatabaseDocument::load( const Sequence< PropertyValue >& _Arguments ) throw (DoubleInitializationException, IOException, Exception, RuntimeException)
-{
- // SYNCHRONIZED ->
- DocumentGuard aGuard( *this, DocumentGuard::InitMethod );
-
- impl_reset_nothrow();
-
- ::comphelper::NamedValueCollection aResource( _Arguments );
- if ( aResource.has( "FileName" ) && !aResource.has( "URL" ) )
- // FileName is the compatibility name for URL, so we might have clients passing
- // a FileName only. However, some of our code works with the URL only, so ensure
- // we have one.
- aResource.put( "URL", aResource.get( "FileName" ) );
- if ( aResource.has( "URL" ) && !aResource.has( "FileName" ) )
- // similar ... just in case there is legacy code which expects a FileName only
- aResource.put( "FileName", aResource.get( "URL" ) );
-
- // now that somebody (perhaps) told us an macro execution mode, remember it as
- // ImposedMacroExecMode
- m_pImpl->setImposedMacroExecMode(
- aResource.getOrDefault( "MacroExecutionMode", m_pImpl->getImposedMacroExecMode() ) );
-
- impl_setInitializing();
- try
- {
- aGuard.clear();
- impl_import_nolck_throw( m_pImpl->m_aContext, *this, aResource );
- aGuard.reset();
- }
- catch( const Exception& )
- {
- impl_reset_nothrow();
- throw;
- }
- // tell our view monitor that the document has been loaded - this way it will fire the proper
- // event (OnLoad instead of OnCreate) later on
- m_aViewMonitor.onLoadedDocument();
-
- // note that we do *not* call impl_setInitialized() here: The initialization is only complete
- // when the XModel::attachResource has been called, not sooner.
-
- impl_setModified_nothrow( sal_False, aGuard );
- // <- SYNCHRONIZED
-}
-
-namespace
-{
- bool lcl_hasAnyModifiedSubComponent_throw( const Reference< XController >& i_rController )
- {
- Reference< XDatabaseDocumentUI > xDatabaseUI( i_rController, UNO_QUERY_THROW );
-
- Sequence< Reference< XComponent > > aComponents( xDatabaseUI->getSubComponents() );
- const Reference< XComponent >* component = aComponents.getConstArray();
- const Reference< XComponent >* componentsEnd = aComponents.getConstArray() + aComponents.getLength();
-
- bool isAnyModified = false;
- for ( ; component != componentsEnd; ++component )
- {
- Reference< XModifiable > xModify( *component, UNO_QUERY );
- if ( xModify.is() )
- {
- isAnyModified = xModify->isModified();
- continue;
- }
-
- // TODO: clarify: anything else to care for? Both the sub componbents with and without model
- // should support the XModifiable interface, so I think nothing more is needed here.
- OSL_FAIL( "lcl_hasAnyModifiedSubComponent_throw: anything left to do here?" );
- }
-
- return isAnyModified;
- }
-}
-
-::sal_Bool SAL_CALL ODatabaseDocument::wasModifiedSinceLastSave() throw ( RuntimeException )
-{
- DocumentGuard aGuard( *this );
-
- // The implementation here is somewhat sloppy, in that it returns whether *any* part of the whole
- // database document, including opened sub components, is modified. This is more than what is requested:
- // We need to return <TRUE/> if the doc itself, or any of the opened sub components, has been modified
- // since the last call to any of the save* methods, or since the document has been loaded/created.
- // However, the API definition explicitly allows to be that sloppy ...
-
- if ( isModified() )
- return sal_True;
-
- // auto recovery is an "UI feature", it is to restore the UI the user knows. Thus,
- // we ask our connected controllers, not simply our existing form/report definitions.
- // (There is some information which even cannot be obtained without asking the controller.
- // For instance, newly created, but not yet saved, forms/reports are acessible via the
- // controller only, but not via the model.)
-
- try
- {
- for ( Controllers::const_iterator ctrl = m_aControllers.begin();
- ctrl != m_aControllers.end();
- ++ctrl
- )
- {
- if ( lcl_hasAnyModifiedSubComponent_throw( *ctrl ) )
- return sal_True;
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- return sal_False;
-}
-
-void SAL_CALL ODatabaseDocument::storeToRecoveryFile( const ::rtl::OUString& i_TargetLocation, const Sequence< PropertyValue >& i_MediaDescriptor ) throw ( RuntimeException, IOException, WrappedTargetException )
-{
- DocumentGuard aGuard( *this );
- ModifyLock aLock( *this );
-
- try
- {
- // create a storage for the target location
- Reference< XStorage > xTargetStorage( impl_createStorageFor_throw( i_TargetLocation ) );
-
- // first store the document as a whole into this storage
- impl_storeToStorage_throw( xTargetStorage, i_MediaDescriptor, aGuard );
-
- // save the sub components which need saving
- DatabaseDocumentRecovery aDocRecovery( m_pImpl->m_aContext);
- aDocRecovery.saveModifiedSubComponents( xTargetStorage, m_aControllers );
-
- // commit the root storage
- tools::stor::commitStorageIfWriteable( xTargetStorage );
- }
- catch( const Exception& )
- {
- Any aError = ::cppu::getCaughtException();
- if ( aError.isExtractableTo( ::cppu::UnoType< IOException >::get() )
- || aError.isExtractableTo( ::cppu::UnoType< RuntimeException >::get() )
- || aError.isExtractableTo( ::cppu::UnoType< WrappedTargetException >::get() )
- )
- {
- // allowed to leave
- throw;
- }
-
- throw WrappedTargetException( ::rtl::OUString(), *this, aError );
- }
-}
-
-void SAL_CALL ODatabaseDocument::recoverFromFile( const ::rtl::OUString& i_SourceLocation, const ::rtl::OUString& i_SalvagedFile, const Sequence< PropertyValue >& i_MediaDescriptor ) throw ( RuntimeException, IOException, WrappedTargetException )
-{
- DocumentGuard aGuard( *this, DocumentGuard::InitMethod );
-
- if ( i_SourceLocation.getLength() == 0 )
- throw IllegalArgumentException( ::rtl::OUString(), *this, 1 );
-
- try
- {
- // load the document itself, by simply delegating to our "load" method
-
- // our load implementation expects the SalvagedFile and URL to be in the media descriptor
- ::comphelper::NamedValueCollection aMediaDescriptor( i_MediaDescriptor );
- aMediaDescriptor.put( "SalvagedFile", i_SalvagedFile );
- aMediaDescriptor.put( "URL", i_SourceLocation );
-
- aGuard.clear(); // (load has an own guarding scheme)
- load( aMediaDescriptor.getPropertyValues() );
-
- // Without a controller, we are unable to recover the sub components, as they're always tied to a controller.
- // So, everything else is done when the first controller is connected.
- m_bHasBeenRecovered = true;
-
- // tell the impl that we've been loaded from the given location
- m_pImpl->setDocFileLocation( i_SourceLocation );
-
- // by definition (of XDocumentRecovery), we're responsible for delivering a fully-initialized document,
- // which includes an attachResource call.
- const ::rtl::OUString sLogicalDocumentURL( i_SalvagedFile.getLength() ? i_SalvagedFile : i_SourceLocation );
- impl_attachResource( sLogicalDocumentURL, aMediaDescriptor.getPropertyValues(), aGuard );
- // <- SYNCHRONIZED
- }
- catch( const Exception& )
- {
- Any aError = ::cppu::getCaughtException();
- if ( aError.isExtractableTo( ::cppu::UnoType< IOException >::get() )
- || aError.isExtractableTo( ::cppu::UnoType< RuntimeException >::get() )
- || aError.isExtractableTo( ::cppu::UnoType< WrappedTargetException >::get() )
- )
- {
- // allowed to leave
- throw;
- }
-
- throw WrappedTargetException( ::rtl::OUString(), *this, aError );
- }
-}
-
-// XModel
-sal_Bool SAL_CALL ODatabaseDocument::attachResource( const ::rtl::OUString& _rURL, const Sequence< PropertyValue >& _rArguments ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this, DocumentGuard::MethodUsedDuringInit );
- return impl_attachResource( _rURL, _rArguments, aGuard );
-}
-
-sal_Bool ODatabaseDocument::impl_attachResource( const ::rtl::OUString& i_rLogicalDocumentURL,
- const Sequence< PropertyValue >& i_rMediaDescriptor, DocumentGuard& _rDocGuard )
-{
- if ( ( i_rLogicalDocumentURL == getURL() )
- && ( i_rMediaDescriptor.getLength() == 1 )
- && ( i_rMediaDescriptor[0].Name.compareToAscii( "BreakMacroSignature" ) == 0 )
- )
- {
- // this is a BAD hack of the Basic importer code ... there should be a dedicated API for this,
- // not this bad mis-using of existing interfaces
- return sal_False;
- // (we do not support macro signatures, so we can ignore this call)
- }
-
- // if no URL has been provided, the caller was lazy enough to not call our getURL - which is not allowed anymore,
- // now since getURL and getLocation both return the same, so calling one of those should be simple.
- ::rtl::OUString sDocumentURL( i_rLogicalDocumentURL );
- OSL_ENSURE( sDocumentURL.getLength(), "ODatabaseDocument::impl_attachResource: invalid URL!" );
- if ( !sDocumentURL.getLength() )
- sDocumentURL = getURL();
-
- m_pImpl->setResource( sDocumentURL, i_rMediaDescriptor );
-
- if ( impl_isInitializing() )
- { // this means we've just been loaded, and this is the attachResource call which follows
- // the load call.
- impl_setInitialized();
-
- // determine whether the document as a whole, or sub documents, have macros. Especially the latter
- // controls the availability of our XEmbeddedScripts and XScriptInvocationContext interfaces, and we
- // should know this before anybody actually uses the object.
- m_bAllowDocumentScripting = ( m_pImpl->determineEmbeddedMacros() != ODatabaseModelImpl::eSubDocumentMacros );
-
- _rDocGuard.clear();
- // <- SYNCHRONIZED
- m_aEventNotifier.notifyDocumentEvent( "OnLoadFinished" );
- }
-
- return sal_True;
-}
-
-::rtl::OUString SAL_CALL ODatabaseDocument::getURL( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this, DocumentGuard::MethodWithoutInit );
- return m_pImpl->getURL();
-}
-
-Sequence< PropertyValue > SAL_CALL ODatabaseDocument::getArgs( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this, DocumentGuard::MethodWithoutInit );
- return m_pImpl->getMediaDescriptor().getPropertyValues();
-}
-
-void SAL_CALL ODatabaseDocument::connectController( const Reference< XController >& _xController ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
-#if OSL_DEBUG_LEVEL > 0
- for ( Controllers::const_iterator controller = m_aControllers.begin();
- controller != m_aControllers.end();
- ++controller
- )
- {
- OSL_ENSURE( *controller != _xController, "ODatabaseDocument::connectController: this controller is already connected!" );
- }
-#endif
-
- m_aControllers.push_back( _xController );
-
- m_aEventNotifier.notifyDocumentEventAsync( "OnViewCreated", Reference< XController2 >( _xController, UNO_QUERY ) );
-
- bool bFirstControllerEver = m_aViewMonitor.onControllerConnected( _xController );
- if ( !bFirstControllerEver )
- return;
-
- // check/adjust our macro mode.
- m_pImpl->checkMacrosOnLoading();
-}
-
-void SAL_CALL ODatabaseDocument::disconnectController( const Reference< XController >& _xController ) throw (RuntimeException)
-{
- bool bNotifyViewClosed = false;
- bool bLastControllerGone = false;
- bool bIsClosing = false;
-
- // SYNCHRONIZED ->
- {
- DocumentGuard aGuard( *this );
-
- Controllers::iterator pos = ::std::find( m_aControllers.begin(), m_aControllers.end(), _xController );
- OSL_ENSURE( pos != m_aControllers.end(), "ODatabaseDocument::disconnectController: don't know this controller!" );
- if ( pos != m_aControllers.end() )
- {
- m_aControllers.erase( pos );
- bNotifyViewClosed = true;
- }
-
- if ( m_xCurrentController == _xController )
- m_xCurrentController = NULL;
-
- bLastControllerGone = m_aControllers.empty();
- bIsClosing = m_bClosing;
- }
- // <- SYNCHRONIZED
-
- if ( bNotifyViewClosed )
- m_aEventNotifier.notifyDocumentEvent( "OnViewClosed", Reference< XController2 >( _xController, UNO_QUERY ) );
-
- if ( bLastControllerGone && !bIsClosing )
- {
- // if this was the last view, close the document as a whole
- // #i51157#
- try
- {
- close( sal_True );
- }
- catch( const CloseVetoException& )
- {
- // okay, somebody vetoed and took ownership
- }
- }
-}
-
-void SAL_CALL ODatabaseDocument::lockControllers( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- ++m_pImpl->m_nControllerLockCount;
-}
-
-void SAL_CALL ODatabaseDocument::unlockControllers( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- --m_pImpl->m_nControllerLockCount;
-}
-
-sal_Bool SAL_CALL ODatabaseDocument::hasControllersLocked( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- return m_pImpl->m_nControllerLockCount != 0;
-}
-
-Reference< XController > SAL_CALL ODatabaseDocument::getCurrentController() throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- return m_xCurrentController.is() ? m_xCurrentController : ( m_aControllers.empty() ? Reference< XController >() : *m_aControllers.begin() );
-}
-
-void SAL_CALL ODatabaseDocument::setCurrentController( const Reference< XController >& _xController ) throw (NoSuchElementException, RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- m_xCurrentController = _xController;
-
- if ( !m_aViewMonitor.onSetCurrentController( _xController ) )
- return;
-
- // check if there are sub components to recover from our document storage
- bool bAttemptRecovery = m_bHasBeenRecovered;
- if ( !bAttemptRecovery && m_pImpl->getMediaDescriptor().has( "ForceRecovery" ) )
- // do not use getOrDefault, it will throw for invalid types, which is not desired here
- m_pImpl->getMediaDescriptor().get( "ForceRecovery" ) >>= bAttemptRecovery;
-
- if ( !bAttemptRecovery )
- return;
-
- try
- {
- DatabaseDocumentRecovery aDocRecovery( m_pImpl->m_aContext );
- aDocRecovery.recoverSubDocuments( m_pImpl->getRootStorage(), _xController );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-Reference< XInterface > SAL_CALL ODatabaseDocument::getCurrentSelection( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- Reference< XInterface > xRet;
- Reference< XSelectionSupplier > xDocView( getCurrentController(), UNO_QUERY );
- if ( xDocView.is() )
- xRet.set(xDocView->getSelection(),UNO_QUERY);
-
- return xRet;
-}
-
-// XStorable
-sal_Bool SAL_CALL ODatabaseDocument::hasLocation( ) throw (RuntimeException)
-{
- return getLocation().getLength() > 0;
-}
-
-::rtl::OUString SAL_CALL ODatabaseDocument::getLocation( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this, DocumentGuard::MethodWithoutInit );
- return m_pImpl->getURL();
- // both XStorable::getLocation and XModel::getURL have to return the URL of the document, *not*
- // the location of the file which the docunment was possibly recovered from (which would be getDocFileLocation)
-}
-
-sal_Bool SAL_CALL ODatabaseDocument::isReadonly( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this, DocumentGuard::MethodWithoutInit );
- return m_pImpl->m_bDocumentReadOnly;
-}
-
-void SAL_CALL ODatabaseDocument::store( ) throw (IOException, RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- ::rtl::OUString sDocumentURL( m_pImpl->getURL() );
- if ( sDocumentURL.getLength() )
- {
- if ( m_pImpl->getDocFileLocation() == m_pImpl->getURL() )
- if ( m_pImpl->m_bDocumentReadOnly )
- throw IOException();
-
- impl_storeAs_throw( m_pImpl->getURL(), m_pImpl->getMediaDescriptor(), SAVE, aGuard );
- return;
- }
-
- // if we have no URL, but did survive the DocumentGuard above, then we've been inited via XLoadable::initNew,
- // i.e. we're based on a temporary storage
- OSL_ENSURE( m_pImpl->getDocFileLocation().getLength() == 0, "ODatabaseDocument::store: unexpected URL inconsistency!" );
-
- try
- {
- impl_storeToStorage_throw( m_pImpl->getRootStorage(), m_pImpl->getMediaDescriptor().getPropertyValues(), aGuard );
- }
- catch( const Exception& )
- {
- Any aError = ::cppu::getCaughtException();
- if ( aError.isExtractableTo( ::cppu::UnoType< IOException >::get() )
- || aError.isExtractableTo( ::cppu::UnoType< RuntimeException >::get() )
- )
- {
- // allowed to leave
- throw;
- }
- impl_throwIOExceptionCausedBySave_throw( aError, ::rtl::OUString() );
- }
-}
-
-void ODatabaseDocument::impl_throwIOExceptionCausedBySave_throw( const Any& i_rError, const ::rtl::OUString& i_rTargetURL ) const
-{
- ::rtl::OUString sErrorMessage = extractExceptionMessage( m_pImpl->m_aContext, i_rError );
- sErrorMessage = ResourceManager::loadString(
- RID_STR_ERROR_WHILE_SAVING,
- "$location$", i_rTargetURL,
- "$message$", sErrorMessage
- );
- throw IOException( sErrorMessage, *const_cast< ODatabaseDocument* >( this ) );
-}
-
-void ODatabaseDocument::impl_storeAs_throw( const ::rtl::OUString& _rURL, const ::comphelper::NamedValueCollection& _rArguments,
- const StoreType _eType, DocumentGuard& _rGuard ) throw ( IOException, RuntimeException )
-{
- OSL_PRECOND( ( _eType == SAVE ) || ( _eType == SAVE_AS ),
- "ODatabaseDocument::impl_storeAs_throw: you introduced a new type which cannot be handled here!" );
-
- // if we're in the process of initializing the document (which effectively means it is an implicit
- // initialization triggered in storeAsURL), the we do not notify events, since to an observer, the SaveAs
- // should not be noticable
- bool bIsInitializationProcess = impl_isInitializing();
-
- if ( !bIsInitializationProcess )
- {
- _rGuard.clear();
- m_aEventNotifier.notifyDocumentEvent( _eType == SAVE ? "OnSave" : "OnSaveAs", NULL, makeAny( _rURL ) );
- _rGuard.reset();
- }
-
- Reference< XStorage > xNewRootStorage;
- // will be non-NULL if our storage changed
-
- try
- {
- ModifyLock aLock( *this );
- // ignore all changes of our "modified" state during storing
-
- sal_Bool bLocationChanged = ( _rURL != m_pImpl->getDocFileLocation() );
- if ( bLocationChanged )
- {
- // create storage for target URL
- Reference< XStorage > xTargetStorage( impl_createStorageFor_throw( _rURL ) );
-
- if ( m_pImpl->isEmbeddedDatabase() )
- m_pImpl->clearConnections();
-
- // commit everything
- m_pImpl->commitEmbeddedStorage();
- m_pImpl->commitStorages();
-
- // copy own storage to target storage
- Reference< XStorage > xCurrentStorage( m_pImpl->getRootStorage() );
- if ( xCurrentStorage.is() )
- xCurrentStorage->copyToStorage( xTargetStorage );
-
- m_pImpl->disposeStorages();
-
- // each and every document definition obtained via m_xForms and m_xReports depends
- // on the sub storages which we just disposed. So, dispose the forms/reports collections, too.
- // This ensures that they're re-created when needed.
- clearObjectContainer( m_xForms );
- clearObjectContainer( m_xReports );
-
- xNewRootStorage = m_pImpl->switchToStorage( xTargetStorage );
-
- m_pImpl->m_bDocumentReadOnly = sal_False;
- }
-
- // store to current storage
- Reference< XStorage > xCurrentStorage( m_pImpl->getOrCreateRootStorage(), UNO_QUERY_THROW );
- Sequence< PropertyValue > aMediaDescriptor( lcl_appendFileNameToDescriptor( _rArguments, _rURL ) );
- impl_storeToStorage_throw( xCurrentStorage, aMediaDescriptor, _rGuard );
-
- // success - tell our impl
- m_pImpl->setDocFileLocation( _rURL );
- m_pImpl->setResource( _rURL, aMediaDescriptor );
-
- // if we are in an initialization process, then this is finished, now that we stored the document
- if ( bIsInitializationProcess )
- impl_setInitialized();
- }
- catch( const Exception& )
- {
- Any aError = ::cppu::getCaughtException();
-
- // notify the failure
- if ( !bIsInitializationProcess )
- m_aEventNotifier.notifyDocumentEventAsync( _eType == SAVE ? "OnSaveFailed" : "OnSaveAsFailed", NULL, makeAny( _rURL ) );
-
- if ( aError.isExtractableTo( ::cppu::UnoType< IOException >::get() )
- || aError.isExtractableTo( ::cppu::UnoType< RuntimeException >::get() )
- )
- {
- // allowed to leave
- throw;
- }
-
- impl_throwIOExceptionCausedBySave_throw( aError, _rURL );
- }
-
- // notify the document event
- if ( !bIsInitializationProcess )
- m_aEventNotifier.notifyDocumentEventAsync( _eType == SAVE ? "OnSaveDone" : "OnSaveAsDone", NULL, makeAny( _rURL ) );
-
- // reset our "modified" flag, and clear the guard
- impl_setModified_nothrow( sal_False, _rGuard );
- // <- SYNCHRONIZED
-
- // notify storage listeners
- if ( xNewRootStorage.is() )
- impl_notifyStorageChange_nolck_nothrow( xNewRootStorage );
-}
-
-Reference< XStorage > ODatabaseDocument::impl_createStorageFor_throw( const ::rtl::OUString& _rURL ) const
-{
- Reference < ::com::sun::star::ucb::XSimpleFileAccess > xTempAccess;
- m_pImpl->m_aContext.createComponent( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ucb.SimpleFileAccess")) ,xTempAccess);
- Reference< io::XStream > xStream = xTempAccess->openFileReadWrite( _rURL );
- Reference< io::XTruncate > xTruncate(xStream,UNO_QUERY);
- if ( xTruncate.is() )
- {
- xTruncate->truncate();
- }
- Sequence<Any> aParam(2);
- aParam[0] <<= xStream;
- aParam[1] <<= ElementModes::READWRITE | ElementModes::TRUNCATE;
-
- Reference< XSingleServiceFactory > xStorageFactory( m_pImpl->createStorageFactory(), UNO_SET_THROW );
- return Reference< XStorage >( xStorageFactory->createInstanceWithArguments( aParam ), UNO_QUERY_THROW );
-}
-
-void SAL_CALL ODatabaseDocument::storeAsURL( const ::rtl::OUString& _rURL, const Sequence< PropertyValue >& _rArguments ) throw (IOException, RuntimeException)
-{
- // SYNCHRONIZED ->
- DocumentGuard aGuard( *this, DocumentGuard::MethodWithoutInit );
-
- // Normally, a document initialization is done via XLoadable::load or XLoadable::initNew. For convenience
- // reasons, and to not break existing API clients, it's allowed to call storeAsURL without having initialized
- // the document, in which case the initialization will be done implicitly.
- bool bImplicitInitialization = !impl_isInitialized();
- // implicit initialization while another initialization is just running is not possible
- if ( bImplicitInitialization && impl_isInitializing() )
- throw DoubleInitializationException();
-
- if ( bImplicitInitialization )
- impl_setInitializing();
-
- try
- {
- impl_storeAs_throw( _rURL, _rArguments, SAVE_AS, aGuard );
- // <- SYNCHRONIZED
-
- // impl_storeAs_throw cleared the lock on our mutex, but the below lines need this lock
- // SYNCHRONIZED ->
- aGuard.reset();
-
- // our title might have changed, potentially at least
- // Sadly, we cannot check this: Calling getTitle here and now would not deliver
- // an up-to-date result, as the call is delegated to our TitleHelper instance, which itself
- // updates its title only if it gets the OnSaveAsDone event (which was sent asynchronously
- // by impl_storeAs_throw). So, we simply notify always, and also asynchronously
- m_aEventNotifier.notifyDocumentEventAsync( "OnTitleChanged" );
- }
- catch( const Exception& )
- {
- impl_reset_nothrow();
- throw;
- }
-
- if ( bImplicitInitialization )
- m_bAllowDocumentScripting = true;
-
- aGuard.clear();
- // <- SYNCHRONIZED
-
- if ( bImplicitInitialization )
- m_aEventNotifier.notifyDocumentEvent( "OnCreate" );
-}
-
-void ODatabaseDocument::impl_storeToStorage_throw( const Reference< XStorage >& _rxTargetStorage, const Sequence< PropertyValue >& _rMediaDescriptor,
- DocumentGuard& _rDocGuard ) const
-{
- if ( !_rxTargetStorage.is() )
- throw IllegalArgumentException( ::rtl::OUString(), *const_cast< ODatabaseDocument* >( this ), 1 );
-
- if ( !m_pImpl.is() )
- throw DisposedException( ::rtl::OUString(), *const_cast< ODatabaseDocument* >( this ) );
-
- try
- {
- // commit everything
- m_pImpl->commitEmbeddedStorage();
- m_pImpl->commitStorages();
-
- // copy own storage to target storage
- if ( impl_isInitialized() )
- {
- Reference< XStorage > xCurrentStorage( m_pImpl->getOrCreateRootStorage(), UNO_QUERY_THROW );
- if ( xCurrentStorage != _rxTargetStorage )
- xCurrentStorage->copyToStorage( _rxTargetStorage );
- }
-
- // write into target storage
- ::comphelper::NamedValueCollection aWriteArgs( _rMediaDescriptor );
- lcl_triggerStatusIndicator_throw( aWriteArgs, _rDocGuard, true );
- impl_writeStorage_throw( _rxTargetStorage, aWriteArgs );
- lcl_triggerStatusIndicator_throw( aWriteArgs, _rDocGuard, false );
-
- // commit target storage
- OSL_VERIFY( tools::stor::commitStorageIfWriteable( _rxTargetStorage ) );
- }
- catch( const IOException& ) { throw; }
- catch( const RuntimeException& ) { throw; }
- catch ( const Exception& e )
- {
- throw IOException( e.Message, *const_cast< ODatabaseDocument* >( this ) );
- }
-}
-
-void SAL_CALL ODatabaseDocument::storeToURL( const ::rtl::OUString& _rURL, const Sequence< PropertyValue >& _rArguments ) throw (IOException, RuntimeException)
-{
- DocumentGuard aGuard( *this );
- ModifyLock aLock( *this );
-
- {
- aGuard.clear();
- m_aEventNotifier.notifyDocumentEvent( "OnSaveTo", NULL, makeAny( _rURL ) );
- aGuard.reset();
- }
-
- try
- {
- // create storage for target URL
- Reference< XStorage > xTargetStorage( impl_createStorageFor_throw( _rURL ) );
-
- // extend media descriptor with URL
- Sequence< PropertyValue > aMediaDescriptor( lcl_appendFileNameToDescriptor( _rArguments, _rURL ) );
-
- // store to this storage
- impl_storeToStorage_throw( xTargetStorage, aMediaDescriptor, aGuard );
- }
- catch( const Exception& )
- {
- Any aError = ::cppu::getCaughtException();
- m_aEventNotifier.notifyDocumentEventAsync( "OnSaveToFailed", NULL, aError );
-
- if ( aError.isExtractableTo( ::cppu::UnoType< IOException >::get() )
- || aError.isExtractableTo( ::cppu::UnoType< RuntimeException >::get() )
- )
- {
- // allowed to leave
- throw;
- }
-
- impl_throwIOExceptionCausedBySave_throw( aError, _rURL );
- }
-
- m_aEventNotifier.notifyDocumentEventAsync( "OnSaveToDone", NULL, makeAny( _rURL ) );
-}
-
-// XModifyBroadcaster
-void SAL_CALL ODatabaseDocument::addModifyListener( const Reference< XModifyListener >& _xListener ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
- m_aModifyListeners.addInterface(_xListener);
-}
-
-void SAL_CALL ODatabaseDocument::removeModifyListener( const Reference< XModifyListener >& _xListener ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
- m_aModifyListeners.removeInterface(_xListener);
-}
-
-// XModifiable
-sal_Bool SAL_CALL ODatabaseDocument::isModified( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- return m_pImpl->m_bModified;
-}
-
-void SAL_CALL ODatabaseDocument::setModified( sal_Bool _bModified ) throw (PropertyVetoException, RuntimeException)
-{
- DocumentGuard aGuard( *this, DocumentGuard::MethodWithoutInit );
- if ( impl_isInitialized() )
- impl_setModified_nothrow( _bModified, aGuard );
- // it's allowed to call setModified without the document being initialized already. In this case,
- // we simply ignore the call - when the initialization is finished, the respective code will set
- // a proper "modified" flag
-}
-
-void ODatabaseDocument::impl_setModified_nothrow( sal_Bool _bModified, DocumentGuard& _rGuard )
-{
- // SYNCHRONIZED ->
- bool bModifiedChanged = ( m_pImpl->m_bModified != _bModified ) && ( !m_pImpl->isModifyLocked() );
-
- if ( bModifiedChanged )
- {
- m_pImpl->m_bModified = _bModified;
- m_aEventNotifier.notifyDocumentEventAsync( "OnModifyChanged" );
- }
- _rGuard.clear();
- // <- SYNCHRONIZED
-
- if ( bModifiedChanged )
- {
- lang::EventObject aEvent( *this );
- m_aModifyListeners.notifyEach( &XModifyListener::modified, aEvent );
- }
-}
-
-// ::com::sun::star::document::XEventBroadcaster
-void SAL_CALL ODatabaseDocument::addEventListener(const uno::Reference< document::XEventListener >& _Listener ) throw (uno::RuntimeException)
-{
- m_aEventNotifier.addLegacyEventListener( _Listener );
-}
-
-void SAL_CALL ODatabaseDocument::removeEventListener( const uno::Reference< document::XEventListener >& _Listener ) throw (uno::RuntimeException)
-{
- m_aEventNotifier.removeLegacyEventListener( _Listener );
-}
-
-void SAL_CALL ODatabaseDocument::addDocumentEventListener( const Reference< XDocumentEventListener >& _Listener ) throw (RuntimeException)
-{
- m_aEventNotifier.addDocumentEventListener( _Listener );
-}
-
-void SAL_CALL ODatabaseDocument::removeDocumentEventListener( const Reference< XDocumentEventListener >& _Listener ) throw (RuntimeException)
-{
- m_aEventNotifier.removeDocumentEventListener( _Listener );
-}
-
-void SAL_CALL ODatabaseDocument::notifyDocumentEvent( const ::rtl::OUString& _EventName, const Reference< XController2 >& _ViewController, const Any& _Supplement ) throw (IllegalArgumentException, NoSupportException, RuntimeException)
-{
- if ( !_EventName.getLength() )
- throw IllegalArgumentException( ::rtl::OUString(), *this, 1 );
-
- // SYNCHRONIZED ->
- DocumentGuard aGuard( *this );
-
- if ( !DocumentEvents::needsSynchronousNotification( _EventName ) )
- {
- m_aEventNotifier.notifyDocumentEventAsync( _EventName, _ViewController, _Supplement );
- return;
- }
- aGuard.clear();
- // <- SYNCHRONIZED
-
- m_aEventNotifier.notifyDocumentEvent( _EventName, _ViewController, _Supplement );
-}
-
-Sequence< PropertyValue > SAL_CALL ODatabaseDocument::getPrinter( ) throw (RuntimeException)
-{
- OSL_FAIL( "ODatabaseDocument::getPrinter: not supported!" );
- return Sequence< PropertyValue >();
-}
-
-void SAL_CALL ODatabaseDocument::setPrinter( const Sequence< PropertyValue >& /*aPrinter*/ ) throw (IllegalArgumentException, RuntimeException)
-{
- OSL_FAIL( "ODatabaseDocument::setPrinter: not supported!" );
-}
-
-void SAL_CALL ODatabaseDocument::print( const Sequence< PropertyValue >& /*xOptions*/ ) throw (IllegalArgumentException, RuntimeException)
-{
- OSL_FAIL( "ODatabaseDocument::print: not supported!" );
-}
-
-void ODatabaseDocument::impl_reparent_nothrow( const WeakReference< XNameAccess >& _rxContainer )
-{
- Reference< XChild > xChild( _rxContainer.get(), UNO_QUERY );
- if ( xChild.is() )
- xChild->setParent( *this );
-}
-
-void ODatabaseDocument::clearObjectContainer( WeakReference< XNameAccess >& _rxContainer)
-{
- Reference< XNameAccess > xContainer = _rxContainer;
- ::comphelper::disposeComponent( xContainer );
-
- Reference< XChild > xChild( _rxContainer.get(),UNO_QUERY );
- if ( xChild.is() )
- xChild->setParent( NULL );
- _rxContainer = Reference< XNameAccess >();
-}
-
-Reference< XNameAccess > ODatabaseDocument::impl_getDocumentContainer_throw( ODatabaseModelImpl::ObjectType _eType )
-{
- if ( ( _eType != ODatabaseModelImpl::E_FORM ) && ( _eType != ODatabaseModelImpl::E_REPORT ) )
- throw IllegalArgumentException();
-
- bool bFormsContainer = _eType == ODatabaseModelImpl::E_FORM;
-
- WeakReference< XNameAccess >& rContainerRef( bFormsContainer ? m_xForms : m_xReports );
- Reference< XNameAccess > xContainer = rContainerRef;
- if ( !xContainer.is() )
- {
- Any aValue;
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xMy(*this);
- if ( dbtools::getDataSourceSetting(xMy,bFormsContainer ? "Forms" : "Reports",aValue) )
- {
- ::rtl::OUString sSupportService;
- aValue >>= sSupportService;
- if ( sSupportService.getLength() )
- {
- Sequence<Any> aArgs(1);
- aArgs[0] <<= NamedValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DatabaseDocument")),makeAny(xMy));
- xContainer.set(m_pImpl->m_aContext.createComponentWithArguments(sSupportService,aArgs),UNO_QUERY);
- rContainerRef = xContainer;
- }
- }
- if ( !xContainer.is() )
- {
- TContentPtr& rContainerData( m_pImpl->getObjectContainer( _eType ) );
- rContainerRef = xContainer = new ODocumentContainer( m_pImpl->m_aContext.getLegacyServiceFactory(), *this, rContainerData, bFormsContainer );
- }
- impl_reparent_nothrow( xContainer );
- }
- return xContainer;
-}
-
-void ODatabaseDocument::impl_closeControllerFrames_nolck_throw( sal_Bool _bDeliverOwnership )
-{
- Controllers aCopy = m_aControllers;
-
- Controllers::iterator aEnd = aCopy.end();
- for ( Controllers::iterator aIter = aCopy.begin(); aIter != aEnd ; ++aIter )
- {
- if ( !aIter->is() )
- continue;
-
- try
- {
- Reference< XCloseable> xFrame( (*aIter)->getFrame(), UNO_QUERY );
- if ( xFrame.is() )
- xFrame->close( _bDeliverOwnership );
- }
- catch( const CloseVetoException& ) { throw; }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-}
-
-struct DisposeControllerFrame : public ::std::unary_function< Reference< XController >, void >
-{
- void operator()( const Reference< XController >& _rxController ) const
- {
- try
- {
- if ( !_rxController.is() )
- return;
-
- Reference< XFrame > xFrame( _rxController->getFrame() );
- ::comphelper::disposeComponent( xFrame );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- };
-};
-
-void ODatabaseDocument::impl_disposeControllerFrames_nothrow()
-{
- Controllers aCopy;
- aCopy.swap( m_aControllers ); // ensure m_aControllers is empty afterwards
- ::std::for_each( aCopy.begin(), aCopy.end(), DisposeControllerFrame() );
-}
-
-void SAL_CALL ODatabaseDocument::close( sal_Bool _bDeliverOwnership ) throw (CloseVetoException, RuntimeException)
-{
- // nearly everything below can/must be done without our mutex locked, the below is just for
- // the checks for being disposed and the like
- // SYNCHRONIZED ->
- {
- DocumentGuard aGuard( *this );
- m_bClosing = true;
- }
- // <- SYNCHRONIZED
-
- try
- {
- // allow listeners to veto
- lang::EventObject aEvent( *this );
- m_aCloseListener.forEach< XCloseListener >(
- boost::bind( &XCloseListener::queryClosing, _1, boost::cref( aEvent ), boost::cref( _bDeliverOwnership ) ) );
-
- // notify that we're going to unload
- m_aEventNotifier.notifyDocumentEvent( "OnPrepareUnload" );
-
- impl_closeControllerFrames_nolck_throw( _bDeliverOwnership );
-
- m_aCloseListener.notifyEach( &XCloseListener::notifyClosing, (const lang::EventObject&)aEvent );
-
- dispose();
- }
- catch ( const Exception& )
- {
- ::osl::MutexGuard aGuard( m_aMutex );
- m_bClosing = false;
- throw;
- }
-
- // SYNCHRONIZED ->
- ::osl::MutexGuard aGuard( m_aMutex );
- m_bClosing = false;
- // <- SYNCHRONIZED
-}
-
-void SAL_CALL ODatabaseDocument::addCloseListener( const Reference< ::com::sun::star::util::XCloseListener >& Listener ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
- m_aCloseListener.addInterface(Listener);
-}
-
-void SAL_CALL ODatabaseDocument::removeCloseListener( const Reference< ::com::sun::star::util::XCloseListener >& Listener ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
- m_aCloseListener.removeInterface(Listener);
-}
-
-Reference< XNameAccess > SAL_CALL ODatabaseDocument::getFormDocuments( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this, DocumentGuard::MethodUsedDuringInit );
- return impl_getDocumentContainer_throw( ODatabaseModelImpl::E_FORM );
-}
-
-Reference< XNameAccess > SAL_CALL ODatabaseDocument::getReportDocuments( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this, DocumentGuard::MethodUsedDuringInit );
- return impl_getDocumentContainer_throw( ODatabaseModelImpl::E_REPORT );
-}
-
-void ODatabaseDocument::WriteThroughComponent( const Reference< XComponent >& xComponent, const sal_Char* pStreamName,
- const sal_Char* pServiceName, const Sequence< Any >& _rArguments, const Sequence< PropertyValue >& rMediaDesc,
- const Reference<XStorage>& _xStorageToSaveTo ) const
-{
- OSL_ENSURE( pStreamName, "Need stream name!" );
- OSL_ENSURE( pServiceName, "Need service name!" );
-
- // open stream
- ::rtl::OUString sStreamName = ::rtl::OUString::createFromAscii( pStreamName );
- Reference< XStream > xStream = _xStorageToSaveTo->openStreamElement( sStreamName, ElementModes::READWRITE | ElementModes::TRUNCATE );
- if ( !xStream.is() )
- return;
-
- Reference< XOutputStream > xOutputStream( xStream->getOutputStream() );
- OSL_ENSURE( xOutputStream.is(), "Can't create output stream in package!" );
- if ( !xOutputStream.is() )
- return;
-
- Reference< XSeekable > xSeek( xOutputStream, UNO_QUERY );
- if ( xSeek.is() )
- xSeek->seek(0);
-
- Reference< XPropertySet > xStreamProp( xOutputStream, UNO_QUERY_THROW );
- xStreamProp->setPropertyValue( INFO_MEDIATYPE, makeAny( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "text/xml" ) ) ) );
- xStreamProp->setPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Compressed" ) ), makeAny( (sal_Bool)sal_True ) );
-
- // write the stuff
- WriteThroughComponent( xOutputStream, xComponent, pServiceName, _rArguments, rMediaDesc );
-}
-
-void ODatabaseDocument::WriteThroughComponent( const Reference< XOutputStream >& xOutputStream,
- const Reference< XComponent >& xComponent, const sal_Char* pServiceName, const Sequence< Any >& _rArguments,
- const Sequence< PropertyValue >& rMediaDesc ) const
-{
- OSL_ENSURE( xOutputStream.is(), "I really need an output stream!" );
- OSL_ENSURE( xComponent.is(), "Need component!" );
- OSL_ENSURE( NULL != pServiceName, "Need component name!" );
-
- // get component
- Reference< XActiveDataSource > xSaxWriter;
- OSL_VERIFY( m_pImpl->m_aContext.createComponent( "com.sun.star.xml.sax.Writer", xSaxWriter ) );
- if ( !xSaxWriter.is() )
- return;
-
- // connect XML writer to output stream
- xSaxWriter->setOutputStream( xOutputStream );
-
- // prepare arguments (prepend doc handler to given arguments)
- Reference< XDocumentHandler > xDocHandler( xSaxWriter,UNO_QUERY);
- Sequence<Any> aArgs( 1 + _rArguments.getLength() );
- aArgs[0] <<= xDocHandler;
- for ( sal_Int32 i = 0; i < _rArguments.getLength(); ++i )
- aArgs[ i+1 ] = _rArguments[i];
-
- // get filter component
- Reference< XExporter > xExporter;
- OSL_VERIFY( m_pImpl->m_aContext.createComponentWithArguments( pServiceName, aArgs, xExporter ) );
- if ( !xExporter.is() )
- return;
-
- // connect model and filter
- xExporter->setSourceDocument( xComponent );
-
- // filter
- Reference< XFilter > xFilter( xExporter, UNO_QUERY_THROW );
- xFilter->filter( rMediaDesc );
-}
-
-void ODatabaseDocument::impl_writeStorage_throw( const Reference< XStorage >& _rxTargetStorage, const ::comphelper::NamedValueCollection& _rMediaDescriptor ) const
-{
- // extract status indicator
- Sequence< Any > aDelegatorArguments;
- lcl_extractStatusIndicator( _rMediaDescriptor, aDelegatorArguments );
-
- /** property map for export info set */
- comphelper::PropertyMapEntry aExportInfoMap[] =
- {
- { MAP_LEN( "BaseURI"), 0,&::getCppuType( (::rtl::OUString *)0 ),beans::PropertyAttribute::MAYBEVOID, 0 },
- { MAP_LEN( "StreamName"), 0,&::getCppuType( (::rtl::OUString *)0 ),beans::PropertyAttribute::MAYBEVOID, 0 },
- { MAP_LEN( "UsePrettyPrinting" ), 0, &::getCppuType((sal_Bool*)0), beans::PropertyAttribute::MAYBEVOID, 0},
- { NULL, 0, 0, NULL, 0, 0 }
- };
- uno::Reference< beans::XPropertySet > xInfoSet( comphelper::GenericPropertySet_CreateInstance( new comphelper::PropertySetInfo( aExportInfoMap ) ) );
-
- SvtSaveOptions aSaveOpt;
- xInfoSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("UsePrettyPrinting")), uno::makeAny(aSaveOpt.IsPrettyPrinting()));
- if ( aSaveOpt.IsSaveRelFSys() )
- xInfoSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("BaseURI")), uno::makeAny(_rMediaDescriptor.getOrDefault("URL",::rtl::OUString())));
-
- ::rtl::OUString aVersion;
- SvtSaveOptions::ODFDefaultVersion nDefVersion = aSaveOpt.GetODFDefaultVersion();
-
- // older versions can not have this property set, it exists only starting from ODF1.2
- if ( nDefVersion >= SvtSaveOptions::ODFVER_012 )
- aVersion = ODFVER_012_TEXT;
-
- if ( aVersion.getLength() )
- {
- try
- {
- xInfoSet->setPropertyValue( rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( "Version" )), uno::makeAny( aVersion ) );
- }
- catch( const uno::Exception& )
- {
- }
- }
-
- sal_Int32 nArgsLen = aDelegatorArguments.getLength();
- aDelegatorArguments.realloc(nArgsLen+1);
- aDelegatorArguments[nArgsLen++] <<= xInfoSet;
-
- Reference< XPropertySet > xProp( _rxTargetStorage, UNO_QUERY_THROW );
- xProp->setPropertyValue( INFO_MEDIATYPE, makeAny( (rtl::OUString)MIMETYPE_OASIS_OPENDOCUMENT_DATABASE ) );
-
- Reference< XComponent > xComponent( *const_cast< ODatabaseDocument* >( this ), UNO_QUERY_THROW );
-
- Sequence< PropertyValue > aMediaDescriptor;
- _rMediaDescriptor >>= aMediaDescriptor;
-
- xInfoSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("StreamName")), uno::makeAny(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("settings.xml"))));
- WriteThroughComponent( xComponent, "settings.xml", "com.sun.star.comp.sdb.XMLSettingsExporter",
- aDelegatorArguments, aMediaDescriptor, _rxTargetStorage );
-
- xInfoSet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("StreamName")), uno::makeAny(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("content.xml"))));
- WriteThroughComponent( xComponent, "content.xml", "com.sun.star.comp.sdb.DBExportFilter",
- aDelegatorArguments, aMediaDescriptor, _rxTargetStorage );
-
- m_pImpl->storeLibraryContainersTo( _rxTargetStorage );
-}
-
-Reference< XUIConfigurationManager > SAL_CALL ODatabaseDocument::getUIConfigurationManager( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- if ( !m_xUIConfigurationManager.is() )
- {
- m_pImpl->m_aContext.createComponent( "com.sun.star.ui.UIConfigurationManager", m_xUIConfigurationManager );
- Reference< XUIConfigurationStorage > xUIConfigStorage( m_xUIConfigurationManager, UNO_QUERY );
- if ( xUIConfigStorage.is() )
- {
- rtl::OUString aUIConfigFolderName( RTL_CONSTASCII_USTRINGPARAM( "Configurations2" ));
- Reference< XStorage > xConfigStorage;
-
- // First try to open with READWRITE and then READ
- xConfigStorage = getDocumentSubStorage( aUIConfigFolderName, ElementModes::READWRITE );
- if ( xConfigStorage.is() )
- {
- rtl::OUString aUIConfigMediaType( RTL_CONSTASCII_USTRINGPARAM( "application/vnd.sun.xml.ui.configuration" ));
- rtl::OUString aMediaType;
- Reference< XPropertySet > xPropSet( xConfigStorage, UNO_QUERY );
- Any a = xPropSet->getPropertyValue( INFO_MEDIATYPE );
- if ( !( a >>= aMediaType ) || ( aMediaType.getLength() == 0 ))
- {
- a <<= aUIConfigMediaType;
- xPropSet->setPropertyValue( INFO_MEDIATYPE, a );
- }
- }
- else
- xConfigStorage = getDocumentSubStorage( aUIConfigFolderName, ElementModes::READ );
-
- // initialize ui configuration manager with document substorage
- xUIConfigStorage->setStorage( xConfigStorage );
- }
- }
-
- return m_xUIConfigurationManager;
-}
-
-Reference< XStorage > SAL_CALL ODatabaseDocument::getDocumentSubStorage( const ::rtl::OUString& aStorageName, sal_Int32 nMode ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- Reference< XDocumentSubStorageSupplier > xStorageAccess( m_pImpl->getDocumentSubStorageSupplier() );
- return xStorageAccess->getDocumentSubStorage( aStorageName, nMode );
-}
-
-Sequence< ::rtl::OUString > SAL_CALL ODatabaseDocument::getDocumentSubStoragesNames( ) throw (::com::sun::star::io::IOException, RuntimeException)
-{
- Reference< XDocumentSubStorageSupplier > xStorageAccess( m_pImpl->getDocumentSubStorageSupplier() );
- return xStorageAccess->getDocumentSubStoragesNames();
-}
-
-void ODatabaseDocument::impl_notifyStorageChange_nolck_nothrow( const Reference< XStorage >& _rxNewRootStorage )
-{
- Reference< XInterface > xMe( *const_cast< ODatabaseDocument* >( this ) );
-
- m_aStorageListeners.forEach< XStorageChangeListener >(
- boost::bind( &XStorageChangeListener::notifyStorageChange, _1, boost::cref( xMe ), boost::cref( _rxNewRootStorage ) ) );
-}
-
-void ODatabaseDocument::disposing()
-{
- OSL_TRACE( "DD: disp: %p: %p", this, m_pImpl.get() );
- if ( !m_pImpl.is() )
- {
- // this means that we're already disposed
- OSL_ENSURE( ODatabaseDocument_OfficeDocument::rBHelper.bDisposed, "ODatabaseDocument::disposing: no impl anymore, but not yet disposed!" );
- return;
- }
-
- if ( impl_isInitialized() )
- m_aEventNotifier.notifyDocumentEvent( "OnUnload" );
-
- Reference< XModel > xHoldAlive( this );
-
- m_aEventNotifier.disposing();
-
- lang::EventObject aDisposeEvent(static_cast<XWeak*>(this));
- m_aModifyListeners.disposeAndClear( aDisposeEvent );
- m_aCloseListener.disposeAndClear( aDisposeEvent );
- m_aStorageListeners.disposeAndClear( aDisposeEvent );
-
- // this is the list of objects which we currently hold as member. Upon resetting
- // those members, we can (potentially) release the last reference to them, in which
- // case they will be deleted - if they're C++ implementations, that is :).
- // Some of those implementations are offending enough to require the SolarMutex, which
- // means we should not release the last reference while our own mutex is locked ...
- ::std::list< Reference< XInterface > > aKeepAlive;
-
- // SYNCHRONIZED ->
- ::osl::ClearableMutexGuard aGuard( m_aMutex );
-
- OSL_ENSURE( m_aControllers.empty(), "ODatabaseDocument::disposing: there still are controllers!" );
- // normally, nobody should explicitly dispose, but only XCloseable::close the document. And upon
- // closing, our controllers are closed, too
-
- aKeepAlive.push_back( m_xUIConfigurationManager );
- m_xUIConfigurationManager = NULL;
-
- clearObjectContainer( m_xForms );
- clearObjectContainer( m_xReports );
-
- // reset the macro mode: in case the our impl struct stays alive (e.g. because our DataSource
- // object still exists), and somebody subsequently re-opens the document, we want to have
- // the security warning, again.
- m_pImpl->resetMacroExecutionMode();
-
- // similar arguing for our ViewMonitor
- m_aViewMonitor.reset();
-
- // tell our Impl to forget us
- m_pImpl->modelIsDisposing( impl_isInitialized(), ODatabaseModelImpl::ResetModelAccess() );
-
- // now, at the latest, the controller array should be empty. Controllers are
- // expected to listen for our disposal, and disconnect then
- OSL_ENSURE( m_aControllers.empty(), "ODatabaseDocument::disposing: there still are controllers!" );
- impl_disposeControllerFrames_nothrow();
-
- aKeepAlive.push_back( m_xModuleManager );
- m_xModuleManager.clear();
-
- aKeepAlive.push_back( m_xTitleHelper );
- m_xTitleHelper.clear();
-
- m_pImpl.clear();
-
- aGuard.clear();
- // <- SYNCHRONIZED
-
- aKeepAlive.clear();
-}
-
-// XComponent
-void SAL_CALL ODatabaseDocument::dispose( ) throw (RuntimeException)
-{
- ::cppu::WeakComponentImplHelperBase::dispose();
-}
-
-void SAL_CALL ODatabaseDocument::addEventListener( const Reference< lang::XEventListener >& _xListener ) throw (RuntimeException)
-{
- ::cppu::WeakComponentImplHelperBase::addEventListener( _xListener );
-}
-
-void SAL_CALL ODatabaseDocument::removeEventListener( const Reference< lang::XEventListener >& _xListener ) throw (RuntimeException)
-{
- ::cppu::WeakComponentImplHelperBase::removeEventListener( _xListener );
-}
-
-// XServiceInfo
-rtl::OUString ODatabaseDocument::getImplementationName( ) throw(RuntimeException)
-{
- return getImplementationName_static();
-}
-
-rtl::OUString ODatabaseDocument::getImplementationName_static( ) throw(RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.dba.ODatabaseDocument"));
-}
-
-Sequence< ::rtl::OUString > ODatabaseDocument::getSupportedServiceNames( ) throw (RuntimeException)
-{
- return getSupportedServiceNames_static();
-}
-
-Reference< XInterface > ODatabaseDocument::Create( const Reference< XComponentContext >& _rxContext )
-{
- ::comphelper::ComponentContext aContext( _rxContext );
- Reference< XUnoTunnel > xDBContextTunnel( aContext.createComponent( (::rtl::OUString)SERVICE_SDB_DATABASECONTEXT ), UNO_QUERY_THROW );
- ODatabaseContext* pContext = reinterpret_cast< ODatabaseContext* >( xDBContextTunnel->getSomething( ODatabaseContext::getUnoTunnelImplementationId() ) );
-
- ::rtl::Reference<ODatabaseModelImpl> pImpl( new ODatabaseModelImpl( aContext.getLegacyServiceFactory(), *pContext ) );
- Reference< XModel > xModel( pImpl->createNewModel_deliverOwnership( false ) );
- return xModel.get();
-}
-
-Sequence< ::rtl::OUString > ODatabaseDocument::getSupportedServiceNames_static( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aSNS( 2 );
- aSNS[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.OfficeDatabaseDocument"));
- aSNS[1] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.document.OfficeDocument"));
- return aSNS;
-}
-
-sal_Bool ODatabaseDocument::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-Reference< XDataSource > SAL_CALL ODatabaseDocument::getDataSource() throw (RuntimeException)
-{
- DocumentGuard aGuard( *this, DocumentGuard::MethodWithoutInit );
- return m_pImpl->getOrCreateDataSource();
-}
-
-void SAL_CALL ODatabaseDocument::loadFromStorage( const Reference< XStorage >& /*xStorage*/, const Sequence< PropertyValue >& /*aMediaDescriptor*/ ) throw (IllegalArgumentException, DoubleInitializationException, IOException, Exception, RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- throw Exception(
- DBACORE_RESSTRING( RID_STR_NO_EMBEDDING ),
- *this
- );
-}
-
-void SAL_CALL ODatabaseDocument::storeToStorage( const Reference< XStorage >& _rxStorage, const Sequence< PropertyValue >& _rMediaDescriptor ) throw (IllegalArgumentException, IOException, Exception, RuntimeException)
-{
- DocumentGuard aGuard( *this );
- impl_storeToStorage_throw( _rxStorage, _rMediaDescriptor, aGuard );
-}
-
-void SAL_CALL ODatabaseDocument::switchToStorage( const Reference< XStorage >& _rxNewRootStorage ) throw (IllegalArgumentException, IOException, Exception, RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- Reference< XStorage > xNewRootStorage( m_pImpl->switchToStorage( _rxNewRootStorage ) );
-
- aGuard.clear();
- impl_notifyStorageChange_nolck_nothrow( xNewRootStorage );
-}
-
-Reference< XStorage > SAL_CALL ODatabaseDocument::getDocumentStorage( ) throw (IOException, Exception, RuntimeException)
-{
- DocumentGuard aGuard( *this );
- return m_pImpl->getOrCreateRootStorage();
-}
-
-void SAL_CALL ODatabaseDocument::addStorageChangeListener( const Reference< XStorageChangeListener >& _Listener ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
- m_aStorageListeners.addInterface( _Listener );
-}
-
-void SAL_CALL ODatabaseDocument::removeStorageChangeListener( const Reference< XStorageChangeListener >& _Listener ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
- m_aStorageListeners.addInterface( _Listener );
-}
-
-Reference< XStorageBasedLibraryContainer > SAL_CALL ODatabaseDocument::getBasicLibraries() throw (RuntimeException)
-{
- DocumentGuard aGuard( *this, DocumentGuard::MethodUsedDuringInit );
- return m_pImpl->getLibraryContainer( true );
-}
-
-Reference< XStorageBasedLibraryContainer > SAL_CALL ODatabaseDocument::getDialogLibraries() throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
- return m_pImpl->getLibraryContainer( false );
-}
-
-::sal_Bool SAL_CALL ODatabaseDocument::getAllowMacroExecution() throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
- return m_pImpl->adjustMacroMode_AutoReject();
-}
-
-Reference< XEmbeddedScripts > SAL_CALL ODatabaseDocument::getScriptContainer() throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
- return this;
-}
-
-Reference< provider::XScriptProvider > SAL_CALL ODatabaseDocument::getScriptProvider( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
-
- Reference< XScriptProvider > xScriptProvider( m_xScriptProvider );
- if ( !xScriptProvider.is() )
- {
- Reference < XScriptProviderFactory > xFactory(
- m_pImpl->m_aContext.getSingleton( "com.sun.star.script.provider.theMasterScriptProviderFactory" ), UNO_QUERY_THROW );
-
- Any aScriptProviderContext;
- if ( m_bAllowDocumentScripting )
- aScriptProviderContext <<= Reference< XModel >( this );
-
- xScriptProvider.set( xFactory->createScriptProvider( aScriptProviderContext ), UNO_SET_THROW );
- m_xScriptProvider = xScriptProvider;
- }
-
- return xScriptProvider;
-}
-
-Reference< XNameReplace > SAL_CALL ODatabaseDocument::getEvents( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this, DocumentGuard::MethodUsedDuringInit );
- return m_pEventContainer;
-}
-
-void SAL_CALL ODatabaseDocument::disposing( const ::com::sun::star::lang::EventObject& Source ) throw(RuntimeException)
-{
- if ( m_pImpl.is() )
- m_pImpl->disposing(Source);
-}
-
-Reference< XInterface > ODatabaseDocument::getThis() const
-{
- return *const_cast< ODatabaseDocument* >( this );
-}
-
-struct CreateAny : public ::std::unary_function< Reference<XController>, Any>
-{
- Any operator() (const Reference<XController>& lhs) const
- {
- return makeAny(lhs);
- }
-};
-
-// XModel2
-Reference< XEnumeration > SAL_CALL ODatabaseDocument::getControllers( ) throw (RuntimeException)
-{
- DocumentGuard aGuard( *this );
- uno::Sequence< Any> aController( m_aControllers.size() );
- ::std::transform( m_aControllers.begin(), m_aControllers.end(), aController.getArray(), CreateAny() );
- return new ::comphelper::OAnyEnumeration(aController);
-}
-
-Sequence< ::rtl::OUString > SAL_CALL ODatabaseDocument::getAvailableViewControllerNames( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aNames(1);
- aNames[0] = SERVICE_SDB_APPLICATIONCONTROLLER;
- return aNames;
-}
-
-Reference< XController2 > SAL_CALL ODatabaseDocument::createDefaultViewController( const Reference< XFrame >& _Frame ) throw (IllegalArgumentException, Exception, RuntimeException)
-{
- return createViewController(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Default" ) ),
- Sequence< PropertyValue >(),
- _Frame
- );
-}
-
-Reference< XController2 > SAL_CALL ODatabaseDocument::createViewController( const ::rtl::OUString& _ViewName, const Sequence< PropertyValue >& _Arguments, const Reference< XFrame >& _Frame ) throw (IllegalArgumentException, Exception, RuntimeException)
-{
- if ( !_ViewName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Default" ) ) && !_ViewName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Preview" ) ) )
- throw IllegalArgumentException( ::rtl::OUString(), *this, 1 );
- if ( !_Frame.is() )
- throw IllegalArgumentException( ::rtl::OUString(), *this, 3 );
-
- DocumentGuard aGuard( *this );
- ::comphelper::ComponentContext aContext( m_pImpl->m_aContext );
- aGuard.clear();
-
- Reference< XController2 > xController;
- aContext.createComponent( "org.openoffice.comp.dbu.OApplicationController", xController );
-
- ::comphelper::NamedValueCollection aInitArgs( _Arguments );
- aInitArgs.put( "Frame", _Frame );
- if ( _ViewName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Preview" ) ) )
- aInitArgs.put( "Preview", sal_Bool( sal_True ) );
- Reference< XInitialization > xInitController( xController, UNO_QUERY_THROW );
- xInitController->initialize( aInitArgs.getWrappedPropertyValues() );
-
- return xController;
-}
-
-Reference< XTitle > ODatabaseDocument::impl_getTitleHelper_throw()
-{
- if ( ! m_xTitleHelper.is ())
- {
- Reference< XUntitledNumbers > xDesktop(
- m_pImpl->m_aContext.createComponent( "com.sun.star.frame.Desktop" ),
- UNO_QUERY_THROW );
- uno::Reference< frame::XModel > xThis (getThis(), uno::UNO_QUERY_THROW);
-
- ::framework::TitleHelper* pHelper = new ::framework::TitleHelper(m_pImpl->m_aContext.getLegacyServiceFactory());
- m_xTitleHelper.set(static_cast< ::cppu::OWeakObject* >(pHelper), uno::UNO_QUERY_THROW);
- pHelper->setOwner (xThis );
- pHelper->connectWithUntitledNumbers (xDesktop);
- }
-
- return m_xTitleHelper;
-}
-
-uno::Reference< frame::XUntitledNumbers > ODatabaseDocument::impl_getUntitledHelper_throw(const uno::Reference< uno::XInterface >& _xComponent)
-{
- if ( !m_xModuleManager.is() )
- m_xModuleManager.set( m_pImpl->m_aContext.createComponent( "com.sun.star.frame.ModuleManager" ), UNO_QUERY_THROW );
-
- ::rtl::OUString sModuleId;
- try
- {
- sModuleId = m_xModuleManager->identify( _xComponent );
- }
- catch(const uno::Exception&)
- {
- }
- uno::Reference< frame::XUntitledNumbers > xNumberedControllers;
-
- TNumberedController::iterator aFind = m_aNumberedControllers.find(sModuleId);
- if ( aFind == m_aNumberedControllers.end() )
- {
- uno::Reference< frame::XModel > xThis(static_cast< frame::XModel* >(this), uno::UNO_QUERY_THROW);
- ::comphelper::NumberedCollection* pHelper = new ::comphelper::NumberedCollection();
- xNumberedControllers.set(static_cast< ::cppu::OWeakObject* >(pHelper), uno::UNO_QUERY_THROW);
-
- pHelper->setOwner (xThis);
- //pHelper->setUntitledPrefix (::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" : ")));
-
- m_aNumberedControllers.insert(TNumberedController::value_type(sModuleId,xNumberedControllers));
- }
- else
- xNumberedControllers = aFind->second;
-
- return xNumberedControllers;
-}
-
-// css.frame.XTitle
-::rtl::OUString SAL_CALL ODatabaseDocument::getTitle()
- throw (uno::RuntimeException)
-{
- // SYNCHRONIZED ->
- DocumentGuard aGuard( *this, DocumentGuard::MethodUsedDuringInit );
- return impl_getTitleHelper_throw()->getTitle();
-}
-
-// css.frame.XTitle
-void SAL_CALL ODatabaseDocument::setTitle( const ::rtl::OUString& sTitle )
- throw (uno::RuntimeException)
-{
- // SYNCHRONIZED ->
- DocumentGuard aGuard( *this );
- impl_getTitleHelper_throw()->setTitle( sTitle );
- m_aEventNotifier.notifyDocumentEventAsync( "OnTitleChanged" );
- // <- SYNCHRONIZED
-}
-
-// css.frame.XTitleChangeBroadcaster
-void SAL_CALL ODatabaseDocument::addTitleChangeListener( const uno::Reference< frame::XTitleChangeListener >& xListener )
- throw (uno::RuntimeException)
-{
- // SYNCHRONIZED ->
- DocumentGuard aGuard( *this );
-
- uno::Reference< frame::XTitleChangeBroadcaster > xBroadcaster( impl_getTitleHelper_throw(), uno::UNO_QUERY_THROW );
- xBroadcaster->addTitleChangeListener( xListener );
-}
-
-// css.frame.XTitleChangeBroadcaster
-void SAL_CALL ODatabaseDocument::removeTitleChangeListener( const uno::Reference< frame::XTitleChangeListener >& xListener )
- throw (uno::RuntimeException)
-{
- // SYNCHRONIZED ->
- DocumentGuard aGuard( *this );
-
- uno::Reference< frame::XTitleChangeBroadcaster > xBroadcaster( impl_getTitleHelper_throw(), uno::UNO_QUERY_THROW );
- xBroadcaster->removeTitleChangeListener( xListener );
-}
-
-// css.frame.XUntitledNumbers
-::sal_Int32 SAL_CALL ODatabaseDocument::leaseNumber( const uno::Reference< uno::XInterface >& xComponent )
- throw (lang::IllegalArgumentException,
- uno::RuntimeException )
-{
- DocumentGuard aGuard( *this );
- return impl_getUntitledHelper_throw(xComponent)->leaseNumber (xComponent);
-}
-
-// css.frame.XUntitledNumbers
-void SAL_CALL ODatabaseDocument::releaseNumber( ::sal_Int32 nNumber )
- throw (lang::IllegalArgumentException,
- uno::RuntimeException )
-{
- DocumentGuard aGuard( *this );
- impl_getUntitledHelper_throw()->releaseNumber (nNumber);
-}
-
-// css.frame.XUntitledNumbers
-void SAL_CALL ODatabaseDocument::releaseNumberForComponent( const uno::Reference< uno::XInterface >& xComponent )
- throw (lang::IllegalArgumentException,
- uno::RuntimeException )
-{
- DocumentGuard aGuard( *this );
- impl_getUntitledHelper_throw(xComponent)->releaseNumberForComponent (xComponent);
-}
-
-// css.frame.XUntitledNumbers
-::rtl::OUString SAL_CALL ODatabaseDocument::getUntitledPrefix() throw (uno::RuntimeException)
-{
- return ::rtl::OUString();/*RTL_CONSTASCII_USTRINGPARAM(" : "));*/
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/databasedocument.hxx b/dbaccess/source/core/dataaccess/databasedocument.hxx
deleted file mode 100644
index 9f5068e72..000000000
--- a/dbaccess/source/core/dataaccess/databasedocument.hxx
+++ /dev/null
@@ -1,709 +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.
- *
- ************************************************************************/
-#ifndef _DBA_COREDATAACCESS_DATABASEDOCUMENT_HXX_
-#define _DBA_COREDATAACCESS_DATABASEDOCUMENT_HXX_
-
-#include "ModelImpl.hxx"
-#include "documenteventnotifier.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/ui/XUIConfigurationManagerSupplier.hpp>
-#include <com/sun/star/document/XDocumentSubStorageSupplier.hpp>
-#include <com/sun/star/frame/XModel2.hpp>
-#include <com/sun/star/frame/XTitle.hpp>
-#include <com/sun/star/frame/XTitleChangeBroadcaster.hpp>
-#include <com/sun/star/frame/XUntitledNumbers.hpp>
-#include <com/sun/star/util/XModifiable.hpp>
-#include <com/sun/star/frame/XStorable.hpp>
-#include <com/sun/star/sdb/XReportDocumentsSupplier.hpp>
-#include <com/sun/star/sdb/XFormDocumentsSupplier.hpp>
-#include <com/sun/star/util/XCloseable.hpp>
-#include <com/sun/star/view/XPrintable.hpp>
-#include <com/sun/star/frame/XModuleManager.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp>
-#include <com/sun/star/embed/XTransactionListener.hpp>
-#include <com/sun/star/document/XStorageBasedDocument.hpp>
-#include <com/sun/star/document/XEmbeddedScripts.hpp>
-#include <com/sun/star/document/XEventsSupplier.hpp>
-#include <com/sun/star/document/XScriptInvocationContext.hpp>
-#include <com/sun/star/script/XStorageBasedLibraryContainer.hpp>
-#include <com/sun/star/script/provider/XScriptProviderSupplier.hpp>
-#include <com/sun/star/frame/XLoadable.hpp>
-#include <com/sun/star/document/XEventBroadcaster.hpp>
-#include <com/sun/star/document/XDocumentEventBroadcaster.hpp>
-#include <com/sun/star/document/XDocumentRecovery.hpp>
-/** === end UNO includes === **/
-
-#if ! defined(INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_17)
-#define INCLUDED_COMPHELPER_IMPLBASE_VAR_HXX_17
-#define COMPHELPER_IMPLBASE_INTERFACE_NUMBER 17
-#include <comphelper/implbase_var.hxx>
-#endif
-
-#include <cppuhelper/compbase10.hxx>
-#include <cppuhelper/implbase3.hxx>
-#include <rtl/ref.hxx>
-
-#include <boost/shared_ptr.hpp>
-#include <boost/noncopyable.hpp>
-
-namespace comphelper {
- class NamedValueCollection;
-}
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
-class DocumentEvents;
-class DocumentEventExecutor;
-class DocumentGuard;
-
-typedef ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > > Controllers;
-
-//============================================================
-//= ViewMonitor
-//============================================================
-/** helper class monitoring the views of a document, and firing appropriate events
- when views are attached / detached
-*/
-class ViewMonitor : public boost::noncopyable
-{
-public:
- ViewMonitor( DocumentEventNotifier& _rEventNotifier )
- :m_rEventNotifier( _rEventNotifier )
- ,m_bIsNewDocument( true )
- ,m_bEverHadController( false )
- ,m_bLastIsFirstEverController( false )
- ,m_xLastConnectedController()
- {
- }
-
- void reset()
- {
- m_bEverHadController = false;
- m_bLastIsFirstEverController = false;
- m_xLastConnectedController.clear();
- }
-
- /** to be called when a view (aka controller) has been connected to the document
- @return
- <TRUE/> if and only if this was the first-ever controller connected to the document
- */
- bool onControllerConnected(
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& _rxController
- );
-
- /** to be called when a controller is set as current controller
- @return <TRUE/>
- if and only if the controller connection indicates that loading the document is finished. This
- is the case if the given controller has previously been connected, and it was the first controller
- ever for which this happened.
- */
- bool onSetCurrentController(
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& _rxController
- );
-
- void onLoadedDocument() { m_bIsNewDocument = false; }
-
-private:
- DocumentEventNotifier& m_rEventNotifier;
- bool m_bIsNewDocument;
- bool m_bEverHadController;
- bool m_bLastIsFirstEverController;
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >
- m_xLastConnectedController;
-};
-
-//============================================================
-//= ODatabaseDocument
-//============================================================
-typedef ::comphelper::PartialWeakComponentImplHelper17 < ::com::sun::star::frame::XModel2
- , ::com::sun::star::util::XModifiable
- , ::com::sun::star::frame::XStorable
- , ::com::sun::star::document::XEventBroadcaster
- , ::com::sun::star::document::XDocumentEventBroadcaster
- , ::com::sun::star::view::XPrintable
- , ::com::sun::star::util::XCloseable
- , ::com::sun::star::lang::XServiceInfo
- , ::com::sun::star::sdb::XOfficeDatabaseDocument
- , ::com::sun::star::ui::XUIConfigurationManagerSupplier
- , ::com::sun::star::document::XStorageBasedDocument
- , ::com::sun::star::document::XEmbeddedScripts
- , ::com::sun::star::document::XScriptInvocationContext
- , ::com::sun::star::script::provider::XScriptProviderSupplier
- , ::com::sun::star::document::XEventsSupplier
- , ::com::sun::star::frame::XLoadable
- , ::com::sun::star::document::XDocumentRecovery
- > ODatabaseDocument_OfficeDocument;
-
-typedef ::cppu::ImplHelper3< ::com::sun::star::frame::XTitle
- , ::com::sun::star::frame::XTitleChangeBroadcaster
- , ::com::sun::star::frame::XUntitledNumbers
- > ODatabaseDocument_Title;
-
-class ODatabaseDocument :public ModelDependentComponent // ModelDependentComponent must be first!
- ,public ODatabaseDocument_OfficeDocument
- ,public ODatabaseDocument_Title
-{
- enum InitState
- {
- NotInitialized,
- Initializing,
- Initialized
- };
-
- DECLARE_STL_USTRINGACCESS_MAP(::com::sun::star::uno::Reference< ::com::sun::star::frame::XUntitledNumbers >,TNumberedController);
- ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIConfigurationManager> m_xUIConfigurationManager;
-
- ::cppu::OInterfaceContainerHelper m_aModifyListeners;
- ::cppu::OInterfaceContainerHelper m_aCloseListener;
- ::cppu::OInterfaceContainerHelper m_aStorageListeners;
-
- DocumentEvents* m_pEventContainer;
- ::rtl::Reference< DocumentEventExecutor > m_pEventExecutor;
- DocumentEventNotifier m_aEventNotifier;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > m_xCurrentController;
- Controllers m_aControllers;
- ViewMonitor m_aViewMonitor;
-
- ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess > m_xForms;
- ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess > m_xReports;
- ::com::sun::star::uno::WeakReference< ::com::sun::star::script::provider::XScriptProvider > m_xScriptProvider;
-
- /** @short such module manager is used to classify new opened documents. */
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XModuleManager > m_xModuleManager;
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XTitle > m_xTitleHelper;
- TNumberedController m_aNumberedControllers;
-
- /** true if and only if the DatabaseDocument's "initNew" or "load" have been called (or, well,
- the document has be initialized implicitly - see storeAsURL
- */
- InitState m_eInitState;
- bool m_bClosing;
- bool m_bAllowDocumentScripting;
- bool m_bHasBeenRecovered;
-
- enum StoreType { SAVE, SAVE_AS };
- /** stores the document to the given URL, rebases it to the respective new storage, if necessary, resets
- the modified flag, and notifies any listeners as required
-
- @param _rURL
- the URL to store the document to
- @param _rArguments
- arguments for storing the document (MediaDescriptor)
- @param _eType
- the type of the store process (Save or SaveAs). The method will automatically
- notify the proper events for this type.
- @param _rGuard
- the instance lock to be released before doing synchronous notifications
- */
- void impl_storeAs_throw(
- const ::rtl::OUString& _rURL,
- const ::comphelper::NamedValueCollection& _rArguments,
- const StoreType _eType,
- DocumentGuard& _rGuard
- )
- throw ( ::com::sun::star::io::IOException
- , ::com::sun::star::uno::RuntimeException );
-
- /** notifies our storage change listeners that our underlying storage changed
-
- @param _rxNewRootStorage
- the new root storage to be notified. If <NULL/>, it is assumed that no storage change actually
- happened, and the listeners are not notified.
- */
- void impl_notifyStorageChange_nolck_nothrow(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxNewRootStorage
- );
-
- /// write a single XML stream into the package
- void WriteThroughComponent(
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > & xComponent, /// the component we export
- const sal_Char* pStreamName, /// the stream name
- const sal_Char* pServiceName, /// service name of the component
- const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any> & rArguments, /// the argument (XInitialization)
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue> & rMediaDesc,/// output descriptor
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _xStorageToSaveTo
- ) const;
-
-
- /// write a single output stream
- /// (to be called either directly or by WriteThroughComponent(...))
- void WriteThroughComponent(
- const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >& xOutputStream,
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& xComponent,
- const sal_Char* pServiceName,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rArguments,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue> & rMediaDesc
- ) const;
-
- /** writes the content and settings
- @param sURL
- The URL
- @param lArguments
- The media descriptor
- @param _xStorageToSaveTo
- The storage which should be used for saving
- */
- void impl_writeStorage_throw(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxTargetStorage,
- const ::comphelper::NamedValueCollection& _rMediaDescriptor
- ) const;
-
- // ModelDependentComponent overridables
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getThis() const;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XTitle > impl_getTitleHelper_throw();
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XUntitledNumbers > impl_getUntitledHelper_throw(
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xComponent = ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >());
-
-private:
- ODatabaseDocument(const ::rtl::Reference<ODatabaseModelImpl>& _pImpl);
- // Do NOT create those documents directly, always use ODatabaseModelImpl::getModel. Reason is that
- // ODatabaseDocument requires clear ownership, and in turn lifetime synchronisation with the ModelImpl.
- // If you create a ODatabaseDocument directly, you might easily create a leak.
- // #i50905#
-
-protected:
- virtual void SAL_CALL disposing();
-
- virtual ~ODatabaseDocument();
-
-public:
- struct FactoryAccess { friend class ODatabaseModelImpl; private: FactoryAccess() { } };
- static ODatabaseDocument* createDatabaseDocument( const ::rtl::Reference<ODatabaseModelImpl>& _pImpl, FactoryAccess /*accessControl*/ )
- {
- return new ODatabaseDocument( _pImpl );
- }
-
- // XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::lang::XServiceInfo - static methods
- static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::rtl::OUString getImplementationName_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
- SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >&);
-
- // XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(const ::com::sun::star::uno::Type& _rType) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire( ) throw ();
- virtual void SAL_CALL release( ) throw ();
-
- // XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
-
- // XComponent
- virtual void SAL_CALL dispose( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
-
- // XModel
- virtual sal_Bool SAL_CALL attachResource( const ::rtl::OUString& URL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& Arguments ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual ::rtl::OUString SAL_CALL getURL( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getArgs( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL connectController( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& Controller ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL disconnectController( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& Controller ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL lockControllers( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL unlockControllers( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual sal_Bool SAL_CALL hasControllersLocked( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > SAL_CALL getCurrentController( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL setCurrentController( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& Controller ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException) ;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getCurrentSelection( ) throw (::com::sun::star::uno::RuntimeException) ;
-
- // XModel2
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL getControllers( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableViewControllerNames( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 > SAL_CALL createDefaultViewController( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& Frame ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException) ;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 > SAL_CALL createViewController( const ::rtl::OUString& ViewName, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& Arguments, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& Frame ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException) ;
-
- // XStorable
- virtual sal_Bool SAL_CALL hasLocation( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual ::rtl::OUString SAL_CALL getLocation( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual sal_Bool SAL_CALL isReadonly( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL store( ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL storeAsURL( const ::rtl::OUString& sURL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lArguments ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL storeToURL( const ::rtl::OUString& sURL, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lArguments ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException) ;
-
- // XModifyBroadcaster
- virtual void SAL_CALL addModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeModifyListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::util::XModifiable
- virtual sal_Bool SAL_CALL isModified( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL setModified( sal_Bool bModified ) throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException) ;
-
- // XEventBroadcaster
- virtual void SAL_CALL addEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
-
- // XDocumentEventBroadcaster
- virtual void SAL_CALL addDocumentEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentEventListener >& _Listener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeDocumentEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentEventListener >& _Listener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL notifyDocumentEvent( const ::rtl::OUString& _EventName, const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 >& _ViewController, const ::com::sun::star::uno::Any& _Supplement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
-
- // XPrintable
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL getPrinter( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL setPrinter( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aPrinter ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL print( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& xOptions ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) ;
-
- // XFormDocumentsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getFormDocuments( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XReportDocumentsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getReportDocuments( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XCloseable
- virtual void SAL_CALL close( sal_Bool DeliverOwnership ) throw (::com::sun::star::util::CloseVetoException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL addCloseListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseListener >& Listener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeCloseListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseListener >& Listener ) throw (::com::sun::star::uno::RuntimeException);
-
- // XUIConfigurationManagerSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::ui::XUIConfigurationManager > SAL_CALL getUIConfigurationManager( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XDocumentSubStorageSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > SAL_CALL getDocumentSubStorage( const ::rtl::OUString& aStorageName, sal_Int32 nMode ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getDocumentSubStoragesNames( ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
-
- // XOfficeDatabaseDocument
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource > SAL_CALL getDataSource() throw (::com::sun::star::uno::RuntimeException);
-
- // XStorageBasedDocument
- virtual void SAL_CALL loadFromStorage( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aMediaDescriptor ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::frame::DoubleInitializationException, ::com::sun::star::io::IOException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL storeToStorage( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& aMediaDescriptor ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::io::IOException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL switchToStorage( const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& xStorage ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::io::IOException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > SAL_CALL getDocumentStorage( ) throw (::com::sun::star::io::IOException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL addStorageChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XStorageChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeStorageChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XStorageChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
-
- // XEmbeddedScripts
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::script::XStorageBasedLibraryContainer > SAL_CALL getBasicLibraries() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::script::XStorageBasedLibraryContainer > SAL_CALL getDialogLibraries() throw (::com::sun::star::uno::RuntimeException);
- virtual ::sal_Bool SAL_CALL getAllowMacroExecution() throw (::com::sun::star::uno::RuntimeException);
-
- // XScriptInvocationContext
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::document::XEmbeddedScripts > SAL_CALL getScriptContainer() throw (::com::sun::star::uno::RuntimeException);
-
- // XScriptProviderSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::script::provider::XScriptProvider > SAL_CALL getScriptProvider( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XEventsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameReplace > SAL_CALL getEvents( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XLoadable
- virtual void SAL_CALL initNew( ) throw (::com::sun::star::frame::DoubleInitializationException, ::com::sun::star::io::IOException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL load( const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& lArguments ) throw (::com::sun::star::frame::DoubleInitializationException, ::com::sun::star::io::IOException, ::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
-
- // css.document.XDocumentRecovery
- virtual ::sal_Bool SAL_CALL wasModifiedSinceLastSave() throw ( ::com::sun::star::uno::RuntimeException );
- virtual void SAL_CALL storeToRecoveryFile( const ::rtl::OUString& i_TargetLocation, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_MediaDescriptor ) throw ( ::com::sun::star::uno::RuntimeException, ::com::sun::star::io::IOException, ::com::sun::star::lang::WrappedTargetException );
- virtual void SAL_CALL recoverFromFile( const ::rtl::OUString& i_SourceLocation, const ::rtl::OUString& i_SalvagedFile, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_MediaDescriptor ) throw ( ::com::sun::star::uno::RuntimeException, ::com::sun::star::io::IOException, ::com::sun::star::lang::WrappedTargetException );
-
- // XTitle
- virtual ::rtl::OUString SAL_CALL getTitle( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setTitle( const ::rtl::OUString& sTitle ) throw (::com::sun::star::uno::RuntimeException);
-
- // XTitleChangeBroadcaster
- virtual void SAL_CALL addTitleChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XTitleChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeTitleChangeListener( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XTitleChangeListener >& xListener ) throw (::com::sun::star::uno::RuntimeException);
-
- // XUntitledNumbers
- virtual ::sal_Int32 SAL_CALL leaseNumber( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xComponent ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL releaseNumber( ::sal_Int32 nNumber ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL releaseNumberForComponent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xComponent ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getUntitledPrefix( ) throw (::com::sun::star::uno::RuntimeException);
-
- /** clears the given object container
-
- Clearing is done via disposal - the method calls XComponent::dispose at the given object,
- which must be one of our impl's or our object containers (m_xForms, m_xReports,
- m_xTableDefinitions, m_xCommandDefinitions)
-
- @param _rxContainer
- the container to clear
- */
- static void clearObjectContainer(
- ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess >& _rxContainer);
-
- /** checks whether the component is already initialized, throws a NotInitializedException if not
- */
- inline void checkInitialized() const
- {
- if ( !impl_isInitialized() )
- throw ::com::sun::star::lang::NotInitializedException( ::rtl::OUString(), getThis() );
- }
-
- /** checks the document is currently in the initialization phase, or already initialized.
- Throws NotInitializedException if not so.
- */
- inline void checkNotUninitilized() const
- {
- if ( impl_isInitialized() || impl_isInitializing() )
- // fine
- return;
-
- throw ::com::sun::star::lang::NotInitializedException( ::rtl::OUString(), getThis() );
- }
-
- /** checks whether the document is currently being initialized, or already initialized,
- throws a DoubleInitializationException if so
- */
- inline void checkNotInitialized() const
- {
- if ( impl_isInitializing() || impl_isInitialized() )
- throw ::com::sun::star::frame::DoubleInitializationException( ::rtl::OUString(), getThis() );
- }
-
-private:
- /** returns whether the model is currently being initialized
- */
- bool impl_isInitializing() const { return m_eInitState == Initializing; }
-
- /** returns whether the model is already initialized, i.e. the XModel's "initNew" or "load" methods have been called
- */
- bool impl_isInitialized() const { return m_eInitState == Initialized; }
-
- /// tells the model it is being initialized now
- void impl_setInitializing() { m_eInitState = Initializing; }
-
- /// tells the model its initialization is done
- void impl_setInitialized();
-
- /** closes the frames of all connected controllers
-
- @param _bDeliverOwnership
- determines if the ownership should be transfered to the component which
- possibly vetos the closing
-
- @raises ::com::sun::star::util::CloseVetoException
- if the closing was vetoed by any instance
- */
- void impl_closeControllerFrames_nolck_throw( sal_Bool _bDeliverOwnership );
-
- /** disposes the frames of all controllers which are still left in m_aControllers.
- */
- void impl_disposeControllerFrames_nothrow();
-
- /** does a reparenting at the given object container to ourself
-
- Calls XChild::setParent at the given object, which must be one of our impl's or our
- object containers (m_xForms, m_xReports, m_xTableDefinitions, m_xCommandDefinitions)
- */
- void impl_reparent_nothrow( const ::com::sun::star::uno::WeakReference< ::com::sun::star::container::XNameAccess >& _rxContainer );
-
- /** retrieves the forms or reports contained, creates and initializes it, if necessary
-
- @raises DisposedException
- if the instance is already disposed
- @raises IllegalArgumentException
- if <arg>_eType</arg> is not ODatabaseModelImpl::E_FORM and not ODatabaseModelImpl::E_REPORT
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >
- impl_getDocumentContainer_throw( ODatabaseModelImpl::ObjectType _eType );
-
- /** resets everything
-
- @precond
- m_pImpl is not <NULLL/>
- */
- void
- impl_reset_nothrow();
-
- /** imports the document from the given resource.
- */
- static void
- impl_import_nolck_throw(
- const ::comphelper::ComponentContext _rContext,
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxTargetComponent,
- const ::comphelper::NamedValueCollection& _rResource
- );
-
- /** creates a storage for the given URL, truncating it if a file with this name already exists
-
- @throws Exception
- if creating the storage failed
-
- @return
- the newly created storage for the file at the given URL
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >
- impl_createStorageFor_throw(
- const ::rtl::OUString& _rURL
- ) const;
-
- /** sets our "modified" flag
-
- will notify all our respective listeners, if the "modified" state actually changed
-
- @param _bModified
- the (new) flag indicating whether the document is currently modified or not
- @param _rGuard
- the guard for our instance. At method entry, the guard must hold the lock. At the moment
- of method leave, the lock will be released.
- @precond
- our mutex is locked
- @postcond
- our mutex is not locked
- */
- void impl_setModified_nothrow( sal_Bool _bModified, DocumentGuard& _rGuard );
-
- /** stores the document to the given storage
-
- Note that the document is actually not rebased to this storage, it just stores a copy of itself
- to the given target storage.
-
- @param _rxTargetStorage
- denotes the storage to store the document into
- @param _rMediaDescriptor
- contains additional parameters for storing the document
- @param _rDocGuard
- a guard which holds the (only) lock to the document, and which will be temporarily
- released where necessary (e.g. for notifications, or calling into other components)
-
- @throws ::com::sun::star::uno::IllegalArgumentException
- if the given storage is <NULL/>.
-
- @throws ::com::sun::star::uno::RuntimeException
- when any of the used operations throws it
-
- @throws ::com::sun::star::io::IOException
- when any of the used operations throws it, or any other exception occurs which is no
- RuntimeException and no IOException
- */
- void impl_storeToStorage_throw(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxTargetStorage,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rMediaDescriptor,
- DocumentGuard& _rDocGuard
- ) const;
-
-
- /** impl-version of attachResource
-
- @param i_rLogicalDocumentURL
- denotes the logical URL of the document, to be reported by getURL/getLocation
- @param i_rMediaDescriptor
- denotes additional document parameters
- @param _rDocGuard
- is the guard which currently protects the document instance
- */
- sal_Bool impl_attachResource(
- const ::rtl::OUString& i_rLogicalDocumentURL,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_rMediaDescriptor,
- DocumentGuard& _rDocGuard
- );
-
- /** throws an IOException with the message as defined in the RID_STR_ERROR_WHILE_SAVING resource, wrapping
- the given caught non-IOException error
- */
- void impl_throwIOExceptionCausedBySave_throw(
- const ::com::sun::star::uno::Any& i_rError,
- const ::rtl::OUString& i_rTargetURL
- ) const;
-};
-
-/** an extended version of the ModelMethodGuard, which also cares for the initialization state
- of the document
-*/
-class DocumentGuard : private ModelMethodGuard
-{
-public:
- enum MethodType
- {
- // a method which is to initialize the document
- InitMethod,
- // a default method
- DefaultMethod,
- // a method which is used (externally) during the initialization phase
- MethodUsedDuringInit,
- // a method which does not need initialization - use with care!
- MethodWithoutInit
- };
-
- /** constructs the guard
-
- @param _document
- the ODatabaseDocument instance
-
- @throws ::com::sun::star::lang::DisposedException
- If the given component is already disposed
-
- @throws ::com::sun::star::frame::DoubleInitializationException
- if _eType is InitMethod, and the given component is already initialized, or currently being initialized.
-
- @throws ::com::sun::star::lang::NotInitializedException
- if _eType is DefaultMethod, and the given component is not yet initialized; or if _eType
- is MethodUsedDuringInit, and the component is still uninitialized, and not in the initialization
- phase currently.
- */
- DocumentGuard( const ODatabaseDocument& _document, MethodType _eType = DefaultMethod )
- :ModelMethodGuard( _document )
- ,m_document( _document )
- {
- switch ( _eType )
- {
- case InitMethod: m_document.checkNotInitialized(); break;
- case DefaultMethod: m_document.checkInitialized(); break;
- case MethodUsedDuringInit: m_document.checkNotUninitilized(); break;
- case MethodWithoutInit: break;
- }
- }
-
- ~DocumentGuard()
- {
- }
-
- void clear()
- {
- ModelMethodGuard::clear();
- }
- void reset()
- {
- ModelMethodGuard::reset();
- m_document.checkDisposed();
- }
-
-private:
-
- const ODatabaseDocument& m_document;
-};
-
-} // namespace dbaccess
-#endif // _DBA_COREDATAACCESS_DATABASEDOCUMENT_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/databaseregistrations.cxx b/dbaccess/source/core/dataaccess/databaseregistrations.cxx
deleted file mode 100644
index e2a521b71..000000000
--- a/dbaccess/source/core/dataaccess/databaseregistrations.cxx
+++ /dev/null
@@ -1,377 +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_dbaccess.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/sdb/XDatabaseRegistrations.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/componentcontext.hxx>
-#include <cppuhelper/basemutex.hxx>
-#include <cppuhelper/interfacecontainer.hxx>
-#include <cppuhelper/implbase1.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <unotools/pathoptions.hxx>
-#include <tools/urlobj.hxx>
-#include <unotools/confignode.hxx>
-
-namespace dbaccess
-{
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- using ::com::sun::star::container::NoSuchElementException;
- using ::com::sun::star::lang::IllegalArgumentException;
- using ::com::sun::star::lang::IllegalAccessException;
- using ::com::sun::star::container::ElementExistException;
- using ::com::sun::star::sdb::XDatabaseRegistrations;
- using ::com::sun::star::sdb::XDatabaseRegistrationsListener;
- using ::com::sun::star::sdb::DatabaseRegistrationEvent;
- using ::com::sun::star::uno::XAggregation;
- /** === end UNO using === **/
-
- static const ::rtl::OUString& getConfigurationRootPath()
- {
- static ::rtl::OUString s_sNodeName(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.DataAccess/RegisteredNames"));
- return s_sNodeName;
- }
-
- const ::rtl::OUString& getLocationNodeName()
- {
- static ::rtl::OUString s_sNodeName(RTL_CONSTASCII_USTRINGPARAM("Location"));
- return s_sNodeName;
- }
-
- const ::rtl::OUString& getNameNodeName()
- {
- static ::rtl::OUString s_sNodeName(RTL_CONSTASCII_USTRINGPARAM("Name"));
- return s_sNodeName;
- }
-
- //====================================================================
- //= DatabaseRegistrations - declaration
- //====================================================================
- typedef ::cppu::WeakAggImplHelper1 < XDatabaseRegistrations
- > DatabaseRegistrations_Base;
- class DatabaseRegistrations :public ::cppu::BaseMutex
- ,public DatabaseRegistrations_Base
- {
- public:
- DatabaseRegistrations( const ::comphelper::ComponentContext& _rxContext );
-
- protected:
- ~DatabaseRegistrations();
-
- public:
- virtual ::sal_Bool SAL_CALL hasRegisteredDatabase( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, RuntimeException);
- virtual Sequence< ::rtl::OUString > SAL_CALL getRegistrationNames() throw (RuntimeException);
- virtual ::rtl::OUString SAL_CALL getDatabaseLocation( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, NoSuchElementException, RuntimeException);
- virtual void SAL_CALL registerDatabaseLocation( const ::rtl::OUString& _Name, const ::rtl::OUString& _Location ) throw (IllegalArgumentException, ElementExistException, RuntimeException);
- virtual void SAL_CALL revokeDatabaseLocation( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, NoSuchElementException, IllegalAccessException, RuntimeException);
- virtual void SAL_CALL changeDatabaseLocation( const ::rtl::OUString& Name, const ::rtl::OUString& NewLocation ) throw (IllegalArgumentException, NoSuchElementException, IllegalAccessException, RuntimeException);
- virtual ::sal_Bool SAL_CALL isDatabaseRegistrationReadOnly( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, NoSuchElementException, RuntimeException);
- virtual void SAL_CALL addDatabaseRegistrationsListener( const Reference< XDatabaseRegistrationsListener >& Listener ) throw (RuntimeException);
- virtual void SAL_CALL removeDatabaseRegistrationsListener( const Reference< XDatabaseRegistrationsListener >& Listener ) throw (RuntimeException);
-
- private:
- ::utl::OConfigurationNode
- impl_checkValidName_throw( const ::rtl::OUString& _rName, const bool _bMustExist );
-
- void impl_checkValidLocation_throw( const ::rtl::OUString& _rLocation );
-
- /** retrieves the configuration node whose "Name" sub node has the given value
-
- Since we separated the name of the registration node from the "Name" value of the registration, we cannot
- simply do a "getByName" (equivalent) when we want to retrieve the node for a given registration name.
- Instead, we must search all nodes.
-
- If _bMustExist is <TRUE/>, and a node with the given display name does not exist, then a NoSuchElementException
- is thrown.
-
- If _bMustExist is <FALSE/>, and a node with the given name already exists, then a ElementExistException is
- thrown.
-
- In either case, if no exception is thrown, then a valid node is returned: If the node existed and was allowed
- to exist, it is returned, if the node did not yet exist, and was required to not exist, a new node is created.
- However, in this case the root node is not yet committed.
- */
- ::utl::OConfigurationNode
- impl_getNodeForName_throw( const ::rtl::OUString& _rName, const bool _bMustExist );
-
- ::utl::OConfigurationNode
- impl_getNodeForName_nothrow( const ::rtl::OUString& _rName );
-
- private:
- ::comphelper::ComponentContext m_aContext;
- ::utl::OConfigurationTreeRoot m_aConfigurationRoot;
- ::cppu::OInterfaceContainerHelper m_aRegistrationListeners;
- };
-
- //====================================================================
- //= DatabaseRegistrations - implementation
- //====================================================================
- DatabaseRegistrations::DatabaseRegistrations( const ::comphelper::ComponentContext& _rxContext )
- :m_aContext( _rxContext )
- ,m_aConfigurationRoot()
- ,m_aRegistrationListeners( m_aMutex )
- {
- m_aConfigurationRoot = ::utl::OConfigurationTreeRoot::createWithServiceFactory(
- m_aContext.getLegacyServiceFactory(), getConfigurationRootPath(), -1, ::utl::OConfigurationTreeRoot::CM_UPDATABLE );
- }
-
- DatabaseRegistrations::~DatabaseRegistrations()
- {
- }
-
- ::utl::OConfigurationNode DatabaseRegistrations::impl_getNodeForName_nothrow( const ::rtl::OUString& _rName )
- {
- Sequence< ::rtl::OUString > aNames( m_aConfigurationRoot.getNodeNames() );
- for ( const ::rtl::OUString* pName = aNames.getConstArray();
- pName != aNames.getConstArray() + aNames.getLength();
- ++pName
- )
- {
- ::utl::OConfigurationNode aNodeForName = m_aConfigurationRoot.openNode( *pName );
-
- ::rtl::OUString sTestName;
- OSL_VERIFY( aNodeForName.getNodeValue( getNameNodeName() ) >>= sTestName );
- if ( sTestName == _rName )
- return aNodeForName;
- }
- return ::utl::OConfigurationNode();
- }
-
- ::utl::OConfigurationNode DatabaseRegistrations::impl_getNodeForName_throw( const ::rtl::OUString& _rName, const bool _bMustExist )
- {
- ::utl::OConfigurationNode aNodeForName( impl_getNodeForName_nothrow( _rName ) );
-
- if ( aNodeForName.isValid() )
- {
- if ( !_bMustExist )
- throw ElementExistException( _rName, *this );
-
- return aNodeForName;
- }
-
- if ( _bMustExist )
- throw NoSuchElementException( _rName, *this );
-
- ::rtl::OUString sNewNodeName;
- {
- ::rtl::OUStringBuffer aNewNodeName;
- aNewNodeName.appendAscii( "org.openoffice." );
- aNewNodeName.append( _rName );
-
- // make unique
- ::rtl::OUStringBuffer aReset( aNewNodeName );
- sNewNodeName = aNewNodeName.makeStringAndClear();
- sal_Int32 i=2;
- while ( m_aConfigurationRoot.hasByName( sNewNodeName ) )
- {
- aNewNodeName = aReset;
- aNewNodeName.appendAscii( " " );
- aNewNodeName.append( i );
- sNewNodeName = aNewNodeName.makeStringAndClear();
- }
- }
-
- ::utl::OConfigurationNode aNewNode( m_aConfigurationRoot.createNode( sNewNodeName ) );
- aNewNode.setNodeValue( getNameNodeName(), makeAny( _rName ) );
- return aNewNode;
- }
-
- ::utl::OConfigurationNode DatabaseRegistrations::impl_checkValidName_throw( const ::rtl::OUString& _rName, const bool _bMustExist )
- {
- if ( !m_aConfigurationRoot.isValid() )
- throw RuntimeException( ::rtl::OUString(), *this );
-
- if ( !_rName.getLength() )
- throw IllegalArgumentException( ::rtl::OUString(), *this, 1 );
-
- return impl_getNodeForName_throw( _rName, _bMustExist );
- }
-
- void DatabaseRegistrations::impl_checkValidLocation_throw( const ::rtl::OUString& _rLocation )
- {
- if ( !_rLocation.getLength() )
- throw IllegalArgumentException( ::rtl::OUString(), *this, 2 );
-
- INetURLObject aURL( _rLocation );
- if ( aURL.GetProtocol() == INET_PROT_NOT_VALID )
- throw IllegalArgumentException( ::rtl::OUString(), *this, 2 );
- }
-
- ::sal_Bool SAL_CALL DatabaseRegistrations::hasRegisteredDatabase( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_aMutex );
- ::utl::OConfigurationNode aNodeForName = impl_getNodeForName_nothrow( _Name );
- return aNodeForName.isValid();
- }
-
- Sequence< ::rtl::OUString > SAL_CALL DatabaseRegistrations::getRegistrationNames() throw (RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_aMutex );
- if ( !m_aConfigurationRoot.isValid() )
- throw RuntimeException( ::rtl::OUString(), *this );
-
- Sequence< ::rtl::OUString > aProgrammaticNames( m_aConfigurationRoot.getNodeNames() );
- Sequence< ::rtl::OUString > aDisplayNames( aProgrammaticNames.getLength() );
- ::rtl::OUString* pDisplayName = aDisplayNames.getArray();
-
- for ( const ::rtl::OUString* pName = aProgrammaticNames.getConstArray();
- pName != aProgrammaticNames.getConstArray() + aProgrammaticNames.getLength();
- ++pName, ++pDisplayName
- )
- {
- ::utl::OConfigurationNode aRegistrationNode = m_aConfigurationRoot.openNode( *pName );
- OSL_VERIFY( aRegistrationNode.getNodeValue( getNameNodeName() ) >>= *pDisplayName );
- }
-
- return aDisplayNames;
- }
-
- ::rtl::OUString SAL_CALL DatabaseRegistrations::getDatabaseLocation( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, NoSuchElementException, RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- ::utl::OConfigurationNode aNodeForName = impl_checkValidName_throw( _Name, true );
-
- ::rtl::OUString sLocation;
- OSL_VERIFY( aNodeForName.getNodeValue( getLocationNodeName() ) >>= sLocation );
- sLocation = SvtPathOptions().SubstituteVariable( sLocation );
-
- return sLocation;
- }
-
- void SAL_CALL DatabaseRegistrations::registerDatabaseLocation( const ::rtl::OUString& _Name, const ::rtl::OUString& _Location ) throw (IllegalArgumentException, ElementExistException, RuntimeException)
- {
- ::osl::ClearableMutexGuard aGuard( m_aMutex );
-
- // check
- impl_checkValidLocation_throw( _Location );
- ::utl::OConfigurationNode aDataSourceRegistration = impl_checkValidName_throw( _Name, false );
-
- // register
- aDataSourceRegistration.setNodeValue( getLocationNodeName(), makeAny( _Location ) );
- m_aConfigurationRoot.commit();
-
- // notify
- DatabaseRegistrationEvent aEvent( *this, _Name, ::rtl::OUString(), _Location );
- aGuard.clear();
- m_aRegistrationListeners.notifyEach( &XDatabaseRegistrationsListener::registeredDatabaseLocation, aEvent );
- }
-
- void SAL_CALL DatabaseRegistrations::revokeDatabaseLocation( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, NoSuchElementException, IllegalAccessException, RuntimeException)
- {
- ::osl::ClearableMutexGuard aGuard( m_aMutex );
-
- // check
- ::utl::OConfigurationNode aNodeForName = impl_checkValidName_throw( _Name, true );
-
- // obtain properties for notification
- ::rtl::OUString sLocation;
- OSL_VERIFY( aNodeForName.getNodeValue( getLocationNodeName() ) >>= sLocation );
-
- // revoke
- if ( aNodeForName.isReadonly()
- || !m_aConfigurationRoot.removeNode( aNodeForName.getLocalName() )
- )
- throw IllegalAccessException( ::rtl::OUString(), *this );
-
- m_aConfigurationRoot.commit();
-
- // notify
- DatabaseRegistrationEvent aEvent( *this, _Name, sLocation, ::rtl::OUString() );
- aGuard.clear();
- m_aRegistrationListeners.notifyEach( &XDatabaseRegistrationsListener::revokedDatabaseLocation, aEvent );
- }
-
- void SAL_CALL DatabaseRegistrations::changeDatabaseLocation( const ::rtl::OUString& _Name, const ::rtl::OUString& _NewLocation ) throw (IllegalArgumentException, NoSuchElementException, IllegalAccessException, RuntimeException)
- {
- ::osl::ClearableMutexGuard aGuard( m_aMutex );
-
- // check
- impl_checkValidLocation_throw( _NewLocation );
- ::utl::OConfigurationNode aDataSourceRegistration = impl_checkValidName_throw( _Name, true );
-
- if ( aDataSourceRegistration.isReadonly() )
- throw IllegalAccessException( ::rtl::OUString(), *this );
-
- // obtain properties for notification
- ::rtl::OUString sOldLocation;
- OSL_VERIFY( aDataSourceRegistration.getNodeValue( getLocationNodeName() ) >>= sOldLocation );
-
- // change
- aDataSourceRegistration.setNodeValue( getLocationNodeName(), makeAny( _NewLocation ) );
- m_aConfigurationRoot.commit();
-
- // notify
- DatabaseRegistrationEvent aEvent( *this, _Name, sOldLocation, _NewLocation );
- aGuard.clear();
- m_aRegistrationListeners.notifyEach( &XDatabaseRegistrationsListener::changedDatabaseLocation, aEvent );
- }
-
- ::sal_Bool SAL_CALL DatabaseRegistrations::isDatabaseRegistrationReadOnly( const ::rtl::OUString& _Name ) throw (IllegalArgumentException, NoSuchElementException, RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_aMutex );
- ::utl::OConfigurationNode aDataSourceRegistration = impl_checkValidName_throw( _Name, true );
- return aDataSourceRegistration.isReadonly();
- }
-
- void SAL_CALL DatabaseRegistrations::addDatabaseRegistrationsListener( const Reference< XDatabaseRegistrationsListener >& _Listener ) throw (RuntimeException)
- {
- if ( _Listener.is() )
- m_aRegistrationListeners.addInterface( _Listener );
- }
-
- void SAL_CALL DatabaseRegistrations::removeDatabaseRegistrationsListener( const Reference< XDatabaseRegistrationsListener >& _Listener ) throw (RuntimeException)
- {
- if ( _Listener.is() )
- m_aRegistrationListeners.removeInterface( _Listener );
- }
-
- //====================================================================
- //= DatabaseRegistrations - factory
- //====================================================================
- Reference< XAggregation > createDataSourceRegistrations( const ::comphelper::ComponentContext& _rxContext )
- {
- return new DatabaseRegistrations( _rxContext );
- }
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/databaseregistrations.hxx b/dbaccess/source/core/dataaccess/databaseregistrations.hxx
deleted file mode 100644
index f3213dba6..000000000
--- a/dbaccess/source/core/dataaccess/databaseregistrations.hxx
+++ /dev/null
@@ -1,50 +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.
- *
-************************************************************************/
-
-#ifndef OOO_DATASOURCEREGISTRATIONS_HXX
-#define OOO_DATASOURCEREGISTRATIONS_HXX
-
-/** === begin UNO includes === **/
-#include <com/sun/star/uno/XAggregation.hpp>
-/** === end UNO includes === **/
-
-namespace comphelper
-{
- class ComponentContext;
-}
-
-namespace dbaccess
-{
-
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation >
- createDataSourceRegistrations( const ::comphelper::ComponentContext& _rxContext );
-
-} // namespace dbaccess
-
-#endif // OOO_DATASOURCEREGISTRATIONS_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/datasource.cxx b/dbaccess/source/core/dataaccess/datasource.cxx
deleted file mode 100644
index 334d97135..000000000
--- a/dbaccess/source/core/dataaccess/datasource.cxx
+++ /dev/null
@@ -1,1418 +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_dbaccess.hxx"
-
-#include "datasource.hxx"
-#include "module_dba.hxx"
-#include "userinformation.hxx"
-#include "commandcontainer.hxx"
-#include "dbastrings.hrc"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include "connection.hxx"
-#include "SharedConnection.hxx"
-#include "databasedocument.hxx"
-#include "OAuthenticationContinuation.hxx"
-
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/NamedValue.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/beans/PropertyState.hpp>
-#include <com/sun/star/beans/XPropertyContainer.hpp>
-#include <com/sun/star/document/XDocumentSubStorageSupplier.hpp>
-#include <com/sun/star/document/XEventBroadcaster.hpp>
-#include <com/sun/star/embed/XTransactedObject.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/reflection/XProxyFactory.hpp>
-#include <com/sun/star/sdbc/XDriverAccess.hpp>
-#include <com/sun/star/sdbc/XDriverManager.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/ucb/AuthenticationRequest.hpp>
-#include <com/sun/star/ucb/XInteractionSupplyAuthentication.hpp>
-#include <com/sun/star/ui/XUIConfigurationManagerSupplier.hpp>
-#include <com/sun/star/view/XPrintable.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/extract.hxx>
-#include <comphelper/guarding.hxx>
-#include <comphelper/interaction.hxx>
-#include <comphelper/namedvaluecollection.hxx>
-#include <comphelper/property.hxx>
-#include <comphelper/seqstream.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/string.hxx>
-#include <connectivity/dbexception.hxx>
-#include <connectivity/dbtools.hxx>
-#include <cppuhelper/typeprovider.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <osl/diagnose.h>
-#include <tools/urlobj.hxx>
-#include <typelib/typedescription.hxx>
-#include <unotools/confignode.hxx>
-#include <unotools/sharedunocomponent.hxx>
-#include <rtl/logfile.hxx>
-#include <rtl/digest.h>
-#include <algorithm>
-
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::embed;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::io;
-using namespace ::com::sun::star::task;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::reflection;
-using namespace ::cppu;
-using namespace ::osl;
-using namespace ::dbtools;
-using namespace ::comphelper;
-namespace css = ::com::sun::star;
-
-namespace dbaccess
-{
-
-//============================================================
-//= FlushNotificationAdapter
-//============================================================
-typedef ::cppu::WeakImplHelper1< XFlushListener > FlushNotificationAdapter_Base;
-/** helper class which implements a XFlushListener, and forwards all
- notification events to another XFlushListener
-
- The speciality is that the foreign XFlushListener instance, to which
- the notifications are forwarded, is held weak.
-
- Thus, the class can be used with XFlushable instance which hold
- their listeners with a hard reference, if you simply do not *want*
- to be held hard-ref-wise.
-*/
-class FlushNotificationAdapter : public FlushNotificationAdapter_Base
-{
-private:
- WeakReference< XFlushable > m_aBroadcaster;
- WeakReference< XFlushListener > m_aListener;
-
-public:
- static void installAdapter( const Reference< XFlushable >& _rxBroadcaster, const Reference< XFlushListener >& _rxListener )
- {
- Reference< XFlushListener > xAdapter( new FlushNotificationAdapter( _rxBroadcaster, _rxListener ) );
- }
-
-protected:
- FlushNotificationAdapter( const Reference< XFlushable >& _rxBroadcaster, const Reference< XFlushListener >& _rxListener );
- ~FlushNotificationAdapter();
-
- void SAL_CALL impl_dispose( bool _bRevokeListener );
-
-protected:
- // XFlushListener
- virtual void SAL_CALL flushed( const ::com::sun::star::lang::EventObject& rEvent ) throw (::com::sun::star::uno::RuntimeException);
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
-};
-
-//------------------------------------------------------------
-DBG_NAME( FlushNotificationAdapter )
-//------------------------------------------------------------
-FlushNotificationAdapter::FlushNotificationAdapter( const Reference< XFlushable >& _rxBroadcaster, const Reference< XFlushListener >& _rxListener )
- :m_aBroadcaster( _rxBroadcaster )
- ,m_aListener( _rxListener )
-{
- DBG_CTOR( FlushNotificationAdapter, NULL );
- OSL_ENSURE( _rxBroadcaster.is(), "FlushNotificationAdapter::FlushNotificationAdapter: invalid flushable!" );
-
- osl_incrementInterlockedCount( &m_refCount );
- {
- if ( _rxBroadcaster.is() )
- _rxBroadcaster->addFlushListener( this );
- }
- osl_decrementInterlockedCount( &m_refCount );
- OSL_ENSURE( m_refCount == 1, "FlushNotificationAdapter::FlushNotificationAdapter: broadcaster isn't holding by hard ref!?" );
-}
-
-//------------------------------------------------------------
-FlushNotificationAdapter::~FlushNotificationAdapter()
-{
- DBG_DTOR( FlushNotificationAdapter, NULL );
-}
-
-void SAL_CALL FlushNotificationAdapter::impl_dispose( bool _bRevokeListener )
-{
- Reference< XFlushListener > xKeepAlive( this );
-
- if ( _bRevokeListener )
- {
- Reference< XFlushable > xFlushable( m_aBroadcaster );
- if ( xFlushable.is() )
- xFlushable->removeFlushListener( this );
- }
-
- m_aListener = Reference< XFlushListener >();
- m_aBroadcaster = Reference< XFlushable >();
-}
-
-void SAL_CALL FlushNotificationAdapter::flushed( const EventObject& rEvent ) throw (RuntimeException)
-{
- Reference< XFlushListener > xListener( m_aListener );
- if ( xListener.is() )
- xListener->flushed( rEvent );
- else
- impl_dispose( true );
-}
-
-void SAL_CALL FlushNotificationAdapter::disposing( const EventObject& Source ) throw (RuntimeException)
-{
- Reference< XFlushListener > xListener( m_aListener );
- if ( xListener.is() )
- xListener->disposing( Source );
-
- impl_dispose( true );
-}
-
-OAuthenticationContinuation::OAuthenticationContinuation()
- :m_bRemberPassword(sal_True), // TODO: a meaningful default
- m_bCanSetUserName(sal_True)
-{
-}
-
-sal_Bool SAL_CALL OAuthenticationContinuation::canSetRealm( ) throw(RuntimeException)
-{
- return sal_False;
-}
-
-void SAL_CALL OAuthenticationContinuation::setRealm( const ::rtl::OUString& /*Realm*/ ) throw(RuntimeException)
-{
- OSL_FAIL("OAuthenticationContinuation::setRealm: not supported!");
-}
-
-sal_Bool SAL_CALL OAuthenticationContinuation::canSetUserName( ) throw(RuntimeException)
-{
- // we always allow this, even if the database document is read-only. In this case,
- // it's simply that the user cannot store the new user name.
- return m_bCanSetUserName;
-}
-
-void SAL_CALL OAuthenticationContinuation::setUserName( const ::rtl::OUString& _rUser ) throw(RuntimeException)
-{
- m_sUser = _rUser;
-}
-
-sal_Bool SAL_CALL OAuthenticationContinuation::canSetPassword( ) throw(RuntimeException)
-{
- return sal_True;
-}
-
-void SAL_CALL OAuthenticationContinuation::setPassword( const ::rtl::OUString& _rPassword ) throw(RuntimeException)
-{
- m_sPassword = _rPassword;
-}
-
-Sequence< RememberAuthentication > SAL_CALL OAuthenticationContinuation::getRememberPasswordModes( RememberAuthentication& _reDefault ) throw(RuntimeException)
-{
- Sequence< RememberAuthentication > aReturn(1);
- _reDefault = aReturn[0] = RememberAuthentication_SESSION;
- return aReturn;
-}
-
-void SAL_CALL OAuthenticationContinuation::setRememberPassword( RememberAuthentication _eRemember ) throw(RuntimeException)
-{
- m_bRemberPassword = (RememberAuthentication_NO != _eRemember);
-}
-
-sal_Bool SAL_CALL OAuthenticationContinuation::canSetAccount( ) throw(RuntimeException)
-{
- return sal_False;
-}
-
-void SAL_CALL OAuthenticationContinuation::setAccount( const ::rtl::OUString& ) throw(RuntimeException)
-{
- OSL_FAIL("OAuthenticationContinuation::setAccount: not supported!");
-}
-
-Sequence< RememberAuthentication > SAL_CALL OAuthenticationContinuation::getRememberAccountModes( RememberAuthentication& _reDefault ) throw(RuntimeException)
-{
- Sequence < RememberAuthentication > aReturn(1);
- aReturn[0] = RememberAuthentication_NO;
- _reDefault = RememberAuthentication_NO;
- return aReturn;
-}
-
-void SAL_CALL OAuthenticationContinuation::setRememberAccount( RememberAuthentication /*Remember*/ ) throw(RuntimeException)
-{
- OSL_FAIL("OAuthenticationContinuation::setRememberAccount: not supported!");
-}
-
-/** The class OSharedConnectionManager implements a structure to share connections.
- It owns the master connections which will be disposed when the last connection proxy is gone.
-*/
-typedef ::cppu::WeakImplHelper1< XEventListener > OConnectionHelper_BASE;
-// need to hold the digest
-struct TDigestHolder
-{
- sal_uInt8 m_pBuffer[RTL_DIGEST_LENGTH_SHA1];
- TDigestHolder()
- {
- m_pBuffer[0] = 0;
- }
-
-};
-
-class OSharedConnectionManager : public OConnectionHelper_BASE
-{
-
- // contains the currently used master connections
- typedef struct
- {
- Reference< XConnection > xMasterConnection;
- oslInterlockedCount nALiveCount;
- } TConnectionHolder;
-
- // the less-compare functor, used for the stl::map
- struct TDigestLess : public ::std::binary_function< TDigestHolder, TDigestHolder, bool>
- {
- bool operator() (const TDigestHolder& x, const TDigestHolder& y) const
- {
- sal_uInt32 i;
- for(i=0;i < RTL_DIGEST_LENGTH_SHA1 && (x.m_pBuffer[i] >= y.m_pBuffer[i]); ++i)
- ;
- return i < RTL_DIGEST_LENGTH_SHA1;
- }
- };
-
- typedef ::std::map< TDigestHolder,TConnectionHolder,TDigestLess> TConnectionMap; // holds the master connections
- typedef ::std::map< Reference< XConnection >,TConnectionMap::iterator> TSharedConnectionMap;// holds the shared connections
-
- ::osl::Mutex m_aMutex;
- TConnectionMap m_aConnections; // remember the master connection in conjunction with the digest
- TSharedConnectionMap m_aSharedConnection; // the shared connections with conjunction with an iterator into the connections map
- Reference< XProxyFactory > m_xProxyFactory;
-
-protected:
- ~OSharedConnectionManager();
-
-public:
- OSharedConnectionManager(const Reference< XMultiServiceFactory >& _rxServiceFactory);
-
- void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(RuntimeException);
- Reference<XConnection> getConnection( const rtl::OUString& url,
- const rtl::OUString& user,
- const rtl::OUString& password,
- const Sequence< PropertyValue >& _aInfo,
- ODatabaseSource* _pDataSource);
- void addEventListener(const Reference<XConnection>& _rxConnection,TConnectionMap::iterator& _rIter);
-};
-
-DBG_NAME(OSharedConnectionManager)
-OSharedConnectionManager::OSharedConnectionManager(const Reference< XMultiServiceFactory >& _rxServiceFactory)
-{
- DBG_CTOR(OSharedConnectionManager,NULL);
- m_xProxyFactory.set(_rxServiceFactory->createInstance(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.reflection.ProxyFactory"))),UNO_QUERY);
-}
-
-OSharedConnectionManager::~OSharedConnectionManager()
-{
- DBG_DTOR(OSharedConnectionManager,NULL);
-}
-
-void SAL_CALL OSharedConnectionManager::disposing( const ::com::sun::star::lang::EventObject& Source ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- Reference<XConnection> xConnection(Source.Source,UNO_QUERY);
- TSharedConnectionMap::iterator aFind = m_aSharedConnection.find(xConnection);
- if ( m_aSharedConnection.end() != aFind )
- {
- osl_decrementInterlockedCount(&aFind->second->second.nALiveCount);
- if ( !aFind->second->second.nALiveCount )
- {
- ::comphelper::disposeComponent(aFind->second->second.xMasterConnection);
- m_aConnections.erase(aFind->second);
- }
- m_aSharedConnection.erase(aFind);
- }
-}
-
-Reference<XConnection> OSharedConnectionManager::getConnection( const rtl::OUString& url,
- const rtl::OUString& user,
- const rtl::OUString& password,
- const Sequence< PropertyValue >& _aInfo,
- ODatabaseSource* _pDataSource)
-{
- MutexGuard aGuard(m_aMutex);
- TConnectionMap::key_type nId;
- Sequence< PropertyValue > aInfoCopy(_aInfo);
- sal_Int32 nPos = aInfoCopy.getLength();
- aInfoCopy.realloc( nPos + 2 );
- aInfoCopy[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TableFilter"));
- aInfoCopy[nPos++].Value <<= _pDataSource->m_pImpl->m_aTableFilter;
- aInfoCopy[nPos].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("TableTypeFilter"));
- aInfoCopy[nPos++].Value <<= _pDataSource->m_pImpl->m_aTableTypeFilter;
-
- ::rtl::OUString sUser = user;
- ::rtl::OUString sPassword = password;
- if ((0 == sUser.getLength()) && (0 == sPassword.getLength()) && (0 != _pDataSource->m_pImpl->m_sUser.getLength()))
- { // ease the usage of this method. data source which are intended to have a user automatically
- // fill in the user/password combination if the caller of this method does not specify otherwise
- sUser = _pDataSource->m_pImpl->m_sUser;
- if (0 != _pDataSource->m_pImpl->m_aPassword.getLength())
- sPassword = _pDataSource->m_pImpl->m_aPassword;
- }
-
- ::connectivity::OConnectionWrapper::createUniqueId(url,aInfoCopy,nId.m_pBuffer,sUser,sPassword);
- TConnectionMap::iterator aIter = m_aConnections.find(nId);
-
- if ( m_aConnections.end() == aIter )
- {
- TConnectionHolder aHolder;
- aHolder.nALiveCount = 0; // will be incremented by addListener
- aHolder.xMasterConnection = _pDataSource->buildIsolatedConnection(user,password);
- aIter = m_aConnections.insert(TConnectionMap::value_type(nId,aHolder)).first;
- }
-
- Reference<XConnection> xRet;
- if ( aIter->second.xMasterConnection.is() )
- {
- Reference< XAggregation > xConProxy = m_xProxyFactory->createProxy(aIter->second.xMasterConnection.get());
- xRet = new OSharedConnection(xConProxy);
- m_aSharedConnection.insert(TSharedConnectionMap::value_type(xRet,aIter));
- addEventListener(xRet,aIter);
- }
-
- return xRet;
-}
-void OSharedConnectionManager::addEventListener(const Reference<XConnection>& _rxConnection,TConnectionMap::iterator& _rIter)
-{
- Reference<XComponent> xComp(_rxConnection,UNO_QUERY);
- xComp->addEventListener(this);
- OSL_ENSURE( m_aConnections.end() != _rIter , "Iterator is end!");
- osl_incrementInterlockedCount(&_rIter->second.nALiveCount);
-}
-
-namespace
-{
- Sequence< PropertyValue > lcl_filterDriverProperties( const Reference< XDriver >& _xDriver, const ::rtl::OUString& _sUrl,
- const Sequence< PropertyValue >& _rDataSourceSettings, const AsciiPropertyValue* _pKnownSettings )
- {
- if ( _xDriver.is() )
- {
- Sequence< DriverPropertyInfo > aDriverInfo(_xDriver->getPropertyInfo(_sUrl,_rDataSourceSettings));
-
- const PropertyValue* pDataSourceSetting = _rDataSourceSettings.getConstArray();
- const PropertyValue* pEnd = pDataSourceSetting + _rDataSourceSettings.getLength();
-
- ::std::vector< PropertyValue > aRet;
-
- for ( ; pDataSourceSetting != pEnd ; ++pDataSourceSetting )
- {
- sal_Bool bAllowSetting = sal_False;
- const AsciiPropertyValue* pSetting = _pKnownSettings;
- for ( ; pSetting->AsciiName; ++pSetting )
- {
- if ( !pDataSourceSetting->Name.compareToAscii( pSetting->AsciiName ) )
- { // the particular data source setting is known
-
- const DriverPropertyInfo* pAllowedDriverSetting = aDriverInfo.getConstArray();
- const DriverPropertyInfo* pDriverSettingsEnd = pAllowedDriverSetting + aDriverInfo.getLength();
- for ( ; pAllowedDriverSetting != pDriverSettingsEnd; ++pAllowedDriverSetting )
- {
- if ( !pAllowedDriverSetting->Name.compareToAscii( pSetting->AsciiName ) )
- { // the driver also allows this setting
- bAllowSetting = sal_True;
- break;
- }
- }
- break;
- }
- }
- if ( bAllowSetting || !pSetting->AsciiName )
- { // if the driver allows this particular setting, or if the setting is completely unknown,
- // we pass it to the driver
- aRet.push_back( *pDataSourceSetting );
- }
- }
- if ( !aRet.empty() )
- return Sequence< PropertyValue >(&(*aRet.begin()),aRet.size());
- }
- return Sequence< PropertyValue >();
- }
-
- typedef ::std::map< ::rtl::OUString, sal_Int32 > PropertyAttributeCache;
-
- struct IsDefaultAndNotRemoveable : public ::std::unary_function< PropertyValue, bool >
- {
- private:
- const PropertyAttributeCache& m_rAttribs;
-
- public:
- IsDefaultAndNotRemoveable( const PropertyAttributeCache& _rAttribs ) : m_rAttribs( _rAttribs ) { }
-
- bool operator()( const PropertyValue& _rProp )
- {
- if ( _rProp.State != PropertyState_DEFAULT_VALUE )
- return false;
-
- bool bRemoveable = true;
-
- PropertyAttributeCache::const_iterator pos = m_rAttribs.find( _rProp.Name );
- OSL_ENSURE( pos != m_rAttribs.end(), "IsDefaultAndNotRemoveable: illegal property name!" );
- if ( pos != m_rAttribs.end() )
- bRemoveable = ( ( pos->second & PropertyAttribute::REMOVEABLE ) != 0 );
-
- return !bRemoveable;
- }
- };
-}
-//============================================================
-//= ODatabaseContext
-//============================================================
-DBG_NAME(ODatabaseSource)
-
-extern "C" void SAL_CALL createRegistryInfo_ODatabaseSource()
-{
- static ::dba::OAutoRegistration< ODatabaseSource > aAutoRegistration;
-}
-
-ODatabaseSource::ODatabaseSource(const ::rtl::Reference<ODatabaseModelImpl>& _pImpl)
- :ModelDependentComponent( _pImpl )
- ,ODatabaseSource_Base( getMutex() )
- ,OPropertySetHelper( ODatabaseSource_Base::rBHelper )
- ,m_aBookmarks( *this, getMutex() )
- ,m_aFlushListeners( getMutex() )
-{
- // some kind of default
- DBG_CTOR(ODatabaseSource,NULL);
- OSL_TRACE( "DS: ctor: %p: %p", this, m_pImpl.get() );
-}
-
-ODatabaseSource::~ODatabaseSource()
-{
- OSL_TRACE( "DS: dtor: %p: %p", this, m_pImpl.get() );
- DBG_DTOR(ODatabaseSource,NULL);
- if ( !ODatabaseSource_Base::rBHelper.bInDispose && !ODatabaseSource_Base::rBHelper.bDisposed )
- {
- acquire();
- dispose();
- }
-}
-
-void ODatabaseSource::setName( const Reference< XDocumentDataSource >& _rxDocument, const ::rtl::OUString& _rNewName, DBContextAccess )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::setName" );
- ODatabaseSource& rModelImpl = dynamic_cast< ODatabaseSource& >( *_rxDocument.get() );
-
- ::osl::MutexGuard aGuard( rModelImpl.m_aMutex );
- if ( rModelImpl.m_pImpl.is() )
- rModelImpl.m_pImpl->m_sName = _rNewName;
-}
-
-// com::sun::star::lang::XTypeProvider
-Sequence< Type > ODatabaseSource::getTypes() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getTypes" );
- OTypeCollection aPropertyHelperTypes( ::getCppuType( (const Reference< XFastPropertySet > *)0 ),
- ::getCppuType( (const Reference< XPropertySet > *)0 ),
- ::getCppuType( (const Reference< XMultiPropertySet > *)0 ));
-
- return ::comphelper::concatSequences(
- ODatabaseSource_Base::getTypes(),
- aPropertyHelperTypes.getTypes()
- );
-}
-
-Sequence< sal_Int8 > ODatabaseSource::getImplementationId() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getImplementationId" );
- static OImplementationId * pId = 0;
- if (! pId)
- {
- MutexGuard aGuard( Mutex::getGlobalMutex() );
- if (! pId)
- {
- static OImplementationId aId;
- pId = &aId;
- }
- }
- return pId->getImplementationId();
-}
-
-// com::sun::star::uno::XInterface
-Any ODatabaseSource::queryInterface( const Type & rType ) throw (RuntimeException)
-{
- Any aIface = ODatabaseSource_Base::queryInterface( rType );
- if ( !aIface.hasValue() )
- aIface = ::cppu::OPropertySetHelper::queryInterface( rType );
- return aIface;
-}
-
-void ODatabaseSource::acquire() throw ()
-{
- ODatabaseSource_Base::acquire();
-}
-
-void ODatabaseSource::release() throw ()
-{
- ODatabaseSource_Base::release();
-}
-
-void SAL_CALL ODatabaseSource::disposing( const ::com::sun::star::lang::EventObject& Source ) throw(RuntimeException)
-{
- if ( m_pImpl.is() )
- m_pImpl->disposing(Source);
-}
-// XServiceInfo
-rtl::OUString ODatabaseSource::getImplementationName( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getImplementationName" );
- return getImplementationName_static();
-}
-
-rtl::OUString ODatabaseSource::getImplementationName_static( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getImplementationName_static" );
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.dba.ODatabaseSource"));
-}
-
-Sequence< ::rtl::OUString > ODatabaseSource::getSupportedServiceNames( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getSupportedServiceNames" );
- return getSupportedServiceNames_static();
-}
-
-Reference< XInterface > ODatabaseSource::Create( const Reference< XComponentContext >& _rxContext )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::Create" );
- ::comphelper::ComponentContext aContext( _rxContext );
- Reference< XSingleServiceFactory > xDBContext( aContext.createComponent( (::rtl::OUString)SERVICE_SDB_DATABASECONTEXT ), UNO_QUERY_THROW );
- return xDBContext->createInstance();
-}
-
-Sequence< ::rtl::OUString > ODatabaseSource::getSupportedServiceNames_static( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getSupportedServiceNames_static" );
- Sequence< ::rtl::OUString > aSNS( 2 );
- aSNS[0] = SERVICE_SDB_DATASOURCE;
- aSNS[1] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.DocumentDataSource"));
- return aSNS;
-}
-
-sal_Bool ODatabaseSource::supportsService( const ::rtl::OUString& _rServiceName ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::supportsService" );
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-
-// OComponentHelper
-void ODatabaseSource::disposing()
-{
- OSL_TRACE( "DS: disp: %p, %p", this, m_pImpl.get() );
- ODatabaseSource_Base::WeakComponentImplHelperBase::disposing();
- OPropertySetHelper::disposing();
-
- EventObject aDisposeEvent(static_cast<XWeak*>(this));
- m_aFlushListeners.disposeAndClear( aDisposeEvent );
-
- ODatabaseDocument::clearObjectContainer(m_pImpl->m_xCommandDefinitions);
- ODatabaseDocument::clearObjectContainer(m_pImpl->m_xTableDefinitions);
- m_pImpl.clear();
-}
-
-Reference< XConnection > ODatabaseSource::buildLowLevelConnection(const ::rtl::OUString& _rUid, const ::rtl::OUString& _rPwd)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::buildLowLevelConnection" );
- Reference< XConnection > xReturn;
-
- Reference< XDriverManager > xManager;
- if ( !m_pImpl->m_aContext.createComponent( "com.sun.star.sdbc.ConnectionPool", xManager ) )
- // no connection pool installed, fall back to driver manager
- m_pImpl->m_aContext.createComponent( "com.sun.star.sdbc.DriverManager", xManager );
-
- ::rtl::OUString sUser(_rUid);
- ::rtl::OUString sPwd(_rPwd);
- if ((0 == sUser.getLength()) && (0 == sPwd.getLength()) && (0 != m_pImpl->m_sUser.getLength()))
- { // ease the usage of this method. data source which are intended to have a user automatically
- // fill in the user/password combination if the caller of this method does not specify otherwise
- sUser = m_pImpl->m_sUser;
- if (0 != m_pImpl->m_aPassword.getLength())
- sPwd = m_pImpl->m_aPassword;
- }
-
- sal_uInt16 nExceptionMessageId = RID_STR_COULDNOTCONNECT_UNSPECIFIED;
- if (xManager.is())
- {
- sal_Int32 nAdditionalArgs(0);
- if (sUser.getLength()) ++nAdditionalArgs;
- if (sPwd.getLength()) ++nAdditionalArgs;
-
- Sequence< PropertyValue > aUserPwd(nAdditionalArgs);
- sal_Int32 nArgPos = 0;
- if (sUser.getLength())
- {
- aUserPwd[ nArgPos ].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("user"));
- aUserPwd[ nArgPos ].Value <<= sUser;
- ++nArgPos;
- }
- if (sPwd.getLength())
- {
- aUserPwd[ nArgPos ].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("password"));
- aUserPwd[ nArgPos ].Value <<= sPwd;
- }
- Reference< XDriver > xDriver;
- try
- {
- Reference< XDriverAccess > xAccessDrivers( xManager, UNO_QUERY );
- if ( xAccessDrivers.is() )
- xDriver = xAccessDrivers->getDriverByURL( m_pImpl->m_sConnectURL );
- }
- catch( const Exception& )
- {
- OSL_FAIL( "ODatabaseSource::buildLowLevelConnection: got a strange exception while analyzing the error!" );
- }
- if ( !xDriver.is() || !xDriver->acceptsURL( m_pImpl->m_sConnectURL ) )
- {
- // Nowadays, it's allowed for a driver to be registered for a given URL, but actually not to accept it.
- // This is because registration nowadays happens at compile time (by adding respective configuration data),
- // but acceptance is decided at runtime.
- nExceptionMessageId = RID_STR_COULDNOTCONNECT_NODRIVER;
- }
- else
- {
- Sequence< PropertyValue > aDriverInfo = lcl_filterDriverProperties(
- xDriver,
- m_pImpl->m_sConnectURL,
- m_pImpl->m_xSettings->getPropertyValues(),
- m_pImpl->getDefaultDataSourceSettings()
- );
-
- if ( m_pImpl->isEmbeddedDatabase() )
- {
- sal_Int32 nCount = aDriverInfo.getLength();
- aDriverInfo.realloc(nCount + 2 );
- aDriverInfo[nCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("URL"));
- aDriverInfo[nCount++].Value <<= m_pImpl->getURL();
- aDriverInfo[nCount].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Storage"));
- Reference< css::document::XDocumentSubStorageSupplier> xDocSup( m_pImpl->getDocumentSubStorageSupplier() );
- aDriverInfo[nCount++].Value <<= xDocSup->getDocumentSubStorage(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("database")),ElementModes::READWRITE);
- }
- if (nAdditionalArgs)
- xReturn = xManager->getConnectionWithInfo(m_pImpl->m_sConnectURL, ::comphelper::concatSequences(aUserPwd,aDriverInfo));
- else
- xReturn = xManager->getConnectionWithInfo(m_pImpl->m_sConnectURL,aDriverInfo);
-
- if ( m_pImpl->isEmbeddedDatabase() )
- {
- // see ODatabaseSource::flushed for comment on why we register as FlushListener
- // at the connection
- Reference< XFlushable > xFlushable( xReturn, UNO_QUERY );
- if ( xFlushable.is() )
- FlushNotificationAdapter::installAdapter( xFlushable, this );
- }
- }
- }
- else
- nExceptionMessageId = RID_STR_COULDNOTLOAD_MANAGER;
-
- if ( !xReturn.is() )
- {
- ::rtl::OUString sMessage = DBACORE_RESSTRING( nExceptionMessageId );
-
- SQLContext aContext;
- aContext.Message = DBACORE_RESSTRING( RID_STR_CONNECTION_REQUEST );
- ::comphelper::string::searchAndReplaceAsciiI( aContext.Message, "$name$", m_pImpl->m_sConnectURL );
-
- throwGenericSQLException( sMessage, static_cast< XDataSource* >( this ), makeAny( aContext ) );
- }
-
- return xReturn;
-}
-
-// OPropertySetHelper
-Reference< XPropertySetInfo > ODatabaseSource::getPropertySetInfo() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getPropertySetInfo" );
- return createPropertySetInfo( getInfoHelper() ) ;
-}
-
-// comphelper::OPropertyArrayUsageHelper
-::cppu::IPropertyArrayHelper* ODatabaseSource::createArrayHelper( ) const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::createArrayHelper" );
- BEGIN_PROPERTY_HELPER(13)
- DECL_PROP1(INFO, Sequence< PropertyValue >, BOUND);
- DECL_PROP1_BOOL(ISPASSWORDREQUIRED, BOUND);
- DECL_PROP1_BOOL(ISREADONLY, READONLY);
- DECL_PROP1(LAYOUTINFORMATION, Sequence< PropertyValue >, BOUND);
- DECL_PROP1(NAME, ::rtl::OUString, READONLY);
- DECL_PROP2_IFACE(NUMBERFORMATSSUPPLIER, XNumberFormatsSupplier, READONLY, TRANSIENT);
- DECL_PROP1(PASSWORD, ::rtl::OUString, TRANSIENT);
- DECL_PROP2_IFACE(SETTINGS, XPropertySet, BOUND, READONLY);
- DECL_PROP1_BOOL(SUPPRESSVERSIONCL, BOUND);
- DECL_PROP1(TABLEFILTER, Sequence< ::rtl::OUString >,BOUND);
- DECL_PROP1(TABLETYPEFILTER, Sequence< ::rtl::OUString >,BOUND);
- DECL_PROP1(URL, ::rtl::OUString, BOUND);
- DECL_PROP1(USER, ::rtl::OUString, BOUND);
- END_PROPERTY_HELPER();
-}
-
-// cppu::OPropertySetHelper
-::cppu::IPropertyArrayHelper& ODatabaseSource::getInfoHelper()
-{
- return *getArrayHelper();
-}
-
-sal_Bool ODatabaseSource::convertFastPropertyValue(Any & rConvertedValue, Any & rOldValue, sal_Int32 nHandle, const Any& rValue ) throw( IllegalArgumentException )
-{
- sal_Bool bModified(sal_False);
- if ( m_pImpl.is() )
- {
- switch (nHandle)
- {
- case PROPERTY_ID_TABLEFILTER:
- bModified = ::comphelper::tryPropertyValue(rConvertedValue, rOldValue, rValue, m_pImpl->m_aTableFilter);
- break;
- case PROPERTY_ID_TABLETYPEFILTER:
- bModified = ::comphelper::tryPropertyValue(rConvertedValue, rOldValue, rValue, m_pImpl->m_aTableTypeFilter);
- break;
- case PROPERTY_ID_USER:
- bModified = ::comphelper::tryPropertyValue(rConvertedValue, rOldValue, rValue, m_pImpl->m_sUser);
- break;
- case PROPERTY_ID_PASSWORD:
- bModified = ::comphelper::tryPropertyValue(rConvertedValue, rOldValue, rValue, m_pImpl->m_aPassword);
- break;
- case PROPERTY_ID_ISPASSWORDREQUIRED:
- bModified = ::comphelper::tryPropertyValue(rConvertedValue, rOldValue, rValue, m_pImpl->m_bPasswordRequired);
- break;
- case PROPERTY_ID_SUPPRESSVERSIONCL:
- bModified = ::comphelper::tryPropertyValue(rConvertedValue, rOldValue, rValue, m_pImpl->m_bSuppressVersionColumns);
- break;
- case PROPERTY_ID_LAYOUTINFORMATION:
- bModified = ::comphelper::tryPropertyValue(rConvertedValue, rOldValue, rValue, m_pImpl->m_aLayoutInformation);
- break;
- case PROPERTY_ID_URL:
- {
- bModified = ::comphelper::tryPropertyValue(rConvertedValue, rOldValue, rValue, m_pImpl->m_sConnectURL);
- } break;
- case PROPERTY_ID_INFO:
- {
- Sequence<PropertyValue> aValues;
- if (!(rValue >>= aValues))
- throw IllegalArgumentException();
-
- const PropertyValue* valueEnd = aValues.getConstArray() + aValues.getLength();
- const PropertyValue* checkName = aValues.getConstArray();
- for ( ;checkName != valueEnd; ++checkName )
- {
- if ( !checkName->Name.getLength() )
- throw IllegalArgumentException();
- }
-
- Sequence< PropertyValue > aSettings = m_pImpl->m_xSettings->getPropertyValues();
- bModified = aSettings.getLength() != aValues.getLength();
- if ( !bModified )
- {
- const PropertyValue* pInfoIter = aSettings.getConstArray();
- const PropertyValue* checkValue = aValues.getConstArray();
- for ( ;!bModified && checkValue != valueEnd ; ++checkValue,++pInfoIter)
- {
- bModified = checkValue->Name != pInfoIter->Name;
- if ( !bModified )
- {
- bModified = !::comphelper::compare(checkValue->Value,pInfoIter->Value);
- }
- }
- }
-
- rConvertedValue = rValue;
- rOldValue <<= aSettings;
- }
- break;
- default:
- OSL_FAIL( "ODatabaseSource::convertFastPropertyValue: unknown or readonly Property!" );
- }
- }
- return bModified;
-}
-
-namespace
-{
- struct SelectPropertyName : public ::std::unary_function< PropertyValue, ::rtl::OUString >
- {
- public:
- const ::rtl::OUString& operator()( const PropertyValue& _lhs )
- {
- return _lhs.Name;
- }
- };
-
- /** sets a new set of property values for a given property bag instance
-
- The method takes a property bag, and a sequence of property values to set for this bag.
- Upon return, every property which is not part of the given sequence is
- <ul><li>removed from the bag, if it's a removeable property</li>
- <li><em>or</em>reset to its default value, if it's not a removeable property</li>
- </ul>.
-
- @param _rxPropertyBag
- the property bag to operate on
- @param _rAllNewPropertyValues
- the new property values to set for the bag
- */
- void lcl_setPropertyValues_resetOrRemoveOther( const Reference< XPropertyAccess >& _rxPropertyBag, const Sequence< PropertyValue >& _rAllNewPropertyValues )
- {
- // sequences are ugly to operate on
- typedef ::std::set< ::rtl::OUString > StringSet;
- StringSet aToBeSetPropertyNames;
- ::std::transform(
- _rAllNewPropertyValues.getConstArray(),
- _rAllNewPropertyValues.getConstArray() + _rAllNewPropertyValues.getLength(),
- ::std::insert_iterator< StringSet >( aToBeSetPropertyNames, aToBeSetPropertyNames.end() ),
- SelectPropertyName()
- );
-
- try
- {
- // obtain all properties currently known at the bag
- Reference< XPropertySet > xPropertySet( _rxPropertyBag, UNO_QUERY_THROW );
- Reference< XPropertySetInfo > xPSI( xPropertySet->getPropertySetInfo(), UNO_QUERY_THROW );
- Sequence< Property > aAllExistentProperties( xPSI->getProperties() );
-
- Reference< XPropertyState > xPropertyState( _rxPropertyBag, UNO_QUERY_THROW );
- Reference< XPropertyContainer > xPropertyContainer( _rxPropertyBag, UNO_QUERY_THROW );
-
- // loop through them, and reset resp. default properties which are not to be set
- const Property* pExistentProperty( aAllExistentProperties.getConstArray() );
- const Property* pExistentPropertyEnd( aAllExistentProperties.getConstArray() + aAllExistentProperties.getLength() );
- for ( ; pExistentProperty != pExistentPropertyEnd; ++pExistentProperty )
- {
- if ( aToBeSetPropertyNames.find( pExistentProperty->Name ) != aToBeSetPropertyNames.end() )
- continue;
-
- // this property is not to be set, but currently exists in the bag.
- // -> Remove it, or reset it to the default.
- if ( ( pExistentProperty->Attributes & PropertyAttribute::REMOVEABLE ) != 0 )
- xPropertyContainer->removeProperty( pExistentProperty->Name );
- else
- xPropertyState->setPropertyToDefault( pExistentProperty->Name );
- }
-
- // finally, set the new property values
- _rxPropertyBag->setPropertyValues( _rAllNewPropertyValues );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-}
-
-void ODatabaseSource::setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const Any& rValue ) throw (Exception)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::setFastPropertyValue_NoBroadcast" );
- if ( m_pImpl.is() )
- {
- switch(nHandle)
- {
- case PROPERTY_ID_TABLEFILTER:
- rValue >>= m_pImpl->m_aTableFilter;
- break;
- case PROPERTY_ID_TABLETYPEFILTER:
- rValue >>= m_pImpl->m_aTableTypeFilter;
- break;
- case PROPERTY_ID_USER:
- rValue >>= m_pImpl->m_sUser;
- // if the user name has changed, reset the password
- m_pImpl->m_aPassword = ::rtl::OUString();
- break;
- case PROPERTY_ID_PASSWORD:
- rValue >>= m_pImpl->m_aPassword;
- break;
- case PROPERTY_ID_ISPASSWORDREQUIRED:
- m_pImpl->m_bPasswordRequired = any2bool(rValue);
- break;
- case PROPERTY_ID_SUPPRESSVERSIONCL:
- m_pImpl->m_bSuppressVersionColumns = any2bool(rValue);
- break;
- case PROPERTY_ID_URL:
- rValue >>= m_pImpl->m_sConnectURL;
- break;
- case PROPERTY_ID_INFO:
- {
- Sequence< PropertyValue > aInfo;
- OSL_VERIFY( rValue >>= aInfo );
- lcl_setPropertyValues_resetOrRemoveOther( m_pImpl->m_xSettings, aInfo );
- }
- break;
- case PROPERTY_ID_LAYOUTINFORMATION:
- rValue >>= m_pImpl->m_aLayoutInformation;
- break;
- }
- m_pImpl->setModified(sal_True);
- }
-}
-
-void ODatabaseSource::getFastPropertyValue( Any& rValue, sal_Int32 nHandle ) const
-{
- //RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getFastPropertyValue" );
- if ( m_pImpl.is() )
- {
- switch (nHandle)
- {
- case PROPERTY_ID_TABLEFILTER:
- rValue <<= m_pImpl->m_aTableFilter;
- break;
- case PROPERTY_ID_TABLETYPEFILTER:
- rValue <<= m_pImpl->m_aTableTypeFilter;
- break;
- case PROPERTY_ID_USER:
- rValue <<= m_pImpl->m_sUser;
- break;
- case PROPERTY_ID_PASSWORD:
- rValue <<= m_pImpl->m_aPassword;
- break;
- case PROPERTY_ID_ISPASSWORDREQUIRED:
- rValue = bool2any(m_pImpl->m_bPasswordRequired);
- break;
- case PROPERTY_ID_SUPPRESSVERSIONCL:
- rValue = bool2any(m_pImpl->m_bSuppressVersionColumns);
- break;
- case PROPERTY_ID_ISREADONLY:
- rValue = bool2any(m_pImpl->m_bReadOnly);
- break;
- case PROPERTY_ID_INFO:
- {
- try
- {
- // collect the property attributes of all current settings
- Reference< XPropertySet > xSettingsAsProps( m_pImpl->m_xSettings, UNO_QUERY_THROW );
- Reference< XPropertySetInfo > xPST( xSettingsAsProps->getPropertySetInfo(), UNO_QUERY_THROW );
- Sequence< Property > aSettings( xPST->getProperties() );
- ::std::map< ::rtl::OUString, sal_Int32 > aPropertyAttributes;
- for ( const Property* pSettings = aSettings.getConstArray();
- pSettings != aSettings.getConstArray() + aSettings.getLength();
- ++pSettings
- )
- {
- aPropertyAttributes[ pSettings->Name ] = pSettings->Attributes;
- }
-
- // get all current settings with their values
- Sequence< PropertyValue > aValues( m_pImpl->m_xSettings->getPropertyValues() );
-
- // transform them so that only property values which fulfill certain
- // criteria survive
- Sequence< PropertyValue > aNonDefaultOrUserDefined( aValues.getLength() );
- const PropertyValue* pCopyEnd = ::std::remove_copy_if(
- aValues.getConstArray(),
- aValues.getConstArray() + aValues.getLength(),
- aNonDefaultOrUserDefined.getArray(),
- IsDefaultAndNotRemoveable( aPropertyAttributes )
- );
- aNonDefaultOrUserDefined.realloc( pCopyEnd - aNonDefaultOrUserDefined.getArray() );
- rValue <<= aNonDefaultOrUserDefined;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- break;
- case PROPERTY_ID_SETTINGS:
- rValue <<= m_pImpl->m_xSettings;
- break;
- case PROPERTY_ID_URL:
- rValue <<= m_pImpl->m_sConnectURL;
- break;
- case PROPERTY_ID_NUMBERFORMATSSUPPLIER:
- rValue <<= m_pImpl->getNumberFormatsSupplier();
- break;
- case PROPERTY_ID_NAME:
- rValue <<= m_pImpl->m_sName;
- break;
- case PROPERTY_ID_LAYOUTINFORMATION:
- rValue <<= m_pImpl->m_aLayoutInformation;
- break;
- default:
- OSL_FAIL("unknown Property");
- }
- }
-}
-
-// XDataSource
-void ODatabaseSource::setLoginTimeout(sal_Int32 seconds) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::setLoginTimeout" );
- ModelMethodGuard aGuard( *this );
- m_pImpl->m_nLoginTimeout = seconds;
-}
-
-sal_Int32 ODatabaseSource::getLoginTimeout(void) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getLoginTimeout" );
- ModelMethodGuard aGuard( *this );
- return m_pImpl->m_nLoginTimeout;
-}
-
-// XCompletedConnection
-Reference< XConnection > SAL_CALL ODatabaseSource::connectWithCompletion( const Reference< XInteractionHandler >& _rxHandler ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::connectWithCompletion" );
- return connectWithCompletion(_rxHandler,sal_False);
-}
-
-Reference< XConnection > ODatabaseSource::getConnection(const rtl::OUString& user, const rtl::OUString& password) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getConnection" );
- return getConnection(user,password,sal_False);
-}
-
-Reference< XConnection > SAL_CALL ODatabaseSource::getIsolatedConnection( const ::rtl::OUString& user, const ::rtl::OUString& password ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getIsolatedConnection" );
- return getConnection(user,password,sal_True);
-}
-
-Reference< XConnection > SAL_CALL ODatabaseSource::getIsolatedConnectionWithCompletion( const Reference< XInteractionHandler >& _rxHandler ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getIsolatedConnectionWithCompletion" );
- return connectWithCompletion(_rxHandler,sal_True);
-}
-
-Reference< XConnection > SAL_CALL ODatabaseSource::connectWithCompletion( const Reference< XInteractionHandler >& _rxHandler,sal_Bool _bIsolated ) throw(SQLException, RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::connectWithCompletion" );
- ModelMethodGuard aGuard( *this );
-
- if (!_rxHandler.is())
- {
- OSL_FAIL("ODatabaseSource::connectWithCompletion: invalid interaction handler!");
- return getConnection(m_pImpl->m_sUser, m_pImpl->m_aPassword,_bIsolated);
- }
-
- ::rtl::OUString sUser(m_pImpl->m_sUser), sPassword(m_pImpl->m_aPassword);
- sal_Bool bNewPasswordGiven = sal_False;
-
- if (m_pImpl->m_bPasswordRequired && (0 == sPassword.getLength()))
- { // we need a password, but don't have one yet.
- // -> ask the user
-
- // build an interaction request
- // two continuations (Ok and Cancel)
- OInteractionAbort* pAbort = new OInteractionAbort;
- OAuthenticationContinuation* pAuthenticate = new OAuthenticationContinuation;
-
- // the name which should be referred in the login dialog
- ::rtl::OUString sServerName( m_pImpl->m_sName );
- INetURLObject aURLCheck( sServerName );
- if ( aURLCheck.GetProtocol() != INET_PROT_NOT_VALID )
- sServerName = aURLCheck.getBase( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_UNAMBIGUOUS );
-
- // the request
- AuthenticationRequest aRequest;
- aRequest.ServerName = sServerName;
- aRequest.HasRealm = aRequest.HasAccount = sal_False;
- aRequest.HasUserName = aRequest.HasPassword = sal_True;
- aRequest.UserName = m_pImpl->m_sUser;
- aRequest.Password = m_pImpl->m_sFailedPassword.getLength() ? m_pImpl->m_sFailedPassword : m_pImpl->m_aPassword;
- OInteractionRequest* pRequest = new OInteractionRequest(makeAny(aRequest));
- Reference< XInteractionRequest > xRequest(pRequest);
- // some knittings
- pRequest->addContinuation(pAbort);
- pRequest->addContinuation(pAuthenticate);
-
- // handle the request
- try
- {
- MutexRelease aRelease( getMutex() );
- // release the mutex when calling the handler, it may need to lock the SolarMutex
- _rxHandler->handle(xRequest);
- }
- catch(Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- if (!pAuthenticate->wasSelected())
- return Reference< XConnection >();
-
- // get the result
- sUser = m_pImpl->m_sUser = pAuthenticate->getUser();
- sPassword = pAuthenticate->getPassword();
-
- if (pAuthenticate->getRememberPassword())
- {
- m_pImpl->m_aPassword = pAuthenticate->getPassword();
- bNewPasswordGiven = sal_True;
- }
- m_pImpl->m_sFailedPassword = ::rtl::OUString();
- }
-
- try
- {
- return getConnection(sUser, sPassword,_bIsolated);
- }
- catch(Exception&)
- {
- if (bNewPasswordGiven)
- {
- m_pImpl->m_sFailedPassword = m_pImpl->m_aPassword;
- // assume that we had an authentication problem. Without this we may, after an unsucessful connect, while
- // the user gave us a password an the order to remember it, never allow an password input again (at least
- // not without restarting the session)
- m_pImpl->m_aPassword = ::rtl::OUString();
- }
- throw;
- }
-}
-
-Reference< XConnection > ODatabaseSource::buildIsolatedConnection(const rtl::OUString& user, const rtl::OUString& password)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::buildIsolatedConnection" );
- Reference< XConnection > xConn;
- Reference< XConnection > xSdbcConn = buildLowLevelConnection(user, password);
- OSL_ENSURE( xSdbcConn.is(), "ODatabaseSource::buildIsolatedConnection: invalid return value of buildLowLevelConnection!" );
- // buildLowLevelConnection is expected to always succeed
- if ( xSdbcConn.is() )
- {
- // build a connection server and return it (no stubs)
- xConn = new OConnection(*this, xSdbcConn, m_pImpl->m_aContext.getLegacyServiceFactory());
- }
- return xConn;
-}
-
-Reference< XConnection > ODatabaseSource::getConnection(const rtl::OUString& user, const rtl::OUString& password,sal_Bool _bIsolated) throw( SQLException, RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getConnection" );
- ModelMethodGuard aGuard( *this );
-
- Reference< XConnection > xConn;
- if ( _bIsolated )
- {
- xConn = buildIsolatedConnection(user,password);
- }
- else
- { // create a new proxy for the connection
- if ( !m_pImpl->m_xSharedConnectionManager.is() )
- {
- m_pImpl->m_pSharedConnectionManager = new OSharedConnectionManager( m_pImpl->m_aContext.getLegacyServiceFactory() );
- m_pImpl->m_xSharedConnectionManager = m_pImpl->m_pSharedConnectionManager;
- }
- xConn = m_pImpl->m_pSharedConnectionManager->getConnection(
- m_pImpl->m_sConnectURL, user, password, m_pImpl->m_xSettings->getPropertyValues(), this );
- }
-
- if ( xConn.is() )
- {
- Reference< XComponent> xComp(xConn,UNO_QUERY);
- if ( xComp.is() )
- xComp->addEventListener( static_cast< XContainerListener* >( this ) );
- m_pImpl->m_aConnections.push_back(OWeakConnection(xConn));
- }
-
- return xConn;
-}
-
-Reference< XNameAccess > SAL_CALL ODatabaseSource::getBookmarks( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getBookmarks" );
- ModelMethodGuard aGuard( *this );
- return static_cast< XNameContainer* >(&m_aBookmarks);
-}
-
-Reference< XNameAccess > SAL_CALL ODatabaseSource::getQueryDefinitions( ) throw(RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getQueryDefinitions" );
- ModelMethodGuard aGuard( *this );
-
- Reference< XNameAccess > xContainer = m_pImpl->m_xCommandDefinitions;
- if ( !xContainer.is() )
- {
- Any aValue;
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > xMy(*this);
- if ( dbtools::getDataSourceSetting(xMy,"CommandDefinitions",aValue) )
- {
- ::rtl::OUString sSupportService;
- aValue >>= sSupportService;
- if ( sSupportService.getLength() )
- {
- Sequence<Any> aArgs(1);
- aArgs[0] <<= NamedValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DataSource")),makeAny(xMy));
- xContainer.set(m_pImpl->m_aContext.createComponentWithArguments(sSupportService,aArgs),UNO_QUERY);
- }
- }
- if ( !xContainer.is() )
- {
- TContentPtr& rContainerData( m_pImpl->getObjectContainer( ODatabaseModelImpl::E_QUERY ) );
- xContainer = new OCommandContainer( m_pImpl->m_aContext.getLegacyServiceFactory(), *this, rContainerData, sal_False );
- }
- m_pImpl->m_xCommandDefinitions = xContainer;
- }
- return xContainer;
-}
-
-// XTablesSupplier
-Reference< XNameAccess > ODatabaseSource::getTables() throw( RuntimeException )
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getTables" );
- ModelMethodGuard aGuard( *this );
-
- Reference< XNameAccess > xContainer = m_pImpl->m_xTableDefinitions;
- if ( !xContainer.is() )
- {
- TContentPtr& rContainerData( m_pImpl->getObjectContainer( ODatabaseModelImpl::E_TABLE ) );
- xContainer = new OCommandContainer( m_pImpl->m_aContext.getLegacyServiceFactory(), *this, rContainerData, sal_True );
- m_pImpl->m_xTableDefinitions = xContainer;
- }
- return xContainer;
-}
-
-void SAL_CALL ODatabaseSource::flush( ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::flush" );
- try
- {
- // SYNCHRONIZED ->
- {
- ModelMethodGuard aGuard( *this );
-
- typedef ::utl::SharedUNOComponent< XModel, ::utl::CloseableComponent > SharedModel;
- SharedModel xModel( m_pImpl->getModel_noCreate(), SharedModel::NoTakeOwnership );
-
- if ( !xModel.is() )
- xModel.reset( m_pImpl->createNewModel_deliverOwnership( false ), SharedModel::TakeOwnership );
-
- Reference< css::frame::XStorable> xStorable( xModel, UNO_QUERY_THROW );
- xStorable->store();
- }
- // <- SYNCHRONIZED
-
- css::lang::EventObject aFlushedEvent(*this);
- m_aFlushListeners.notifyEach( &XFlushListener::flushed, aFlushedEvent );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-void SAL_CALL ODatabaseSource::flushed( const EventObject& /*rEvent*/ ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::flushed" );
- ModelMethodGuard aGuard( *this );
-
- // Okay, this is some hack.
- //
- // In general, we have the problem that embedded databases write into their underlying storage, which
- // logically is one of our sub storage, and practically is a temporary file maintained by the
- // package implementation. As long as we did not commit this storage and our main storage,
- // the changes made by the embedded database engine are not really reflected in the database document
- // file. This is Bad (TM) for a "real" database application - imagine somebody entering some
- // data, and then crashing: For a database application, you would expect that the data still is present
- // when you connect to the database next time.
- //
- // Since this is a conceptual problem as long as we do use those ZIP packages (in fact, we *cannot*
- // provide the desired functionality as long as we do not have a package format which allows O(1) writes),
- // we cannot completely fix this. However, we can relax the problem by commiting more often - often
- // enough so that data loss is more seldom, and seldom enough so that there's no noticable performance
- // decrease.
- //
- // For this, we introduced a few places which XFlushable::flush their connections, and register as
- // XFlushListener at the embedded connection (which needs to provide the XFlushable functionality).
- // Then, when the connection is flushed, we commit both the database storage and our main storage.
- //
- // #i55274#
-
- OSL_ENSURE( m_pImpl->isEmbeddedDatabase(), "ODatabaseSource::flushed: no embedded database?!" );
- sal_Bool bWasModified = m_pImpl->m_bModified;
- m_pImpl->commitEmbeddedStorage();
- m_pImpl->setModified( bWasModified );
-}
-
-void SAL_CALL ODatabaseSource::addFlushListener( const Reference< ::com::sun::star::util::XFlushListener >& _xListener ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::addFlushListener" );
- m_aFlushListeners.addInterface(_xListener);
-}
-
-void SAL_CALL ODatabaseSource::removeFlushListener( const Reference< ::com::sun::star::util::XFlushListener >& _xListener ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::removeFlushListener" );
- m_aFlushListeners.removeInterface(_xListener);
-}
-
-void SAL_CALL ODatabaseSource::elementInserted( const ContainerEvent& /*Event*/ ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::elementInserted" );
- ModelMethodGuard aGuard( *this );
- if ( m_pImpl.is() )
- m_pImpl->setModified(sal_True);
-}
-
-void SAL_CALL ODatabaseSource::elementRemoved( const ContainerEvent& /*Event*/ ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::elementRemoved" );
- ModelMethodGuard aGuard( *this );
- if ( m_pImpl.is() )
- m_pImpl->setModified(sal_True);
-}
-
-void SAL_CALL ODatabaseSource::elementReplaced( const ContainerEvent& /*Event*/ ) throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::elementReplaced" );
- ModelMethodGuard aGuard( *this );
- if ( m_pImpl.is() )
- m_pImpl->setModified(sal_True);
-}
-
-// XDocumentDataSource
-Reference< XOfficeDatabaseDocument > SAL_CALL ODatabaseSource::getDatabaseDocument() throw (RuntimeException)
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getDatabaseDocument" );
- ModelMethodGuard aGuard( *this );
-
- Reference< XModel > xModel( m_pImpl->getModel_noCreate() );
- if ( !xModel.is() )
- xModel = m_pImpl->createNewModel_deliverOwnership( false );
-
- return Reference< XOfficeDatabaseDocument >( xModel, UNO_QUERY_THROW );
-}
-
-Reference< XInterface > ODatabaseSource::getThis() const
-{
- RTL_LOGFILE_CONTEXT_AUTHOR( aLogger, "dataaccess", "Ocke.Janssen@sun.com", "ODatabaseSource::getThis" );
- return *const_cast< ODatabaseSource* >( this );
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/datasource.hxx b/dbaccess/source/core/dataaccess/datasource.hxx
deleted file mode 100644
index 6bc917510..000000000
--- a/dbaccess/source/core/dataaccess/datasource.hxx
+++ /dev/null
@@ -1,239 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_COREDATAACCESS_DATASOURCE_HXX_
-#define _DBA_COREDATAACCESS_DATASOURCE_HXX_
-
-#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/sdbc/XDataSource.hpp>
-#include <com/sun/star/container/XContainerListener.hpp>
-#include <com/sun/star/sdb/XBookmarksSupplier.hpp>
-#include <com/sun/star/sdb/XQueryDefinitionsSupplier.hpp>
-#include <com/sun/star/sdbc/XIsolatedConnection.hpp>
-#include <com/sun/star/util/XNumberFormatter.hpp>
-#include <com/sun/star/document/XEventListener.hpp>
-#include <com/sun/star/util/XFlushable.hpp>
-#include <cppuhelper/propshlp.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include <cppuhelper/weakref.hxx>
-#include <cppuhelper/compbase11.hxx>
-#include <com/sun/star/embed/XTransactionListener.hpp>
-#include "apitools.hxx"
-#include "bookmarkcontainer.hxx"
-#include <rtl/ref.hxx>
-#include <tools/string.hxx>
-#include <connectivity/CommonTools.hxx>
-#include <comphelper/broadcasthelper.hxx>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/sdb/XCompletedConnection.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/embed/XStorage.hpp>
-#include "ContentHelper.hxx"
-#include <com/sun/star/document/XStorageBasedDocument.hpp>
-#include <com/sun/star/embed/ElementModes.hpp>
-#include <com/sun/star/util/XRefreshable.hpp>
-#include <com/sun/star/sdb/XDocumentDataSource.hpp>
-#include "ModelImpl.hxx"
-
-namespace dbaccess
-{
-
-class OSharedConnectionManager;
-class OChildCommitListen_Impl;
-
-//============================================================
-//= ODatabaseSource
-//============================================================
-typedef ::cppu::WeakComponentImplHelper11 < ::com::sun::star::lang::XServiceInfo
- , ::com::sun::star::sdbc::XDataSource
- , ::com::sun::star::sdb::XBookmarksSupplier
- , ::com::sun::star::sdb::XQueryDefinitionsSupplier
- , ::com::sun::star::sdb::XCompletedConnection
- , ::com::sun::star::container::XContainerListener
- , ::com::sun::star::sdbc::XIsolatedConnection
- , ::com::sun::star::sdbcx::XTablesSupplier
- , ::com::sun::star::util::XFlushable
- , ::com::sun::star::util::XFlushListener
- , ::com::sun::star::sdb::XDocumentDataSource
- > ODatabaseSource_Base;
-
-
-class ODatabaseSource :public ModelDependentComponent // must be first
- ,public ODatabaseSource_Base
- ,public ::cppu::OPropertySetHelper
- ,public ::comphelper::OPropertyArrayUsageHelper < ODatabaseSource >
-{
- friend class ODatabaseContext;
- friend class OConnection;
- friend class OSharedConnectionManager;
-
-private:
- using ODatabaseSource_Base::rBHelper;
- OBookmarkContainer m_aBookmarks;
- ::cppu::OInterfaceContainerHelper m_aFlushListeners;
-
-private:
- virtual ~ODatabaseSource();
-
-public:
- ODatabaseSource( const ::rtl::Reference< ODatabaseModelImpl >& _pImpl );
-
- struct DBContextAccess { friend class ODatabaseContext; private: DBContextAccess() { } };
-
- /** sets a new name for the data source
-
- The name of a data source (our m_sName member) is the registration name, *if* the
- data source actually *is* registered at the database context.
-
- Normally, this name is passed at time of creation of the ODatabaseModelImpl instance,
- but if a newly creaed data source is registered, then it must be possible to propagate
- the new trgistration name.
- */
- static void setName(
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XDocumentDataSource >& _rxDocument,
- const ::rtl::OUString& _rNewName,
- DBContextAccess
- );
-
- // XContainerListener
- virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementRemoved( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementReplaced( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbcx::XTablesSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTables( ) throw(::com::sun::star::uno::RuntimeException);
-
-// com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
-// com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw( );
- virtual void SAL_CALL release() throw( );
-
-// ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::lang::XServiceInfo - static methods
- static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::rtl::OUString getImplementationName_static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
- SAL_CALL Create(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext >&);
-
-// OComponentHelper
- virtual void SAL_CALL disposing(void);
-
-// com::sun::star::beans::XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
-
-// comphelper::OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
-// cppu::OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- virtual sal_Bool SAL_CALL convertFastPropertyValue(
- ::com::sun::star::uno::Any & rConvertedValue,
- ::com::sun::star::uno::Any & rOldValue,
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue )
- throw (::com::sun::star::lang::IllegalArgumentException);
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue
- )
- throw (::com::sun::star::uno::Exception);
- virtual void SAL_CALL getFastPropertyValue( ::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const;
-
-// ::com::sun::star::sdb::XCompletedConnection
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL connectWithCompletion( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& handler ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdbc::XDataSource
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( const ::rtl::OUString& user, const ::rtl::OUString& password ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setLoginTimeout( sal_Int32 seconds ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getLoginTimeout( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-// :: com::sun::star::sdb::XBookmarksSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getBookmarks( ) throw (::com::sun::star::uno::RuntimeException);
-
-// :: com::sun::star::sdb::XQueryDefinitionsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getQueryDefinitions( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdbc::XIsolatedConnection
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getIsolatedConnection( const ::rtl::OUString& user, const ::rtl::OUString& password ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getIsolatedConnectionWithCompletion( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& handler ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-// XFlushable
- virtual void SAL_CALL flush( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL addFlushListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XFlushListener >& l ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeFlushListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XFlushListener >& l ) throw (::com::sun::star::uno::RuntimeException);
-
- // XFlushListener
- virtual void SAL_CALL flushed( const ::com::sun::star::lang::EventObject& rEvent ) throw (::com::sun::star::uno::RuntimeException);
-
- // XDocumentDataSource
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XOfficeDatabaseDocument > SAL_CALL getDatabaseDocument() throw (::com::sun::star::uno::RuntimeException);
-
-protected:
- // ModelDependentComponent overridables
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getThis() const;
-
-private:
-// helper
- /** open a connection for the current settings. this is the simple connection we get from the driver
- manager, so it can be used as a master for a "high level" sdb connection.
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > buildLowLevelConnection(
- const ::rtl::OUString& _rUid, const ::rtl::OUString& _rPwd
- );
-
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > buildIsolatedConnection(
- const rtl::OUString& user, const rtl::OUString& password
- );
-
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( const ::rtl::OUString& user, const ::rtl::OUString& password , sal_Bool _bIsolated) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL connectWithCompletion( const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler >& handler , sal_Bool _bIsolated) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- void clearConnections();
-
-protected:
- using ::cppu::OPropertySetHelper::getFastPropertyValue;
-};
-
-} // namespace dbaccess
-
-#endif // _DBA_COREDATAACCESS_DATALINK_HXX_
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/definitioncontainer.cxx b/dbaccess/source/core/dataaccess/definitioncontainer.cxx
deleted file mode 100644
index 096caca68..000000000
--- a/dbaccess/source/core/dataaccess/definitioncontainer.cxx
+++ /dev/null
@@ -1,683 +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_dbaccess.hxx"
-
-#include "definitioncontainer.hxx"
-#include "dbastrings.hrc"
-#include "apitools.hxx"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <osl/diagnose.h>
-#include <comphelper/sequence.hxx>
-#include <comphelper/enumhelper.hxx>
-#include <comphelper/extract.hxx>
-#include <com/sun/star/lang/XComponent.hpp>
-#include <com/sun/star/ucb/CommandInfo.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/sdb/ErrorCondition.hpp>
-#include <comphelper/types.hxx>
-#include <ucbhelper/contentidentifier.hxx>
-#include <o3tl/compat_functional.hxx>
-
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::sdbcx;
-using namespace ::com::sun::star::sdb;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-using namespace ::com::sun::star::ucb;
-
-namespace dbaccess
-{
-
-//==========================================================================
-//= ODefinitionContainer_Impl
-//==========================================================================
-void ODefinitionContainer_Impl::erase( TContentPtr _pDefinition )
-{
- NamedDefinitions::iterator aPos = find( _pDefinition );
- if ( aPos != end() )
- m_aDefinitions.erase( aPos );
-}
-
-ODefinitionContainer_Impl::const_iterator ODefinitionContainer_Impl::find( TContentPtr _pDefinition ) const
-{
- return ::std::find_if(
- m_aDefinitions.begin(),
- m_aDefinitions.end(),
- ::o3tl::compose1(
- ::std::bind2nd( ::std::equal_to< TContentPtr >(), _pDefinition ),
- ::o3tl::select2nd< NamedDefinitions::value_type >()
- )
- );
-}
-
-ODefinitionContainer_Impl::iterator ODefinitionContainer_Impl::find( TContentPtr _pDefinition )
-{
- return ::std::find_if(
- m_aDefinitions.begin(),
- m_aDefinitions.end(),
- ::o3tl::compose1(
- ::std::bind2nd( ::std::equal_to< TContentPtr >(), _pDefinition ),
- ::o3tl::select2nd< NamedDefinitions::value_type >()
- )
- );
-}
-
-//==========================================================================
-//= ODefinitionContainer
-//==========================================================================
-DBG_NAME(ODefinitionContainer)
-
-ODefinitionContainer::ODefinitionContainer( const Reference< XMultiServiceFactory >& _xORB
- , const Reference< XInterface >& _xParentContainer
- , const TContentPtr& _pImpl
- , bool _bCheckSlash
- )
- :OContentHelper(_xORB,_xParentContainer,_pImpl)
- ,m_aApproveListeners(m_aMutex)
- ,m_aContainerListeners(m_aMutex)
- ,m_bInPropertyChange(sal_False)
- ,m_bCheckSlash(_bCheckSlash)
-{
- m_pImpl->m_aProps.bIsDocument = sal_False;
- m_pImpl->m_aProps.bIsFolder = sal_True;
-
- const ODefinitionContainer_Impl& rDefinitions( getDefinitions() );
- ODefinitionContainer_Impl::const_iterator aEnd = rDefinitions.end();
- for ( ODefinitionContainer_Impl::const_iterator aDefinition = rDefinitions.begin();
- aDefinition != aEnd;
- ++aDefinition
- )
- m_aDocuments.push_back(
- m_aDocumentMap.insert(
- Documents::value_type( aDefinition->first, Documents::mapped_type() ) ).first );
-
- DBG_CTOR(ODefinitionContainer, NULL);
-}
-
-void SAL_CALL ODefinitionContainer::disposing()
-{
- OContentHelper::disposing();
-
- MutexGuard aGuard(m_aMutex);
-
- // say goodbye to our listeners
- EventObject aEvt(*this);
- m_aApproveListeners.disposeAndClear(aEvt);
- m_aContainerListeners.disposeAndClear(aEvt);
-
- // dispose our elements
- Documents::iterator aIter = m_aDocumentMap.begin();
- Documents::iterator aEnd = m_aDocumentMap.end();
-
- for (; aIter != aEnd; ++aIter)
- {
- Reference<XContent> xProp = aIter->second;
- if ( xProp.is() )
- {
- removeObjectListener(xProp);
- ::comphelper::disposeComponent(xProp);
- }
- }
-
- // remove our elements
- m_aDocuments.clear();
- // !!! do this before clearing the map which the vector elements refer to !!!
- m_aDocumentMap.clear();
-}
-
-ODefinitionContainer::~ODefinitionContainer()
-{
- DBG_DTOR(ODefinitionContainer, NULL);
-}
-
-IMPLEMENT_FORWARD_XINTERFACE2( ODefinitionContainer,OContentHelper,ODefinitionContainer_Base)
-IMPLEMENT_TYPEPROVIDER2(ODefinitionContainer,OContentHelper,ODefinitionContainer_Base);
-// XServiceInfo
-::rtl::OUString SAL_CALL ODefinitionContainer::getImplementationName( ) throw(RuntimeException)
-{
- return ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.ODefinitionContainer"));
-}
-
-Sequence< ::rtl::OUString > SAL_CALL ODefinitionContainer::getSupportedServiceNames( ) throw(RuntimeException)
-{
- Sequence< ::rtl::OUString > aReturn(2);
- aReturn.getArray()[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.sdb.DefinitionContainer"));
- aReturn.getArray()[1] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.ucb.Content"));
- return aReturn;
-}
-
-// XNameContainer
-void SAL_CALL ODefinitionContainer::insertByName( const ::rtl::OUString& _rName, const Any& aElement ) throw(IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException)
-{
- ResettableMutexGuard aGuard(m_aMutex);
-
- // approve the new object
- Reference< XContent > xNewElement(aElement,UNO_QUERY);
- approveNewObject( _rName, xNewElement ); // will throw if necessary
-
- notifyByName( aGuard, _rName, xNewElement, NULL, E_INSERTED, ApproveListeners );
- implAppend( _rName, xNewElement );
- notifyByName( aGuard, _rName, xNewElement, NULL, E_INSERTED, ContainerListemers );
-}
-
-void SAL_CALL ODefinitionContainer::removeByName( const ::rtl::OUString& _rName ) throw(NoSuchElementException, WrappedTargetException, RuntimeException)
-{
- ResettableMutexGuard aGuard(m_aMutex);
-
- // check the arguments
- if (!_rName.getLength())
- throw IllegalArgumentException();
-
- if (!checkExistence(_rName))
- throw NoSuchElementException(_rName,*this);
-
- // the old element (for the notifications)
- Reference< XContent > xOldElement = implGetByName( _rName, impl_haveAnyListeners_nothrow() );
-
- // do the removal
- notifyByName( aGuard, _rName, NULL, xOldElement, E_REMOVED, ApproveListeners );
- implRemove( _rName );
- notifyByName( aGuard, _rName, NULL, xOldElement, E_REMOVED, ContainerListemers );
-
- removeObjectListener( xOldElement );
- disposeComponent(xOldElement);
-}
-
-// XNameReplace
-void SAL_CALL ODefinitionContainer::replaceByName( const ::rtl::OUString& _rName, const Any& aElement ) throw(IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException)
-{
- ResettableMutexGuard aGuard(m_aMutex);
-
- // let derived classes approve the new object
- Reference< XContent > xNewElement(aElement,UNO_QUERY);
- approveNewObject( _rName, xNewElement ); // will throw if necessary
-
- // the old element (for the notifications)
- Reference< XContent > xOldElement = implGetByName( _rName, impl_haveAnyListeners_nothrow() );
-
- notifyByName( aGuard, _rName, xNewElement, xOldElement, E_REPLACED, ApproveListeners );
- implReplace( _rName, xNewElement );
- notifyByName( aGuard, _rName, xNewElement, xOldElement, E_REPLACED, ContainerListemers );
-
- // and dispose it
- disposeComponent(xOldElement);
-}
-
-namespace
-{
- typedef Reference< XVeto > ( SAL_CALL XContainerApproveListener::*ContainerApprovalMethod )( const ContainerEvent& );
-
- struct RaiseExceptionFromVeto
- {
- private:
- ContainerApprovalMethod m_pMethod;
- const ContainerEvent& m_rEvent;
-
- public:
- RaiseExceptionFromVeto( ContainerApprovalMethod _pMethod, const ContainerEvent& _rEvent )
- :m_pMethod( _pMethod )
- ,m_rEvent( _rEvent )
- {
- }
-
- void operator()( const Reference< XContainerApproveListener >& _Listener ) const
- {
- Reference< XVeto > xVeto = (_Listener.get()->*m_pMethod)( m_rEvent );
- if ( !xVeto.is() )
- return;
-
- Any eVetoDetails = xVeto->getDetails();
-
- IllegalArgumentException aIllegalArgumentError;
- if ( eVetoDetails >>= aIllegalArgumentError )
- throw aIllegalArgumentError;
-
- WrappedTargetException aWrappedError;
- if ( eVetoDetails >>= aWrappedError )
- throw aWrappedError;
-
- throw WrappedTargetException( xVeto->getReason(), _Listener.get(), eVetoDetails );
- }
- };
-}
-
-void ODefinitionContainer::notifyByName( ResettableMutexGuard& _rGuard, const ::rtl::OUString& _rName,
- const Reference< XContent >& _xNewElement, const Reference< XContent >& _xOldElement,
- ContainerOperation _eOperation, ListenerType _eType )
-{
- bool bApprove = ( _eType == ApproveListeners );
-
- ::cppu::OInterfaceContainerHelper& rContainer( bApprove ? m_aApproveListeners : m_aContainerListeners );
- if ( !rContainer.getLength() )
- return;
-
- ContainerEvent aEvent( *this, makeAny( _rName ), makeAny( _xNewElement ), makeAny( _xOldElement ) );
-
- _rGuard.clear();
- switch ( _eOperation )
- {
- case E_INSERTED:
- if ( bApprove )
- rContainer.forEach< XContainerApproveListener, RaiseExceptionFromVeto >(
- RaiseExceptionFromVeto( &XContainerApproveListener::approveInsertElement, aEvent ) );
- else
- rContainer.notifyEach( &XContainerListener::elementInserted, aEvent );
- break;
- case E_REPLACED:
- if ( bApprove )
- rContainer.forEach< XContainerApproveListener, RaiseExceptionFromVeto >(
- RaiseExceptionFromVeto( &XContainerApproveListener::approveReplaceElement, aEvent ) );
- else
- rContainer.notifyEach( &XContainerListener::elementReplaced, aEvent );
- break;
- case E_REMOVED:
- if ( bApprove )
- rContainer.forEach< XContainerApproveListener, RaiseExceptionFromVeto >(
- RaiseExceptionFromVeto( &XContainerApproveListener::approveRemoveElement, aEvent ) );
- else
- rContainer.notifyEach( &XContainerListener::elementRemoved, aEvent );
- break;
- }
-
- if ( bApprove )
- _rGuard.reset();
-}
-
-void SAL_CALL ODefinitionContainer::addContainerListener( const Reference< XContainerListener >& _rxListener ) throw(RuntimeException)
-{
- if (_rxListener.is())
- m_aContainerListeners.addInterface(_rxListener);
-}
-
-void SAL_CALL ODefinitionContainer::removeContainerListener( const Reference< XContainerListener >& _rxListener ) throw(RuntimeException)
-{
- if (_rxListener.is())
- m_aContainerListeners.removeInterface(_rxListener);
-}
-
-void SAL_CALL ODefinitionContainer::addContainerApproveListener( const Reference< XContainerApproveListener >& _Listener ) throw (RuntimeException)
-{
- if ( _Listener.is() )
- m_aApproveListeners.addInterface( _Listener );
-}
-
-void SAL_CALL ODefinitionContainer::removeContainerApproveListener( const Reference< XContainerApproveListener >& _Listener ) throw (RuntimeException)
-{
- if ( _Listener.is() )
- m_aApproveListeners.removeInterface( _Listener );
-}
-
-// XElementAccess
-Type SAL_CALL ODefinitionContainer::getElementType( ) throw (RuntimeException)
-{
- return ::getCppuType( static_cast< Reference< XContent >* >(NULL) );
-}
-
-sal_Bool SAL_CALL ODefinitionContainer::hasElements( ) throw (RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- return !m_aDocuments.empty();
-}
-
-// XEnumerationAccess
-Reference< XEnumeration > SAL_CALL ODefinitionContainer::createEnumeration( ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- return new ::comphelper::OEnumerationByIndex(static_cast<XIndexAccess*>(this));
-}
-
-// XIndexAccess
-sal_Int32 SAL_CALL ODefinitionContainer::getCount( ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- return m_aDocuments.size();
-}
-
-Any SAL_CALL ODefinitionContainer::getByIndex( sal_Int32 _nIndex ) throw(IndexOutOfBoundsException, WrappedTargetException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
-
- if ((_nIndex < 0) || (_nIndex >= (sal_Int32)m_aDocuments.size()))
- throw IndexOutOfBoundsException();
-
- Documents::iterator aPos = m_aDocuments[_nIndex];
- Reference<XContent> xProp = aPos->second;
- if (!xProp.is())
- { // that's the first access to the object
- // -> create it
- xProp = createObject(aPos->first);
- aPos->second = Documents::mapped_type();
- // and update the name-access map
- }
-
- return makeAny(xProp);
-}
-
-Any SAL_CALL ODefinitionContainer::getByName( const ::rtl::OUString& _rName ) throw(NoSuchElementException, WrappedTargetException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
-
- return makeAny( implGetByName( _rName, sal_True ) );
-}
-
-Reference< XContent > ODefinitionContainer::implGetByName(const ::rtl::OUString& _rName, sal_Bool _bReadIfNeccessary) throw (NoSuchElementException)
-{
- Documents::iterator aMapPos = m_aDocumentMap.find(_rName);
- if (aMapPos == m_aDocumentMap.end())
- throw NoSuchElementException(_rName,*this);
-
- Reference< XContent > xProp = aMapPos->second;
-
- if (_bReadIfNeccessary && !xProp.is())
- { // the object has never been accessed before, so we have to read it now
- // (that's the expensive part)
-
- // create the object and insert it into the map
- xProp = createObject(_rName);
- aMapPos->second = xProp;
- addObjectListener(xProp);
- }
-
- return xProp;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL ODefinitionContainer::getElementNames( ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
-
- Sequence< ::rtl::OUString > aNames(m_aDocumentMap.size());
- ::rtl::OUString* pNames = aNames.getArray();
- Documents::iterator aEnd = m_aDocumentMap.end();
- for ( Documents::iterator aNameIter = m_aDocumentMap.begin();
- aNameIter != aEnd;
- ++pNames, ++aNameIter
- )
- {
- *pNames = aNameIter->first;
- }
-
- return aNames;
-}
-
-sal_Bool SAL_CALL ODefinitionContainer::hasByName( const ::rtl::OUString& _rName ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
-
- return checkExistence(_rName);
-}
-
-void SAL_CALL ODefinitionContainer::disposing( const EventObject& _rSource ) throw(RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- Reference< XContent > xSource(_rSource.Source, UNO_QUERY);
- // it's one of our documents ....
- Documents::iterator aIter = m_aDocumentMap.begin();
- Documents::iterator aEnd = m_aDocumentMap.end();
- for (;aIter != aEnd;++aIter )
- {
- if ( xSource == aIter->second.get() )
- {
- removeObjectListener(xSource);
- // and clear our document map/vector, so the object will be recreated on next access
- aIter->second = Documents::mapped_type();
- }
- }
-}
-
-void ODefinitionContainer::implRemove(const ::rtl::OUString& _rName)
-{
- // from the object maps
- Documents::iterator aFind = m_aDocumentMap.find(_rName);
- if ( aFind != m_aDocumentMap.end() )
- {
- m_aDocuments.erase( ::std::find(m_aDocuments.begin(),m_aDocuments.end(),aFind));
- m_aDocumentMap.erase(aFind);
-
- getDefinitions().erase( _rName );
-
- notifyDataSourceModified();
- }
-}
-
-namespace
-{
- bool lcl_ensureName( const Reference< XContent >& _rxContent, const ::rtl::OUString& _rName )
- {
- if ( !_rxContent.is() )
- return true;
-
- // obtain the current name. If it's the same as the new one,
- // don't do anything
- try
- {
- Reference< XPropertySet > xProps( _rxContent, UNO_QUERY );
- if ( xProps.is() )
- {
- ::rtl::OUString sCurrentName;
- OSL_VERIFY( xProps->getPropertyValue( PROPERTY_NAME ) >>= sCurrentName );
- if ( sCurrentName.equals( _rName ) )
- return true;
- }
- }
- catch( const Exception& )
- {
- OSL_FAIL( "lcl_ensureName: caught an exception while obtaining the current name!" );
- }
-
- // set the new name
- Reference< XRename > xRename( _rxContent, UNO_QUERY );
- OSL_ENSURE( xRename.is(), "lcl_ensureName: invalid content (not renameable)!" );
- if ( !xRename.is() )
- return false;
- try
- {
- xRename->rename( _rName );
- return true;
- }
- catch( const Exception& )
- {
- OSL_FAIL( "lcl_ensureName: caught an exception!" );
- }
- return false;
- }
-}
-
-void ODefinitionContainer::implAppend(const ::rtl::OUString& _rName, const Reference< XContent >& _rxNewObject)
-{
- MutexGuard aGuard(m_aMutex);
- try
- {
- Reference<XChild> xChild(_rxNewObject,UNO_QUERY);
- if ( xChild.is() )
- xChild->setParent(static_cast<OWeakObject*>(this));
-
- ODefinitionContainer_Impl& rDefinitions( getDefinitions() );
- ODefinitionContainer_Impl::const_iterator aFind = rDefinitions.find( _rName );
- if ( aFind == rDefinitions.end() )
- {
- // ensure that the new object has the proper name.
- // Somebody could create an object with name "foo", and insert it as "bar"
- // into a container. In this case, we need to ensure that the object name
- // is also "bar"
- // #i44786#
- lcl_ensureName( _rxNewObject, _rName );
-
- ::rtl::Reference< OContentHelper > pContent = OContentHelper::getImplementation( _rxNewObject );
- if ( pContent.is() )
- {
- TContentPtr pImpl = pContent->getImpl();
- rDefinitions.erase( pImpl );
- pImpl->m_aProps.aTitle = _rName;
- rDefinitions.insert( _rName, pImpl );
- }
- }
-
-
- m_aDocuments.push_back(m_aDocumentMap.insert(Documents::value_type(_rName,_rxNewObject)).first);
- notifyDataSourceModified();
- // now update our structures
- if ( _rxNewObject.is() )
- addObjectListener(_rxNewObject);
- }
- catch(Exception&)
- {
- OSL_FAIL("ODefinitionContainer::implAppend: caught something !");
- }
-}
-
-void ODefinitionContainer::implReplace(const ::rtl::OUString& _rName, const Reference< XContent >& _rxNewObject)
-{
- OSL_ENSURE(checkExistence(_rName), "ODefinitionContainer::implReplace : invalid name !");
-
- Documents::iterator aFind = m_aDocumentMap.find(_rName);
- removeObjectListener(aFind->second);
- aFind->second = _rxNewObject;
- addObjectListener(aFind->second);
-}
-
-void ODefinitionContainer::approveNewObject(const ::rtl::OUString& _sName,const Reference< XContent >& _rxObject) const
-{
- // check the arguments
- if ( !_sName.getLength() )
- throw IllegalArgumentException(
- DBA_RES( RID_STR_NAME_MUST_NOT_BE_EMPTY ),
- *this,
- 0 );
-
- if ( m_bCheckSlash && _sName.indexOf( '/' ) != -1 )
- throw IllegalArgumentException(
- m_aErrorHelper.getErrorMessage( ErrorCondition::DB_OBJECT_NAME_WITH_SLASHES ),
- *this,
- 0 );
-
- if ( !_rxObject.is() )
- throw IllegalArgumentException(
- DBA_RES( RID_STR_NO_NULL_OBJECTS_IN_CONTAINER ),
- *this,
- 0 );
-
- const ODefinitionContainer_Impl& rDefinitions( getDefinitions() );
- if ( rDefinitions.find( _sName ) != rDefinitions.end() )
- throw ElementExistException(
- DBA_RES( RID_STR_NAME_ALREADY_USED ),
- *this );
-
- ::rtl::Reference< OContentHelper > pContent( OContentHelper::getImplementation( _rxObject ) );
- if ( !pContent.is() )
- throw IllegalArgumentException(
- DBA_RES( RID_STR_OBJECT_CONTAINER_MISMATCH ),
- *this,
- 1 );
-
- if ( rDefinitions.find( pContent->getImpl() ) != rDefinitions.end() )
- throw ElementExistException(
- DBA_RES( RID_STR_OBJECT_ALREADY_CONTAINED ),
- *this );
-}
-
-// XPropertyChangeListener
-void SAL_CALL ODefinitionContainer::propertyChange( const PropertyChangeEvent& evt ) throw (RuntimeException)
-{
- ClearableMutexGuard aGuard(m_aMutex);
- if(evt.PropertyName == (rtl::OUString) PROPERTY_NAME || evt.PropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Title" ) ))
- {
- m_bInPropertyChange = sal_True;
- try
- {
- ::rtl::OUString sNewName,sOldName;
- evt.OldValue >>= sOldName;
- evt.NewValue >>= sNewName;
- Reference<XContent> xContent( evt.Source, UNO_QUERY );
- removeObjectListener( xContent );
- implRemove( sOldName );
- implAppend( sNewName, xContent );
- }
- catch(const Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- throw RuntimeException();
- }
- m_bInPropertyChange = sal_False;
- }
-}
-
-// XVetoableChangeListener
-void SAL_CALL ODefinitionContainer::vetoableChange( const PropertyChangeEvent& aEvent ) throw (PropertyVetoException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
-
- if(aEvent.PropertyName == (rtl::OUString) PROPERTY_NAME || aEvent.PropertyName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Title" ) ) )
- {
- ::rtl::OUString sNewName;
- aEvent.NewValue >>= sNewName;
- if(hasByName(sNewName))
- throw PropertyVetoException();
- }
-}
-
-void ODefinitionContainer::addObjectListener(const Reference< XContent >& _xNewObject)
-{
- OSL_ENSURE(_xNewObject.is(),"ODefinitionContainer::addObjectListener: Object is null!");
- Reference<XPropertySet> xProp(_xNewObject,UNO_QUERY);
- if ( xProp.is() )
- {
- xProp->addPropertyChangeListener(PROPERTY_NAME, this);
- xProp->addVetoableChangeListener(PROPERTY_NAME, this);
- }
-}
-
-void ODefinitionContainer::removeObjectListener(const Reference< XContent >& _xNewObject)
-{
- Reference<XPropertySet> xProp(_xNewObject,UNO_QUERY);
- if ( xProp.is() )
- {
- xProp->removePropertyChangeListener(PROPERTY_NAME, this);
- xProp->removeVetoableChangeListener(PROPERTY_NAME, this);
- }
-}
-
-sal_Bool ODefinitionContainer::checkExistence(const ::rtl::OUString& _rName)
-{
- return m_aDocumentMap.find(_rName) != m_aDocumentMap.end();
-}
-
-}
-// namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/documentcontainer.cxx b/dbaccess/source/core/dataaccess/documentcontainer.cxx
deleted file mode 100644
index b3b7c1ab0..000000000
--- a/dbaccess/source/core/dataaccess/documentcontainer.cxx
+++ /dev/null
@@ -1,781 +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_dbaccess.hxx"
-
-#include "documentcontainer.hxx"
-#include "dbastrings.hrc"
-#include "documentdefinition.hxx"
-#include <com/sun/star/ucb/OpenCommandArgument2.hpp>
-#include <com/sun/star/ucb/OpenMode.hpp>
-#include <tools/debug.hxx>
-#include <connectivity/dbtools.hxx>
-#include "myucp_resultset.hxx"
-#include <ucbhelper/cancelcommandexecution.hxx>
-#include <com/sun/star/ucb/UnsupportedOpenModeException.hpp>
-#include <com/sun/star/ucb/InsertCommandArgument.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/sdb/ErrorCondition.hpp>
-#include "datasource.hxx"
-#include <comphelper/classids.hxx>
-#include <comphelper/mimeconfighelper.hxx>
-#include <comphelper/string.hxx>
-#include <connectivity/sqlerror.hxx>
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include <comphelper/namedvaluecollection.hxx>
-
-#include <vcl/svapp.hxx>
-#include <osl/mutex.hxx>
-#include <comphelper/namedvaluecollection.hxx>
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::embed;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::container;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::sdb;
-using namespace ::com::sun::star::io;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-namespace dbaccess
-{
-
-//==========================================================================
-//= LocalNameApproval
-//==========================================================================
-class LocalNameApproval : public IContainerApprove
-{
- ::connectivity::SQLError m_aErrors;
-
-public:
- LocalNameApproval( const Reference< XMultiServiceFactory >& _rxFactory )
- :m_aErrors( ::comphelper::ComponentContext( _rxFactory ) )
- {
- }
- virtual ~LocalNameApproval()
- {
- }
-
- void SAL_CALL approveElement( const ::rtl::OUString& _rName, const Reference< XInterface >& _rxElement );
-};
-
-void SAL_CALL LocalNameApproval::approveElement( const ::rtl::OUString& _rName, const Reference< XInterface >& /*_rxElement*/ )
-{
- if ( _rName.indexOf( '/' ) != -1 )
- throw IllegalArgumentException(
- m_aErrors.getErrorMessage( ErrorCondition::DB_OBJECT_NAME_WITH_SLASHES ),
- NULL,
- 0
- );
-}
-
-//==========================================================================
-//= ODocumentContainer
-//==========================================================================
-DBG_NAME(ODocumentContainer)
-
-ODocumentContainer::ODocumentContainer(const Reference< XMultiServiceFactory >& _xORB
- ,const Reference< XInterface >& _xParentContainer
- ,const TContentPtr& _pImpl
- , sal_Bool _bFormsContainer
- )
- :ODefinitionContainer(_xORB,_xParentContainer,_pImpl)
- ,OPropertyStateContainer(OContentHelper::rBHelper)
- ,m_bFormsContainer(_bFormsContainer)
-{
- DBG_CTOR(ODocumentContainer, NULL);
- registerProperty(PROPERTY_NAME, PROPERTY_ID_NAME, PropertyAttribute::BOUND | PropertyAttribute::READONLY | PropertyAttribute::CONSTRAINED,
- &m_pImpl->m_aProps.aTitle, ::getCppuType(&m_pImpl->m_aProps.aTitle));
-
- setElementApproval( PContainerApprove( new LocalNameApproval ( _xORB ) ) );
-}
-
-ODocumentContainer::~ODocumentContainer()
-{
- DBG_DTOR(ODocumentContainer, NULL);
-
- if ( !OContentHelper::rBHelper.bInDispose && !OContentHelper::rBHelper.bDisposed )
- {
- acquire();
- dispose();
- }
-}
-
-IMPLEMENT_FORWARD_XINTERFACE3( ODocumentContainer,ODefinitionContainer,ODocumentContainer_Base,OPropertyStateContainer)
-IMPLEMENT_TYPEPROVIDER3(ODocumentContainer,ODefinitionContainer,OPropertyStateContainer,ODocumentContainer_Base);
-IMPLEMENT_SERVICE_INFO_IMPLNAME(ODocumentContainer, "com.sun.star.comp.dba.ODocumentContainer");
-IMPLEMENT_SERVICE_INFO_SUPPORTS(ODocumentContainer);
-IMPLEMENT_PROPERTYCONTAINER_DEFAULTS(ODocumentContainer)
-
-Sequence< ::rtl::OUString > SAL_CALL ODocumentContainer::getSupportedServiceNames( ) throw(RuntimeException)
-{
- Sequence< ::rtl::OUString > aSupported(1);
- aSupported[0] = m_bFormsContainer ? SERVICE_NAME_FORM_COLLECTION : SERVICE_NAME_REPORT_COLLECTION;
- return aSupported;
-}
-
-::rtl::OUString ODocumentContainer::determineContentType() const
-{
- return ::rtl::OUString();
-}
-
-Reference< XContent > ODocumentContainer::createObject( const ::rtl::OUString& _rName)
-{
- const ODefinitionContainer_Impl& rDefinitions( getDefinitions() );
- ODefinitionContainer_Impl::const_iterator aFind = rDefinitions.find( _rName );
- OSL_ENSURE( aFind != rDefinitions.end(), "ODocumentContainer::createObject:Invalid entry in map!" );
- if ( aFind->second->m_aProps.bIsFolder )
- return new ODocumentContainer( m_aContext.getLegacyServiceFactory(), *this, aFind->second, m_bFormsContainer );
- return new ODocumentDefinition( *this, m_aContext.getLegacyServiceFactory(), aFind->second, m_bFormsContainer );
-}
-
-Reference< XInterface > SAL_CALL ODocumentContainer::createInstance( const ::rtl::OUString& aServiceSpecifier ) throw (Exception, RuntimeException)
-{
- return createInstanceWithArguments( aServiceSpecifier, Sequence< Any >() );
-}
-
-namespace
-{
- template< class TYPE >
- void lcl_extractAndRemove( ::comphelper::NamedValueCollection& io_rArguments, const ::rtl::OUString& i_rName, TYPE& o_rValue )
- {
- if ( io_rArguments.has( i_rName ) )
- {
- io_rArguments.get_ensureType( i_rName, o_rValue );
- io_rArguments.remove( i_rName );
- }
- }
-}
-
-Reference< XInterface > SAL_CALL ODocumentContainer::createInstanceWithArguments( const ::rtl::OUString& ServiceSpecifier, const Sequence< Any >& _aArguments ) throw (Exception, RuntimeException)
-{
- Reference< XInterface > xRet;
- Reference< XContent > xContent;
- if ( ServiceSpecifier == SERVICE_SDB_DOCUMENTDEFINITION )
- {
- MutexGuard aGuard(m_aMutex);
-
- // extract known arguments
- ::rtl::OUString sName, sPersistentName, sURL, sMediaType, sDocServiceName;
- Reference< XCommandProcessor > xCopyFrom;
- Reference< XConnection > xConnection;
- sal_Bool bAsTemplate( sal_False );
- Sequence< sal_Int8 > aClassID;
-
- ::comphelper::NamedValueCollection aArgs( _aArguments );
- lcl_extractAndRemove( aArgs, PROPERTY_NAME, sName );
- lcl_extractAndRemove( aArgs, PROPERTY_PERSISTENT_NAME, sPersistentName );
- lcl_extractAndRemove( aArgs, PROPERTY_URL, sURL );
- lcl_extractAndRemove( aArgs, PROPERTY_EMBEDDEDOBJECT, xCopyFrom );
- lcl_extractAndRemove( aArgs, PROPERTY_ACTIVE_CONNECTION, xConnection );
- lcl_extractAndRemove( aArgs, PROPERTY_AS_TEMPLATE, bAsTemplate );
- lcl_extractAndRemove( aArgs, INFO_MEDIATYPE, sMediaType );
- lcl_extractAndRemove( aArgs, ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DocumentServiceName" ) ), sDocServiceName );
-
- // ClassID has two allowed types, so a special treatment here
- Any aClassIDArg = aArgs.get( "ClassID" );
- if ( aClassIDArg.hasValue() )
- {
- if ( !( aClassIDArg >>= aClassID ) )
- {
- // Extended for usage also with a string
- ::rtl::OUString sClassIDString;
- if ( !( aClassIDArg >>= sClassIDString ) )
- throw IllegalArgumentException( ::rtl::OUString(), *this, 2 );
-
- aClassID = ::comphelper::MimeConfigurationHelper::GetSequenceClassIDRepresentation( sClassIDString );
- }
-
-#if OSL_DEBUG_LEVEL > 0
- ::rtl::OUString sClassIDString = ::comphelper::MimeConfigurationHelper::GetStringClassIDRepresentation( aClassID );
- (void)sClassIDString;
-#endif
- aArgs.remove( "ClassID" );
- }
- // Everything which now is still present in the arguments is passed to the embedded object
- const Sequence< PropertyValue > aCreationArgs( aArgs.getPropertyValues() );
-
- const ODefinitionContainer_Impl& rDefinitions( getDefinitions() );
- sal_Bool bNew = ( 0 == sPersistentName.getLength() );
- if ( bNew )
- {
- const static ::rtl::OUString sBaseName(RTL_CONSTASCII_USTRINGPARAM("Obj"));
-
- sPersistentName = sBaseName;
- sPersistentName += ::rtl::OUString::valueOf(sal_Int32(rDefinitions.size() + 1));
- Reference<XNameAccess> xElements(getContainerStorage(),UNO_QUERY);
- if ( xElements.is() )
- sPersistentName = ::dbtools::createUniqueName(xElements,sPersistentName);
-
- const bool bNeedClassID = ( aClassID.getLength() == 0 ) && ( 0 == sURL.getLength() );
- if ( xCopyFrom.is() )
- {
- Sequence<Any> aIni(2);
- aIni[0] <<= getContainerStorage();
- aIni[1] <<= sPersistentName;
- Command aCommand;
- aCommand.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("copyTo"));
- aCommand.Argument <<= aIni;
-
- xCopyFrom->execute(aCommand,-1,Reference< XCommandEnvironment >());
- Reference<XPropertySet> xProp(xCopyFrom,UNO_QUERY);
- if ( xProp.is() && xProp->getPropertySetInfo().is() && xProp->getPropertySetInfo()->hasPropertyByName(PROPERTY_AS_TEMPLATE) )
- xProp->getPropertyValue(PROPERTY_AS_TEMPLATE) >>= bAsTemplate;
-
- // if we do not have an own class ID, see if we can determine one from the copy we just created
- if ( bNeedClassID )
- ODocumentDefinition::GetDocumentServiceFromMediaType( getContainerStorage(), sPersistentName, m_aContext, aClassID );
- }
- else
- {
- if ( bNeedClassID )
- {
- if ( sMediaType.getLength() )
- ODocumentDefinition::GetDocumentServiceFromMediaType( sMediaType, m_aContext, aClassID );
- else if ( sDocServiceName.getLength() )
- {
- ::comphelper::MimeConfigurationHelper aConfigHelper( m_aContext.getLegacyServiceFactory() );
- const Sequence< NamedValue > aProps( aConfigHelper.GetObjectPropsByDocumentName( sDocServiceName ) );
- const ::comphelper::NamedValueCollection aMediaTypeProps( aProps );
- aClassID = aMediaTypeProps.getOrDefault( "ClassID", Sequence< sal_Int8 >() );
- }
- }
- }
- }
-
- ODefinitionContainer_Impl::const_iterator aFind = rDefinitions.find( sName );
- TContentPtr pElementImpl;
- if ( bNew || ( aFind == rDefinitions.end() ) )
- {
- pElementImpl.reset( new OContentHelper_Impl );
- if ( !bNew )
- pElementImpl->m_aProps.aTitle = sName;
-
- pElementImpl->m_aProps.sPersistentName = sPersistentName;
- pElementImpl->m_aProps.bAsTemplate = bAsTemplate;
- pElementImpl->m_pDataSource = m_pImpl->m_pDataSource;
- }
- else
- pElementImpl = aFind->second;
-
- ::rtl::Reference< ODocumentDefinition > pDocDef = new ODocumentDefinition( *this, m_aContext.getLegacyServiceFactory(), pElementImpl, m_bFormsContainer );
- if ( aClassID.getLength() )
- {
- pDocDef->initialLoad( aClassID, aCreationArgs, xConnection );
- }
- else
- {
- OSL_ENSURE( aCreationArgs.getLength() == 0, "ODocumentContainer::createInstance: additional creation args are lost, if you do not provide a class ID." );
- }
- xContent = pDocDef.get();
-
- if ( sURL.getLength() )
- {
- Sequence<Any> aIni(2);
- aIni[0] <<= sURL;
- Command aCommand;
- aCommand.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("insert"));
- aCommand.Argument <<= aIni;
- Reference< XCommandProcessor > xCommandProcessor(xContent,UNO_QUERY);
- if ( xContent.is() )
- {
- xCommandProcessor->execute(aCommand,-1,Reference< XCommandEnvironment >());
- }
- }
- }
- else if ( ServiceSpecifier == SERVICE_NAME_FORM_COLLECTION || SERVICE_NAME_REPORT_COLLECTION == ServiceSpecifier )
- {
- const Any* pBegin = _aArguments.getConstArray();
- const Any* pEnd = pBegin + _aArguments.getLength();
- PropertyValue aValue;
- ::rtl::OUString sName;
- Reference<XNameAccess> xCopyFrom;
- for(;pBegin != pEnd;++pBegin)
- {
- *pBegin >>= aValue;
- if ( aValue.Name.equalsAscii(PROPERTY_NAME) )
- {
- aValue.Value >>= sName;
- }
- else if ( aValue.Name.equalsAscii(PROPERTY_EMBEDDEDOBJECT) )
- {
- xCopyFrom.set(aValue.Value,UNO_QUERY);
- }
- }
- OSL_ENSURE(sName.getLength(),"Invalid name for a document container!");
- const ODefinitionContainer_Impl& rDefinitions( getDefinitions() );
- ODefinitionContainer_Impl::const_iterator aFind = rDefinitions.find( sName );
- TContentPtr pElementImpl;
- if ( aFind == rDefinitions.end() )
- {
- pElementImpl.reset(new ODefinitionContainer_Impl);
- pElementImpl->m_aProps.aTitle = sName;
- pElementImpl->m_pDataSource = m_pImpl->m_pDataSource;
- }
- else
- pElementImpl = aFind->second;
- OSL_ENSURE( pElementImpl ," Invalid entry in map!");
- xContent = new ODocumentContainer( m_aContext.getLegacyServiceFactory(), *this, pElementImpl, ServiceSpecifier == SERVICE_NAME_FORM_COLLECTION );
-
- // copy children
- if ( xCopyFrom.is() )
- {
- Sequence< ::rtl::OUString> aSeq = xCopyFrom->getElementNames();
- const ::rtl::OUString* elements = aSeq.getConstArray();
- const ::rtl::OUString* elementsEnd = elements + aSeq.getLength();
- Reference<XContent> xObjectToCopy;
-
- Reference<XMultiServiceFactory> xORB(xContent,UNO_QUERY);
- OSL_ENSURE(xORB.is(),"No service factory given");
- if ( xORB.is() )
- {
- for(;elements != elementsEnd;++elements)
- {
- xCopyFrom->getByName(*elements) >>= xObjectToCopy;
- Sequence< Any > aArguments(3);
- PropertyValue aArgument;
- // set as folder
- aArgument.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Name"));
- aArgument.Value <<= *elements;
- aArguments[0] <<= aArgument;
- //parent
- aArgument.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Parent"));
- aArgument.Value <<= xContent;
- aArguments[1] <<= aArgument;
-
- aArgument.Name = PROPERTY_EMBEDDEDOBJECT;
- aArgument.Value <<= xObjectToCopy;
- aArguments[2] <<= aArgument;
-
- ::rtl::OUString sServiceName;
- if ( Reference< XNameAccess >( xObjectToCopy, UNO_QUERY ).is() )
- {
- if ( m_bFormsContainer )
- sServiceName = SERVICE_NAME_FORM_COLLECTION;
- else
- sServiceName = SERVICE_NAME_REPORT_COLLECTION;
- }
- else
- sServiceName = SERVICE_SDB_DOCUMENTDEFINITION;
-
- Reference<XContent > xNew(xORB->createInstanceWithArguments(sServiceName,aArguments),UNO_QUERY);
- Reference<XNameContainer> xNameContainer(xContent,UNO_QUERY);
- if ( xNameContainer.is() )
- xNameContainer->insertByName(*elements,makeAny(xNew));
- }
- }
- }
- }
- xRet = xContent;
- return xRet;
-}
-
-Sequence< ::rtl::OUString > SAL_CALL ODocumentContainer::getAvailableServiceNames( ) throw (RuntimeException)
-{
- Sequence< ::rtl::OUString > aSe(3);
- aSe[0] = SERVICE_SDB_DOCUMENTDEFINITION;
- aSe[1] = SERVICE_NAME_FORM_COLLECTION;
- aSe[2] = SERVICE_NAME_REPORT_COLLECTION;
- return aSe;
-}
-
-Any SAL_CALL ODocumentContainer::execute( const Command& aCommand, sal_Int32 CommandId, const Reference< XCommandEnvironment >& Environment ) throw (Exception, CommandAbortedException, RuntimeException)
-{
- Any aRet;
- if ( aCommand.Name.compareToAscii( "open" ) == 0 )
- {
- //////////////////////////////////////////////////////////////////
- // open command for a folder content
- //////////////////////////////////////////////////////////////////
- OpenCommandArgument2 aOpenCommand;
- if ( !( aCommand.Argument >>= aOpenCommand ) )
- {
- OSL_FAIL( "Wrong argument type!" );
- ucbhelper::cancelCommandExecution(
- makeAny( IllegalArgumentException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ),
- -1 ) ),
- Environment );
- // Unreachable
- }
- sal_Bool bOpenFolder =
- ( ( aOpenCommand.Mode == OpenMode::ALL ) ||
- ( aOpenCommand.Mode == OpenMode::FOLDERS ) ||
- ( aOpenCommand.Mode == OpenMode::DOCUMENTS ) );
-
- if ( bOpenFolder )
- {
- // open as folder - return result set
-
- Reference< XDynamicResultSet > xSet
- = new DynamicResultSet( m_aContext.getLegacyServiceFactory(),
- this,
- aOpenCommand,
- Environment );
- aRet <<= xSet;
- }
- else
- {
- // Unsupported.
- ucbhelper::cancelCommandExecution(
- makeAny( UnsupportedOpenModeException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ),
- sal_Int16( aOpenCommand.Mode ) ) ),
- Environment );
- // Unreachable
- }
- }
- else if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "insert" ) ) )
- {
- //////////////////////////////////////////////////////////////////
- // insert
- //////////////////////////////////////////////////////////////////
-
- InsertCommandArgument arg;
- if ( !( aCommand.Argument >>= arg ) )
- {
- OSL_FAIL( "Wrong argument type!" );
- ucbhelper::cancelCommandExecution(
- makeAny( IllegalArgumentException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ),
- -1 ) ),
- Environment );
- // Unreachable
- }
- }
- else if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "delete" ) ) )
- {
- //////////////////////////////////////////////////////////////////
- // delete
- //////////////////////////////////////////////////////////////////
- Sequence< ::rtl::OUString> aSeq = getElementNames();
- const ::rtl::OUString* pIter = aSeq.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aSeq.getLength();
- for(;pIter != pEnd;++pIter)
- removeByName(*pIter);
-
- dispose();
- }
- else
- aRet = OContentHelper::execute(aCommand,CommandId,Environment);
- return aRet;
-}
-
-namespace
-{
- sal_Bool lcl_queryContent(const ::rtl::OUString& _sName,Reference< XNameContainer >& _xNameContainer,Any& _rRet,::rtl::OUString& _sSimpleName)
- {
- sal_Bool bRet = sal_False;
- sal_Int32 nIndex = 0;
- ::rtl::OUString sName = _sName.getToken(0,'/',nIndex);
- bRet = _xNameContainer->hasByName(sName);
- if ( bRet )
- {
- _rRet = _xNameContainer->getByName(_sSimpleName = sName);
- while ( nIndex != -1 && bRet )
- {
- sName = _sName.getToken(0,'/',nIndex);
- _xNameContainer.set(_rRet,UNO_QUERY);
- bRet = _xNameContainer.is();
- if ( bRet )
- {
- bRet = _xNameContainer->hasByName(sName);
- _sSimpleName = sName;
- if ( bRet )
- _rRet = _xNameContainer->getByName(sName);
- }
- }
- }
- if ( nIndex == -1 )
- _sSimpleName = sName; // a content
- else
- _xNameContainer.clear(); // a sub folder doesn't exist
- return bRet;
- }
-}
-
-Reference< XComponent > SAL_CALL ODocumentContainer::loadComponentFromURL( const ::rtl::OUString& _sURL
- , const ::rtl::OUString& /*TargetFrameName*/
- , sal_Int32 /*SearchFlags*/
- , const Sequence< PropertyValue >& Arguments ) throw (IOException, IllegalArgumentException, RuntimeException)
-{
- ::SolarMutexGuard aSolarGuard;
-
- MutexGuard aGuard(m_aMutex);
- Reference< XComponent > xComp;
- try
- {
- Any aContent;
- Reference< XNameContainer > xNameContainer(this);
- ::rtl::OUString sName;
- if ( !lcl_queryContent(_sURL,xNameContainer,aContent,sName) )
- {
- ::rtl::OUString sMessage( DBA_RES( RID_STR_NAME_NOT_FOUND ) );
- ::comphelper::string::searchAndReplaceAsciiI( sMessage, "$name$", _sURL );
- throw IllegalArgumentException( sMessage, *this, 1 );
- }
-
- Reference< XCommandProcessor > xContent(aContent,UNO_QUERY);
- if ( xContent.is() )
- {
- Command aCommand;
-
- ::comphelper::NamedValueCollection aArgs( Arguments );
- aCommand.Name = aArgs.getOrDefault( "OpenMode", ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "open" ) ) );
- aArgs.remove( "OpenMode" );
-
- OpenCommandArgument2 aOpenCommand;
- aOpenCommand.Mode = OpenMode::DOCUMENT;
- aArgs.put( "OpenCommandArgument", aOpenCommand );
-
- aCommand.Argument <<= aArgs.getPropertyValues();
- xComp.set(xContent->execute(aCommand,xContent->createCommandIdentifier(),Reference< XCommandEnvironment >()),UNO_QUERY);
- }
- }
- catch(const NoSuchElementException&)
- {
- throw IllegalArgumentException();
- }
- catch(const WrappedTargetException&)
- {
- throw;
- }
- return xComp;
-}
-
-Any SAL_CALL ODocumentContainer::getByHierarchicalName( const ::rtl::OUString& _sName ) throw (NoSuchElementException, RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- Any aContent;
- Reference< XNameContainer > xNameContainer(this);
- ::rtl::OUString sName;
- if ( lcl_queryContent(_sName,xNameContainer,aContent,sName) )
- return aContent;
- throw NoSuchElementException(_sName,*this);
-}
-
-sal_Bool SAL_CALL ODocumentContainer::hasByHierarchicalName( const ::rtl::OUString& _sName ) throw (RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- Any aContent;
- Reference< XNameContainer > xNameContainer(this);
- ::rtl::OUString sName;
- return lcl_queryContent(_sName,xNameContainer,aContent,sName);
-}
-
-// XHierarchicalNameContainer
-void SAL_CALL ODocumentContainer::insertByHierarchicalName( const ::rtl::OUString& _sName, const Any& _aElement ) throw (IllegalArgumentException, ElementExistException, WrappedTargetException, RuntimeException)
-{
- Reference< XContent > xContent(_aElement,UNO_QUERY);
- if ( !xContent.is() )
- throw IllegalArgumentException();
-
- ClearableMutexGuard aGuard(m_aMutex);
- Any aContent;
- Reference< XNameContainer > xNameContainer(this);
- ::rtl::OUString sName;
- if ( lcl_queryContent(_sName,xNameContainer,aContent,sName) )
- throw ElementExistException(_sName,*this);
-
- if ( !xNameContainer.is() )
- {
- ::rtl::OUString sMessage( DBA_RES( RID_STR_NO_SUB_FOLDER ) );
- sal_Int32 index = sName.getLength();
- ::comphelper::string::searchAndReplaceAsciiI( sMessage, "$folder$", _sName.getToken(0,'/',index) );
- throw IllegalArgumentException( sMessage, *this, 1 );
- }
-
- xNameContainer->insertByName(sName,_aElement);
-}
-
-void SAL_CALL ODocumentContainer::removeByHierarchicalName( const ::rtl::OUString& _sName ) throw (NoSuchElementException, WrappedTargetException, RuntimeException)
-{
- if ( !_sName.getLength() )
- throw NoSuchElementException(_sName,*this);
-
- ClearableMutexGuard aGuard(m_aMutex);
- Any aContent;
- ::rtl::OUString sName;
- Reference< XNameContainer > xNameContainer(this);
- if ( !lcl_queryContent(_sName,xNameContainer,aContent,sName) )
- throw NoSuchElementException(_sName,*this);
-
- xNameContainer->removeByName(sName);
-}
-
-// XHierarchicalNameReplace
-void SAL_CALL ODocumentContainer::replaceByHierarchicalName( const ::rtl::OUString& _sName, const Any& _aElement ) throw (IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException)
-{
- Reference< XContent > xContent(_aElement,UNO_QUERY);
- if ( !xContent.is() )
- throw IllegalArgumentException();
-
- ClearableMutexGuard aGuard(m_aMutex);
- Any aContent;
- ::rtl::OUString sName;
- Reference< XNameContainer > xNameContainer(this);
- if ( !lcl_queryContent(_sName,xNameContainer,aContent,sName) )
- throw NoSuchElementException(_sName,*this);
-
- xNameContainer->replaceByName(sName,_aElement);
-}
-
-::rtl::OUString SAL_CALL ODocumentContainer::getHierarchicalName() throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- return impl_getHierarchicalName( false );
-}
-
-::rtl::OUString SAL_CALL ODocumentContainer::composeHierarchicalName( const ::rtl::OUString& i_rRelativeName ) throw (IllegalArgumentException, NoSupportException, RuntimeException)
-{
- ::rtl::OUStringBuffer aBuffer;
- aBuffer.append( getHierarchicalName() );
- aBuffer.append( sal_Unicode( '/' ) );
- aBuffer.append( i_rRelativeName );
- return aBuffer.makeStringAndClear();
-}
-
-::rtl::Reference<OContentHelper> ODocumentContainer::getContent(const ::rtl::OUString& _sName) const
-{
- ::rtl::Reference<OContentHelper> pContent = NULL;
- try
- {
- Reference<XUnoTunnel> xUnoTunnel(const_cast<ODocumentContainer*>(this)->implGetByName( _sName, sal_True ), UNO_QUERY );
- if ( xUnoTunnel.is() )
- pContent = reinterpret_cast<OContentHelper*>(xUnoTunnel->getSomething(OContentHelper::getUnoTunnelImplementationId()));
- }
- catch(const Exception&)
- {
- }
- return pContent;
-}
-
-void ODocumentContainer::getPropertyDefaultByHandle( sal_Int32 /*_nHandle*/, Any& _rDefault ) const
-{
- _rDefault.clear();
-}
-
-void SAL_CALL ODocumentContainer::commit( ) throw (::com::sun::star::io::IOException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- Documents::iterator aIter = m_aDocumentMap.begin();
- Documents::iterator aEnd = m_aDocumentMap.end();
- for (; aIter != aEnd ; ++aIter)
- {
- Reference<XTransactedObject> xTrans(aIter->second.get(),UNO_QUERY);
- if ( xTrans.is() )
- xTrans->commit();
- }
- Reference<XTransactedObject> xTrans(getContainerStorage(),UNO_QUERY);
- if ( xTrans.is() )
- xTrans->commit();
-}
-
-void SAL_CALL ODocumentContainer::revert( ) throw (::com::sun::star::io::IOException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException)
-{
- MutexGuard aGuard(m_aMutex);
- Documents::iterator aIter = m_aDocumentMap.begin();
- Documents::iterator aEnd = m_aDocumentMap.end();
- for (; aIter != aEnd ; ++aIter)
- {
- Reference<XTransactedObject> xTrans(aIter->second.get(),UNO_QUERY);
- if ( xTrans.is() )
- xTrans->revert();
- }
- Reference<XTransactedObject> xTrans(getContainerStorage(),UNO_QUERY);
- if ( xTrans.is() )
- xTrans->revert();
-}
-
-Reference< XStorage> ODocumentContainer::getContainerStorage() const
-{
- return m_pImpl->m_pDataSource
- ? m_pImpl->m_pDataSource->getStorage( m_bFormsContainer ? ODatabaseModelImpl::E_FORM : ODatabaseModelImpl::E_REPORT )
- : Reference< XStorage>();
-}
-
-void SAL_CALL ODocumentContainer::removeByName( const ::rtl::OUString& _rName ) throw(NoSuchElementException, WrappedTargetException, RuntimeException)
-{
- ResettableMutexGuard aGuard(m_aMutex);
-
- // check the arguments
- if (!_rName.getLength())
- throw IllegalArgumentException();
-
- if (!checkExistence(_rName))
- throw NoSuchElementException(_rName,*this);
-
- Reference< XCommandProcessor > xContent( implGetByName( _rName, sal_True ), UNO_QUERY );
- if ( xContent.is() )
- {
- Command aCommand;
-
- aCommand.Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("delete"));
- xContent->execute(aCommand,xContent->createCommandIdentifier(),Reference< XCommandEnvironment >());
- }
-
- // do the removal
- implRemove(_rName);
-
- notifyByName( aGuard, _rName, NULL, NULL, E_REMOVED, ContainerListemers );
-}
-
-void SAL_CALL ODocumentContainer::rename( const ::rtl::OUString& newName ) throw (SQLException, ElementExistException, RuntimeException)
-{
- try
- {
- osl::ClearableGuard< osl::Mutex > aGuard(m_aMutex);
- if ( newName.equals( m_pImpl->m_aProps.aTitle ) )
- return;
-
- sal_Int32 nHandle = PROPERTY_ID_NAME;
- Any aOld = makeAny(m_pImpl->m_aProps.aTitle);
- Any aNew = makeAny(newName);
-
- aGuard.clear();
- fire(&nHandle, &aNew, &aOld, 1, sal_True );
- m_pImpl->m_aProps.aTitle = newName;
- fire(&nHandle, &aNew, &aOld, 1, sal_False );
- }
- catch(const PropertyVetoException&)
- {
- throw ElementExistException(newName,*this);
- }
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/documentcontainer.hxx b/dbaccess/source/core/dataaccess/documentcontainer.hxx
deleted file mode 100644
index ffcdff6c9..000000000
--- a/dbaccess/source/core/dataaccess/documentcontainer.hxx
+++ /dev/null
@@ -1,146 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_COREDATAACCESS_DOCUMENTCONTAINER_HXX_
-#define _DBA_COREDATAACCESS_DOCUMENTCONTAINER_HXX_
-
-#include "definitioncontainer.hxx"
-#include <cppuhelper/implbase5.hxx>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/frame/XComponentLoader.hpp>
-#include <com/sun/star/container/XHierarchicalNameContainer.hpp>
-#include <com/sun/star/container/XHierarchicalName.hpp>
-#include <com/sun/star/embed/XTransactedObject.hpp>
-#include <comphelper/propertystatecontainer.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include "apitools.hxx"
-
-namespace dbaccess
-{
-typedef ::cppu::ImplHelper5 < ::com::sun::star::frame::XComponentLoader
- , ::com::sun::star::lang::XMultiServiceFactory
- , ::com::sun::star::container::XHierarchicalNameContainer
- , ::com::sun::star::container::XHierarchicalName
- , ::com::sun::star::embed::XTransactedObject
- > ODocumentContainer_Base;
-//==========================================================================
-//= ODocumentContainer - collections of database documents (reports/forms)
-//==========================================================================
-class ODocumentContainer : public ODefinitionContainer
- , public ODocumentContainer_Base
- , public ::comphelper::OPropertyStateContainer
- , public ::comphelper::OPropertyArrayUsageHelper< ODocumentContainer >
-{
- sal_Bool m_bFormsContainer;
-
-public:
- /** constructs the container.<BR>
- */
- ODocumentContainer(
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB
- , const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xParentContainer
- ,const TContentPtr& _pImpl
- , sal_Bool _bFormsContainer
- );
-
- // ::com::sun::star::uno::XInterface
- DECLARE_XINTERFACE( )
- // com::sun::star::lang::XTypeProvider
- DECLARE_TYPEPROVIDER( );
- // ::com::sun::star::lang::XServiceInfo
- DECLARE_SERVICE_INFO();
-
- // XComponentLoader
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL loadComponentFromURL( const ::rtl::OUString& URL, const ::rtl::OUString& TargetFrameName, sal_Int32 SearchFlags, const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& Arguments ) throw (::com::sun::star::io::IOException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::lang::XMultiServiceFactory
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstance( const ::rtl::OUString& aServiceSpecifier ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL createInstanceWithArguments( const ::rtl::OUString& ServiceSpecifier, const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& Arguments ) throw (::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getAvailableServiceNames( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XCommandProcessor
- virtual ::com::sun::star::uno::Any SAL_CALL execute( const ::com::sun::star::ucb::Command& aCommand, sal_Int32 CommandId, const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& Environment ) throw (::com::sun::star::uno::Exception, ::com::sun::star::ucb::CommandAbortedException, ::com::sun::star::uno::RuntimeException) ;
-
- // XHierarchicalNameAccess
- virtual ::com::sun::star::uno::Any SAL_CALL getByHierarchicalName( const ::rtl::OUString& _sName ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasByHierarchicalName( const ::rtl::OUString& _sName ) throw (::com::sun::star::uno::RuntimeException);
-
- // XHierarchicalNameContainer
- virtual void SAL_CALL insertByHierarchicalName( const ::rtl::OUString& aName, const ::com::sun::star::uno::Any& aElement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeByHierarchicalName( const ::rtl::OUString& Name ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
- // XHierarchicalName
- virtual ::rtl::OUString SAL_CALL getHierarchicalName( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL composeHierarchicalName( const ::rtl::OUString& aRelativeName ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
-
- // XNameContainer
- virtual void SAL_CALL removeByName( const ::rtl::OUString& _rName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
- // XHierarchicalNameReplace
- virtual void SAL_CALL replaceByHierarchicalName( const ::rtl::OUString& aName, const ::com::sun::star::uno::Any& aElement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::beans::XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XTransactedObject
- virtual void SAL_CALL commit( ) throw (::com::sun::star::io::IOException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL revert( ) throw (::com::sun::star::io::IOException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
- // XRename
- virtual void SAL_CALL rename( const ::rtl::OUString& newName ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException);
-
- // OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- // helper
- ::rtl::Reference<OContentHelper> getContent(const ::rtl::OUString& _sName) const;
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage > getContainerStorage() const;
-
-protected:
- virtual ~ODocumentContainer();
-
- /** OContentHelper
- */
- virtual ::rtl::OUString determineContentType() const;
-
- // ODefinitionContainer
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent > createObject(
- const ::rtl::OUString& _rName
- );
-
- virtual void getPropertyDefaultByHandle( sal_Int32 _nHandle, ::com::sun::star::uno::Any& _rDefault ) const;
-
- // OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-};
-
-} // namespace dbaccess
-
-#endif // _DBA_COREDATAACCESS_DOCUMENTCONTAINER_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/documentdefinition.cxx b/dbaccess/source/core/dataaccess/documentdefinition.cxx
deleted file mode 100644
index 48be3e0ba..000000000
--- a/dbaccess/source/core/dataaccess/documentdefinition.cxx
+++ /dev/null
@@ -1,2210 +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_dbaccess.hxx"
-
-#include "documentdefinition.hxx"
-#include "dbastrings.hrc"
-#include "sdbcoretools.hxx"
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-#include <osl/diagnose.h>
-#include <comphelper/property.hxx>
-#include <comphelper/sequence.hxx>
-#include <comphelper/mediadescriptor.hxx>
-#include <comphelper/namedvaluecollection.hxx>
-#include <comphelper/classids.hxx>
-#include <com/sun/star/frame/XUntitledNumbers.hpp>
-#include <com/sun/star/awt/XTopWindow.hpp>
-#include <com/sun/star/awt/Size.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/frame/XModel.hpp>
-#include <com/sun/star/frame/XTitle.hpp>
-#include <com/sun/star/frame/XController.hpp>
-#include <com/sun/star/task/XJobExecutor.hpp>
-#include <com/sun/star/frame/XDispatchProviderInterception.hpp>
-#include <com/sun/star/frame/XFramesSupplier.hpp>
-#include <com/sun/star/ucb/InsertCommandArgument.hpp>
-#include <com/sun/star/report/XReportDefinition.hpp>
-#include <com/sun/star/report/XReportEngine.hpp>
-#include <com/sun/star/ucb/OpenMode.hpp>
-#include <com/sun/star/embed/XEmbedObjectFactory.hpp>
-#include <com/sun/star/embed/XEmbedObjectCreator.hpp>
-#include <com/sun/star/embed/Aspects.hpp>
-#include <ucbhelper/cancelcommandexecution.hxx>
-#include <com/sun/star/ucb/UnsupportedDataSinkException.hpp>
-#include <com/sun/star/ucb/UnsupportedOpenModeException.hpp>
-#include <com/sun/star/embed/ElementModes.hpp>
-#include <com/sun/star/embed/XEmbedPersist.hpp>
-#include <com/sun/star/embed/EmbedStates.hpp>
-#include <com/sun/star/embed/XComponentSupplier.hpp>
-#include <com/sun/star/embed/EntryInitModes.hpp>
-#include <com/sun/star/ucb/MissingPropertiesException.hpp>
-#include <com/sun/star/ucb/MissingInputStreamException.hpp>
-#include <com/sun/star/ucb/OpenCommandArgument2.hpp>
-#include <com/sun/star/util/XCloseBroadcaster.hpp>
-#include <com/sun/star/frame/XModule.hpp>
-#include <com/sun/star/datatransfer/DataFlavor.hpp>
-#include <com/sun/star/datatransfer/XTransferable.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/embed/XTransactedObject.hpp>
-#include <com/sun/star/embed/XCommonEmbedPersist.hpp>
-#include "intercept.hxx"
-#include <com/sun/star/sdb/ErrorCondition.hpp>
-#include <com/sun/star/sdb/XInteractionDocumentSave.hpp>
-#include <com/sun/star/task/XInteractionHandler.hpp>
-#include <com/sun/star/sdb/DocumentSaveRequest.hpp>
-#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
-#include <com/sun/star/document/MacroExecMode.hpp>
-#include <com/sun/star/drawing/XDrawPageSupplier.hpp>
-#include <com/sun/star/container/XIndexContainer.hpp>
-#include <com/sun/star/form/XFormsSupplier.hpp>
-#include <com/sun/star/form/XForm.hpp>
-#include <comphelper/interaction.hxx>
-#include <connectivity/dbtools.hxx>
-#include <vcl/svapp.hxx>
-#include <osl/mutex.hxx>
-#include <sal/macros.h>
-#include <com/sun/star/view/XViewSettingsSupplier.hpp>
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include "datasource.hxx"
-#include <com/sun/star/embed/XStateChangeBroadcaster.hpp>
-#include <com/sun/star/task/XInteractionApprove.hpp>
-#include <com/sun/star/task/XInteractionDisapprove.hpp>
-#include <com/sun/star/frame/XLayoutManager.hpp>
-#include <cppuhelper/compbase1.hxx>
-#include <cppuhelper/exc_hlp.hxx>
-#include <com/sun/star/frame/FrameSearchFlag.hpp>
-#include <comphelper/sequenceashashmap.hxx>
-#include <comphelper/mimeconfighelper.hxx>
-#include <comphelper/storagehelper.hxx>
-#include <com/sun/star/container/XContentEnumerationAccess.hpp>
-#include <com/sun/star/io/WrongFormatException.hpp>
-#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
-#include <com/sun/star/sdb/application/DatabaseObject.hpp>
-#include <com/sun/star/util/XModifiable2.hpp>
-
-using namespace ::com::sun::star;
-using namespace view;
-using namespace uno;
-using namespace util;
-using namespace ucb;
-using namespace beans;
-using namespace lang;
-using namespace awt;
-using namespace embed;
-using namespace frame;
-using namespace document;
-using namespace sdbc;
-using namespace sdb;
-using namespace io;
-using namespace container;
-using namespace datatransfer;
-using namespace task;
-using namespace form;
-using namespace drawing;
-using namespace ::osl;
-using namespace ::comphelper;
-using namespace ::cppu;
-namespace css = ::com::sun::star;
-
-using sdb::application::XDatabaseDocumentUI;
-namespace DatabaseObject = sdb::application::DatabaseObject;
-
-
-#define DEFAULT_WIDTH 10000
-#define DEFAULT_HEIGHT 7500
-
-namespace dbaccess
-{
-
- typedef ::boost::optional< bool > optional_bool;
-
- //=========================================================================
- //= helper
- //=========================================================================
- namespace
- {
- // --------------------------------------------------------------------
- ::rtl::OUString lcl_determineContentType_nothrow( const Reference< XStorage >& _rxContainerStorage,
- const ::rtl::OUString& _rEntityName )
- {
- ::rtl::OUString sContentType;
- try
- {
- Reference< XStorage > xContainerStorage( _rxContainerStorage, UNO_QUERY_THROW );
- ::utl::SharedUNOComponent< XPropertySet > xStorageProps(
- xContainerStorage->openStorageElement( _rEntityName, ElementModes::READ ), UNO_QUERY_THROW );
- OSL_VERIFY( xStorageProps->getPropertyValue( INFO_MEDIATYPE ) >>= sContentType );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return sContentType;
- }
- }
-
- //==================================================================
- // OEmbedObjectHolder
- //==================================================================
- typedef ::cppu::WeakComponentImplHelper1< embed::XStateChangeListener > TEmbedObjectHolder;
- class OEmbedObjectHolder : public ::comphelper::OBaseMutex
- ,public TEmbedObjectHolder
- {
- Reference< XEmbeddedObject > m_xBroadCaster;
- ODocumentDefinition* m_pDefinition;
- bool m_bInStateChange;
- bool m_bInChangingState;
- protected:
- virtual void SAL_CALL disposing();
- public:
- OEmbedObjectHolder(const Reference< XEmbeddedObject >& _xBroadCaster,ODocumentDefinition* _pDefinition)
- : TEmbedObjectHolder(m_aMutex)
- ,m_xBroadCaster(_xBroadCaster)
- ,m_pDefinition(_pDefinition)
- ,m_bInStateChange(false)
- ,m_bInChangingState(false)
- {
- osl_incrementInterlockedCount( &m_refCount );
- {
- if ( m_xBroadCaster.is() )
- m_xBroadCaster->addStateChangeListener(this);
- }
- osl_decrementInterlockedCount( &m_refCount );
- }
-
- virtual void SAL_CALL changingState( const lang::EventObject& aEvent, ::sal_Int32 nOldState, ::sal_Int32 nNewState ) throw (embed::WrongStateException, uno::RuntimeException);
- virtual void SAL_CALL stateChanged( const lang::EventObject& aEvent, ::sal_Int32 nOldState, ::sal_Int32 nNewState ) throw (uno::RuntimeException);
- virtual void SAL_CALL disposing( const lang::EventObject& Source ) throw (uno::RuntimeException);
- };
-
- void SAL_CALL OEmbedObjectHolder::disposing()
- {
- if ( m_xBroadCaster.is() )
- m_xBroadCaster->removeStateChangeListener(this);
- m_xBroadCaster = NULL;
- m_pDefinition = NULL;
- }
-
- void SAL_CALL OEmbedObjectHolder::changingState( const lang::EventObject& /*aEvent*/, ::sal_Int32 nOldState, ::sal_Int32 nNewState ) throw (embed::WrongStateException, uno::RuntimeException)
- {
- if ( !m_bInChangingState && nNewState == EmbedStates::RUNNING && nOldState == EmbedStates::ACTIVE && m_pDefinition )
- {
- m_bInChangingState = true;
- m_bInChangingState = false;
- }
- }
-
- void SAL_CALL OEmbedObjectHolder::stateChanged( const lang::EventObject& aEvent, ::sal_Int32 nOldState, ::sal_Int32 nNewState ) throw (uno::RuntimeException)
- {
- if ( !m_bInStateChange && nNewState == EmbedStates::RUNNING && nOldState == EmbedStates::ACTIVE && m_pDefinition )
- {
- m_bInStateChange = true;
- Reference<XInterface> xInt(static_cast< ::cppu::OWeakObject* >(m_pDefinition),UNO_QUERY);
- {
- Reference<XEmbeddedObject> xEmbeddedObject(aEvent.Source,UNO_QUERY);
- if ( xEmbeddedObject.is() )
- xEmbeddedObject->changeState(EmbedStates::LOADED);
- }
- m_bInStateChange = false;
- }
- }
-
- void SAL_CALL OEmbedObjectHolder::disposing( const lang::EventObject& /*Source*/ ) throw (uno::RuntimeException)
- {
- m_xBroadCaster = NULL;
- }
-
- //==================================================================
- // OEmbeddedClientHelper
- //==================================================================
- typedef ::cppu::WeakImplHelper1 < XEmbeddedClient
- > EmbeddedClientHelper_BASE;
- class OEmbeddedClientHelper : public EmbeddedClientHelper_BASE
- {
- ODocumentDefinition* m_pClient;
- public:
- OEmbeddedClientHelper(ODocumentDefinition* _pClient) :m_pClient(_pClient) {}
-
- virtual void SAL_CALL saveObject( ) throw (ObjectSaveVetoException, Exception, RuntimeException)
- {
- }
- virtual void SAL_CALL onShowWindow( sal_Bool /*bVisible*/ ) throw (RuntimeException)
- {
- }
- // XComponentSupplier
- virtual Reference< util::XCloseable > SAL_CALL getComponent( ) throw (RuntimeException)
- {
- return Reference< css::util::XCloseable >();
- }
-
- // XEmbeddedClient
- virtual void SAL_CALL visibilityChanged( ::sal_Bool /*bVisible*/ ) throw (WrongStateException, RuntimeException)
- {
- }
- inline void resetClient(ODocumentDefinition* _pClient) { m_pClient = _pClient; }
- };
-
- //==================================================================
- // LockModifiable
- //==================================================================
- class LockModifiable
- {
- public:
- LockModifiable( const Reference< XInterface >& i_rModifiable )
- :m_xModifiable( i_rModifiable, UNO_QUERY )
- {
- OSL_ENSURE( m_xModifiable.is(), "LockModifiable::LockModifiable: invalid component!" );
- if ( m_xModifiable.is() )
- {
- if ( !m_xModifiable->isSetModifiedEnabled() )
- {
- // somebody already locked that, no need to lock it, again, and no need to unlock it later
- m_xModifiable.clear();
- }
- else
- {
- m_xModifiable->disableSetModified();
- }
- }
- }
-
- ~LockModifiable()
- {
- if ( m_xModifiable.is() )
- m_xModifiable->enableSetModified();
- }
-
- private:
- Reference< XModifiable2 > m_xModifiable;
- };
-
- //==================================================================
- // LifetimeCoupler
- //==================================================================
- typedef ::cppu::WeakImplHelper1 < css::lang::XEventListener
- > LifetimeCoupler_Base;
- /** helper class which couples the lifetime of a component to the lifetime
- of another component
-
- Instances of this class are constructed with two components. The first is
- simply held by reference, and thus kept alive. The second one is observed
- for <code>disposing</code> calls - if they occur, i.e. if the component dies,
- the reference to the first component is cleared.
-
- This way, you can ensure that a certain component is kept alive as long
- as a second component is not disposed.
- */
- class LifetimeCoupler : public LifetimeCoupler_Base
- {
- private:
- Reference< XInterface > m_xClient;
-
- public:
- inline static void couple( const Reference< XInterface >& _rxClient, const Reference< XComponent >& _rxActor )
- {
- Reference< css::lang::XEventListener > xEnsureDelete( new LifetimeCoupler( _rxClient, _rxActor ) );
- }
-
- private:
- inline LifetimeCoupler( const Reference< XInterface >& _rxClient, const Reference< XComponent >& _rxActor )
- :m_xClient( _rxClient )
- {
- OSL_ENSURE( _rxActor.is(), "LifetimeCoupler::LifetimeCoupler: this will crash!" );
- osl_incrementInterlockedCount( &m_refCount );
- {
- _rxActor->addEventListener( this );
- }
- osl_decrementInterlockedCount( &m_refCount );
- OSL_ENSURE( m_refCount, "LifetimeCoupler::LifetimeCoupler: the actor is not holding us by hard ref - this won't work!" );
- }
-
- virtual void SAL_CALL disposing( const css::lang::EventObject& Source ) throw (RuntimeException);
- protected:
- };
-
- void SAL_CALL LifetimeCoupler::disposing( const css::lang::EventObject& /*Source*/ ) throw (RuntimeException)
- {
- m_xClient.clear();
- }
-
- //==================================================================
- // ODocumentSaveContinuation
- //==================================================================
- class ODocumentSaveContinuation : public OInteraction< XInteractionDocumentSave >
- {
- ::rtl::OUString m_sName;
- Reference<XContent> m_xParentContainer;
-
- public:
- ODocumentSaveContinuation() { }
-
- inline Reference<XContent> getContent() const { return m_xParentContainer; }
- inline ::rtl::OUString getName() const { return m_sName; }
-
- // XInteractionDocumentSave
- virtual void SAL_CALL setName( const ::rtl::OUString& _sName,const Reference<XContent>& _xParent) throw(RuntimeException);
- };
-
- void SAL_CALL ODocumentSaveContinuation::setName( const ::rtl::OUString& _sName,const Reference<XContent>& _xParent) throw(RuntimeException)
- {
- m_sName = _sName;
- m_xParentContainer = _xParent;
- }
-
-::rtl::OUString ODocumentDefinition::GetDocumentServiceFromMediaType( const Reference< XStorage >& _rxContainerStorage,
- const ::rtl::OUString& _rEntityName, const ::comphelper::ComponentContext& _rContext,
- Sequence< sal_Int8 >& _rClassId )
-{
- return GetDocumentServiceFromMediaType(
- lcl_determineContentType_nothrow( _rxContainerStorage, _rEntityName ),
- _rContext, _rClassId );
-}
-
-::rtl::OUString ODocumentDefinition::GetDocumentServiceFromMediaType( const ::rtl::OUString& _rMediaType,
- const ::comphelper::ComponentContext& _rContext, Sequence< sal_Int8 >& _rClassId )
-{
- ::rtl::OUString sResult;
- try
- {
- ::comphelper::MimeConfigurationHelper aConfigHelper( _rContext.getLegacyServiceFactory() );
- sResult = aConfigHelper.GetDocServiceNameFromMediaType( _rMediaType );
- _rClassId = aConfigHelper.GetSequenceClassIDRepresentation(aConfigHelper.GetExplicitlyRegisteredObjClassID( _rMediaType ));
- if ( !_rClassId.getLength() && sResult.getLength() )
- {
- Reference< XNameAccess > xObjConfig = aConfigHelper.GetObjConfiguration();
- if ( xObjConfig.is() )
- {
- Sequence< ::rtl::OUString > aClassIDs = xObjConfig->getElementNames();
- for ( sal_Int32 nInd = 0; nInd < aClassIDs.getLength(); nInd++ )
- {
- Reference< XNameAccess > xObjectProps;
- ::rtl::OUString aEntryDocName;
-
- if ( ( xObjConfig->getByName( aClassIDs[nInd] ) >>= xObjectProps ) && xObjectProps.is()
- && ( xObjectProps->getByName(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ObjectDocumentServiceName"))
- ) >>= aEntryDocName )
- && aEntryDocName.equals( sResult ) )
- {
- _rClassId = aConfigHelper.GetSequenceClassIDRepresentation(aClassIDs[nInd]);
- break;
- }
- }
- }
- }
-#if OSL_DEBUG_LEVEL > 0
- // alternative, shorter approach
- const Sequence< NamedValue > aProps( aConfigHelper.GetObjectPropsByMediaType( _rMediaType ) );
- const ::comphelper::NamedValueCollection aMediaTypeProps( aProps );
- const ::rtl::OUString sAlternativeResult = aMediaTypeProps.getOrDefault( "ObjectDocumentServiceName", ::rtl::OUString() );
- OSL_ENSURE( sAlternativeResult == sResult, "ODocumentDefinition::GetDocumentServiceFromMediaType: failed, this approach is *not* equivalent (1)!" );
- const Sequence< sal_Int8 > aAlternativeClassID = aMediaTypeProps.getOrDefault( "ClassID", Sequence< sal_Int8 >() );
- OSL_ENSURE( aAlternativeClassID == _rClassId, "ODocumentDefinition::GetDocumentServiceFromMediaType: failed, this approach is *not* equivalent (2)!" );
-#endif
- }
- catch ( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return sResult;
-}
-
-//==========================================================================
-//= ODocumentDefinition
-//==========================================================================
-DBG_NAME(ODocumentDefinition)
-
-ODocumentDefinition::ODocumentDefinition( const Reference< XInterface >& _rxContainer, const Reference< XMultiServiceFactory >& _xORB,
- const TContentPtr& _pImpl, sal_Bool _bForm )
- :OContentHelper(_xORB,_rxContainer,_pImpl)
- ,OPropertyStateContainer(OContentHelper::rBHelper)
- ,m_pInterceptor(NULL)
- ,m_bForm(_bForm)
- ,m_bOpenInDesign(sal_False)
- ,m_bInExecute(sal_False)
- ,m_bRemoveListener(sal_False)
- ,m_pClientHelper(NULL)
-{
- DBG_CTOR(ODocumentDefinition, NULL);
- registerProperties();
-}
-
-void ODocumentDefinition::initialLoad( const Sequence< sal_Int8 >& i_rClassID, const Sequence< PropertyValue >& i_rCreationArgs,
- const Reference< XConnection >& i_rConnection )
-{
- OSL_ENSURE( i_rClassID.getLength(), "ODocumentDefinition::initialLoad: illegal class ID!" );
- if ( !i_rClassID.getLength() )
- return;
-
- loadEmbeddedObject( i_rConnection, i_rClassID, i_rCreationArgs, false, false );
-}
-
-ODocumentDefinition::~ODocumentDefinition()
-{
- DBG_DTOR(ODocumentDefinition, NULL);
- if ( !OContentHelper::rBHelper.bInDispose && !OContentHelper::rBHelper.bDisposed )
- {
- acquire();
- dispose();
- }
-
- if ( m_pInterceptor )
- {
- m_pInterceptor->dispose();
- m_pInterceptor->release();
- m_pInterceptor = NULL;
- }
-}
-
-void ODocumentDefinition::closeObject()
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- if ( m_xEmbeddedObject.is() )
- {
- try
- {
- Reference< com::sun::star::util::XCloseable> xCloseable(m_xEmbeddedObject,UNO_QUERY);
- if ( xCloseable.is() )
- xCloseable->close(sal_True);
- }
- catch(const Exception&)
- {
- }
- m_xEmbeddedObject = NULL;
- if ( m_pClientHelper )
- {
- m_pClientHelper->resetClient(NULL);
- m_pClientHelper->release();
- m_pClientHelper = NULL;
- }
- }
-}
-
-void SAL_CALL ODocumentDefinition::disposing()
-{
- OContentHelper::disposing();
- ::osl::MutexGuard aGuard(m_aMutex);
- closeObject();
- ::comphelper::disposeComponent(m_xListener);
- if ( m_bRemoveListener )
- {
- Reference<util::XCloseable> xCloseable(m_pImpl->m_pDataSource->getModel_noCreate(),UNO_QUERY);
- if ( xCloseable.is() )
- xCloseable->removeCloseListener(this);
- }
-}
-
-IMPLEMENT_TYPEPROVIDER3(ODocumentDefinition,OContentHelper,OPropertyStateContainer,ODocumentDefinition_Base);
-IMPLEMENT_FORWARD_XINTERFACE3( ODocumentDefinition,OContentHelper,OPropertyStateContainer,ODocumentDefinition_Base)
-IMPLEMENT_SERVICE_INFO1(ODocumentDefinition,"com.sun.star.comp.dba.ODocumentDefinition",SERVICE_SDB_DOCUMENTDEFINITION)
-
-void ODocumentDefinition::registerProperties()
-{
-#define REGISTER_PROPERTY( name, location ) \
- registerProperty( PROPERTY_##name, PROPERTY_ID_##name, PropertyAttribute::READONLY, &location, ::getCppuType( &location ) );
-
-#define REGISTER_PROPERTY_BV( name, location ) \
- registerProperty( PROPERTY_##name, PROPERTY_ID_##name, PropertyAttribute::CONSTRAINED | PropertyAttribute::BOUND | PropertyAttribute::READONLY, &location, ::getCppuType( &location ) );
-
- REGISTER_PROPERTY_BV( NAME, m_pImpl->m_aProps.aTitle );
- REGISTER_PROPERTY ( AS_TEMPLATE, m_pImpl->m_aProps.bAsTemplate );
- REGISTER_PROPERTY ( PERSISTENT_NAME, m_pImpl->m_aProps.sPersistentName );
- REGISTER_PROPERTY ( IS_FORM, m_bForm );
-}
-
-void SAL_CALL ODocumentDefinition::getFastPropertyValue( Any& o_rValue, sal_Int32 i_nHandle ) const
-{
- if ( i_nHandle == PROPERTY_ID_PERSISTENT_PATH )
- {
- ::rtl::OUString sPersistentPath;
- if ( m_pImpl->m_aProps.sPersistentName.getLength() )
- {
- ::rtl::OUStringBuffer aBuffer;
- aBuffer.append( ODatabaseModelImpl::getObjectContainerStorageName( m_bForm ? ODatabaseModelImpl::E_FORM : ODatabaseModelImpl::E_REPORT ) );
- aBuffer.append( sal_Unicode( '/' ) );
- aBuffer.append( m_pImpl->m_aProps.sPersistentName );
- sPersistentPath = aBuffer.makeStringAndClear();
- }
- o_rValue <<= sPersistentPath;
- return;
- }
-
- OPropertyStateContainer::getFastPropertyValue( o_rValue, i_nHandle );
-}
-
-Reference< XPropertySetInfo > SAL_CALL ODocumentDefinition::getPropertySetInfo( ) throw(RuntimeException)
-{
- Reference<XPropertySetInfo> xInfo( createPropertySetInfo( getInfoHelper() ) );
- return xInfo;
-}
-
-IPropertyArrayHelper& ODocumentDefinition::getInfoHelper()
-{
- return *getArrayHelper();
-}
-
-IPropertyArrayHelper* ODocumentDefinition::createArrayHelper( ) const
-{
- // properties maintained by our base class (see registerProperties)
- Sequence< Property > aProps;
- describeProperties( aProps );
-
- // properties not maintained by our base class
- Sequence< Property > aManualProps( 1 );
- aManualProps[0].Name = PROPERTY_PERSISTENT_PATH;
- aManualProps[0].Handle = PROPERTY_ID_PERSISTENT_PATH;
- aManualProps[0].Type = ::getCppuType( static_cast< const ::rtl::OUString* >( NULL ) );
- aManualProps[0].Attributes = PropertyAttribute::READONLY;
-
- return new OPropertyArrayHelper( ::comphelper::concatSequences( aProps, aManualProps ) );
-}
-
-class OExecuteImpl
-{
- sal_Bool& m_rbSet;
-public:
- OExecuteImpl(sal_Bool& _rbSet) : m_rbSet(_rbSet){ m_rbSet=sal_True; }
- ~OExecuteImpl(){ m_rbSet = sal_False; }
-};
-
-namespace
-{
- bool lcl_extractOpenMode( const Any& _rValue, sal_Int32& _out_rMode )
- {
- OpenCommandArgument aOpenCommand;
- if ( _rValue >>= aOpenCommand )
- _out_rMode = aOpenCommand.Mode;
- else
- {
- OpenCommandArgument2 aOpenCommand2;
- if ( _rValue >>= aOpenCommand2 )
- _out_rMode = aOpenCommand2.Mode;
- else
- return false;
- }
- return true;
- }
-}
-
-void ODocumentDefinition::impl_removeFrameFromDesktop_throw( const ::comphelper::ComponentContext& _rContxt, const Reference< XFrame >& _rxFrame )
-{
- Reference< XFramesSupplier > xDesktop( _rContxt.createComponent( (::rtl::OUString)SERVICE_FRAME_DESKTOP ), UNO_QUERY_THROW );
- Reference< XFrames > xFrames( xDesktop->getFrames(), UNO_QUERY_THROW );
- xFrames->remove( _rxFrame );
-}
-
-void ODocumentDefinition::impl_onActivateEmbeddedObject_nothrow( const bool i_bReactivated )
-{
- try
- {
- Reference< XModel > xModel( getComponent(), UNO_QUERY );
- Reference< XController > xController( xModel.is() ? xModel->getCurrentController() : Reference< XController >() );
- if ( !xController.is() )
- return;
-
- if ( !m_xListener.is() )
- // it's the first time the embedded object has been activated
- // create an OEmbedObjectHolder
- m_xListener = new OEmbedObjectHolder( m_xEmbeddedObject, this );
-
- // raise the window to top (especially necessary if this is not the first activation)
- Reference< XFrame > xFrame( xController->getFrame(), UNO_SET_THROW );
- Reference< XTopWindow > xTopWindow( xFrame->getContainerWindow(), UNO_QUERY_THROW );
- xTopWindow->toFront();
-
- // remove the frame from the desktop's frame collection because we need full control of it.
- impl_removeFrameFromDesktop_throw( m_aContext, xFrame );
-
- // ensure that we ourself are kept alive as long as the embedded object's frame is
- // opened
- LifetimeCoupler::couple( *this, xFrame.get() );
-
- // init the edit view
- if ( m_bForm && m_bOpenInDesign && !i_bReactivated )
- impl_initFormEditView( xController );
- }
- catch( const RuntimeException& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-namespace
-{
- // =========================================================================
- // = PreserveVisualAreaSize
- // =========================================================================
- /** stack-guard for preserving the size of the VisArea of an XModel
- */
- class PreserveVisualAreaSize
- {
- private:
- Reference< XVisualObject > m_xVisObject;
- awt::Size m_aOriginalSize;
-
- public:
- inline PreserveVisualAreaSize( const Reference< XModel >& _rxModel )
- :m_xVisObject( _rxModel, UNO_QUERY )
- {
- if ( m_xVisObject.is() )
- {
- try
- {
- m_aOriginalSize = m_xVisObject->getVisualAreaSize( Aspects::MSOLE_CONTENT );
- }
- catch ( const Exception& )
- {
- OSL_FAIL( "PreserveVisualAreaSize::PreserveVisualAreaSize: caught an exception!" );
- }
- }
- }
-
- inline ~PreserveVisualAreaSize()
- {
- if ( m_xVisObject.is() && m_aOriginalSize.Width && m_aOriginalSize.Height )
- {
- try
- {
- m_xVisObject->setVisualAreaSize( Aspects::MSOLE_CONTENT, m_aOriginalSize );
- }
- catch ( const Exception& )
- {
- OSL_FAIL( "PreserveVisualAreaSize::~PreserveVisualAreaSize: caught an exception!" );
- }
- }
- }
- };
-
- // =========================================================================
- // = LayoutManagerLock
- // =========================================================================
- /** helper class for stack-usage which during its lifetime locks a layout manager
- */
- class LayoutManagerLock
- {
- private:
- Reference< XLayoutManager > m_xLayoutManager;
-
- public:
- inline LayoutManagerLock( const Reference< XController >& _rxController )
- {
- OSL_ENSURE( _rxController.is(), "LayoutManagerLock::LayoutManagerLock: this will crash!" );
- Reference< XFrame > xFrame( _rxController->getFrame() );
- try
- {
- Reference< XPropertySet > xPropSet( xFrame, UNO_QUERY_THROW );
- m_xLayoutManager.set(
- xPropSet->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "LayoutManager" ) ) ),
- UNO_QUERY_THROW );
- m_xLayoutManager->lock();
-
- }
- catch( const Exception& )
- {
- OSL_FAIL( "LayoutManagerLock::LayoutManagerLock: caught an exception!" );
- }
- }
-
- inline ~LayoutManagerLock()
- {
- try
- {
- // unlock the layout manager
- if ( m_xLayoutManager.is() )
- m_xLayoutManager->unlock();
- }
- catch( const Exception& )
- {
- OSL_FAIL( "LayoutManagerLock::~LayoutManagerLock: caught an exception!" );
- }
- }
- };
-}
-
-void ODocumentDefinition::impl_initFormEditView( const Reference< XController >& _rxController )
-{
- try
- {
- Reference< XViewSettingsSupplier > xSettingsSupplier( _rxController, UNO_QUERY_THROW );
- Reference< XPropertySet > xViewSettings( xSettingsSupplier->getViewSettings(), UNO_QUERY_THROW );
-
- // the below code could indirectly tamper with the "modified" flag of the model, temporarily disable this
- LockModifiable aLockModify( _rxController->getModel() );
-
- // The visual area size can be changed by the setting of the following properties
- // so it should be restored later
- PreserveVisualAreaSize aPreserveVisAreaSize( _rxController->getModel() );
-
- // Layout manager should not layout while the size is still not restored
- // so it will stay locked for this time
- LayoutManagerLock aLockLayout( _rxController );
-
- // setting of the visual properties
- xViewSettings->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ShowRulers")),makeAny(sal_True));
- xViewSettings->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ShowVertRuler")),makeAny(sal_True));
- xViewSettings->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ShowHoriRuler")),makeAny(sal_True));
- xViewSettings->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IsRasterVisible")),makeAny(sal_True));
- xViewSettings->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("IsSnapToRaster")),makeAny(sal_True));
- xViewSettings->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ShowOnlineLayout")),makeAny(sal_True));
- xViewSettings->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("RasterSubdivisionX")),makeAny(sal_Int32(5)));
- xViewSettings->setPropertyValue(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("RasterSubdivisionY")),makeAny(sal_Int32(5)));
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-void ODocumentDefinition::impl_showOrHideComponent_throw( const bool i_bShow )
-{
- const sal_Int32 nCurrentState = m_xEmbeddedObject.is() ? m_xEmbeddedObject->getCurrentState() : EmbedStates::LOADED;
- switch ( nCurrentState )
- {
- default:
- case EmbedStates::LOADED:
- throw embed::WrongStateException( ::rtl::OUString(), *this );
-
- case EmbedStates::RUNNING:
- if ( !i_bShow )
- // fine, a running (and not yet active) object is never visible
- return;
- {
- LockModifiable aLockModify( impl_getComponent_throw() );
- m_xEmbeddedObject->changeState( EmbedStates::ACTIVE );
- impl_onActivateEmbeddedObject_nothrow( false );
- }
- break;
-
- case EmbedStates::ACTIVE:
- {
- Reference< XModel > xEmbeddedDoc( impl_getComponent_throw( true ), UNO_QUERY_THROW );
- Reference< XController > xEmbeddedController( xEmbeddedDoc->getCurrentController(), UNO_SET_THROW );
- Reference< XFrame > xEmbeddedFrame( xEmbeddedController->getFrame(), UNO_SET_THROW );
- Reference< XWindow > xEmbeddedWindow( xEmbeddedFrame->getContainerWindow(), UNO_SET_THROW );
- xEmbeddedWindow->setVisible( i_bShow );
- }
- break;
- }
-}
-
-Any ODocumentDefinition::onCommandOpenSomething( const Any& _rOpenArgument, const bool _bActivate,
- const Reference< XCommandEnvironment >& _rxEnvironment )
-{
- OExecuteImpl aExecuteGuard( m_bInExecute );
-
- Reference< XConnection > xConnection;
- sal_Int32 nOpenMode = OpenMode::DOCUMENT;
-
- ::comphelper::NamedValueCollection aDocumentArgs;
-
- // for the document, default to the interaction handler as used for loading the DB doc
- // This might be overwritten below, when examining _rOpenArgument.
- const ::comphelper::NamedValueCollection& aDBDocArgs( m_pImpl->m_pDataSource->getMediaDescriptor() );
- Reference< XInteractionHandler > xHandler( aDBDocArgs.getOrDefault( "InteractionHandler", Reference< XInteractionHandler >() ) );
- if ( xHandler.is() )
- aDocumentArgs.put( "InteractionHandler", xHandler );
-
- ::boost::optional< sal_Int16 > aDocumentMacroMode;
-
- if ( !lcl_extractOpenMode( _rOpenArgument, nOpenMode ) )
- {
- Sequence< PropertyValue > aArguments;
- if ( _rOpenArgument >>= aArguments )
- {
- const PropertyValue* pIter = aArguments.getConstArray();
- const PropertyValue* pEnd = pIter + aArguments.getLength();
- for ( ;pIter != pEnd; ++pIter )
- {
- if ( pIter->Name == PROPERTY_ACTIVE_CONNECTION )
- {
- xConnection.set( pIter->Value, UNO_QUERY );
- continue;
- }
-
- if ( lcl_extractOpenMode( pIter->Value, nOpenMode ) )
- continue;
-
- if ( pIter->Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "MacroExecutionMode" ) ) )
- {
- sal_Int16 nMacroExecMode( !aDocumentMacroMode ? MacroExecMode::USE_CONFIG : *aDocumentMacroMode );
- OSL_VERIFY( pIter->Value >>= nMacroExecMode );
- aDocumentMacroMode.reset( nMacroExecMode );
- continue;
- }
-
- // unknown argument -> pass to the loaded document
- aDocumentArgs.put( pIter->Name, pIter->Value );
- }
- }
- }
-
- bool bExecuteDBDocMacros = m_pImpl->m_pDataSource->checkMacrosOnLoading();
- // Note that this call implies the user might be asked for the macro execution mode.
- // Normally, this would happen when the database document is loaded, and subsequent calls
- // will simply use the user's decision from this point in time.
- // However, it is possible to programmatically load forms/reports, without actually
- // loading the database document into a frame. In this case, the user will be asked
- // here and now.
- // #i87741#
-
- // allow the command arguments to downgrade the macro execution mode, but not to upgrade
- // it
- if ( ( m_pImpl->m_pDataSource->getImposedMacroExecMode() == MacroExecMode::USE_CONFIG )
- && bExecuteDBDocMacros
- )
- {
- // while loading the whole database document, USE_CONFIG, was passed.
- // Additionally, *by now* executing macros from the DB doc is allowed (this is what bExecuteDBDocMacros
- // indicates). This means either one of:
- // 1. The DB doc or one of the sub docs contained macros and
- // 1a. the user explicitly allowed executing them
- // 1b. the configuration allows executing them without asking the user
- // 2. Neither the DB doc nor the sub docs contained macros, thus macro
- // execution was silently enabled, assuming that any macro will be a
- // user-created macro
- //
- // The problem with this: If the to-be-opened sub document has macros embedded in
- // the content.xml (which is valid ODF, but normally not produced by OOo itself),
- // then this has not been detected while loading the database document - it would
- // be too expensive, as it effectively would require loading all forms/reports.
- //
- // So, in such a case, and with 2. above, we would silently execute those macros,
- // regardless of the global security settings - which would be a security issue, of
- // course.
- if ( m_pImpl->m_pDataSource->determineEmbeddedMacros() == ODatabaseModelImpl::eNoMacros )
- {
- // this is case 2. from above
- // So, pass a USE_CONFIG to the to-be-loaded document. This means that
- // the user will be prompted with a security message upon opening this
- // sub document, in case the settings require this, *and* the document
- // contains scripts in the content.xml. But this is better than the security
- // issue we had before ...
- aDocumentMacroMode.reset( MacroExecMode::USE_CONFIG );
- }
- }
-
- if ( !aDocumentMacroMode )
- {
- // nobody so far felt responsible for setting it
- // => use the DBDoc-wide macro exec mode for the document, too
- aDocumentMacroMode.reset( bExecuteDBDocMacros ? MacroExecMode::ALWAYS_EXECUTE_NO_WARN : MacroExecMode::NEVER_EXECUTE );
- }
- aDocumentArgs.put( "MacroExecutionMode", *aDocumentMacroMode );
-
- if ( ( nOpenMode == OpenMode::ALL )
- || ( nOpenMode == OpenMode::FOLDERS )
- || ( nOpenMode == OpenMode::DOCUMENTS )
- || ( nOpenMode == OpenMode::DOCUMENT_SHARE_DENY_NONE )
- || ( nOpenMode == OpenMode::DOCUMENT_SHARE_DENY_WRITE )
- )
- {
- // not supported
- ucbhelper::cancelCommandExecution(
- makeAny( UnsupportedOpenModeException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ),
- sal_Int16( nOpenMode ) ) ),
- _rxEnvironment );
- // Unreachable
- OSL_FAIL( "unreachable" );
- }
-
- OSL_ENSURE( m_pImpl->m_aProps.sPersistentName.getLength(),
- "ODocumentDefinition::onCommandOpenSomething: no persistent name - cannot load!" );
- if ( !m_pImpl->m_aProps.sPersistentName.getLength() )
- return Any();
-
- // embedded objects themself do not support the hidden flag. We implement support for
- // it by changing the STATE to RUNNING only, instead of ACTIVE.
- bool bOpenHidden = aDocumentArgs.getOrDefault( "Hidden", false );
- aDocumentArgs.remove( "Hidden" );
-
- loadEmbeddedObject( xConnection, Sequence< sal_Int8 >(), aDocumentArgs.getPropertyValues(), false, !m_bOpenInDesign );
- OSL_ENSURE( m_xEmbeddedObject.is(), "ODocumentDefinition::onCommandOpenSomething: what's this?" );
- if ( !m_xEmbeddedObject.is() )
- return Any();
-
- Reference< XModel > xModel( getComponent(), UNO_QUERY );
- Reference< report::XReportDefinition > xReportDefinition(xModel,UNO_QUERY);
-
- Reference< XModule > xModule( xModel, UNO_QUERY );
- if ( xModule.is() )
- {
- if ( m_bForm )
- xModule->setIdentifier( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.FormDesign" ) ) );
- else if ( !xReportDefinition.is() )
- xModule->setIdentifier( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sdb.TextReportDesign" ) ) );
-
- updateDocumentTitle();
- }
-
- bool bIsAliveNewStyleReport = ( !m_bOpenInDesign && xReportDefinition.is() );
- if ( bIsAliveNewStyleReport )
- {
- // we are in ReadOnly mode
- // we would like to open the Writer or Calc with the report direct, without design it.
- Reference< report::XReportEngine > xReportEngine( m_aContext.createComponent( "com.sun.star.comp.report.OReportEngineJFree" ), UNO_QUERY_THROW );
-
- xReportEngine->setReportDefinition(xReportDefinition);
- xReportEngine->setActiveConnection(m_xLastKnownConnection);
- if ( bOpenHidden )
- return makeAny( xReportEngine->createDocumentModel() );
- return makeAny( xReportEngine->createDocumentAlive( NULL ) );
- }
-
- if ( _bActivate && !bOpenHidden )
- {
- LockModifiable aLockModify( impl_getComponent_throw() );
- m_xEmbeddedObject->changeState( EmbedStates::ACTIVE );
- impl_onActivateEmbeddedObject_nothrow( false );
- }
- else
- {
- // ensure that we ourself are kept alive as long as the document is open
- LifetimeCoupler::couple( *this, xModel.get() );
- }
-
- if ( !m_bForm && m_pImpl->m_aProps.bAsTemplate && !m_bOpenInDesign )
- ODocumentDefinition::fillReportData( m_aContext, getComponent(), xConnection );
-
- return makeAny( xModel );
-}
-
-Any SAL_CALL ODocumentDefinition::execute( const Command& aCommand, sal_Int32 CommandId, const Reference< XCommandEnvironment >& Environment ) throw (Exception, CommandAbortedException, RuntimeException)
-{
- Any aRet;
-
- sal_Bool bOpen = aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "open" ) );
- sal_Bool bOpenInDesign = aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "openDesign" ) );
- sal_Bool bOpenForMail = aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "openForMail" ) );
- if ( bOpen || bOpenInDesign || bOpenForMail )
- {
- // opening the document involves a lot of VCL code, which is not thread-safe, but needs the SolarMutex locked.
- // Unfortunately, the DocumentDefinition, as well as the EmbeddedObject implementation, calls into VCL-dependent
- // components *without* releasing the own mutex, which is a guaranteed recipe for deadlocks.
- // We have control over this implementation here, and in modifying it to release the own mutex before calling into
- // the VCL-dependent components is not too difficult (was there, seen it).
- // However, we do /not/ have control over the EmbeddedObject implementation, and from a first look, it seems as
- // making it release the own mutex before calling SolarMutex-code is ... difficult, at least.
- // So, to be on the same side, we lock the SolarMutex here. Yes, it sucks.
- ::SolarMutexGuard aSolarGuard;
- ::osl::ClearableMutexGuard aGuard(m_aMutex);
- if ( m_bInExecute )
- return aRet;
-
- bool bActivateObject = true;
- if ( bOpenForMail )
- {
- OSL_FAIL( "ODocumentDefinition::execute: 'openForMail' should not be used anymore - use the 'Hidden' parameter instead!" );
- bActivateObject = false;
- }
-
- // if the object is already opened, do nothing
- if ( m_xEmbeddedObject.is() )
- {
- sal_Int32 nCurrentState = m_xEmbeddedObject->getCurrentState();
- bool bIsActive = ( nCurrentState == EmbedStates::ACTIVE );
-
- if ( bIsActive )
- {
- // exception: new-style reports always create a new document when "open" is executed
- Reference< report::XReportDefinition > xReportDefinition( impl_getComponent_throw( false ), UNO_QUERY );
- bool bIsAliveNewStyleReport = ( xReportDefinition.is() && ( bOpen || bOpenForMail ) );
-
- if ( !bIsAliveNewStyleReport )
- {
- impl_onActivateEmbeddedObject_nothrow( true );
- return makeAny( getComponent() );
- }
- }
- }
-
- m_bOpenInDesign = bOpenInDesign || bOpenForMail;
- return onCommandOpenSomething( aCommand.Argument, bActivateObject, Environment );
- }
-
- ::osl::ClearableMutexGuard aGuard(m_aMutex);
- if ( m_bInExecute )
- return aRet;
-
- if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "copyTo" ) ) )
- {
- Sequence<Any> aIni;
- aCommand.Argument >>= aIni;
- if ( aIni.getLength() != 2 )
- {
- OSL_FAIL( "Wrong argument type!" );
- ucbhelper::cancelCommandExecution(
- makeAny( IllegalArgumentException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ),
- -1 ) ),
- Environment );
- // Unreachable
- }
- Reference< XStorage> xDest(aIni[0],UNO_QUERY);
- ::rtl::OUString sPersistentName;
- aIni[1] >>= sPersistentName;
- Reference< XStorage> xStorage = getContainerStorage();
-
- xStorage->copyElementTo(m_pImpl->m_aProps.sPersistentName,xDest,sPersistentName);
- }
- else if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "preview" ) ) )
- {
- onCommandPreview(aRet);
- }
- else if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "insert" ) ) )
- {
- Sequence<Any> aIni;
- aCommand.Argument >>= aIni;
- if ( !aIni.getLength() )
- {
- OSL_FAIL( "Wrong argument count!" );
- ucbhelper::cancelCommandExecution(
- makeAny( IllegalArgumentException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ),
- -1 ) ),
- Environment );
- // Unreachable
- }
- ::rtl::OUString sURL;
- aIni[0] >>= sURL;
- onCommandInsert( sURL, Environment );
- }
- else if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "getdocumentinfo" ) ) // compatibility
- || aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "getDocumentInfo" ) )
- )
- {
- onCommandGetDocumentProperties( aRet );
- }
- else if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "delete" ) ) )
- {
- //////////////////////////////////////////////////////////////////
- // delete
- //////////////////////////////////////////////////////////////////
- closeObject();
- Reference< XStorage> xStorage = getContainerStorage();
- if ( xStorage.is() )
- xStorage->removeElement(m_pImpl->m_aProps.sPersistentName);
-
- dispose();
-
- }
- else if ( ( aCommand.Name.compareToAscii( "storeOwn" ) == 0 ) // compatibility
- || ( aCommand.Name.compareToAscii( "store" ) == 0 )
- )
- {
- impl_store_throw();
- }
- else if ( ( aCommand.Name.compareToAscii( "shutdown" ) == 0 ) // compatibility
- || ( aCommand.Name.compareToAscii( "close" ) == 0 )
- )
- {
- aRet <<= impl_close_throw();
- }
- else if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "show" ) ) )
- {
- impl_showOrHideComponent_throw( true );
- }
- else if ( aCommand.Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "hide" ) ) )
- {
- impl_showOrHideComponent_throw( false );
- }
- else
- {
- aRet = OContentHelper::execute(aCommand,CommandId,Environment);
- }
-
- return aRet;
-}
-
-namespace
-{
- void lcl_resetChildFormsToEmptyDataSource( const Reference< XIndexAccess>& _rxFormsContainer )
- {
- OSL_PRECOND( _rxFormsContainer.is(), "lcl_resetChildFormsToEmptyDataSource: illegal call!" );
- sal_Int32 count = _rxFormsContainer->getCount();
- for ( sal_Int32 i = 0; i < count; ++i )
- {
- Reference< XForm > xForm( _rxFormsContainer->getByIndex( i ), UNO_QUERY );
- if ( !xForm.is() )
- continue;
-
- // if the element is a form, reset its DataSourceName property to an empty string
- try
- {
- Reference< XPropertySet > xFormProps( xForm, UNO_QUERY_THROW );
- xFormProps->setPropertyValue( PROPERTY_DATASOURCENAME, makeAny( ::rtl::OUString() ) );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- // if the element is a container itself, step down the component hierarchy
- Reference< XIndexAccess > xContainer( xForm, UNO_QUERY );
- if ( xContainer.is() )
- lcl_resetChildFormsToEmptyDataSource( xContainer );
- }
- }
-
- void lcl_resetFormsToEmptyDataSource( const Reference< XEmbeddedObject>& _rxEmbeddedObject )
- {
- try
- {
- Reference< XComponentSupplier > xCompProv( _rxEmbeddedObject, UNO_QUERY_THROW );
- Reference< XDrawPageSupplier > xSuppPage( xCompProv->getComponent(), UNO_QUERY_THROW );
- // if this interface does not exist, then either getComponent returned NULL,
- // or the document is a multi-page document. The latter is allowed, but currently
- // simply not handled by this code, as it would not normally happen.
-
- Reference< XFormsSupplier > xSuppForms( xSuppPage->getDrawPage(), UNO_QUERY_THROW );
- Reference< XIndexAccess > xForms( xSuppForms->getForms(), UNO_QUERY_THROW );
- lcl_resetChildFormsToEmptyDataSource( xForms );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- }
-}
-
-void ODocumentDefinition::onCommandInsert( const ::rtl::OUString& _sURL, const Reference< XCommandEnvironment >& Environment )
- throw( Exception )
-{
- osl::ClearableGuard< osl::Mutex > aGuard( m_aMutex );
-
- // Check, if all required properties were set.
- if ( !_sURL.getLength() || m_xEmbeddedObject.is() )
- {
- OSL_FAIL( "Content::onCommandInsert - property value missing!" );
-
- Sequence< rtl::OUString > aProps( 1 );
- aProps[ 0 ] = PROPERTY_URL;
- ucbhelper::cancelCommandExecution(
- makeAny( MissingPropertiesException(
- rtl::OUString(),
- static_cast< cppu::OWeakObject * >( this ),
- aProps ) ),
- Environment );
- // Unreachable
- }
-
- if ( !m_xEmbeddedObject.is() )
- {
- Reference< XStorage> xStorage = getContainerStorage();
- if ( xStorage.is() )
- {
- Reference< XEmbedObjectCreator> xEmbedFactory( m_aContext.createComponent( "com.sun.star.embed.EmbeddedObjectCreator" ), UNO_QUERY );
- if ( xEmbedFactory.is() )
- {
- Sequence<PropertyValue> aEmpty,aMediaDesc(1);
- aMediaDesc[0].Name = PROPERTY_URL;
- aMediaDesc[0].Value <<= _sURL;
- m_xEmbeddedObject.set(xEmbedFactory->createInstanceInitFromMediaDescriptor( xStorage
- ,m_pImpl->m_aProps.sPersistentName
- ,aMediaDesc
- ,aEmpty),UNO_QUERY);
-
- lcl_resetFormsToEmptyDataSource( m_xEmbeddedObject );
- // #i57669#
-
- Reference<XEmbedPersist> xPersist(m_xEmbeddedObject,UNO_QUERY);
- if ( xPersist.is() )
- {
- xPersist->storeOwn();
- }
- try
- {
- Reference< com::sun::star::util::XCloseable> xCloseable(m_xEmbeddedObject,UNO_QUERY);
- if ( xCloseable.is() )
- xCloseable->close(sal_True);
- }
- catch(const Exception&)
- {
- }
- m_xEmbeddedObject = NULL;
- }
- }
- }
-
- aGuard.clear();
-}
-
-sal_Bool ODocumentDefinition::save(sal_Bool _bApprove)
-{
- // default handling: instantiate an interaction handler and let it handle the parameter request
- if ( !m_bOpenInDesign )
- return sal_False;
- try
- {
-
- {
- ::SolarMutexGuard aSolarGuard;
-
- // the request
- Reference<XNameAccess> xName(m_xParentContainer,UNO_QUERY);
- DocumentSaveRequest aRequest;
- aRequest.Name = m_pImpl->m_aProps.aTitle;
- if ( !aRequest.Name.getLength() )
- {
- if ( m_bForm )
- aRequest.Name = DBACORE_RESSTRING( RID_STR_FORM );
- else
- aRequest.Name = DBACORE_RESSTRING( RID_STR_REPORT );
- aRequest.Name = ::dbtools::createUniqueName(xName,aRequest.Name);
- }
-
- aRequest.Content.set(m_xParentContainer,UNO_QUERY);
- OInteractionRequest* pRequest = new OInteractionRequest(makeAny(aRequest));
- Reference< XInteractionRequest > xRequest(pRequest);
- // some knittings
- // two continuations allowed: OK and Cancel
- ODocumentSaveContinuation* pDocuSave = NULL;
-
- if ( !m_pImpl->m_aProps.aTitle.getLength() )
- {
- pDocuSave = new ODocumentSaveContinuation;
- pRequest->addContinuation(pDocuSave);
- }
- OInteraction< XInteractionApprove >* pApprove = NULL;
- if ( _bApprove )
- {
- pApprove = new OInteraction< XInteractionApprove >;
- pRequest->addContinuation(pApprove);
- }
-
- OInteraction< XInteractionDisapprove >* pDisApprove = new OInteraction< XInteractionDisapprove >;
- pRequest->addContinuation(pDisApprove);
-
- OInteractionAbort* pAbort = new OInteractionAbort;
- pRequest->addContinuation(pAbort);
-
- // create the handler, let it handle the request
- Reference< XInteractionHandler > xHandler( m_aContext.createComponent( (::rtl::OUString)SERVICE_TASK_INTERACTION_HANDLER ), UNO_QUERY );
- if ( xHandler.is() )
- xHandler->handle(xRequest);
-
- if ( pAbort->wasSelected() )
- return sal_False;
- if ( pDisApprove->wasSelected() )
- return sal_True;
- if ( pDocuSave && pDocuSave->wasSelected() )
- {
- Reference<XNameContainer> xNC( pDocuSave->getContent(), UNO_QUERY_THROW );
-
- ::osl::ResettableMutexGuard aGuard( m_aMutex );
- NameChangeNotifier aNameChangeAndNotify( *this, pDocuSave->getName(), aGuard );
- m_pImpl->m_aProps.aTitle = pDocuSave->getName();
-
- Reference< XContent> xContent = this;
- xNC->insertByName(pDocuSave->getName(),makeAny(xContent));
-
- updateDocumentTitle();
- }
- }
-
- ::osl::MutexGuard aGuard(m_aMutex);
- Reference<XEmbedPersist> xPersist(m_xEmbeddedObject,UNO_QUERY);
- if ( xPersist.is() )
- {
- xPersist->storeOwn();
- notifyDataSourceModified();
- }
- }
- catch(const Exception&)
- {
- OSL_FAIL("ODocumentDefinition::save: caught an Exception (tried to let the InteractionHandler handle it)!");
- }
- return sal_True;
-}
-
-sal_Bool ODocumentDefinition::saveAs()
-{
- // default handling: instantiate an interaction handler and let it handle the parameter request
- if ( !m_bOpenInDesign )
- return sal_False;
-
- {
- osl::ClearableGuard< osl::Mutex > aGuard( m_aMutex );
- if ( !m_pImpl->m_aProps.aTitle.getLength() )
- {
- aGuard.clear();
- return save(sal_False); // (sal_False) : we don't want an approve dialog
- }
- }
- try
- {
- {
- ::SolarMutexGuard aSolarGuard;
-
- // the request
- Reference<XNameAccess> xName(m_xParentContainer,UNO_QUERY);
- DocumentSaveRequest aRequest;
- aRequest.Name = m_pImpl->m_aProps.aTitle;
-
- aRequest.Content.set(m_xParentContainer,UNO_QUERY);
- OInteractionRequest* pRequest = new OInteractionRequest(makeAny(aRequest));
- Reference< XInteractionRequest > xRequest(pRequest);
- // some knittings
- // two continuations allowed: OK and Cancel
- ODocumentSaveContinuation* pDocuSave = new ODocumentSaveContinuation;
- pRequest->addContinuation(pDocuSave);
- OInteraction< XInteractionDisapprove >* pDisApprove = new OInteraction< XInteractionDisapprove >;
- pRequest->addContinuation(pDisApprove);
- OInteractionAbort* pAbort = new OInteractionAbort;
- pRequest->addContinuation(pAbort);
-
- // create the handler, let it handle the request
- Reference< XInteractionHandler > xHandler(m_aContext.createComponent(::rtl::OUString(SERVICE_TASK_INTERACTION_HANDLER)), UNO_QUERY);
- if ( xHandler.is() )
- xHandler->handle(xRequest);
-
- if ( pAbort->wasSelected() )
- return sal_False;
- if ( pDisApprove->wasSelected() )
- return sal_True;
- if ( pDocuSave->wasSelected() )
- {
- ::osl::MutexGuard aGuard(m_aMutex);
- Reference<XNameContainer> xNC(pDocuSave->getContent(),UNO_QUERY);
- if ( xNC.is() )
- {
- if ( m_pImpl->m_aProps.aTitle != pDocuSave->getName() )
- {
- try
- {
- Reference< XStorage> xStorage = getContainerStorage();
- const static ::rtl::OUString sBaseName(RTL_CONSTASCII_USTRINGPARAM("Obj"));
-
- Reference<XNameAccess> xElements(xStorage,UNO_QUERY_THROW);
- ::rtl::OUString sPersistentName = ::dbtools::createUniqueName(xElements,sBaseName);
- xStorage->copyElementTo(m_pImpl->m_aProps.sPersistentName,xStorage,sPersistentName);
-
- ::rtl::OUString sOldName = m_pImpl->m_aProps.aTitle;
- rename(pDocuSave->getName());
- updateDocumentTitle();
-
- Sequence< Any > aArguments(3);
- PropertyValue aValue;
- // set as folder
- aValue.Name = PROPERTY_NAME;
- aValue.Value <<= sOldName;
- aArguments[0] <<= aValue;
-
- aValue.Name = PROPERTY_PERSISTENT_NAME;
- aValue.Value <<= sPersistentName;
- aArguments[1] <<= aValue;
-
- aValue.Name = PROPERTY_AS_TEMPLATE;
- aValue.Value <<= m_pImpl->m_aProps.bAsTemplate;
- aArguments[2] <<= aValue;
-
- Reference< XMultiServiceFactory > xORB( m_xParentContainer, UNO_QUERY_THROW );
- Reference< XInterface > xComponent( xORB->createInstanceWithArguments( SERVICE_SDB_DOCUMENTDEFINITION, aArguments ) );
- Reference< XNameContainer > xNameContainer( m_xParentContainer, UNO_QUERY_THROW );
- xNameContainer->insertByName( sOldName, makeAny( xComponent ) );
- }
- catch(const Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- Reference<XEmbedPersist> xPersist(m_xEmbeddedObject,UNO_QUERY);
- if ( xPersist.is() )
- {
- xPersist->storeOwn();
- notifyDataSourceModified();
- }
- }
- }
- }
-
- }
- catch(const Exception&)
- {
- OSL_FAIL("ODocumentDefinition::save: caught an Exception (tried to let the InteractionHandler handle it)!");
- }
- return sal_True;
-}
-
-namespace
-{
- // .........................................................................
- void lcl_putLoadArgs( ::comphelper::NamedValueCollection& _io_rArgs, const optional_bool _bSuppressMacros, const optional_bool _bReadOnly )
- {
- if ( !!_bSuppressMacros )
- {
- if ( *_bSuppressMacros )
- {
- // if we're to suppress macros, do exactly this
- _io_rArgs.put( "MacroExecutionMode", MacroExecMode::NEVER_EXECUTE );
- }
- else
- {
- // otherwise, put the setting only if not already present
- if ( !_io_rArgs.has( "MacroExecutionMode" ) )
- {
- _io_rArgs.put( "MacroExecutionMode", MacroExecMode::USE_CONFIG );
- }
- }
- }
-
- if ( !!_bReadOnly )
- _io_rArgs.put( "ReadOnly", *_bReadOnly );
- }
-}
-
-namespace
-{
- Reference< XFrame > lcl_getDatabaseDocumentFrame( ODatabaseModelImpl& _rImpl )
- {
- Reference< XModel > xDatabaseDocumentModel( _rImpl.getModel_noCreate() );
-
- Reference< XController > xDatabaseDocumentController;
- if ( xDatabaseDocumentModel.is() )
- xDatabaseDocumentController = xDatabaseDocumentModel->getCurrentController();
-
- Reference< XFrame > xFrame;
- if ( xDatabaseDocumentController.is() )
- xFrame = xDatabaseDocumentController->getFrame();
-
- return xFrame;
- }
-}
-
-sal_Bool ODocumentDefinition::objectSupportsEmbeddedScripts() const
-{
- bool bAllowDocumentMacros = !m_pImpl->m_pDataSource
- || ( m_pImpl->m_pDataSource->determineEmbeddedMacros() == ODatabaseModelImpl::eSubDocumentMacros );
-
- // if *any* of the objects of the database document already has macros, we
- // continue to allow it to have them, until the user does a migration.
- // If there are no macros, we don't allow them to be created.
-
- return bAllowDocumentMacros;
-}
-
-::rtl::OUString ODocumentDefinition::determineContentType() const
-{
- return lcl_determineContentType_nothrow( getContainerStorage(), m_pImpl->m_aProps.sPersistentName );
-}
-
-void ODocumentDefinition::separateOpenCommandArguments( const Sequence< PropertyValue >& i_rOpenCommandArguments,
- ::comphelper::NamedValueCollection& o_rDocumentLoadArgs, ::comphelper::NamedValueCollection& o_rEmbeddedObjectDescriptor )
-{
- ::comphelper::NamedValueCollection aOpenCommandArguments( i_rOpenCommandArguments );
-
- const sal_Char* pObjectDescriptorArgs[] =
- {
- "RecoveryStorage"
- };
- for ( size_t i=0; i < SAL_N_ELEMENTS( pObjectDescriptorArgs ); ++i )
- {
- if ( aOpenCommandArguments.has( pObjectDescriptorArgs[i] ) )
- {
- o_rEmbeddedObjectDescriptor.put( pObjectDescriptorArgs[i], aOpenCommandArguments.get( pObjectDescriptorArgs[i] ) );
- aOpenCommandArguments.remove( pObjectDescriptorArgs[i] );
- }
- }
-
- o_rDocumentLoadArgs.merge( aOpenCommandArguments, false );
-}
-
-Sequence< PropertyValue > ODocumentDefinition::fillLoadArgs( const Reference< XConnection>& _xConnection, const bool _bSuppressMacros, const bool _bReadOnly,
- const Sequence< PropertyValue >& i_rOpenCommandArguments, Sequence< PropertyValue >& _out_rEmbeddedObjectDescriptor )
-{
- // .........................................................................
- // (re-)create interceptor, and put it into the descriptor of the embedded object
- if ( m_pInterceptor )
- {
- m_pInterceptor->dispose();
- m_pInterceptor->release();
- m_pInterceptor = NULL;
- }
-
- m_pInterceptor = new OInterceptor( this ,_bReadOnly);
- m_pInterceptor->acquire();
- Reference<XDispatchProviderInterceptor> xInterceptor = m_pInterceptor;
-
- ::comphelper::NamedValueCollection aEmbeddedDescriptor;
- aEmbeddedDescriptor.put( "OutplaceDispatchInterceptor", xInterceptor );
-
- // .........................................................................
- ::comphelper::NamedValueCollection aMediaDesc;
- separateOpenCommandArguments( i_rOpenCommandArguments, aMediaDesc, aEmbeddedDescriptor );
-
- // .........................................................................
- // create the OutplaceFrameProperties, and put them into the descriptor of the embedded object
- ::comphelper::NamedValueCollection OutplaceFrameProperties;
- OutplaceFrameProperties.put( "TopWindow", (sal_Bool)sal_True );
-
- Reference< XFrame > xParentFrame;
- if ( m_pImpl->m_pDataSource )
- xParentFrame = lcl_getDatabaseDocumentFrame( *m_pImpl->m_pDataSource );
- if ( !xParentFrame.is() )
- { // i87957 we need a parent frame
- Reference< XComponentLoader > xDesktop( m_aContext.createComponent( (::rtl::OUString)SERVICE_FRAME_DESKTOP ), UNO_QUERY_THROW );
- xParentFrame.set( xDesktop, UNO_QUERY );
- if ( xParentFrame.is() )
- {
- Reference<util::XCloseable> xCloseable(m_pImpl->m_pDataSource->getModel_noCreate(),UNO_QUERY);
- if ( xCloseable.is() )
- {
- xCloseable->addCloseListener(this);
- m_bRemoveListener = sal_True;
- }
- }
- }
- OSL_ENSURE( xParentFrame.is(), "ODocumentDefinition::fillLoadArgs: no parent frame!" );
- if ( xParentFrame.is() )
- OutplaceFrameProperties.put( "ParentFrame", xParentFrame );
-
- aEmbeddedDescriptor.put( "OutplaceFrameProperties", OutplaceFrameProperties.getNamedValues() );
-
- // .........................................................................
- // tell the embedded object to have (or not have) script support
- aEmbeddedDescriptor.put( "EmbeddedScriptSupport", (sal_Bool)objectSupportsEmbeddedScripts() );
-
- // .........................................................................
- // tell the embedded object to not participate in the document recovery game - the DB doc will handle it
- aEmbeddedDescriptor.put( "DocumentRecoverySupport", (sal_Bool)sal_False );
-
- // .........................................................................
- // pass the descriptor of the embedded object to the caller
- aEmbeddedDescriptor >>= _out_rEmbeddedObjectDescriptor;
-
- // .........................................................................
- // create the ComponentData, and put it into the document's media descriptor
- {
- ::comphelper::NamedValueCollection aComponentData;
- aComponentData.put( "ActiveConnection", _xConnection );
- aComponentData.put( "ApplyFormDesignMode", !_bReadOnly );
- aMediaDesc.put( "ComponentData", aComponentData.getPropertyValues() );
- }
-
- if ( m_pImpl->m_aProps.aTitle.getLength() )
- aMediaDesc.put( "DocumentTitle", m_pImpl->m_aProps.aTitle );
-
- aMediaDesc.put( "DocumentBaseURL", m_pImpl->m_pDataSource->getURL() );
-
- // .........................................................................
- // put the common load arguments into the document's media descriptor
- lcl_putLoadArgs( aMediaDesc, optional_bool( _bSuppressMacros ), optional_bool( _bReadOnly ) );
-
- return aMediaDesc.getPropertyValues();
-}
-
-void ODocumentDefinition::loadEmbeddedObject( const Reference< XConnection >& i_rConnection, const Sequence< sal_Int8 >& _aClassID,
- const Sequence< PropertyValue >& i_rOpenCommandArguments, const bool _bSuppressMacros, const bool _bReadOnly )
-{
- if ( !m_xEmbeddedObject.is() )
- {
- Reference< XStorage> xStorage = getContainerStorage();
- if ( xStorage.is() )
- {
- Reference< XEmbedObjectFactory> xEmbedFactory( m_aContext.createComponent( "com.sun.star.embed.OOoEmbeddedObjectFactory" ), UNO_QUERY );
- if ( xEmbedFactory.is() )
- {
- ::rtl::OUString sDocumentService;
- sal_Bool bSetSize = sal_False;
- sal_Int32 nEntryConnectionMode = EntryInitModes::DEFAULT_INIT;
- Sequence< sal_Int8 > aClassID = _aClassID;
- if ( aClassID.getLength() )
- {
- nEntryConnectionMode = EntryInitModes::TRUNCATE_INIT;
- bSetSize = sal_True;
- }
- else
- {
- sDocumentService = GetDocumentServiceFromMediaType( getContentType(), m_aContext, aClassID );
- // check if we are not a form and
- // the com.sun.star.report.pentaho.SOReportJobFactory is not present.
- if ( !m_bForm && !sDocumentService.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("com.sun.star.text.TextDocument")))
- {
- // we seem to be a "new style" report, check if report extension is present.
- Reference< XContentEnumerationAccess > xEnumAccess( m_aContext.getLegacyServiceFactory(), UNO_QUERY );
- const ::rtl::OUString sReportEngineServiceName = ::dbtools::getDefaultReportEngineServiceName(m_aContext.getLegacyServiceFactory());
- Reference< XEnumeration > xEnumDrivers = xEnumAccess->createContentEnumeration(sReportEngineServiceName);
- if ( !xEnumDrivers.is() || !xEnumDrivers->hasMoreElements() )
- {
- com::sun::star::io::WrongFormatException aWFE;
- aWFE.Message = DBACORE_RESSTRING( RID_STR_MISSING_EXTENSION );
- throw aWFE;
- }
- }
- if ( !aClassID.getLength() )
- {
- if ( m_bForm )
- aClassID = MimeConfigurationHelper::GetSequenceClassID(SO3_SW_CLASSID);
- else
- {
- aClassID = MimeConfigurationHelper::GetSequenceClassID(SO3_RPT_CLASSID_90);
- }
- }
- }
-
- OSL_ENSURE( aClassID.getLength(),"No Class ID" );
-
- Sequence< PropertyValue > aEmbeddedObjectDescriptor;
- Sequence< PropertyValue > aLoadArgs( fillLoadArgs(
- i_rConnection, _bSuppressMacros, _bReadOnly, i_rOpenCommandArguments, aEmbeddedObjectDescriptor ) );
-
- m_xEmbeddedObject.set(xEmbedFactory->createInstanceUserInit(aClassID
- ,sDocumentService
- ,xStorage
- ,m_pImpl->m_aProps.sPersistentName
- ,nEntryConnectionMode
- ,aLoadArgs
- ,aEmbeddedObjectDescriptor
- ),UNO_QUERY);
- if ( m_xEmbeddedObject.is() )
- {
- if ( !m_pClientHelper )
- {
- m_pClientHelper = new OEmbeddedClientHelper(this);
- m_pClientHelper->acquire();
- }
- Reference<XEmbeddedClient> xClient = m_pClientHelper;
- m_xEmbeddedObject->setClientSite(xClient);
- m_xEmbeddedObject->changeState(EmbedStates::RUNNING);
- if ( bSetSize )
- {
- LockModifiable aLockModify( impl_getComponent_throw( false ) );
-
- awt::Size aSize( DEFAULT_WIDTH, DEFAULT_HEIGHT );
- m_xEmbeddedObject->setVisualAreaSize(Aspects::MSOLE_CONTENT,aSize);
- }
- }
- }
- }
- }
- else
- {
- sal_Int32 nCurrentState = m_xEmbeddedObject->getCurrentState();
- if ( nCurrentState == EmbedStates::LOADED )
- {
- if ( !m_pClientHelper )
- {
- m_pClientHelper = new OEmbeddedClientHelper(this);
- m_pClientHelper->acquire();
- }
- Reference<XEmbeddedClient> xClient = m_pClientHelper;
- m_xEmbeddedObject->setClientSite(xClient);
-
- Sequence< PropertyValue > aEmbeddedObjectDescriptor;
- Sequence< PropertyValue > aLoadArgs( fillLoadArgs(
- i_rConnection, _bSuppressMacros, _bReadOnly, i_rOpenCommandArguments, aEmbeddedObjectDescriptor ) );
-
- Reference<XCommonEmbedPersist> xCommon(m_xEmbeddedObject,UNO_QUERY);
- OSL_ENSURE(xCommon.is(),"unsupported interface!");
- if ( xCommon.is() )
- xCommon->reload( aLoadArgs, aEmbeddedObjectDescriptor );
- m_xEmbeddedObject->changeState(EmbedStates::RUNNING);
- }
- else
- {
- OSL_ENSURE( ( nCurrentState == EmbedStates::RUNNING ) || ( nCurrentState == EmbedStates::ACTIVE ),
- "ODocumentDefinition::loadEmbeddedObject: unexpected state!" );
-
- // if the document was already loaded (which means the embedded object is in state RUNNING or ACTIVE),
- // then just re-set some model parameters
- try
- {
- // ensure the media descriptor doesn't contain any values which are intended for the
- // EmbeddedObjectDescriptor only
- ::comphelper::NamedValueCollection aEmbeddedObjectDescriptor;
- ::comphelper::NamedValueCollection aNewMediaDesc;
- separateOpenCommandArguments( i_rOpenCommandArguments, aNewMediaDesc, aEmbeddedObjectDescriptor );
-
- // merge the new media descriptor into the existing media descriptor
- const Reference< XModel > xModel( getComponent(), UNO_QUERY_THROW );
- const Sequence< PropertyValue > aArgs = xModel->getArgs();
- ::comphelper::NamedValueCollection aExistentMediaDesc( aArgs );
- aExistentMediaDesc.merge( aNewMediaDesc, sal_False );
-
- lcl_putLoadArgs( aExistentMediaDesc, optional_bool(), optional_bool() );
- // don't put _bSuppressMacros and _bReadOnly here - if the document was already
- // loaded, we should not tamper with its settings.
- // #i88977# #i86872#
-
- xModel->attachResource( xModel->getURL(), aExistentMediaDesc.getPropertyValues() );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- }
-
- // set the OfficeDatabaseDocument instance as parent of the embedded document
- // #i40358#
- Reference< XChild > xDepdendDocAsChild( getComponent(), UNO_QUERY );
- if ( xDepdendDocAsChild.is() )
- {
- try
- {
- if ( !xDepdendDocAsChild->getParent().is() )
- { // first encounter
- xDepdendDocAsChild->setParent( getDataSource( m_xParentContainer ) );
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- if ( i_rConnection.is() )
- m_xLastKnownConnection = i_rConnection;
-}
-
-void ODocumentDefinition::onCommandPreview(Any& _rImage)
-{
- loadEmbeddedObjectForPreview();
- if ( m_xEmbeddedObject.is() )
- {
- try
- {
- Reference<XTransferable> xTransfer(getComponent(),UNO_QUERY);
- if ( xTransfer.is() )
- {
- DataFlavor aFlavor;
- aFlavor.MimeType = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("image/png"));
- aFlavor.HumanPresentableName = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Portable Network Graphics"));
- aFlavor.DataType = ::getCppuType(static_cast< const Sequence < sal_Int8 >* >(NULL));
-
- _rImage = xTransfer->getTransferData( aFlavor );
- }
- }
- catch( const Exception& )
- {
- }
- }
-}
-
-void ODocumentDefinition::getPropertyDefaultByHandle( sal_Int32 /*_nHandle*/, Any& _rDefault ) const
-{
- _rDefault.clear();
-}
-
-void ODocumentDefinition::onCommandGetDocumentProperties( Any& _rProps )
-{
- loadEmbeddedObjectForPreview();
- if ( m_xEmbeddedObject.is() )
- {
- try
- {
- Reference<XDocumentPropertiesSupplier> xDocSup(
- getComponent(), UNO_QUERY );
- if ( xDocSup.is() )
- _rProps <<= xDocSup->getDocumentProperties();
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-}
-
-Reference< util::XCloseable > ODocumentDefinition::impl_getComponent_throw( const bool i_ForceCreate )
-{
- OSL_ENSURE(m_xEmbeddedObject.is(),"Illegal call for embeddedObject");
- Reference< util::XCloseable > xComp;
- if ( m_xEmbeddedObject.is() )
- {
- int nState = m_xEmbeddedObject->getCurrentState();
- if ( ( nState == EmbedStates::LOADED ) && i_ForceCreate )
- {
- m_xEmbeddedObject->changeState( EmbedStates::RUNNING );
- nState = m_xEmbeddedObject->getCurrentState();
- OSL_ENSURE( nState == EmbedStates::RUNNING, "ODocumentDefinition::impl_getComponent_throw: could not switch to RUNNING!" );
- }
-
- if ( nState == EmbedStates::ACTIVE || nState == EmbedStates::RUNNING )
- {
- Reference<XComponentSupplier> xCompProv(m_xEmbeddedObject,UNO_QUERY);
- if ( xCompProv.is() )
- {
- xComp = xCompProv->getComponent();
- OSL_ENSURE(xComp.is(),"No valid component");
- }
- }
- }
- return xComp;
-}
-
-Reference< util::XCloseable > ODocumentDefinition::getComponent() throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- return impl_getComponent_throw( true );
-}
-
-namespace
-{
- Reference< XDatabaseDocumentUI > lcl_getDatabaseDocumentUI( ODatabaseModelImpl& _rModelImpl )
- {
- Reference< XDatabaseDocumentUI > xUI;
-
- Reference< XModel > xModel( _rModelImpl.getModel_noCreate() );
- if ( xModel.is() )
- xUI.set( xModel->getCurrentController(), UNO_QUERY );
- return xUI;
- }
-}
-
-Reference< XComponent > ODocumentDefinition::impl_openUI_nolck_throw( bool _bForEditing )
-{
- ::osl::ClearableMutexGuard aGuard( m_aMutex );
- if ( !m_pImpl || !m_pImpl->m_pDataSource )
- throw DisposedException();
-
- Reference< XDatabaseDocumentUI > xUI( lcl_getDatabaseDocumentUI( *m_pImpl->m_pDataSource ) );
- if ( !xUI.is() )
- {
- // no XDatabaseDocumentUI -> just execute the respective command
- m_bOpenInDesign = _bForEditing;
- Reference< XComponent > xComponent( onCommandOpenSomething( Any(), true, NULL ), UNO_QUERY );
- OSL_ENSURE( xComponent.is(), "ODocumentDefinition::impl_openUI_nolck_throw: opening the thingie failed." );
- return xComponent;
- }
-
- Reference< XComponent > xComponent;
- try
- {
- ::rtl::OUString sName( impl_getHierarchicalName( false ) );
- sal_Int32 nObjectType = m_bForm ? DatabaseObject::FORM : DatabaseObject::REPORT;
- aGuard.clear();
-
- xComponent = xUI->loadComponent(
- nObjectType, sName, _bForEditing
- );
- }
- catch( const RuntimeException& ) { throw; }
- catch( const Exception& )
- {
- throw WrappedTargetException(
- ::rtl::OUString(), *this, ::cppu::getCaughtException() );
- }
- return xComponent;
-}
-
-void ODocumentDefinition::impl_store_throw()
-{
- Reference<XEmbedPersist> xPersist( m_xEmbeddedObject, UNO_QUERY );
- if ( xPersist.is() )
- {
- xPersist->storeOwn();
- notifyDataSourceModified();
- }
-}
-
-bool ODocumentDefinition::impl_close_throw()
-{
- bool bSuccess = prepareClose();
- if ( bSuccess && m_xEmbeddedObject.is() )
- {
- m_xEmbeddedObject->changeState( EmbedStates::LOADED );
- bSuccess = m_xEmbeddedObject->getCurrentState() == EmbedStates::LOADED;
- }
- return bSuccess;
-}
-
-Reference< XComponent > SAL_CALL ODocumentDefinition::open( ) throw (WrappedTargetException, RuntimeException)
-{
- return impl_openUI_nolck_throw( false );
-}
-
-Reference< XComponent > SAL_CALL ODocumentDefinition::openDesign( ) throw (WrappedTargetException, RuntimeException)
-{
- return impl_openUI_nolck_throw( true );
-}
-
-void SAL_CALL ODocumentDefinition::store( ) throw (WrappedTargetException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- try
- {
- impl_store_throw();
- }
- catch( const RuntimeException& ) { throw; }
- catch( const Exception& )
- {
- throw WrappedTargetException(
- ::rtl::OUString(), *this, ::cppu::getCaughtException() );
- }
-}
-
-::sal_Bool SAL_CALL ODocumentDefinition::close( ) throw (WrappedTargetException, RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
-
- sal_Bool bSuccess = sal_False;
- try
- {
- bSuccess = impl_close_throw();
- }
- catch( const RuntimeException& ) { throw; }
- catch( const Exception& )
- {
- throw WrappedTargetException(
- ::rtl::OUString(), *this, ::cppu::getCaughtException() );
- }
- return bSuccess;
-}
-
-::rtl::OUString SAL_CALL ODocumentDefinition::getHierarchicalName() throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- return impl_getHierarchicalName( false );
-}
-
-::rtl::OUString SAL_CALL ODocumentDefinition::composeHierarchicalName( const ::rtl::OUString& i_rRelativeName ) throw (IllegalArgumentException, NoSupportException, RuntimeException)
-{
- ::rtl::OUStringBuffer aBuffer;
- aBuffer.append( getHierarchicalName() );
- aBuffer.append( sal_Unicode( '/' ) );
- aBuffer.append( i_rRelativeName );
- return aBuffer.makeStringAndClear();
-}
-
-void SAL_CALL ODocumentDefinition::rename( const ::rtl::OUString& _rNewName ) throw (SQLException, ElementExistException, RuntimeException)
-{
- try
- {
- ::osl::ResettableMutexGuard aGuard(m_aMutex);
- if ( _rNewName.equals( m_pImpl->m_aProps.aTitle ) )
- return;
-
- // document definitions are organized in a hierarchical way, so reject names
- // which contain a /, as this is reserved for hierarchy level separation
- if ( _rNewName.indexOf( '/' ) != -1 )
- m_aErrorHelper.raiseException( ErrorCondition::DB_OBJECT_NAME_WITH_SLASHES, *this );
-
- NameChangeNotifier aNameChangeAndNotify( *this, _rNewName, aGuard );
- m_pImpl->m_aProps.aTitle = _rNewName;
-
- if ( m_xEmbeddedObject.is() && m_xEmbeddedObject->getCurrentState() == EmbedStates::ACTIVE )
- updateDocumentTitle();
- }
- catch(const PropertyVetoException&)
- {
- throw ElementExistException(_rNewName,*this);
- }
-}
-
-Reference< XStorage> ODocumentDefinition::getContainerStorage() const
-{
- return m_pImpl->m_pDataSource
- ? m_pImpl->m_pDataSource->getStorage( m_bForm ? ODatabaseModelImpl::E_FORM : ODatabaseModelImpl::E_REPORT )
- : Reference< XStorage>();
-}
-
-sal_Bool ODocumentDefinition::isModified()
-{
- osl::ClearableGuard< osl::Mutex > aGuard(m_aMutex);
- sal_Bool bRet = sal_False;
- if ( m_xEmbeddedObject.is() )
- {
- Reference<XModifiable> xModel(getComponent(),UNO_QUERY);
- bRet = xModel.is() && xModel->isModified();
- }
- return bRet;
-}
-
-bool ODocumentDefinition::prepareClose()
-{
- if ( !m_xEmbeddedObject.is() )
- return true;
-
- try
- {
- // suspend the controller. Embedded objects are not allowed to raise
- // own UI at their own discretion, instead, this has always to be triggered
- // by the embedding component. Thus, we do the suspend call here.
- // #i49370#
-
- Reference< util::XCloseable > xComponent( impl_getComponent_throw( false ) );
- if ( !xComponent.is() )
- return true;
-
- Reference< XModel > xModel( xComponent, UNO_QUERY );
- Reference< XController > xController;
- if ( xModel.is() )
- xController = xModel->getCurrentController();
-
- OSL_ENSURE( xController.is() || ( m_xEmbeddedObject->getCurrentState() < EmbedStates::ACTIVE ),
- "ODocumentDefinition::prepareClose: no controller!" );
- if ( !xController.is() )
- // document has not yet been activated, i.e. has no UI, yet
- return true;
-
- sal_Bool bCouldSuspend = xController->suspend( sal_True );
- if ( !bCouldSuspend )
- // controller vetoed the closing
- return false;
-
- if ( isModified() )
- {
- Reference< XFrame > xFrame( xController->getFrame() );
- if ( xFrame.is() )
- {
- Reference< XTopWindow > xTopWindow( xFrame->getContainerWindow(), UNO_QUERY_THROW );
- xTopWindow->toFront();
- }
- if ( !save( sal_True ) )
- {
- if ( bCouldSuspend )
- // revert suspension
- xController->suspend( sal_False );
- // saving failed or was cancelled
- return false;
- }
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- return true;
-}
-
-void ODocumentDefinition::fillReportData( const ::comphelper::ComponentContext& _rContext,
- const Reference< util::XCloseable >& _rxComponent,
- const Reference< XConnection >& _rxActiveConnection )
-{
- Sequence< Any > aArgs(2);
- PropertyValue aValue;
- aValue.Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "TextDocument" ) );
- aValue.Value <<= _rxComponent;
- aArgs[0] <<= aValue;
- aValue.Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "ActiveConnection" ) );
- aValue.Value <<= _rxActiveConnection;
- aArgs[1] <<= aValue;
-
- try
- {
- Reference< XJobExecutor > xExecuteable(
- _rContext.createComponentWithArguments( "com.sun.star.wizards.report.CallReportWizard", aArgs ), UNO_QUERY_THROW );
- xExecuteable->trigger( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "fill" ) ) );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-void ODocumentDefinition::updateDocumentTitle()
-{
- ::rtl::OUString sName = m_pImpl->m_aProps.aTitle;
- if ( m_pImpl->m_pDataSource )
- {
- if ( !sName.getLength() )
- {
- if ( m_bForm )
- sName = DBACORE_RESSTRING( RID_STR_FORM );
- else
- sName = DBACORE_RESSTRING( RID_STR_REPORT );
- Reference< XUntitledNumbers > xUntitledProvider(m_pImpl->m_pDataSource->getModel_noCreate(), UNO_QUERY );
- if ( xUntitledProvider.is() )
- sName += ::rtl::OUString::valueOf( xUntitledProvider->leaseNumber(getComponent()) );
- }
-
- Reference< XTitle > xDatabaseDocumentModel(m_pImpl->m_pDataSource->getModel_noCreate(),uno::UNO_QUERY);
- if ( xDatabaseDocumentModel.is() )
- sName = xDatabaseDocumentModel->getTitle() + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(" : ")) + sName;
- }
- Reference< XTitle> xTitle(getComponent(),UNO_QUERY);
- if ( xTitle.is() )
- xTitle->setTitle(sName);
-}
-
-void SAL_CALL ODocumentDefinition::queryClosing( const lang::EventObject& Source, ::sal_Bool GetsOwnership ) throw (util::CloseVetoException, uno::RuntimeException)
-{
- (void) Source;
- (void) GetsOwnership;
- try
- {
- if ( !close() )
- throw util::CloseVetoException();
- }
- catch(const lang::WrappedTargetException&)
- {
- throw util::CloseVetoException();
- }
-}
-
-void SAL_CALL ODocumentDefinition::notifyClosing( const lang::EventObject& /*Source*/ ) throw (uno::RuntimeException)
-{
-}
-
-void SAL_CALL ODocumentDefinition::disposing( const lang::EventObject& /*Source*/ ) throw (uno::RuntimeException)
-{
-}
-
-void ODocumentDefinition::firePropertyChange( sal_Int32 i_nHandle, const Any& i_rNewValue, const Any& i_rOldValue,
- sal_Bool i_bVetoable, const NotifierAccess )
-{
- fire( &i_nHandle, &i_rNewValue, &i_rOldValue, 1, i_bVetoable );
-}
-
-// =============================================================================
-// NameChangeNotifier
-// =============================================================================
-NameChangeNotifier::NameChangeNotifier( ODocumentDefinition& i_rDocumentDefinition, const ::rtl::OUString& i_rNewName,
- ::osl::ResettableMutexGuard& i_rClearForNotify )
- :m_rDocumentDefinition( i_rDocumentDefinition )
- ,m_aOldValue( makeAny( i_rDocumentDefinition.getCurrentName() ) )
- ,m_aNewValue( makeAny( i_rNewName ) )
- ,m_rClearForNotify( i_rClearForNotify )
-{
- impl_fireEvent_throw( sal_True );
-}
-
-NameChangeNotifier::~NameChangeNotifier()
-{
- impl_fireEvent_throw( sal_False );
-}
-
-void NameChangeNotifier::impl_fireEvent_throw( const sal_Bool i_bVetoable )
-{
- m_rClearForNotify.clear();
- m_rDocumentDefinition.firePropertyChange(
- PROPERTY_ID_NAME, m_aNewValue, m_aOldValue, i_bVetoable, ODocumentDefinition::NotifierAccess() );
- m_rClearForNotify.reset();
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/documentdefinition.hxx b/dbaccess/source/core/dataaccess/documentdefinition.hxx
deleted file mode 100644
index e51b95994..000000000
--- a/dbaccess/source/core/dataaccess/documentdefinition.hxx
+++ /dev/null
@@ -1,386 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_COREDATAACCESS_DOCUMENTDEFINITION_HXX_
-#define _DBA_COREDATAACCESS_DOCUMENTDEFINITION_HXX_
-
-#include <cppuhelper/propshlp.hxx>
-#include <cppuhelper/implbase4.hxx>
-#include "ContentHelper.hxx"
-#include <comphelper/propertystatecontainer.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include "apitools.hxx"
-#include <comphelper/uno3.hxx>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/frame/XComponentLoader.hpp>
-#include <com/sun/star/frame/XController.hpp>
-#include <com/sun/star/embed/XStateChangeListener.hpp>
-#include <com/sun/star/sdb/XSubDocument.hpp>
-#include <com/sun/star/util/XCloseListener.hpp>
-#include <com/sun/star/container/XHierarchicalName.hpp>
-
-namespace comphelper
-{
- class NamedValueCollection;
-}
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- class OInterceptor;
- class OEmbeddedClientHelper;
-//==========================================================================
-//= ODocumentDefinition - a database "document" which is simply a link to a real
-//= document
-//==========================================================================
-
-typedef ::cppu::ImplHelper4 < ::com::sun::star::embed::XComponentSupplier
- , ::com::sun::star::sdb::XSubDocument
- , ::com::sun::star::util::XCloseListener
- , ::com::sun::star::container::XHierarchicalName
- > ODocumentDefinition_Base;
-
-class ODocumentDefinition
- :public OContentHelper
- ,public ::comphelper::OPropertyStateContainer
- ,public ::comphelper::OPropertyArrayUsageHelper< ODocumentDefinition >
- ,public ODocumentDefinition_Base
-{
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XEmbeddedObject> m_xEmbeddedObject;
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStateChangeListener > m_xListener;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xLastKnownConnection;
-
- OInterceptor* m_pInterceptor;
- sal_Bool m_bForm; // <TRUE/> if it is a form
- sal_Bool m_bOpenInDesign;
- sal_Bool m_bInExecute;
- sal_Bool m_bRemoveListener;
- OEmbeddedClientHelper* m_pClientHelper;
-
-protected:
- virtual ~ODocumentDefinition();
-
-public:
-
- ODocumentDefinition(
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxContainer,
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >&,
- const TContentPtr& _pImpl,
- sal_Bool _bForm
- );
-
- void initialLoad(
- const ::com::sun::star::uno::Sequence< sal_Int8 >& i_rClassID,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_rCreationArgs,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& i_rConnection
- );
-
-// com::sun::star::lang::XTypeProvider
- DECLARE_TYPEPROVIDER( );
-
-// ::com::sun::star::uno::XInterface
- DECLARE_XINTERFACE( )
-
-// ::com::sun::star::lang::XServiceInfo
- DECLARE_SERVICE_INFO_STATIC();
-
-// ::com::sun::star::beans::XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-
- // OPropertySetHelper
- virtual void SAL_CALL getFastPropertyValue(
- ::com::sun::star::uno::Any& o_rValue,
- sal_Int32 i_nHandle
- ) const;
-
- // XComponentSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable > SAL_CALL getComponent( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XSubDocument
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL open( ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent > SAL_CALL openDesign( ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL store( ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::sal_Bool SAL_CALL close( ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
- // XHierarchicalName
- virtual ::rtl::OUString SAL_CALL getHierarchicalName( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL composeHierarchicalName( const ::rtl::OUString& aRelativeName ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
-
-// OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- // XCommandProcessor
- virtual ::com::sun::star::uno::Any SAL_CALL execute( const ::com::sun::star::ucb::Command& aCommand, sal_Int32 CommandId, const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& Environment ) throw (::com::sun::star::uno::Exception, ::com::sun::star::ucb::CommandAbortedException, ::com::sun::star::uno::RuntimeException) ;
-
- // XRename
- virtual void SAL_CALL rename( const ::rtl::OUString& newName ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException);
-
- // XCloseListener
- virtual void SAL_CALL queryClosing( const ::com::sun::star::lang::EventObject& Source, ::sal_Bool GetsOwnership ) throw (::com::sun::star::util::CloseVetoException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL notifyClosing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
-
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
-
- /** returns the forms/reports container storage, depending on m_bForm. Our own storage
- inside this container storage is the one with the name as indicated by m_pImpl->m_aProps.sPersistentName.
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >
- getContainerStorage() const;
-
- sal_Bool save(sal_Bool _bApprove);
- sal_Bool saveAs();
- void closeObject();
- sal_Bool isModified();
- inline sal_Bool isNewReport() const { return !m_bForm && !m_pImpl->m_aProps.bAsTemplate; }
-
- static void fillReportData(
- const ::comphelper::ComponentContext& _rContext,
- const ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable >& _rxComponent,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxActiveConnection
- );
-
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >&
- getConnection() const { return m_xLastKnownConnection; }
-
- /** prepares closing the document component
-
- The method suspends the controller associated with the document, and saves the document
- if necessary.
-
- @return
- <TRUE/> if and only if the document component can be closed
- */
- bool prepareClose();
-
- static ::com::sun::star::uno::Sequence< sal_Int8 > getDefaultDocumentTypeClassId();
-
- static ::rtl::OUString GetDocumentServiceFromMediaType(
- const ::rtl::OUString& _rMediaType,
- const ::comphelper::ComponentContext& _rContext,
- ::com::sun::star::uno::Sequence< sal_Int8 >& _rClassId
- );
- static ::rtl::OUString GetDocumentServiceFromMediaType(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxContainerStorage,
- const ::rtl::OUString& _rEntityName,
- const ::comphelper::ComponentContext& _rContext,
- ::com::sun::star::uno::Sequence< sal_Int8 >& _rClassId
- );
-
- struct NotifierAccess { friend class NameChangeNotifier; private: NotifierAccess() { } };
- const ::rtl::OUString& getCurrentName() const { return m_pImpl->m_aProps.aTitle; }
- void firePropertyChange(
- sal_Int32 i_nHandle,
- const ::com::sun::star::uno::Any& i_rNewValue,
- const ::com::sun::star::uno::Any& i_rOldValue,
- sal_Bool i_bVetoable,
- const NotifierAccess
- );
-
-private:
- /** does necessary initializations after our embedded object has been switched to ACTIVE
- */
- void impl_onActivateEmbeddedObject_nothrow( const bool i_bReactivated );
-
- /** initializes a newly created view/controller of a form which is displaying our embedded object
-
- Has only to be called if the respective embedded object has been loaded for design (and
- not for data entry)
-
- @param _rxController
- the controller which belongs to the XModel of our (active) embedded object
- */
- static void impl_initFormEditView( const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& _rxController );
-
- /** removes the given frame from the desktop's frame collection
- @raises ::com::sun::star::uno::RuntimeException
- */
- static void impl_removeFrameFromDesktop_throw(
- const ::comphelper::ComponentContext& _rContxt,
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XFrame >& _rxFrame
- );
-
- /** opens the UI for this sub document
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
- impl_openUI_nolck_throw( bool _bForEditing );
-
- /** stores our document, if it's already loaded
- */
- void impl_store_throw();
-
- /** closes our document, if it's open
- */
- bool impl_close_throw();
-
- /** returns our component, creates it if necessary
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::util::XCloseable >
- impl_getComponent_throw( const bool i_ForceCreate = true );
-
- /** shows or hides our component
-
- The embedded object must exist, and be in state LOADED, at least.
- */
- void impl_showOrHideComponent_throw( const bool i_bShow );
-
- // OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
- virtual void getPropertyDefaultByHandle( sal_Int32 _nHandle, ::com::sun::star::uno::Any& _rDefault ) const;
-
- // helper
- virtual void SAL_CALL disposing();
-
- // OContentHelper overridables
- virtual ::rtl::OUString determineContentType() const;
-
- /** fills the load arguments
- */
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >
- fillLoadArgs(
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection,
- const bool _bSuppressMacros,
- const bool _bReadOnly,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_rOpenCommandArguments,
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _out_rEmbeddedObjectDescriptor
- );
-
- /** splits the given arguments to an "open*" command into arguments for loading the document, and arguments to be
- put into the EmbeddedObjectDescriptor
-
- Any values already present in <code>o_rDocumentLoadArgs</code> and <code>o_rEmbeddedObjectDescriptor</code>
- will be overwritten by values from <code>i_rOpenCommandArguments</code>, if applicable, otherwise they will
- be preserved.
-
- @param i_rOpenCommandArguments
- the arguments passed to the "open*" command at the content
- @param o_rDocumentLoadArgs
- the arguments to be passed when actually loading the embedded document.
- @param o_rEmbeddedObjectDescriptor
- the EmbeddedObjectDescriptor to be passed when initializing the embedded object
- */
- void separateOpenCommandArguments(
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& i_rOpenCommandArguments,
- ::comphelper::NamedValueCollection& o_rDocumentLoadArgs,
- ::comphelper::NamedValueCollection& o_rEmbeddedObjectDescriptor
- );
-
- /** loads the EmbeddedObject if not already loaded
- @param _aClassID
- If set, it will be used to create the embedded object.
- */
- void loadEmbeddedObject(
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection,
- const ::com::sun::star::uno::Sequence< sal_Int8 >& _aClassID,
- const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >& _rAdditionalArgs,
- const bool _bSuppressMacros,
- const bool _bReadOnly
- );
-
- /** loads the embedded object, if not already loaded. No new object can be created with this method.
- */
- void loadEmbeddedObject( bool _bSuppressMacros = false )
- {
- loadEmbeddedObject(
- NULL,
- ::com::sun::star::uno::Sequence< sal_Int8 >(),
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >(),
- _bSuppressMacros,
- false
- );
- }
-
- /** loads the embedded object for preview. Macros will be suppressed, and the document will
- be read-only.
- */
- void loadEmbeddedObjectForPreview()
- {
- loadEmbeddedObject(
- NULL,
- ::com::sun::star::uno::Sequence< sal_Int8 >(),
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >(),
- true,
- true
- );
- }
-
- /** searches for read-only flag in the args of the model and sets it to the given value,
- if the value was not found, it will be appended.
- @param _bReadOnly
- If <TRUE/> the document will be switched to readonly mode
- */
- void updateDocumentTitle();
-
- void registerProperties();
-
- /** determines whether the document we represent supports embedded scripts and macros
- */
- sal_Bool objectSupportsEmbeddedScripts() const;
-
- //- commands
-
- void onCommandGetDocumentProperties( ::com::sun::star::uno::Any& _rProps );
- void onCommandInsert( const ::rtl::OUString& _sURL, const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& Environment ) throw( ::com::sun::star::uno::Exception );
- void onCommandPreview( ::com::sun::star::uno::Any& _rImage );
- ::com::sun::star::uno::Any
- onCommandOpenSomething(
- const ::com::sun::star::uno::Any& _rArgument,
- const bool _bActivate,
- const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& _rxEnvironment
- );
-private:
- using ::cppu::OPropertySetHelper::getFastPropertyValue;
-};
-
-class NameChangeNotifier
-{
-public:
- NameChangeNotifier(
- ODocumentDefinition& i_rDocumentDefinition,
- const ::rtl::OUString& i_rNewName,
- ::osl::ResettableMutexGuard& i_rClearForNotify
- );
- ~NameChangeNotifier();
-
-private:
- ODocumentDefinition& m_rDocumentDefinition;
- const ::com::sun::star::uno::Any m_aOldValue;
- const ::com::sun::star::uno::Any m_aNewValue;
- ::osl::ResettableMutexGuard& m_rClearForNotify;
-
- void impl_fireEvent_throw( const sal_Bool i_bVetoable );
-};
-
-} // namespace dbaccess
-
-#endif // _DBA_COREDATAACCESS_DOCUMENTDEFINITION_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/documenteventexecutor.cxx b/dbaccess/source/core/dataaccess/documenteventexecutor.cxx
deleted file mode 100644
index ab44de2c2..000000000
--- a/dbaccess/source/core/dataaccess/documenteventexecutor.cxx
+++ /dev/null
@@ -1,222 +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_dbaccess.hxx"
-
-#include "documenteventexecutor.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/document/XDocumentEventBroadcaster.hpp>
-#include <com/sun/star/util/XURLTransformer.hpp>
-#include <com/sun/star/frame/XModel.hpp>
-#include <com/sun/star/frame/XDispatchProvider.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/componentcontext.hxx>
-#include <comphelper/namedvaluecollection.hxx>
-#include <cppuhelper/weakref.hxx>
-#include <tools/diagnose_ex.h>
-#include <vcl/svapp.hxx>
-#include <osl/mutex.hxx>
-
-namespace dbaccess
-{
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- using ::com::sun::star::uno::WeakReference;
- using ::com::sun::star::document::XDocumentEventBroadcaster;
- using ::com::sun::star::document::XEventsSupplier;
- using ::com::sun::star::container::XNameAccess;
- using ::com::sun::star::frame::XModel;
- using ::com::sun::star::util::XURLTransformer;
- using ::com::sun::star::frame::XDispatchProvider;
- using ::com::sun::star::frame::XDispatch;
- using ::com::sun::star::util::URL;
- using ::com::sun::star::beans::PropertyValue;
- using ::com::sun::star::frame::XController;
- using ::com::sun::star::document::DocumentEvent;
- /** === end UNO using === **/
- using namespace ::com::sun::star;
-
- //====================================================================
- //= DocumentEventExecutor_Data
- //====================================================================
- struct DocumentEventExecutor_Data
- {
- WeakReference< XEventsSupplier > xDocument;
- Reference< XURLTransformer > xURLTransformer;
-
- DocumentEventExecutor_Data( const Reference< XEventsSupplier >& _rxDocument )
- :xDocument( _rxDocument )
- {
- }
- };
-
- namespace
- {
- static void lcl_dispatchScriptURL_throw( DocumentEventExecutor_Data& _rDocExecData,
- const ::rtl::OUString& _rScriptURL, const DocumentEvent& _rTrigger )
- {
- Reference< XModel > xDocument( _rDocExecData.xDocument.get(), UNO_QUERY_THROW );
-
- Reference< XController > xController( xDocument->getCurrentController() );
- Reference< XDispatchProvider > xDispProv;
- if ( xController.is() )
- xDispProv.set( xController->getFrame(), UNO_QUERY );
- if ( !xDispProv.is() )
- {
- OSL_FAIL( "lcl_dispatchScriptURL_throw: no controller/frame? How should I dispatch?" );
- return;
- }
-
- URL aScriptURL;
- aScriptURL.Complete = _rScriptURL;
- if ( _rDocExecData.xURLTransformer.is() )
- _rDocExecData.xURLTransformer->parseStrict( aScriptURL );
-
- // unfortunately, executing a script can trigger all kind of complex stuff, and unfortunately, not
- // every component involved into this properly cares for thread safety. To be on the safe side,
- // we lock the solar mutex here.
- SolarMutexGuard aSolarGuard;
-
- Reference< XDispatch > xDispatch( xDispProv->queryDispatch( aScriptURL, ::rtl::OUString(), 0 ) );
- if ( !xDispatch.is() )
- {
- OSL_FAIL( "lcl_dispatchScriptURL_throw: no dispatcher for the script URL!" );
- return;
- }
-
- PropertyValue aEventParam;
- aEventParam.Value <<= _rTrigger;
- Sequence< PropertyValue > aDispatchArgs( &aEventParam, 1 );
- xDispatch->dispatch( aScriptURL, aDispatchArgs );
- }
- }
-
- //====================================================================
- //= DocumentEventExecutor
- //====================================================================
- DocumentEventExecutor::DocumentEventExecutor( const ::comphelper::ComponentContext& _rContext,
- const Reference< XEventsSupplier >& _rxDocument )
- :m_pData( new DocumentEventExecutor_Data( _rxDocument ) )
- {
- Reference< XDocumentEventBroadcaster > xBroadcaster( _rxDocument, UNO_QUERY_THROW );
-
- osl_incrementInterlockedCount( &m_refCount );
- {
- xBroadcaster->addDocumentEventListener( this );
- }
- osl_decrementInterlockedCount( &m_refCount );
-
- try
- {
- _rContext.createComponent( "com.sun.star.util.URLTransformer", m_pData->xURLTransformer );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- DocumentEventExecutor::~DocumentEventExecutor()
- {
- }
-
- void SAL_CALL DocumentEventExecutor::documentEventOccured( const DocumentEvent& _Event ) throw (RuntimeException)
- {
- Reference< XEventsSupplier > xEventsSupplier( m_pData->xDocument.get(), UNO_QUERY );
- if ( !xEventsSupplier.is() )
- {
- OSL_FAIL( "DocumentEventExecutor::documentEventOccurred: no document anymore, but still being notified?" );
- return;
- }
-
- Reference< XModel > xDocument( xEventsSupplier, UNO_QUERY_THROW );
-
- try
- {
- Reference< XNameAccess > xDocEvents( xEventsSupplier->getEvents().get(), UNO_SET_THROW );
- if ( !xDocEvents->hasByName( _Event.EventName ) )
- {
- // this is worth an assertion: We are listener at the very same document which we just asked
- // for its events. So when EventName is fired, why isn't it supported by xDocEvents?
- OSL_FAIL( "DocumentEventExecutor::documentEventOccurred: an unsupported event is notified!" );
- return;
- }
-
- const ::comphelper::NamedValueCollection aScriptDescriptor( xDocEvents->getByName( _Event.EventName ) );
-
- ::rtl::OUString sEventType;
- bool bScriptAssigned = aScriptDescriptor.get_ensureType( "EventType", sEventType );
-
- ::rtl::OUString sScript;
- bScriptAssigned = bScriptAssigned && aScriptDescriptor.get_ensureType( "Script", sScript );
-
- if ( !bScriptAssigned )
- // no script is assigned to this event
- return;
-
- bool bDispatchScriptURL =
- ( sEventType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Script" ) )
- || sEventType.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "Service" ) )
- );
- bool bNonEmptyScript = sScript.getLength() != 0;
-
- OSL_ENSURE( bDispatchScriptURL && bNonEmptyScript,
- "DocumentEventExecutor::documentEventOccurred: invalid/unsupported script descriptor" );
-
- if ( bDispatchScriptURL && bNonEmptyScript )
- {
- lcl_dispatchScriptURL_throw( *m_pData, sScript, _Event );
- }
- }
- catch( const RuntimeException& ) { throw; }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- void SAL_CALL DocumentEventExecutor::disposing( const lang::EventObject& /*_Source*/ ) throw (RuntimeException)
- {
- // not interested in
- }
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/documenteventexecutor.hxx b/dbaccess/source/core/dataaccess/documenteventexecutor.hxx
deleted file mode 100644
index c83a3e288..000000000
--- a/dbaccess/source/core/dataaccess/documenteventexecutor.hxx
+++ /dev/null
@@ -1,77 +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.
- *
-************************************************************************/
-
-#ifndef DBACCESS_DOCUMENTEVENTEXECUTOR_HXX
-#define DBACCESS_DOCUMENTEVENTEXECUTOR_HXX
-
-/** === begin UNO includes === **/
-#include <com/sun/star/document/XDocumentEventListener.hpp>
-#include <com/sun/star/document/XEventsSupplier.hpp>
-/** === end UNO includes === **/
-
-#include <cppuhelper/implbase1.hxx>
-
-#include <memory>
-
-namespace comphelper
-{
- class ComponentContext;
-}
-
-namespace dbaccess
-{
-
- struct DocumentEventExecutor_Data;
- //====================================================================
- //= DocumentEventExecutor
- //====================================================================
- typedef ::cppu::WeakImplHelper1 < ::com::sun::star::document::XDocumentEventListener
- > DocumentEventExecutor_Base;
- class DocumentEventExecutor : public DocumentEventExecutor_Base
- {
- public:
- DocumentEventExecutor(
- const ::comphelper::ComponentContext& _rContext,
- const ::com::sun::star::uno::Reference< ::com::sun::star::document::XEventsSupplier >& _rxDocument );
-
- protected:
- virtual ~DocumentEventExecutor();
-
- // css.document.XDocumentEventListener
- virtual void SAL_CALL documentEventOccured( const ::com::sun::star::document::DocumentEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
- // css.lang.XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
-
- private:
- ::std::auto_ptr< DocumentEventExecutor_Data > m_pData;
- };
-
-} // namespace dbaccess
-
-#endif // DBACCESS_DOCUMENTEVENTEXECUTOR_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/documenteventnotifier.cxx b/dbaccess/source/core/dataaccess/documenteventnotifier.cxx
deleted file mode 100644
index dabd16a93..000000000
--- a/dbaccess/source/core/dataaccess/documenteventnotifier.cxx
+++ /dev/null
@@ -1,300 +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_dbaccess.hxx"
-
-#include "documenteventnotifier.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/frame/DoubleInitializationException.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/asyncnotification.hxx>
-#include <cppuhelper/interfacecontainer.hxx>
-#include <cppuhelper/weak.hxx>
-#include <tools/diagnose_ex.h>
-
-namespace dbaccess
-{
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- using ::com::sun::star::frame::DoubleInitializationException;
- using ::com::sun::star::document::XDocumentEventListener;
- using ::com::sun::star::document::DocumentEvent;
- using ::com::sun::star::frame::XController2;
- /** === end UNO using === **/
- using namespace ::com::sun::star;
-
- //==================================================================
- //= DocumentEventHolder
- //==================================================================
- typedef ::comphelper::EventHolder< DocumentEvent > DocumentEventHolder;
-
- //====================================================================
- //= DocumentEventNotifier_Impl
- //====================================================================
- class DocumentEventNotifier_Impl : public ::comphelper::IEventProcessor
- {
- oslInterlockedCount m_refCount;
- ::cppu::OWeakObject& m_rDocument;
- ::osl::Mutex& m_rMutex;
- bool m_bInitialized;
- bool m_bDisposed;
- ::rtl::Reference< ::comphelper::AsyncEventNotifier > m_pEventBroadcaster;
- ::cppu::OInterfaceContainerHelper m_aLegacyEventListeners;
- ::cppu::OInterfaceContainerHelper m_aDocumentEventListeners;
-
- public:
- DocumentEventNotifier_Impl( ::cppu::OWeakObject& _rBroadcasterDocument, ::osl::Mutex& _rMutex )
- :m_refCount( 0 )
- ,m_rDocument( _rBroadcasterDocument )
- ,m_rMutex( _rMutex )
- ,m_bInitialized( false )
- ,m_bDisposed( false )
- ,m_aLegacyEventListeners( _rMutex )
- ,m_aDocumentEventListeners( _rMutex )
- {
- }
-
- // IReference
- virtual void SAL_CALL acquire();
- virtual void SAL_CALL release();
-
- void addLegacyEventListener( const Reference< document::XEventListener >& _Listener )
- {
- m_aLegacyEventListeners.addInterface( _Listener );
- }
-
- void removeLegacyEventListener( const Reference< document::XEventListener >& _Listener )
- {
- m_aLegacyEventListeners.removeInterface( _Listener );
- }
-
- void addDocumentEventListener( const Reference< XDocumentEventListener >& _Listener )
- {
- m_aDocumentEventListeners.addInterface( _Listener );
- }
-
- void removeDocumentEventListener( const Reference< XDocumentEventListener >& _Listener )
- {
- m_aDocumentEventListeners.removeInterface( _Listener );
- }
-
- void disposing();
-
- void onDocumentInitialized();
-
- void notifyDocumentEvent( const ::rtl::OUString& _EventName, const Reference< XController2 >& _ViewController,
- const Any& _Supplement )
- {
- impl_notifyEvent_nothrow( DocumentEvent(
- m_rDocument, _EventName, _ViewController, _Supplement ) );
- }
-
- void notifyDocumentEventAsync( const ::rtl::OUString& _EventName, const Reference< XController2 >& _ViewController,
- const Any& _Supplement )
- {
- impl_notifyEventAsync_nothrow( DocumentEvent(
- m_rDocument, _EventName, _ViewController, _Supplement ) );
- }
-
- protected:
- virtual ~DocumentEventNotifier_Impl()
- {
- }
-
- // IEventProcessor
- virtual void processEvent( const ::comphelper::AnyEvent& _rEvent );
-
- private:
- void impl_notifyEvent_nothrow( const DocumentEvent& _rEvent );
- void impl_notifyEventAsync_nothrow( const DocumentEvent& _rEvent );
- };
-
- void SAL_CALL DocumentEventNotifier_Impl::acquire()
- {
- osl_incrementInterlockedCount( &m_refCount );
- }
-
- void SAL_CALL DocumentEventNotifier_Impl::release()
- {
- if ( 0 == osl_decrementInterlockedCount( &m_refCount ) )
- delete this;
- }
-
- void DocumentEventNotifier_Impl::disposing()
- {
- // SYNCHRONIZED ->
- // cancel any pending asynchronous events
- ::osl::ResettableMutexGuard aGuard( m_rMutex );
- if ( m_pEventBroadcaster.is() )
- {
- m_pEventBroadcaster->removeEventsForProcessor( this );
- m_pEventBroadcaster->terminate();
- m_pEventBroadcaster = NULL;
- }
-
- lang::EventObject aEvent( m_rDocument );
- aGuard.clear();
- // <-- SYNCHRONIZED
-
- m_aLegacyEventListeners.disposeAndClear( aEvent );
- m_aDocumentEventListeners.disposeAndClear( aEvent );
-
- // SYNCHRONIZED ->
- aGuard.reset();
- m_bDisposed = true;
- // <-- SYNCHRONIZED
- }
-
- void DocumentEventNotifier_Impl::onDocumentInitialized()
- {
- if ( m_bInitialized )
- throw DoubleInitializationException();
-
- m_bInitialized = true;
- if ( m_pEventBroadcaster.is() )
- // there are already pending asynchronous events
- m_pEventBroadcaster->create();
- }
-
- void DocumentEventNotifier_Impl::impl_notifyEvent_nothrow( const DocumentEvent& _rEvent )
- {
- OSL_PRECOND( m_bInitialized,
- "DocumentEventNotifier_Impl::impl_notifyEvent_nothrow: only to be called when the document is already initialized!" );
- try
- {
- document::EventObject aLegacyEvent( _rEvent.Source, _rEvent.EventName );
- m_aLegacyEventListeners.notifyEach( &document::XEventListener::notifyEvent, aLegacyEvent );
- }
- catch(const Exception&)
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- try
- {
- m_aDocumentEventListeners.notifyEach( &XDocumentEventListener::documentEventOccured, _rEvent );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- void DocumentEventNotifier_Impl::impl_notifyEventAsync_nothrow( const DocumentEvent& _rEvent )
- {
- if ( !m_pEventBroadcaster.is() )
- {
- m_pEventBroadcaster.set( new ::comphelper::AsyncEventNotifier );
- if ( m_bInitialized )
- // start processing the events if and only if we (our document, respectively) are
- // already initialized
- m_pEventBroadcaster->create();
- }
- m_pEventBroadcaster->addEvent( new DocumentEventHolder( _rEvent ), this );
- }
-
- void DocumentEventNotifier_Impl::processEvent( const ::comphelper::AnyEvent& _rEvent )
- {
- // beware, this is called from the notification thread
- {
- ::osl::MutexGuard aGuard( m_rMutex );
- if ( m_bDisposed )
- return;
- }
- const DocumentEventHolder& rEventHolder = dynamic_cast< const DocumentEventHolder& >( _rEvent );
- impl_notifyEvent_nothrow( rEventHolder.getEventObject() );
- }
-
- //====================================================================
- //= DocumentEventNotifier
- //====================================================================
- DocumentEventNotifier::DocumentEventNotifier( ::cppu::OWeakObject& _rBroadcasterDocument, ::osl::Mutex& _rMutex )
- :m_pImpl( new DocumentEventNotifier_Impl( _rBroadcasterDocument, _rMutex ) )
- {
- }
-
- DocumentEventNotifier::~DocumentEventNotifier()
- {
- }
-
- void DocumentEventNotifier::disposing()
- {
- m_pImpl->disposing();
- }
-
- void DocumentEventNotifier::onDocumentInitialized()
- {
- m_pImpl->onDocumentInitialized();
- }
-
- void DocumentEventNotifier::addLegacyEventListener( const Reference< document::XEventListener >& _Listener )
- {
- m_pImpl->addLegacyEventListener( _Listener );
- }
-
- void DocumentEventNotifier::removeLegacyEventListener( const Reference< document::XEventListener >& _Listener )
- {
- m_pImpl->removeLegacyEventListener( _Listener );
- }
-
- void DocumentEventNotifier::addDocumentEventListener( const Reference< XDocumentEventListener >& _Listener )
- {
- m_pImpl->addDocumentEventListener( _Listener );
- }
-
- void DocumentEventNotifier::removeDocumentEventListener( const Reference< XDocumentEventListener >& _Listener )
- {
- m_pImpl->removeDocumentEventListener( _Listener );
- }
-
- void DocumentEventNotifier::notifyDocumentEvent( const ::rtl::OUString& _EventName,
- const Reference< XController2 >& _ViewController, const Any& _Supplement )
- {
- m_pImpl->notifyDocumentEvent( _EventName, _ViewController, _Supplement );
- }
-
- void DocumentEventNotifier::notifyDocumentEventAsync( const ::rtl::OUString& _EventName,
- const Reference< XController2 >& _ViewController, const Any& _Supplement )
- {
- m_pImpl->notifyDocumentEventAsync( _EventName, _ViewController, _Supplement );
- }
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/documenteventnotifier.hxx b/dbaccess/source/core/dataaccess/documenteventnotifier.hxx
deleted file mode 100644
index c92064aab..000000000
--- a/dbaccess/source/core/dataaccess/documenteventnotifier.hxx
+++ /dev/null
@@ -1,143 +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.
- *
-************************************************************************/
-
-#ifndef DBACCESS_DOCUMENTEVENTNOTIFIER_HXX
-#define DBACCESS_DOCUMENTEVENTNOTIFIER_HXX
-
-/** === begin UNO includes === **/
-#include <com/sun/star/document/XEventListener.hpp>
-#include <com/sun/star/document/XDocumentEventListener.hpp>
-/** === end UNO includes === **/
-
-#include <rtl/ref.hxx>
-
-namespace cppu
-{
- class OWeakObject;
-}
-
-namespace dbaccess
-{
-
- class DocumentEventNotifier_Impl;
- //====================================================================
- //= DocumentEventNotifier
- //====================================================================
- class DocumentEventNotifier
- {
- public:
- DocumentEventNotifier( ::cppu::OWeakObject& _rBroadcasterDocument, ::osl::Mutex& _rMutex );
- ~DocumentEventNotifier();
-
- void addLegacyEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XEventListener >& _Listener );
- void removeLegacyEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XEventListener >& _Listener );
- void addDocumentEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentEventListener >& _Listener );
- void removeDocumentEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::document::XDocumentEventListener >& _Listener );
-
- /** disposes the instance
- @precond
- the mutex is not locked
- */
- void disposing();
-
- /** tells the instance that its document is completely initialized now.
-
- Before you call this method, no notification will actually happen
-
- @precond
- the mutex is locked
- */
- void onDocumentInitialized();
-
- /** notifies a document event described by the given parameters
-
- @precond
- the mutex is not locked
- @precond
- ->onDocumentInitialized has been called
- */
- void notifyDocumentEvent(
- const ::rtl::OUString& _EventName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 >& _rxViewController = NULL,
- const ::com::sun::star::uno::Any& _Supplement = ::com::sun::star::uno::Any()
- );
-
- /** notifies a document event, described by the given parameters, asynchronously
-
- Note that no event is actually notified before you called ->onDocumentInitialized.
-
- @precond
- the mutex is locked
- */
- void notifyDocumentEventAsync(
- const ::rtl::OUString& _EventName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 >& _ViewController = NULL,
- const ::com::sun::star::uno::Any& _Supplement = ::com::sun::star::uno::Any()
- );
-
- /** notifies a document event to all registered listeners
-
- @precond
- the mutex is not locked
- @precond
- ->onDocumentInitialized has been called
- */
- void notifyDocumentEvent(
- const sal_Char* _pAsciiEventName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 >& _rxViewController = NULL,
- const ::com::sun::star::uno::Any& _rSupplement = ::com::sun::star::uno::Any()
- )
- {
- notifyDocumentEvent( ::rtl::OUString::createFromAscii( _pAsciiEventName ), _rxViewController, _rSupplement );
- }
-
- /** notifies a document event to all registered listeners, asynchronously
-
- Note that no event is actually notified before you called ->onDocumentInitialized.
-
- @precond
- the mutex is locked
- */
- void notifyDocumentEventAsync(
- const sal_Char* _pAsciiEventName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController2 >& _rxViewController = NULL,
- const ::com::sun::star::uno::Any& _rSupplement = ::com::sun::star::uno::Any()
- )
- {
- notifyDocumentEventAsync( ::rtl::OUString::createFromAscii( _pAsciiEventName ), _rxViewController, _rSupplement );
- }
-
- private:
- ::rtl::Reference< DocumentEventNotifier_Impl > m_pImpl;
- };
-
-} // namespace dbaccess
-
-#endif // DBACCESS_DOCUMENTEVENTNOTIFIER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/documentevents.cxx b/dbaccess/source/core/dataaccess/documentevents.cxx
deleted file mode 100644
index e24c2bf59..000000000
--- a/dbaccess/source/core/dataaccess/documentevents.cxx
+++ /dev/null
@@ -1,251 +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_dbaccess.hxx"
-
-#include "documentevents.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/PropertyValue.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/namedvaluecollection.hxx>
-
-#include <algorithm>
-#include <functional>
-#include <o3tl/compat_functional.hxx>
-
-namespace dbaccess
-{
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::beans::PropertyValue;
- using ::com::sun::star::container::NoSuchElementException;
- using ::com::sun::star::lang::WrappedTargetException;
- using ::com::sun::star::lang::IllegalArgumentException;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- /** === end UNO using === **/
-
- //====================================================================
- //= DocumentEvents_Data
- //====================================================================
- struct DocumentEvents_Data : public ::boost::noncopyable
- {
- ::cppu::OWeakObject& rParent;
- ::osl::Mutex& rMutex;
- DocumentEventsData& rEventsData;
-
- DocumentEvents_Data( ::cppu::OWeakObject& _rParent, ::osl::Mutex& _rMutex, DocumentEventsData& _rEventsData )
- :rParent( _rParent )
- ,rMutex( _rMutex )
- ,rEventsData( _rEventsData )
- {
- }
- };
-
- //====================================================================
- //= helper
- //====================================================================
- struct DocumentEventData
- {
- const sal_Char* pAsciiEventName;
- bool bNeedsSyncNotify;
- };
-
- namespace
- {
- static const DocumentEventData* lcl_getDocumentEventData()
- {
- static const DocumentEventData s_aData[] = {
- { "OnCreate", true },
- { "OnLoadFinished", true },
- { "OnNew", false }, // compatibility, see http://www.openoffice.org/issues/show_bug.cgi?id=46484
- { "OnLoad", false }, // compatibility, see http://www.openoffice.org/issues/show_bug.cgi?id=46484
- { "OnSaveAs", true },
- { "OnSaveAsDone", false },
- { "OnSaveAsFailed", false },
- { "OnSave", true },
- { "OnSaveDone", false },
- { "OnSaveFailed", false },
- { "OnSaveTo", true },
- { "OnSaveToDone", false },
- { "OnSaveToFailed", false },
- { "OnPrepareUnload", true },
- { "OnUnload", true },
- { "OnFocus", false },
- { "OnUnfocus", false },
- { "OnModifyChanged", false },
- { "OnViewCreated", false },
- { "OnPrepareViewClosing", true },
- { "OnViewClosed", false },
- { "OnTitleChanged", false },
- { "OnSubComponentOpened", false },
- { "OnSubComponentClosed", false },
- { NULL, false }
- };
- return s_aData;
- }
- }
-
- //====================================================================
- //= DocumentEvents
- //====================================================================
- DocumentEvents::DocumentEvents( ::cppu::OWeakObject& _rParent, ::osl::Mutex& _rMutex, DocumentEventsData& _rEventsData )
- :m_pData( new DocumentEvents_Data( _rParent, _rMutex, _rEventsData ) )
- {
- const DocumentEventData* pEventData = lcl_getDocumentEventData();
- while ( pEventData->pAsciiEventName )
- {
- ::rtl::OUString sEventName = ::rtl::OUString::createFromAscii( pEventData->pAsciiEventName );
- DocumentEventsData::iterator existingPos = m_pData->rEventsData.find( sEventName );
- if ( existingPos == m_pData->rEventsData.end() )
- m_pData->rEventsData[ sEventName ] = Sequence< PropertyValue >();
- ++pEventData;
- }
- }
-
- DocumentEvents::~DocumentEvents()
- {
- }
-
- void SAL_CALL DocumentEvents::acquire() throw()
- {
- m_pData->rParent.acquire();
- }
-
- void SAL_CALL DocumentEvents::release() throw()
- {
- m_pData->rParent.release();
- }
-
- bool DocumentEvents::needsSynchronousNotification( const ::rtl::OUString& _rEventName )
- {
- const DocumentEventData* pEventData = lcl_getDocumentEventData();
- while ( pEventData->pAsciiEventName )
- {
- if ( _rEventName.compareToAscii( pEventData->pAsciiEventName ) == 0 )
- return pEventData->bNeedsSyncNotify;
- ++pEventData;
- }
-
- // this is an unknown event ... assume async notification
- return false;
- }
-
- void SAL_CALL DocumentEvents::replaceByName( const ::rtl::OUString& _Name, const Any& _Element ) throw (IllegalArgumentException, NoSuchElementException, WrappedTargetException, RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_pData->rMutex );
-
- DocumentEventsData::iterator elementPos = m_pData->rEventsData.find( _Name );
- if ( elementPos == m_pData->rEventsData.end() )
- throw NoSuchElementException( _Name, *this );
-
- Sequence< PropertyValue > aEventDescriptor;
- if ( _Element.hasValue() && !( _Element >>= aEventDescriptor ) )
- throw IllegalArgumentException( _Element.getValueTypeName(), *this, 2 );
-
- // Weird enough, the event assignment UI has (well: had) the idea of using an empty "EventType"/"Script"
- // to indicate the event descriptor should be reset, instead of just passing an empty event descriptor.
- ::comphelper::NamedValueCollection aCheck( aEventDescriptor );
- if ( aCheck.has( "EventType" ) )
- {
- ::rtl::OUString sEventType = aCheck.getOrDefault( "EventType", ::rtl::OUString() );
- OSL_ENSURE( sEventType.getLength(), "DocumentEvents::replaceByName: doing a reset via an empty EventType is weird!" );
- if ( !sEventType.getLength() )
- aEventDescriptor.realloc( 0 );
- }
- if ( aCheck.has( "Script" ) )
- {
- ::rtl::OUString sScript = aCheck.getOrDefault( "Script", ::rtl::OUString() );
- OSL_ENSURE( sScript.getLength(), "DocumentEvents::replaceByName: doing a reset via an empty Script is weird!" );
- if ( !sScript.getLength() )
- aEventDescriptor.realloc( 0 );
- }
-
- elementPos->second = aEventDescriptor;
- }
-
- Any SAL_CALL DocumentEvents::getByName( const ::rtl::OUString& _Name ) throw (NoSuchElementException, WrappedTargetException, RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_pData->rMutex );
-
- DocumentEventsData::const_iterator elementPos = m_pData->rEventsData.find( _Name );
- if ( elementPos == m_pData->rEventsData.end() )
- throw NoSuchElementException( _Name, *this );
-
- Any aReturn;
- const Sequence< PropertyValue >& rEventDesc( elementPos->second );
- if ( rEventDesc.getLength() > 0 )
- aReturn <<= rEventDesc;
- return aReturn;
- }
-
- Sequence< ::rtl::OUString > SAL_CALL DocumentEvents::getElementNames( ) throw (RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_pData->rMutex );
-
- Sequence< ::rtl::OUString > aNames( m_pData->rEventsData.size() );
- ::std::transform(
- m_pData->rEventsData.begin(),
- m_pData->rEventsData.end(),
- aNames.getArray(),
- ::o3tl::select1st< DocumentEventsData::value_type >()
- );
- return aNames;
- }
-
- ::sal_Bool SAL_CALL DocumentEvents::hasByName( const ::rtl::OUString& _Name ) throw (RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_pData->rMutex );
-
- return m_pData->rEventsData.find( _Name ) != m_pData->rEventsData.end();
- }
-
- Type SAL_CALL DocumentEvents::getElementType( ) throw (RuntimeException)
- {
- return ::cppu::UnoType< Sequence< PropertyValue > >::get();
- }
-
- ::sal_Bool SAL_CALL DocumentEvents::hasElements( ) throw (RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_pData->rMutex );
- return !m_pData->rEventsData.empty();
- }
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/documentevents.hxx b/dbaccess/source/core/dataaccess/documentevents.hxx
deleted file mode 100644
index 16cb0c868..000000000
--- a/dbaccess/source/core/dataaccess/documentevents.hxx
+++ /dev/null
@@ -1,89 +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.
- *
-************************************************************************/
-
-#ifndef DBACCESS_DOCUMENTEVENTS_HXX
-#define DBACCESS_DOCUMENTEVENTS_HXX
-
-/** === begin UNO includes === **/
-#include <com/sun/star/container/XNameReplace.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
-/** === end UNO includes === **/
-
-#include <cppuhelper/implbase1.hxx>
-
-#include <memory>
-#include <map>
-#include <boost/noncopyable.hpp>
-
-namespace dbaccess
-{
-
- typedef ::std::map< ::rtl::OUString, ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > >
- DocumentEventsData;
-
- //====================================================================
- //= DocumentEvents
- //====================================================================
- struct DocumentEvents_Data;
-
- typedef ::cppu::WeakImplHelper1 < ::com::sun::star::container::XNameReplace
- > DocumentEvents_Base;
-
- class DocumentEvents :public DocumentEvents_Base
- ,public ::boost::noncopyable
- {
- public:
- DocumentEvents( ::cppu::OWeakObject& _rParent, ::osl::Mutex& _rMutex, DocumentEventsData& _rEventsData );
- ~DocumentEvents();
-
- static bool needsSynchronousNotification( const ::rtl::OUString& _rEventName );
-
- // XInterface
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
-
- // XNameReplace
- virtual void SAL_CALL replaceByName( const ::rtl::OUString& aName, const ::com::sun::star::uno::Any& aElement ) throw (::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
- // XNameAccess
- virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw (::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw (::com::sun::star::uno::RuntimeException);
-
- // XElementAccess
- virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::sal_Bool SAL_CALL hasElements( ) throw (::com::sun::star::uno::RuntimeException);
-
- private:
- ::std::auto_ptr< DocumentEvents_Data > m_pData;
- };
-
-} // namespace dbaccess
-
-#endif // DBACCESS_DOCUMENTEVENTS_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/intercept.cxx b/dbaccess/source/core/dataaccess/intercept.cxx
deleted file mode 100644
index d00c9e724..000000000
--- a/dbaccess/source/core/dataaccess/intercept.cxx
+++ /dev/null
@@ -1,446 +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_dbaccess.hxx"
-
-#include "intercept.hxx"
-#include "dbastrings.hrc"
-
-#include <com/sun/star/embed/EmbedStates.hpp>
-#include <com/sun/star/document/XEventBroadcaster.hpp>
-#include <com/sun/star/util/XModifiable.hpp>
-#include <cppuhelper/weak.hxx>
-
-#include <comphelper/types.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-
-
-namespace dbaccess
-{
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::util;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::frame;
-using namespace ::com::sun::star::io;
-using namespace ::com::sun::star::embed;
-using namespace ::com::sun::star::container;
-using namespace ::comphelper;
-using namespace ::cppu;
-
-#define DISPATCH_SAVEAS 0
-#define DISPATCH_SAVE 1
-#define DISPATCH_CLOSEDOC 2
-#define DISPATCH_CLOSEWIN 3
-#define DISPATCH_CLOSEFRAME 4
-#define DISPATCH_RELOAD 5
-// the OSL_ENSURE in CTOR has to be changed too, when adding new defines
-
-void SAL_CALL OInterceptor::dispose()
- throw( RuntimeException )
-{
- EventObject aEvt( *this );
-
- osl::MutexGuard aGuard(m_aMutex);
-
- if ( m_pDisposeEventListeners && m_pDisposeEventListeners->getLength() )
- m_pDisposeEventListeners->disposeAndClear( aEvt );
-
- if ( m_pStatCL )
- m_pStatCL->disposeAndClear( aEvt );
-
- m_xSlaveDispatchProvider.clear();
- m_xMasterDispatchProvider.clear();
-
- m_pContentHolder = NULL;
-}
-
-
-DBG_NAME(OInterceptor)
-
-OInterceptor::OInterceptor( ODocumentDefinition* _pContentHolder,sal_Bool _bAllowEditDoc )
- :m_pContentHolder( _pContentHolder )
- ,m_aInterceptedURL(7)
- ,m_pDisposeEventListeners(0)
- ,m_pStatCL(0)
- ,m_bAllowEditDoc(_bAllowEditDoc)
-{
- DBG_CTOR(OInterceptor,NULL);
-
- OSL_ENSURE(DISPATCH_RELOAD < m_aInterceptedURL.getLength(),"Illegal size.");
-
- m_aInterceptedURL[DISPATCH_SAVEAS] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:SaveAs"));
- m_aInterceptedURL[DISPATCH_SAVE] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:Save"));
- m_aInterceptedURL[DISPATCH_CLOSEDOC] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:CloseDoc"));
- m_aInterceptedURL[DISPATCH_CLOSEWIN] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:CloseWin"));
- m_aInterceptedURL[DISPATCH_CLOSEFRAME] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:CloseFrame"));
- m_aInterceptedURL[DISPATCH_RELOAD] = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(".uno:Reload"));
-}
-
-
-OInterceptor::~OInterceptor()
-{
- if( m_pDisposeEventListeners )
- delete m_pDisposeEventListeners;
-
- if(m_pStatCL)
- delete m_pStatCL;
-
- DBG_DTOR(OInterceptor,NULL);
-}
-
-struct DispatchHelper
-{
- URL aURL;
- Sequence<PropertyValue > aArguments;
-};
-
-//XDispatch
-void SAL_CALL OInterceptor::dispatch( const URL& _URL,const Sequence<PropertyValue >& Arguments ) throw (RuntimeException)
-{
- ::osl::MutexGuard aGuard( m_aMutex );
- if ( !m_pContentHolder )
- return;
-
- if ( _URL.Complete == m_aInterceptedURL[ DISPATCH_SAVE ] )
- {
- m_pContentHolder->save( sal_False );
- return;
- }
-
- if ( _URL.Complete == m_aInterceptedURL[ DISPATCH_RELOAD ] )
- {
- ODocumentDefinition::fillReportData(
- m_pContentHolder->getContext(),
- m_pContentHolder->getComponent(),
- m_pContentHolder->getConnection()
- );
- return;
- }
-
- if( _URL.Complete == m_aInterceptedURL[ DISPATCH_SAVEAS ] )
- {
- if ( m_pContentHolder->isNewReport() )
- {
- m_pContentHolder->saveAs();
- }
- else if ( m_xSlaveDispatchProvider.is() )
- {
- Sequence< PropertyValue > aNewArgs = Arguments;
- sal_Int32 nInd = 0;
-
- while( nInd < aNewArgs.getLength() )
- {
- if ( aNewArgs[nInd].Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "SaveTo" ) ) )
- {
- aNewArgs[nInd].Value <<= sal_True;
- break;
- }
- nInd++;
- }
-
- if ( nInd == aNewArgs.getLength() )
- {
- aNewArgs.realloc( nInd + 1 );
- aNewArgs[nInd].Name = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SaveTo"));
- aNewArgs[nInd].Value <<= sal_True;
- }
-
- Reference< XDispatch > xDispatch = m_xSlaveDispatchProvider->queryDispatch(
- _URL, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_self")), 0 );
- if ( xDispatch.is() )
- xDispatch->dispatch( _URL, aNewArgs );
- }
- return;
- }
-
- if ( _URL.Complete == m_aInterceptedURL[ DISPATCH_CLOSEDOC ]
- || _URL.Complete == m_aInterceptedURL[ DISPATCH_CLOSEWIN ]
- || _URL.Complete == m_aInterceptedURL[ DISPATCH_CLOSEFRAME ]
- )
- {
- DispatchHelper* pHelper = new DispatchHelper;
- pHelper->aArguments = Arguments;
- pHelper->aURL = _URL;
- Application::PostUserEvent( LINK( this, OInterceptor, OnDispatch ), reinterpret_cast< void* >( pHelper ) );
- return;
- }
-}
-
-IMPL_LINK( OInterceptor, OnDispatch, void*, _pDispatcher )
-{
- ::std::auto_ptr<DispatchHelper> pHelper( reinterpret_cast< DispatchHelper* >( _pDispatcher ) );
- try
- {
- if ( m_pContentHolder && m_pContentHolder->prepareClose() && m_xSlaveDispatchProvider.is() )
- {
- Reference< XDispatch > xDispatch = m_xSlaveDispatchProvider->queryDispatch(
- pHelper->aURL, ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_self")), 0 );
- if ( xDispatch.is() )
- {
- Reference< ::com::sun::star::document::XEventBroadcaster> xEvtB(m_pContentHolder->getComponent(),UNO_QUERY);
- if ( xEvtB.is() )
- xEvtB->removeEventListener(this);
-
- Reference< XInterface > xKeepContentHolderAlive( *m_pContentHolder );
- xDispatch->dispatch( pHelper->aURL,pHelper->aArguments);
- }
- }
- }
- catch ( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- return 0L;
-}
-
-void SAL_CALL OInterceptor::addStatusListener(
- const Reference<
- XStatusListener >& Control,
- const URL& _URL )
- throw (
- RuntimeException
- )
-{
- if(!Control.is())
- return;
-
- if ( m_pContentHolder && _URL.Complete == m_aInterceptedURL[DISPATCH_SAVEAS] )
- { // SaveAs
-
- if ( !m_pContentHolder->isNewReport() )
- {
- FeatureStateEvent aStateEvent;
- aStateEvent.FeatureURL.Complete = m_aInterceptedURL[DISPATCH_SAVEAS];
- aStateEvent.FeatureDescriptor = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("SaveCopyTo"));
- aStateEvent.IsEnabled = sal_True;
- aStateEvent.Requery = sal_False;
- aStateEvent.State <<= (rtl::OUString( RTL_CONSTASCII_USTRINGPARAM("($3)")));
- Control->statusChanged(aStateEvent);
- }
-
- {
- osl::MutexGuard aGuard(m_aMutex);
- if(!m_pStatCL)
- m_pStatCL = new PropertyChangeListenerContainer(m_aMutex);
- }
-
- m_pStatCL->addInterface(_URL.Complete,Control);
- }
- else if ( m_pContentHolder && _URL.Complete == m_aInterceptedURL[DISPATCH_SAVE] )
- { // Save
- FeatureStateEvent aStateEvent;
- aStateEvent.FeatureURL.Complete = m_aInterceptedURL[DISPATCH_SAVE];
- aStateEvent.FeatureDescriptor = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Update"));
- aStateEvent.IsEnabled = m_pContentHolder != NULL && m_pContentHolder->isModified();
- aStateEvent.Requery = sal_False;
-
- Control->statusChanged(aStateEvent);
- {
- osl::MutexGuard aGuard(m_aMutex);
- if(!m_pStatCL)
- m_pStatCL = new PropertyChangeListenerContainer(m_aMutex);
- }
-
- m_pStatCL->addInterface(_URL.Complete,Control);
- Reference< ::com::sun::star::document::XEventBroadcaster> xEvtB(m_pContentHolder->getComponent(),UNO_QUERY);
- if ( xEvtB.is() )
- xEvtB->addEventListener(this);
- }
- else
- {
- sal_Int32 i = 2;
- if(_URL.Complete == m_aInterceptedURL[i] ||
- _URL.Complete == m_aInterceptedURL[++i] ||
- _URL.Complete == m_aInterceptedURL[++i] ||
- _URL.Complete == m_aInterceptedURL[i = DISPATCH_RELOAD] )
- { // Close and return
- FeatureStateEvent aStateEvent;
- aStateEvent.FeatureURL.Complete = m_aInterceptedURL[i];
- aStateEvent.FeatureDescriptor = rtl::OUString(
- RTL_CONSTASCII_USTRINGPARAM("Close and Return"));
- aStateEvent.IsEnabled = sal_True;
- aStateEvent.Requery = sal_False;
- Control->statusChanged(aStateEvent);
-
-
- {
- osl::MutexGuard aGuard(m_aMutex);
- if(!m_pStatCL)
- m_pStatCL = new PropertyChangeListenerContainer(m_aMutex);
- }
-
- m_pStatCL->addInterface(_URL.Complete,Control);
- return;
- }
- }
-}
-
-
-void SAL_CALL OInterceptor::removeStatusListener(
- const Reference<
- XStatusListener >& Control,
- const URL& _URL )
- throw (
- RuntimeException
- )
-{
- if(!(Control.is() && m_pStatCL))
- return;
- else
- {
- m_pStatCL->removeInterface(_URL.Complete,Control);
- return;
- }
-}
-
-
-//XInterceptorInfo
-Sequence< ::rtl::OUString > SAL_CALL OInterceptor::getInterceptedURLs( ) throw ( RuntimeException )
-{
- // now implemented as update
- return m_aInterceptedURL;
-}
-
-
-// XDispatchProvider
-
-Reference< XDispatch > SAL_CALL OInterceptor::queryDispatch( const URL& _URL,const ::rtl::OUString& TargetFrameName,sal_Int32 SearchFlags )
- throw (RuntimeException)
-{
- osl::MutexGuard aGuard(m_aMutex);
- const ::rtl::OUString* pIter = m_aInterceptedURL.getConstArray();
- const ::rtl::OUString* pEnd = pIter + m_aInterceptedURL.getLength();
- for(;pIter != pEnd;++pIter)
- {
- if ( _URL.Complete == *pIter )
- return (XDispatch*)this;
- }
-
- if(m_xSlaveDispatchProvider.is())
- return m_xSlaveDispatchProvider->queryDispatch(_URL,TargetFrameName,SearchFlags);
- else
- return Reference<XDispatch>();
-}
-
-Sequence< Reference< XDispatch > > SAL_CALL OInterceptor::queryDispatches( const Sequence<DispatchDescriptor >& Requests ) throw ( RuntimeException )
-{
- Sequence< Reference< XDispatch > > aRet;
- osl::MutexGuard aGuard(m_aMutex);
- if(m_xSlaveDispatchProvider.is())
- aRet = m_xSlaveDispatchProvider->queryDispatches(Requests);
- else
- aRet.realloc(Requests.getLength());
-
- for(sal_Int32 i = 0; i < Requests.getLength(); ++i)
- {
- const ::rtl::OUString* pIter = m_aInterceptedURL.getConstArray();
- const ::rtl::OUString* pEnd = pIter + m_aInterceptedURL.getLength();
- for(;pIter != pEnd;++pIter)
- {
- if ( Requests[i].FeatureURL.Complete == *pIter )
- {
- aRet[i] = (XDispatch*) this;
- break;
- }
- }
- }
-
- return aRet;
-}
-
-
-
-//XDispatchProviderInterceptor
-
-Reference< XDispatchProvider > SAL_CALL OInterceptor::getSlaveDispatchProvider( ) throw ( RuntimeException )
-{
- osl::MutexGuard aGuard(m_aMutex);
- return m_xSlaveDispatchProvider;
-}
-
-void SAL_CALL
-OInterceptor::setSlaveDispatchProvider( const Reference< XDispatchProvider >& NewDispatchProvider )
- throw ( RuntimeException )
-{
- osl::MutexGuard aGuard(m_aMutex);
- m_xSlaveDispatchProvider = NewDispatchProvider;
-}
-
-
-Reference< XDispatchProvider > SAL_CALL OInterceptor::getMasterDispatchProvider( )
- throw (
- RuntimeException
- )
-{
- osl::MutexGuard aGuard(m_aMutex);
- return m_xMasterDispatchProvider;
-}
-
-
-void SAL_CALL OInterceptor::setMasterDispatchProvider(
- const Reference< XDispatchProvider >& NewSupplier )
- throw (
- RuntimeException
- )
-{
- osl::MutexGuard aGuard(m_aMutex);
- m_xMasterDispatchProvider = NewSupplier;
-}
-
-void SAL_CALL OInterceptor::notifyEvent( const ::com::sun::star::document::EventObject& Event ) throw (::com::sun::star::uno::RuntimeException)
-{
- osl::ResettableMutexGuard _rGuard(m_aMutex);
- if ( m_pStatCL && Event.EventName == ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("OnModifyChanged")) )
- {
- OInterfaceContainerHelper* pListener = m_pStatCL->getContainer(m_aInterceptedURL[DISPATCH_SAVE]);
- if ( pListener )
- {
- FeatureStateEvent aEvt;
- aEvt.FeatureURL.Complete = m_aInterceptedURL[DISPATCH_SAVE];
- aEvt.FeatureDescriptor = rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Update"));
- Reference<XModifiable> xModel(Event.Source,UNO_QUERY);
- aEvt.IsEnabled = xModel.is() && xModel->isModified();
- aEvt.Requery = sal_False;
-
- NOTIFY_LISTERNERS((*pListener),XStatusListener,statusChanged)
- }
- }
-}
-
-void SAL_CALL OInterceptor::disposing( const ::com::sun::star::lang::EventObject& /*Source*/ ) throw (::com::sun::star::uno::RuntimeException)
-{
-}
-
-} // namespace dbaccess
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/intercept.hxx b/dbaccess/source/core/dataaccess/intercept.hxx
deleted file mode 100644
index cb2cadc77..000000000
--- a/dbaccess/source/core/dataaccess/intercept.hxx
+++ /dev/null
@@ -1,169 +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.
- *
- ************************************************************************/
-
-#ifndef DBA_INTERCEPT_HXX
-#define DBA_INTERCEPT_HXX
-
-#include <osl/mutex.hxx>
-#include <cppuhelper/implbase4.hxx>
-#include <cppuhelper/interfacecontainer.hxx>
-#include <com/sun/star/frame/XDispatchProviderInterceptor.hpp>
-#include <com/sun/star/frame/XInterceptorInfo.hpp>
-#include <com/sun/star/document/XEventListener.hpp>
-#include <com/sun/star/frame/XDispatch.hpp>
-#include "documentdefinition.hxx"
-#include <vcl/svapp.hxx>
-
-namespace dbaccess
-{
-
-
-class OInterceptor : public ::cppu::WeakImplHelper4< ::com::sun::star::frame::XDispatchProviderInterceptor,
- ::com::sun::star::frame::XInterceptorInfo,
- ::com::sun::star::frame::XDispatch,
- ::com::sun::star::document::XEventListener>
-{
- DECL_LINK( OnDispatch, void* _aURL );
-protected:
- virtual ~OInterceptor();
-public:
-
- OInterceptor( ODocumentDefinition* _pContentHolder,sal_Bool _bAllowEditDoc );
-
- void SAL_CALL dispose() throw(::com::sun::star::uno::RuntimeException);
-
- //XDispatch
- virtual void SAL_CALL
- dispatch(
- const ::com::sun::star::util::URL& URL,
- const ::com::sun::star::uno::Sequence<
- ::com::sun::star::beans::PropertyValue >& Arguments )
- throw (::com::sun::star::uno::RuntimeException);
-
- virtual void SAL_CALL
- addStatusListener(
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::frame::XStatusListener >& Control,
- const ::com::sun::star::util::URL& URL )
- throw (
- ::com::sun::star::uno::RuntimeException
- );
-
- virtual void SAL_CALL
- removeStatusListener(
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::frame::XStatusListener >& Control,
- const ::com::sun::star::util::URL& URL )
- throw (
- ::com::sun::star::uno::RuntimeException
- );
-
- //XInterceptorInfo
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString >
- SAL_CALL getInterceptedURLs( )
- throw (
- ::com::sun::star::uno::RuntimeException
- );
-
- //XDispatchProvider ( inherited by XDispatchProviderInterceptor )
- virtual ::com::sun::star::uno::Reference<
- ::com::sun::star::frame::XDispatch > SAL_CALL
- queryDispatch(
- const ::com::sun::star::util::URL& URL,
- const ::rtl::OUString& TargetFrameName,
- sal_Int32 SearchFlags )
- throw (
- ::com::sun::star::uno::RuntimeException
- );
-
- virtual ::com::sun::star::uno::Sequence<
- ::com::sun::star::uno::Reference<
- ::com::sun::star::frame::XDispatch > > SAL_CALL
- queryDispatches(
- const ::com::sun::star::uno::Sequence<
- ::com::sun::star::frame::DispatchDescriptor >& Requests )
- throw (
- ::com::sun::star::uno::RuntimeException
- );
-
- //XDispatchProviderInterceptor
- virtual ::com::sun::star::uno::Reference<
- ::com::sun::star::frame::XDispatchProvider > SAL_CALL
- getSlaveDispatchProvider( )
- throw (
- ::com::sun::star::uno::RuntimeException
- );
-
- virtual void SAL_CALL
- setSlaveDispatchProvider(
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::frame::XDispatchProvider >& NewDispatchProvider )
- throw (
- ::com::sun::star::uno::RuntimeException
- );
-
- virtual ::com::sun::star::uno::Reference<
- ::com::sun::star::frame::XDispatchProvider > SAL_CALL
- getMasterDispatchProvider( )
- throw (
- ::com::sun::star::uno::RuntimeException
- );
-
- virtual void SAL_CALL
- setMasterDispatchProvider(
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::frame::XDispatchProvider >& NewSupplier )
- throw (
- ::com::sun::star::uno::RuntimeException
- );
-
- // XEventListener
- virtual void SAL_CALL notifyEvent( const ::com::sun::star::document::EventObject& Event ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
-
-private:
-
- osl::Mutex m_aMutex;
-
- ODocumentDefinition* m_pContentHolder;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > m_xSlaveDispatchProvider;
- ::com::sun::star::uno::Reference< ::com::sun::star::frame::XDispatchProvider > m_xMasterDispatchProvider;
-
- ::com::sun::star::uno::Sequence< ::rtl::OUString > m_aInterceptedURL;
-
- cppu::OInterfaceContainerHelper* m_pDisposeEventListeners;
- PropertyChangeListenerContainer* m_pStatCL;
- sal_Bool m_bAllowEditDoc;
-};
-
-} // namespace dbaccess
-
-#endif //DBA_INTERCEPT_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/myucp_datasupplier.cxx b/dbaccess/source/core/dataaccess/myucp_datasupplier.cxx
deleted file mode 100644
index b62e80de2..000000000
--- a/dbaccess/source/core/dataaccess/myucp_datasupplier.cxx
+++ /dev/null
@@ -1,393 +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_dbaccess.hxx"
-
-/**************************************************************************
- TODO
- **************************************************************************
-
- *************************************************************************/
-
-#include <vector>
-
-#include <ucbhelper/contentidentifier.hxx>
-#include <ucbhelper/providerhelper.hxx>
-
-#include "myucp_datasupplier.hxx"
-#include "ContentHelper.hxx"
-#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
-#include <tools/debug.hxx>
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::io;
-using namespace ::com::sun::star::container;
-
-// @@@ Adjust namespace name.
-using namespace dbaccess;
-
-// @@@ Adjust namespace name.
-namespace dbaccess
-{
-
-//=========================================================================
-//
-// struct ResultListEntry.
-//
-//=========================================================================
-
-struct ResultListEntry
-{
- rtl::OUString aId;
- Reference< XContentIdentifier > xId;
- ::rtl::Reference< OContentHelper > xContent;
- Reference< XRow > xRow;
- const ContentProperties& rData;
-
- ResultListEntry( const ContentProperties& rEntry ) : rData( rEntry ) {}
-};
-
-//=========================================================================
-//
-// ResultList.
-//
-//=========================================================================
-
-typedef std::vector< ResultListEntry* > ResultList;
-
-//=========================================================================
-//
-// struct DataSupplier_Impl.
-//
-//=========================================================================
-
-struct DataSupplier_Impl
-{
- osl::Mutex m_aMutex;
- ResultList m_aResults;
- rtl::Reference< ODocumentContainer > m_xContent;
- Reference< XMultiServiceFactory > m_xSMgr;
- sal_Int32 m_nOpenMode;
- sal_Bool m_bCountFinal;
-
- DataSupplier_Impl( const Reference< XMultiServiceFactory >& rxSMgr,
- const rtl::Reference< ODocumentContainer >& rContent,
- sal_Int32 nOpenMode )
- : m_xContent(rContent)
- , m_xSMgr( rxSMgr )
- , m_nOpenMode( nOpenMode )
- , m_bCountFinal( sal_False ) {}
- ~DataSupplier_Impl();
-};
-
-//=========================================================================
-DataSupplier_Impl::~DataSupplier_Impl()
-{
- ResultList::const_iterator it = m_aResults.begin();
- ResultList::const_iterator end = m_aResults.end();
-
- while ( it != end )
- {
- delete (*it);
- ++it;
- }
-}
-
-}
-
-//=========================================================================
-//
-// DataSupplier Implementation.
-//
-//=========================================================================
-DBG_NAME(DataSupplier)
-
-DataSupplier::DataSupplier( const Reference< XMultiServiceFactory >& rxSMgr,
- const rtl::Reference< ODocumentContainer >& rContent,
- sal_Int32 nOpenMode )
-: m_pImpl( new DataSupplier_Impl( rxSMgr, rContent,nOpenMode ) )
-{
- DBG_CTOR(DataSupplier,NULL);
-
-}
-
-DataSupplier::~DataSupplier()
-{
-
- DBG_DTOR(DataSupplier,NULL);
-}
-
-rtl::OUString DataSupplier::queryContentIdentifierString( sal_uInt32 nIndex )
-{
- osl::Guard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
-
- if ( (size_t)nIndex < m_pImpl->m_aResults.size() )
- {
- rtl::OUString aId = m_pImpl->m_aResults[ nIndex ]->aId;
- if ( aId.getLength() )
- {
- // Already cached.
- return aId;
- }
- }
-
- if ( getResult( nIndex ) )
- {
- rtl::OUString aId
- = m_pImpl->m_xContent->getIdentifier()->getContentIdentifier();
-
- if ( aId.getLength() )
- aId += ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/"));
-
- aId += m_pImpl->m_aResults[ nIndex ]->rData.aTitle;
-
- m_pImpl->m_aResults[ nIndex ]->aId = aId;
- return aId;
- }
- return rtl::OUString();
-}
-
-Reference< XContentIdentifier >
-DataSupplier::queryContentIdentifier( sal_uInt32 nIndex )
-{
- osl::Guard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
-
- if ( (size_t)nIndex < m_pImpl->m_aResults.size() )
- {
- Reference< XContentIdentifier > xId = m_pImpl->m_aResults[ nIndex ]->xId;
- if ( xId.is() )
- {
- // Already cached.
- return xId;
- }
- }
-
- rtl::OUString aId = queryContentIdentifierString( nIndex );
- if ( aId.getLength() )
- {
- Reference< XContentIdentifier > xId = new ::ucbhelper::ContentIdentifier( aId );
- m_pImpl->m_aResults[ nIndex ]->xId = xId;
- return xId;
- }
- return Reference< XContentIdentifier >();
-}
-
-Reference< XContent >
-DataSupplier::queryContent( sal_uInt32 _nIndex )
-{
- osl::Guard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
-
- if ( (size_t)_nIndex < m_pImpl->m_aResults.size() )
- {
- Reference< XContent > xContent = m_pImpl->m_aResults[ _nIndex ]->xContent.get();
- if ( xContent.is() )
- {
- // Already cached.
- return xContent;
- }
- }
-
- Reference< XContentIdentifier > xId = queryContentIdentifier( _nIndex );
- if ( xId.is() )
- {
- try
- {
- Reference< XContent > xContent;
- ::rtl::OUString sName = xId->getContentIdentifier();
- sal_Int32 nIndex = sName.lastIndexOf('/') + 1;
- sName = sName.getToken(0,'/',nIndex);
-
- m_pImpl->m_aResults[ _nIndex ]->xContent = m_pImpl->m_xContent->getContent(sName);
-
- xContent = m_pImpl->m_aResults[ _nIndex ]->xContent.get();
- return xContent;
-
- }
- catch ( IllegalIdentifierException& )
- {
- }
- }
- return Reference< XContent >();
-}
-
-sal_Bool DataSupplier::getResult( sal_uInt32 nIndex )
-{
- osl::ClearableGuard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
-
- if ( (size_t)nIndex < m_pImpl->m_aResults.size() )
- {
- // Result already present.
- return sal_True;
- }
-
- // Result not (yet) present.
-
- if ( m_pImpl->m_bCountFinal )
- return sal_False;
-
- // Try to obtain result...
-
- sal_uInt32 nOldCount = m_pImpl->m_aResults.size();
- sal_Bool bFound = sal_False;
- sal_uInt32 nPos = nOldCount;
-
- // @@@ Obtain data and put it into result list...
- Sequence< ::rtl::OUString> aSeq = m_pImpl->m_xContent->getElementNames();
- if ( nIndex < sal::static_int_cast< sal_uInt32 >( aSeq.getLength() ) )
- {
- const ::rtl::OUString* pIter = aSeq.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aSeq.getLength();
- for(pIter = pIter + nPos;pIter != pEnd;++pIter,++nPos)
- {
- m_pImpl->m_aResults.push_back(
- new ResultListEntry( m_pImpl->m_xContent->getContent(*pIter)->getContentProperties() ) );
-
- if ( nPos == nIndex )
- {
- // Result obtained.
- bFound = sal_True;
- break;
- }
- }
- }
-
- if ( !bFound )
- m_pImpl->m_bCountFinal = sal_True;
-
- rtl::Reference< ::ucbhelper::ResultSet > xResultSet = getResultSet().get();
- if ( xResultSet.is() )
- {
- // Callbacks follow!
- aGuard.clear();
-
- if ( (size_t)nOldCount < m_pImpl->m_aResults.size() )
- xResultSet->rowCountChanged(
- nOldCount, m_pImpl->m_aResults.size() );
-
- if ( m_pImpl->m_bCountFinal )
- xResultSet->rowCountFinal();
- }
-
- return bFound;
-}
-
-sal_uInt32 DataSupplier::totalCount()
-{
- osl::ClearableGuard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
-
- if ( m_pImpl->m_bCountFinal )
- return m_pImpl->m_aResults.size();
-
- sal_uInt32 nOldCount = m_pImpl->m_aResults.size();
-
- // @@@ Obtain data and put it into result list...
- Sequence< ::rtl::OUString> aSeq = m_pImpl->m_xContent->getElementNames();
- const ::rtl::OUString* pIter = aSeq.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aSeq.getLength();
- for(;pIter != pEnd;++pIter)
- m_pImpl->m_aResults.push_back(
- new ResultListEntry( m_pImpl->m_xContent->getContent(*pIter)->getContentProperties() ) );
-
- m_pImpl->m_bCountFinal = sal_True;
-
- rtl::Reference< ::ucbhelper::ResultSet > xResultSet = getResultSet().get();
- if ( xResultSet.is() )
- {
- // Callbacks follow!
- aGuard.clear();
-
- if ( (size_t)nOldCount < m_pImpl->m_aResults.size() )
- xResultSet->rowCountChanged(
- nOldCount, m_pImpl->m_aResults.size() );
-
- xResultSet->rowCountFinal();
- }
-
- return m_pImpl->m_aResults.size();
-}
-
-sal_uInt32 DataSupplier::currentCount()
-{
- return m_pImpl->m_aResults.size();
-}
-
-sal_Bool DataSupplier::isCountFinal()
-{
- return m_pImpl->m_bCountFinal;
-}
-
-Reference< XRow >
-DataSupplier::queryPropertyValues( sal_uInt32 nIndex )
-{
- osl::Guard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
-
- if ( (size_t)nIndex < m_pImpl->m_aResults.size() )
- {
- Reference< XRow > xRow = m_pImpl->m_aResults[ nIndex ]->xRow;
- if ( xRow.is() )
- {
- // Already cached.
- return xRow;
- }
- }
-
- if ( getResult( nIndex ) )
- {
- if ( !m_pImpl->m_aResults[ nIndex ]->xContent.is() )
- queryContent(nIndex);
-
- Reference< XRow > xRow = m_pImpl->m_aResults[ nIndex ]->xContent->getPropertyValues(getResultSet()->getProperties());
- m_pImpl->m_aResults[ nIndex ]->xRow = xRow;
- return xRow;
- }
-
- return Reference< XRow >();
-}
-
-void DataSupplier::releasePropertyValues( sal_uInt32 nIndex )
-{
- osl::Guard< osl::Mutex > aGuard( m_pImpl->m_aMutex );
-
- if ( (size_t)nIndex < m_pImpl->m_aResults.size() )
- m_pImpl->m_aResults[ nIndex ]->xRow = Reference< XRow >();
-}
-
-void DataSupplier::close()
-{
-}
-
-void DataSupplier::validate()
- throw( ResultSetException )
-{
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/myucp_datasupplier.hxx b/dbaccess/source/core/dataaccess/myucp_datasupplier.hxx
deleted file mode 100644
index 77dcbf2e9..000000000
--- a/dbaccess/source/core/dataaccess/myucp_datasupplier.hxx
+++ /dev/null
@@ -1,80 +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.
- *
- ************************************************************************/
-
-#ifndef DBA_DATASUPPLIER_HXX
-#define DBA_DATASUPPLIER_HXX
-
-#include <rtl/ref.hxx>
-#include <ucbhelper/resultset.hxx>
-#include "documentcontainer.hxx"
-#include <memory>
-
-namespace dbaccess {
-
-struct DataSupplier_Impl;
-class OContentHelper;
-
-class DataSupplier : public ucbhelper::ResultSetDataSupplier
-{
- ::std::auto_ptr<DataSupplier_Impl> m_pImpl;
-
-public:
- DataSupplier( const com::sun::star::uno::Reference<
- com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
- const rtl::Reference< ODocumentContainer >& rxContent,
- sal_Int32 nOpenMode );
- virtual ~DataSupplier();
-
- virtual rtl::OUString queryContentIdentifierString( sal_uInt32 nIndex );
- virtual com::sun::star::uno::Reference<
- com::sun::star::ucb::XContentIdentifier >
- queryContentIdentifier( sal_uInt32 nIndex );
- virtual com::sun::star::uno::Reference< com::sun::star::ucb::XContent >
- queryContent( sal_uInt32 nIndex );
-
- virtual sal_Bool getResult( sal_uInt32 nIndex );
-
- virtual sal_uInt32 totalCount();
- virtual sal_uInt32 currentCount();
- virtual sal_Bool isCountFinal();
-
- virtual com::sun::star::uno::Reference< com::sun::star::sdbc::XRow >
- queryPropertyValues( sal_uInt32 nIndex );
- virtual void releasePropertyValues( sal_uInt32 nIndex );
-
- virtual void close();
-
- virtual void validate()
- throw( com::sun::star::ucb::ResultSetException );
-};
-
-}
-
-#endif // DBA_DATASUPPLIER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/myucp_resultset.cxx b/dbaccess/source/core/dataaccess/myucp_resultset.cxx
deleted file mode 100644
index d59336d87..000000000
--- a/dbaccess/source/core/dataaccess/myucp_resultset.cxx
+++ /dev/null
@@ -1,99 +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_dbaccess.hxx"
-
-/**************************************************************************
- TODO
- **************************************************************************
-
- - This implementation is not a dynamic result set!!! It only implements
- the necessary interfaces, but never recognizes/notifies changes!!!
-
- *************************************************************************/
-
-#include "myucp_datasupplier.hxx"
-#include "myucp_resultset.hxx"
-
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::ucb;
-using namespace ::com::sun::star::beans;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::sdbc;
-using namespace ::com::sun::star::io;
-using namespace ::com::sun::star::container;
-
-using namespace dbaccess;
-
-//=========================================================================
-//
-// DynamicResultSet Implementation.
-//
-//=========================================================================
-
-DynamicResultSet::DynamicResultSet(
- const Reference< XMultiServiceFactory >& rxSMgr,
- const rtl::Reference< ODocumentContainer >& rxContent,
- const OpenCommandArgument2& rCommand,
- const Reference< XCommandEnvironment >& rxEnv )
- :ResultSetImplHelper( rxSMgr, rCommand )
- ,m_xContent(rxContent)
- ,m_xEnv( rxEnv )
-{
-}
-
-//=========================================================================
-//
-// Non-interface methods.
-//
-//=========================================================================
-void DynamicResultSet::initStatic()
-{
- m_xResultSet1
- = new ::ucbhelper::ResultSet( m_xSMgr,
- m_aCommand.Properties,
- new DataSupplier( m_xSMgr,
- m_xContent,
- m_aCommand.Mode ),
- m_xEnv );
-}
-
-void DynamicResultSet::initDynamic()
-{
- m_xResultSet1
- = new ::ucbhelper::ResultSet( m_xSMgr,
- m_aCommand.Properties,
- new DataSupplier( m_xSMgr,
- m_xContent,
- m_aCommand.Mode ),
- m_xEnv );
- m_xResultSet2 = m_xResultSet1;
-}
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/dataaccess/myucp_resultset.hxx b/dbaccess/source/core/dataaccess/myucp_resultset.hxx
deleted file mode 100644
index b74be38df..000000000
--- a/dbaccess/source/core/dataaccess/myucp_resultset.hxx
+++ /dev/null
@@ -1,64 +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.
- *
- ************************************************************************/
-
-#ifndef DBA_UCPRESULTSET_HXX
-#define DBA_UCPRESULTSET_HXX
-
-#include <rtl/ref.hxx>
-#include <ucbhelper/resultsethelper.hxx>
-#include "documentcontainer.hxx"
-
-
-// @@@ Adjust namespace name.
-namespace dbaccess {
-
-class DynamicResultSet : public ::ucbhelper::ResultSetImplHelper
-{
- rtl::Reference< ODocumentContainer > m_xContent;
- com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > m_xEnv;
-
-private:
- virtual void initStatic();
- virtual void initDynamic();
-
-public:
- DynamicResultSet(
- const com::sun::star::uno::Reference<
- com::sun::star::lang::XMultiServiceFactory >& rxSMgr,
- const rtl::Reference< ODocumentContainer >& rxContent,
- const com::sun::star::ucb::OpenCommandArgument2& rCommand,
- const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment >& rxEnv );
-};
-
-}
-
-#endif // DBA_UCPRESULTSET_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/ContainerListener.hxx b/dbaccess/source/core/inc/ContainerListener.hxx
deleted file mode 100644
index 6db609e94..000000000
--- a/dbaccess/source/core/inc/ContainerListener.hxx
+++ /dev/null
@@ -1,89 +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.
- *
- ************************************************************************/
-#ifndef DBA_CONTAINERLISTENER_HXX
-#define DBA_CONTAINERLISTENER_HXX
-
-#include <cppuhelper/implbase2.hxx>
-#include <com/sun/star/container/XContainerListener.hpp>
-#include <com/sun/star/container/XContainerApproveListener.hpp>
-
-#include <cppuhelper/weak.hxx>
-
-namespace dbaccess
-{
-
- //==========================================================================
- //= OContainerListener
- //==========================================================================
- typedef ::cppu::WeakImplHelper2 < ::com::sun::star::container::XContainerListener
- , ::com::sun::star::container::XContainerApproveListener
- > OContainerListener_BASE;
-
- /** is helper class to avoid a cycle in refcount
- */
- class OContainerListener : public OContainerListener_BASE
- {
- ::osl::Mutex& m_rMutex;
- OWeakObject& m_rDestination;
- bool m_bDisposed;
-
- public:
- OContainerListener( OWeakObject& _rDestination, ::osl::Mutex& _rMutex )
- :m_rMutex( _rMutex )
- ,m_rDestination( _rDestination )
- ,m_bDisposed( false )
- {
- }
-
- // XContainerApproveListener
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XVeto > SAL_CALL approveInsertElement( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XVeto > SAL_CALL approveReplaceElement( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XVeto > SAL_CALL approveRemoveElement( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
- // XContainerListener
- virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementRemoved( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementReplaced( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
-
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
-
- void SAL_CALL dispose()
- {
- m_bDisposed = true;
- }
-
- protected:
- virtual ~OContainerListener();
- };
-
-} // namespace dbaccess
-
-#endif // DBA_CONTAINERLISTENER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/ContainerMediator.hxx b/dbaccess/source/core/inc/ContainerMediator.hxx
deleted file mode 100644
index ffea0538a..000000000
--- a/dbaccess/source/core/inc/ContainerMediator.hxx
+++ /dev/null
@@ -1,105 +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.
- *
- ************************************************************************/
-#ifndef DBA_CONTAINERMEDIATOR_HXX
-#define DBA_CONTAINERMEDIATOR_HXX
-
-#include <com/sun/star/container/XContainerListener.hpp>
-#include <com/sun/star/container/XContainer.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-
-#include <comphelper/broadcasthelper.hxx>
-#include <comphelper/broadcasthelper.hxx>
-#include <cppuhelper/implbase1.hxx>
-#include <rtl/ref.hxx>
-
-#include <map>
-
-namespace dbaccess
-{
-
- class OPropertyForward;
-
- class OContainerMediator : public ::comphelper::OBaseMutex
- ,public ::cppu::WeakImplHelper1< ::com::sun::star::container::XContainerListener >
- {
- public:
- enum ContainerType
- {
- eColumns,
- eTables
- };
-
- private:
- typedef ::rtl::Reference< OPropertyForward > TPropertyForward;
- typedef ::std::map< ::rtl::OUString, TPropertyForward > PropertyForwardList;
- PropertyForwardList m_aForwardList;
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xSettings; // can not be weak
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainer > m_xContainer; // can not be weak
- ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XConnection > m_aConnection;
- ContainerType m_eType;
-
- protected:
- virtual ~OContainerMediator();
-
- public:
- OContainerMediator(
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainer >& _xContainer,
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _xSettings,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection,
- ContainerType _eType
- );
-
- virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& _rEvent ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementRemoved( const ::com::sun::star::container::ContainerEvent& _rEvent ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementReplaced( const ::com::sun::star::container::ContainerEvent& _rEvent ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
-
- void notifyElementCreated(const ::rtl::OUString& _sElementName
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xElement);
-
- private:
- /** cleans up the instance, by deregistering as listener at the containers,
- and resetting them to <NULL/>
- */
- void impl_cleanup_nothrow();
-
- /** initializes the properties of the given object from its counterpart in our settings container
- */
- void impl_initSettings_nothrow(
- const ::rtl::OUString& _rName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxDestination
- );
- };
-
-} // namespace dbaccess
-
-#endif // DBA_CONTAINERMEDIATOR_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/ContentHelper.hxx b/dbaccess/source/core/inc/ContentHelper.hxx
deleted file mode 100644
index 927980a6f..000000000
--- a/dbaccess/source/core/inc/ContentHelper.hxx
+++ /dev/null
@@ -1,207 +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.
- *
- ************************************************************************/
-#ifndef DBA_CONTENTHELPER_HXX
-#define DBA_CONTENTHELPER_HXX
-
-#include <com/sun/star/ucb/XContent.hpp>
-#include <com/sun/star/ucb/XCommandProcessor.hpp>
-#include <com/sun/star/beans/XPropertiesChangeNotifier.hpp>
-#include <com/sun/star/beans/XPropertyContainer.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-#include <com/sun/star/lang/XInitialization.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/embed/XStorage.hpp>
-#include <com/sun/star/embed/XEmbeddedObject.hpp>
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <cppuhelper/compbase9.hxx>
-#include <comphelper/broadcasthelper.hxx>
-#include <comphelper/componentcontext.hxx>
-#include <comphelper/uno3.hxx>
-#include <comphelper/stl_types.hxx>
-#include <com/sun/star/beans/Property.hpp>
-#include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/sdbcx/XRename.hpp>
-#include <connectivity/sqlerror.hxx>
-#include <boost/shared_ptr.hpp>
-
-namespace dbaccess
-{
- class ODatabaseModelImpl;
- struct ContentProperties
- {
- ::rtl::OUString aTitle; // Title
- ::boost::optional< ::rtl::OUString >
- aContentType; // ContentType (aka MediaType aka MimeType)
- sal_Bool bIsDocument; // IsDocument
- sal_Bool bIsFolder; // IsFolder
- sal_Bool bAsTemplate; // AsTemplate
- ::rtl::OUString sPersistentName;// persistent name of the document
-
- ContentProperties()
- :bIsDocument( sal_True )
- ,bIsFolder( sal_False )
- ,bAsTemplate( sal_False )
- {
- }
- };
-
- class OContentHelper_Impl
- {
- public:
- OContentHelper_Impl();
- virtual ~OContentHelper_Impl();
-
- ContentProperties m_aProps;
- ODatabaseModelImpl* m_pDataSource; // this will stay alive as long as the content exists
- };
-
- typedef ::boost::shared_ptr<OContentHelper_Impl> TContentPtr;
-
-
- typedef ::cppu::OMultiTypeInterfaceContainerHelperVar< ::rtl::OUString,
- ::rtl::OUStringHash,
- ::comphelper::UStringEqual
- > PropertyChangeListenerContainer;
- typedef ::comphelper::OBaseMutex OContentHelper_MBASE;
- typedef ::cppu::WeakComponentImplHelper9 < ::com::sun::star::ucb::XContent
- , ::com::sun::star::ucb::XCommandProcessor
- , ::com::sun::star::lang::XServiceInfo
- , ::com::sun::star::beans::XPropertiesChangeNotifier
- , ::com::sun::star::beans::XPropertyContainer
- , ::com::sun::star::lang::XInitialization
- , ::com::sun::star::lang::XUnoTunnel
- , ::com::sun::star::container::XChild
- , ::com::sun::star::sdbcx::XRename
- > OContentHelper_COMPBASE;
-
- class OContentHelper : public OContentHelper_MBASE
- ,public OContentHelper_COMPBASE
- {
- ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >
- setPropertyValues( const ::com::sun::star::uno::Sequence<
- ::com::sun::star::beans::PropertyValue >& rValues,
- const ::com::sun::star::uno::Reference<
- ::com::sun::star::ucb::XCommandEnvironment >& xEnv );
- com::sun::star::uno::Sequence< com::sun::star::beans::Property >
- getProperties( const com::sun::star::uno::Reference<
- com::sun::star::ucb::XCommandEnvironment > & xEnv );
-
- void impl_rename_throw(const ::rtl::OUString& _sNewName,bool _bNotify = true);
-
- protected:
- ::cppu::OInterfaceContainerHelper m_aContentListeners;
- PropertyChangeListenerContainer m_aPropertyChangeListeners;
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
- m_xParentContainer;
- const ::comphelper::ComponentContext m_aContext;
- const ::connectivity::SQLError m_aErrorHelper;
- TContentPtr m_pImpl;
- sal_uInt32 m_nCommandId;
-
- // helper
- virtual void SAL_CALL disposing();
-
- virtual void notifyDataSourceModified();
-
- /**
- * This method can be used to propagate changes of property values.
- *
- * @param evt is a sequence of property change events.
- */
- void notifyPropertiesChange( const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyChangeEvent >& evt ) const;
-
- ::rtl::OUString impl_getHierarchicalName( bool _includingRootContainer ) const;
-
- public:
-
- OContentHelper( const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xParentContainer
- ,const TContentPtr& _pImpl
- );
-
- // com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence<sal_Int8> SAL_CALL getImplementationId( ) throw(::com::sun::star::uno::RuntimeException);
- static ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId();
- // ::com::sun::star::lang::XServiceInfo
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw (::com::sun::star::uno::RuntimeException);
-
- // XContent
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentIdentifier > SAL_CALL getIdentifier( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual ::rtl::OUString SAL_CALL getContentType( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL addContentEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentEventListener >& Listener ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL removeContentEventListener( const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContentEventListener >& Listener ) throw (::com::sun::star::uno::RuntimeException) ;
-
- // XCommandProcessor
- virtual sal_Int32 SAL_CALL createCommandIdentifier( ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual ::com::sun::star::uno::Any SAL_CALL execute( const ::com::sun::star::ucb::Command& aCommand, sal_Int32 CommandId, const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandEnvironment >& Environment ) throw (::com::sun::star::uno::Exception, ::com::sun::star::ucb::CommandAbortedException, ::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL abort( sal_Int32 CommandId ) throw (::com::sun::star::uno::RuntimeException) ;
-
- // XPropertiesChangeNotifier
- virtual void SAL_CALL addPropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& PropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& Listener ) throw (::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL removePropertiesChangeListener( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& PropertyNames, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener >& Listener ) throw (::com::sun::star::uno::RuntimeException) ;
-
- // XPropertyContainer
- virtual void SAL_CALL addProperty( const ::rtl::OUString& Name, sal_Int16 Attributes, const ::com::sun::star::uno::Any& DefaultValue ) throw (::com::sun::star::beans::PropertyExistException, ::com::sun::star::beans::IllegalTypeException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException) ;
- virtual void SAL_CALL removeProperty( const ::rtl::OUString& Name ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::NotRemoveableException, ::com::sun::star::uno::RuntimeException) ;
-
- // XInitialization
- virtual void SAL_CALL initialize( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& aArguments ) throw(::com::sun::star::uno::Exception, ::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::lang::XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
- static OContentHelper* getImplementation( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxComponent );
-
- // ::com::sun::star::container::XChild
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
-
- // XRename
- virtual void SAL_CALL rename( const ::rtl::OUString& newName ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException);
-
- inline const ContentProperties& getContentProperties() const { return m_pImpl->m_aProps; }
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow >
- getPropertyValues( const ::com::sun::star::uno::Sequence<
- ::com::sun::star::beans::Property >& rProperties );
-
- const ::comphelper::ComponentContext& getContext() const { return m_aContext; }
-
- inline TContentPtr getImpl() const { return m_pImpl; }
-
- protected:
- virtual ::rtl::OUString determineContentType() const = 0;
- };
-
-} // namespace dbaccess
-
-#endif // DBA_CONTENTHELPER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/DatabaseDataProvider.hxx b/dbaccess/source/core/inc/DatabaseDataProvider.hxx
deleted file mode 100644
index ecd3c4f13..000000000
--- a/dbaccess/source/core/inc/DatabaseDataProvider.hxx
+++ /dev/null
@@ -1,281 +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.
- *
- ************************************************************************/
-#ifndef DBA_DATABASEDATAPROVIDER_HXX_INCLUDED
-#define DBA_DATABASEDATAPROVIDER_HXX_INCLUDED
-
-#include "sal/config.h"
-
-#include "com/sun/star/uno/XComponentContext.hpp"
-#include "com/sun/star/lang/XServiceInfo.hpp"
-#include "com/sun/star/chart2/data/XDatabaseDataProvider.hpp"
-#include "com/sun/star/chart2/XInternalDataProvider.hpp"
-#include <com/sun/star/chart/XComplexDescriptionAccess.hpp>
-#include <com/sun/star/sdbc/XRowSet.hpp>
-#include <com/sun/star/sdbc/XParameters.hpp>
-#include <com/sun/star/container/XChild.hpp>
-
-#include "cppuhelper/compbase4.hxx"
-#include "cppuhelper/basemutex.hxx"
-#include "cppuhelper/propertysetmixin.hxx"
-#include <cppuhelper/implementationentry.hxx>
-
-#include <comphelper/sequence.hxx>
-
-#include "connectivity/parameters.hxx"
-#include "connectivity/filtermanager.hxx"
-
-
-namespace dbaccess
-{
-
-class DatabaseDataSource;
-typedef ::cppu::WeakComponentImplHelper4< ::com::sun::star::chart2::data::XDatabaseDataProvider
- , ::com::sun::star::container::XChild
- , ::com::sun::star::chart::XComplexDescriptionAccess
- , ::com::sun::star::lang::XServiceInfo > TDatabaseDataProvider;
-
-class DatabaseDataProvider: private ::cppu::BaseMutex,
- public TDatabaseDataProvider,
- public ::cppu::PropertySetMixin< ::com::sun::star::chart2::data::XDatabaseDataProvider >
-{
-public:
- explicit DatabaseDataProvider(::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > const & context);
-
- // ::com::sun::star::lang::XServiceInfo - static methods
- static ::com::sun::star::uno::Sequence< ::rtl::OUString > getSupportedServiceNames_Static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::rtl::OUString getImplementationName_Static(void) throw( ::com::sun::star::uno::RuntimeException );
- static ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
- SAL_CALL Create(::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > const & context);
-
-private:
- // ::com::sun::star::uno::XInterface:
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(::com::sun::star::uno::Type const & type) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw ()
- { TDatabaseDataProvider::acquire(); }
- virtual void SAL_CALL release() throw ()
- { TDatabaseDataProvider::release(); }
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::chart2::data::XDataProvider:
- virtual ::sal_Bool SAL_CALL createDataSourcePossible(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > & aArguments) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSource > SAL_CALL createDataSource(const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > & aArguments) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException);
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > SAL_CALL detectArguments(const ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSource > & xDataSource) throw (::com::sun::star::uno::RuntimeException);
- virtual ::sal_Bool SAL_CALL createDataSequenceByRangeRepresentationPossible(const ::rtl::OUString & aRangeRepresentation) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XDataSequence > SAL_CALL createDataSequenceByRangeRepresentation(const ::rtl::OUString & aRangeRepresentation) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sheet::XRangeSelection > SAL_CALL getRangeSelection() throw (::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::chart2::data::XRangeXMLConversion:
- virtual ::rtl::OUString SAL_CALL convertRangeToXML(const ::rtl::OUString & aRangeRepresentation) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException);
- virtual ::rtl::OUString SAL_CALL convertRangeFromXML(const ::rtl::OUString & aXMLRange) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException);
-
- // ::com::sun::star::lang::XInitialization:
- virtual void SAL_CALL initialize(const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any > & aArguments) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::uno::Exception);
-
- // ::com::sun::star::beans::XPropertySet:
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setPropertyValue(const ::rtl::OUString & aPropertyName, const ::com::sun::star::uno::Any & aValue) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::beans::PropertyVetoException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::lang::WrappedTargetException);
- virtual ::com::sun::star::uno::Any SAL_CALL getPropertyValue(const ::rtl::OUString & PropertyName) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException);
- virtual void SAL_CALL addPropertyChangeListener(const ::rtl::OUString & aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & xListener) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException);
- virtual void SAL_CALL removePropertyChangeListener(const ::rtl::OUString & aPropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertyChangeListener > & aListener) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException);
- virtual void SAL_CALL addVetoableChangeListener(const ::rtl::OUString & PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException);
- virtual void SAL_CALL removeVetoableChangeListener(const ::rtl::OUString & PropertyName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XVetoableChangeListener > & aListener) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::lang::WrappedTargetException);
-
- // ::com::sun::star::chart2::data::XDatabaseDataProvider:
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getMasterFields() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setMasterFields(const ::com::sun::star::uno::Sequence< ::rtl::OUString > & the_value) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getDetailFields() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setDetailFields(const ::com::sun::star::uno::Sequence< ::rtl::OUString > & the_value) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getCommand() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setCommand(const ::rtl::OUString & the_value) throw (::com::sun::star::uno::RuntimeException);
- virtual ::sal_Int32 SAL_CALL getCommandType() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setCommandType(::sal_Int32 the_value) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getFilter() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setFilter(const ::rtl::OUString & the_value) throw (::com::sun::star::uno::RuntimeException);
- virtual ::sal_Bool SAL_CALL getApplyFilter() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setApplyFilter( ::sal_Bool _applyfilter ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getHavingClause() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setHavingClause( const ::rtl::OUString& _havingclause ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getGroupBy() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setGroupBy( const ::rtl::OUString& _groupby ) throw (::com::sun::star::beans::UnknownPropertyException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getOrder() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setOrder( const ::rtl::OUString& _order ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::sal_Bool SAL_CALL getEscapeProcessing() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setEscapeProcessing(::sal_Bool the_value) throw (::com::sun::star::uno::RuntimeException);
- virtual ::sal_Int32 SAL_CALL getRowLimit() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setRowLimit( ::sal_Int32 _rowlimit ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getActiveConnection() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setActiveConnection(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > & the_value) throw (::com::sun::star::uno::RuntimeException, ::com::sun::star::lang::IllegalArgumentException);
- virtual ::rtl::OUString SAL_CALL getDataSourceName() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setDataSourceName( const ::rtl::OUString& _datasourcename ) throw (::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::sdbc::XParameters
- virtual void SAL_CALL setNull(sal_Int32 parameterIndex, sal_Int32 sqlType) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setObjectNull(sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBoolean(sal_Int32 parameterIndex, sal_Bool x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setByte(sal_Int32 parameterIndex, sal_Int8 x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setShort(sal_Int32 parameterIndex, sal_Int16 x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setInt(sal_Int32 parameterIndex, sal_Int32 x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setLong(sal_Int32 parameterIndex, sal_Int64 x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setFloat(sal_Int32 parameterIndex, float x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setDouble(sal_Int32 parameterIndex, double x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setString(sal_Int32 parameterIndex, const ::rtl::OUString& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBytes(sal_Int32 parameterIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setDate(sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setTime(sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setTimestamp(sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBinaryStream(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream>& x, sal_Int32 length) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setCharacterStream(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream>& x, sal_Int32 length) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setObject(sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setObjectWithInfo(sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x, sal_Int32 targetSqlType, sal_Int32 scale) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setRef(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef>& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBlob(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob>& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setClob(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob>& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setArray(sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray>& x) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearParameters() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::sdbc::XRowSet
- virtual void SAL_CALL execute() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL addRowSetListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeRowSetListener(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSetListener>& _rxListener) throw(::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::sdbc::XResultSet
- virtual sal_Bool SAL_CALL next() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isBeforeFirst() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isAfterLast() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isFirst() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL isLast() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL beforeFirst() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL afterLast() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL first() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL last() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getRow() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL absolute(sal_Int32 row) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL relative(sal_Int32 rows) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL previous() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL refreshRow() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowUpdated() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowInserted() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL rowDeleted() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getStatement() throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // conatiner::XChild
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
-
- // ____ XComplexDescriptionAccess ____
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::rtl::OUString > > SAL_CALL getComplexRowDescriptions() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setComplexRowDescriptions( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::rtl::OUString > >& aRowDescriptions ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::rtl::OUString > > SAL_CALL getComplexColumnDescriptions() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setComplexColumnDescriptions( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::rtl::OUString > >& aColumnDescriptions ) throw (::com::sun::star::uno::RuntimeException);
-
- // ____ XChartDataArray (base of XComplexDescriptionAccess) ____
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > > SAL_CALL getData() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setData( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< double > >& aData ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getRowDescriptions() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setRowDescriptions( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aRowDescriptions ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getColumnDescriptions() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setColumnDescriptions( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& aColumnDescriptions ) throw (::com::sun::star::uno::RuntimeException);
-
- // ____ XChartData (base of XChartDataArray) ____
- virtual void SAL_CALL addChartDataChangeEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& aListener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeChartDataChangeEventListener(const ::com::sun::star::uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& aListener )throw (::com::sun::star::uno::RuntimeException);
- virtual double SAL_CALL getNotANumber()throw (::com::sun::star::uno::RuntimeException);
- virtual ::sal_Bool SAL_CALL isNotANumber(double nNumber )throw (::com::sun::star::uno::RuntimeException);
-private:
- DatabaseDataProvider(DatabaseDataProvider &); // not defined
- void operator =(DatabaseDataProvider &); // not defined
-
- virtual ~DatabaseDataProvider() {}
-
- // This function is called upon disposing the component,
- // if your component needs special work when it becomes
- // disposed, do it here.
- virtual void SAL_CALL disposing();
-
- void impl_fillRowSet_throw();
- void impl_executeRowSet_throw(::osl::ResettableMutexGuard& _rClearForNotifies);
- bool impl_fillParameters_nothrow( ::osl::ResettableMutexGuard& _rClearForNotifies);
- void impl_fillInternalDataProvider_throw(sal_Bool _bHasCategories,const ::com::sun::star::uno::Sequence< ::rtl::OUString >& i_aColumnNames);
- void impl_invalidateParameter_nothrow();
- ::com::sun::star::uno::Any impl_getNumberFormatKey_nothrow(const ::rtl::OUString & _sRangeRepresentation) const;
-
- template <typename T> void set( const ::rtl::OUString& _sProperty
- ,const T& _Value
- ,T& _member)
- {
- BoundListeners l;
- {
- ::osl::MutexGuard aGuard(m_aMutex);
- if ( _member != _Value )
- {
- prepareSet(_sProperty, ::com::sun::star::uno::makeAny(_member), ::com::sun::star::uno::makeAny(_Value), &l);
- _member = _Value;
- }
- }
- l.notify();
- }
-
- ::dbtools::ParameterManager m_aParameterManager;
- ::dbtools::FilterManager m_aFilterManager;
- ::std::map< ::rtl::OUString, ::com::sun::star::uno::Any> m_aNumberFormats;
-
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XComponentContext > m_xContext;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xActiveConnection;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowSet > m_xRowSet;
- ::com::sun::star::uno::Reference< ::com::sun::star::chart2::XInternalDataProvider > m_xInternal;
- ::com::sun::star::uno::Reference< ::com::sun::star::chart::XComplexDescriptionAccess > m_xComplexDescriptionAccess;
- ::com::sun::star::uno::Reference< ::com::sun::star::chart2::data::XRangeXMLConversion> m_xRangeConversion;
- ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler> m_xHandler;
- // the object doin' most of the work - an SDB-rowset
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XAggregation> m_xAggregate;
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> m_xAggregateSet;
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface> m_xParent;
- ::com::sun::star::uno::Sequence< ::rtl::OUString > m_MasterFields;
- ::com::sun::star::uno::Sequence< ::rtl::OUString > m_DetailFields;
-
- ::rtl::OUString m_Command;
- ::rtl::OUString m_DataSourceName;
- ::sal_Int32 m_CommandType;
- sal_Int32 m_RowLimit;
- ::rtl::OUString m_Filter;
- ::rtl::OUString m_HavingClause;
- ::rtl::OUString m_Order;
- ::rtl::OUString m_GroupBy;
- ::sal_Bool m_EscapeProcessing;
- ::sal_Bool m_ApplyFilter;
-};
-
-} // namespace dbaccess
-
-#endif // DBA_DATABASEDATAPROVIDER_HXX_INCLUDED
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/FilteredContainer.hxx b/dbaccess/source/core/inc/FilteredContainer.hxx
deleted file mode 100644
index 8ba05a516..000000000
--- a/dbaccess/source/core/inc/FilteredContainer.hxx
+++ /dev/null
@@ -1,147 +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.
- *
- ************************************************************************/
-#ifndef DBACCESS_CORE_FILTERED_CONTAINER_HXX
-#define DBACCESS_CORE_FILTERED_CONTAINER_HXX
-
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-
-#include <connectivity/sdbcx/VCollection.hxx>
-
-namespace dbtools
-{
- class IWarningsContainer;
-}
-
-namespace dbaccess
-{
- class IRefreshListener;
-
- class OFilteredContainer : public ::connectivity::sdbcx::OCollection
- {
- private:
- mutable sal_Bool m_bConstructed; // late ctor called
-
- protected:
- ::dbtools::IWarningsContainer* m_pWarningsContainer;
- IRefreshListener* m_pRefreshListener;
- oslInterlockedCount& m_nInAppend;
-
- // holds the original container which where set in construct but they can be null
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xMasterContainer;
- ::com::sun::star::uno::WeakReference< ::com::sun::star::sdbc::XConnection > m_xConnection;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
-
- /** returns a string denoting the only type of tables allowed in this container, or an empty string
- if there is no such restriction
- */
- virtual ::rtl::OUString getTableTypeRestriction() const = 0;
-
- inline virtual void addMasterContainerListener(){}
- inline virtual void removeMasterContainerListener(){}
-
- // ::connectivity::sdbcx::OCollection
- virtual void impl_refresh() throw(::com::sun::star::uno::RuntimeException);
-
- virtual ::rtl::OUString getNameForObject(const ::connectivity::sdbcx::ObjectType& _xObject);
-
- /** tell the container to free all elements and all additional resources.<BR>
- After using this method the object may be reconstructed by calling one of the <code>constrcuct</code> methods.
- */
- virtual void SAL_CALL disposing();
-
- class EnsureReset
- {
- public:
- EnsureReset( oslInterlockedCount& _rValueLocation)
- :m_rValue( _rValueLocation )
- {
- osl_incrementInterlockedCount(&m_rValue);
- }
-
- ~EnsureReset()
- {
- osl_decrementInterlockedCount(&m_rValue);
- }
-
- private:
- oslInterlockedCount& m_rValue;
- };
-
- /** retrieve a table type filter to pass to <member scope="com::sun::star::sdbc">XDatabaseMetaData::getTables</member>,
- according to the current data source settings
- */
- void getAllTableTypeFilter( ::com::sun::star::uno::Sequence< ::rtl::OUString >& /* [out] */ _rFilter ) const;
-
- public:
- /** ctor of the container. The parent has to support the <type scope="com::sun::star::sdbc">XConnection</type>
- interface.<BR>
- @param _rParent the object which acts as parent for the container.
- all refcounting is rerouted to this object
- @param _rMutex the access safety object of the parent
- @param _rTableFilter restricts the visible tables by name
- @param _rTableTypeFilter restricts the visible tables by type
- @see construct
- */
- OFilteredContainer( ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xCon,
- sal_Bool _bCase,
- IRefreshListener* _pRefreshListener,
- ::dbtools::IWarningsContainer* _pWarningsContainer,
- oslInterlockedCount& _nInAppend
- );
-
- inline void dispose() { disposing(); }
-
- /** late ctor. The container will fill itself with the data got by the connection meta data, considering the
- filters given (the connection is the parent object you passed in the ctor).
- */
- void construct(
- const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rTableFilter,
- const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rTableTypeFilter
- );
-
- /** late ctor. The container will fill itself with wrapper objects for the tables returned by the given
- name container.
- */
- void construct(
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxMasterContainer,
- const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rTableFilter,
- const ::com::sun::star::uno::Sequence< ::rtl::OUString >& _rTableTypeFilter
- );
-
- inline sal_Bool isInitialized() const { return m_bConstructed; }
- };
-// ..............................................................................
-} // namespace
-// ..............................................................................
-
-#endif // DBACCESS_CORE_FILTERED_CONTAINER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/PropertyForward.hxx b/dbaccess/source/core/inc/PropertyForward.hxx
deleted file mode 100644
index a3bb17da4..000000000
--- a/dbaccess/source/core/inc/PropertyForward.hxx
+++ /dev/null
@@ -1,83 +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.
- *
- ************************************************************************/
-#ifndef DBA_PROPERTYSETFORWARD_HXX
-#define DBA_PROPERTYSETFORWARD_HXX
-
-#include <com/sun/star/beans/XPropertyChangeListener.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/beans/XPropertySetInfo.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <cppuhelper/implbase1.hxx>
-#include <comphelper/broadcasthelper.hxx>
-
-#include <vector>
-
-namespace dbaccess
-{
-
- // ===================================================================
- // = OPropertyForward
- // ===================================================================
- typedef ::cppu::WeakImplHelper1 < ::com::sun::star::beans::XPropertyChangeListener
- > OPropertyForward_Base;
- class OPropertyForward :public ::comphelper::OBaseMutex
- ,public OPropertyForward_Base
- {
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xSource;
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xDest;
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > m_xDestInfo;
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xDestContainer;
- ::rtl::OUString m_sName;
- sal_Bool m_bInInsert;
-
- protected:
- virtual ~OPropertyForward();
-
- public:
- OPropertyForward( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xSource,
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& _xDestContainer,
- const ::rtl::OUString& _sName,
- const ::std::vector< ::rtl::OUString >& _aPropertyList
- );
-
- // ::com::sun::star::beans::XPropertyChangeListener
- virtual void SAL_CALL propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::lang::XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& _rSource ) throw (::com::sun::star::uno::RuntimeException);
-
- inline void setName( const ::rtl::OUString& _sName ) { m_sName = _sName; }
- void setDefinition( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _xDest);
- inline ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > getDefinition() const { return m_xDest; }
- };
-
-} // namespace dbaccess
-
-#endif // DBA_PROPERTYSETFORWARD_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/RefreshListener.hxx b/dbaccess/source/core/inc/RefreshListener.hxx
deleted file mode 100644
index b5fed70b8..000000000
--- a/dbaccess/source/core/inc/RefreshListener.hxx
+++ /dev/null
@@ -1,56 +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.
- *
- ************************************************************************/
-
-#ifndef DBA_CORE_REFRESHLISTENER_HXX
-#define DBA_CORE_REFRESHLISTENER_HXX
-
-#include <com/sun/star/uno/Reference.h>
-
-namespace com { namespace sun { namespace star { namespace container
-{
- class XNameAccess;
-}
-}}}
-
-namespace dbaccess
-{
-
- //=====================================================================
- //= IRefreshListener
- //=====================================================================
- class SAL_NO_VTABLE IRefreshListener
- {
- public:
- virtual void refresh(const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rToBeRefreshed) = 0;
- };
-
-} // namespace dbaccess
-
-#endif // DBA_CORE_REFRESHLISTENER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/SingleSelectQueryComposer.hxx b/dbaccess/source/core/inc/SingleSelectQueryComposer.hxx
deleted file mode 100644
index cad13ae11..000000000
--- a/dbaccess/source/core/inc/SingleSelectQueryComposer.hxx
+++ /dev/null
@@ -1,256 +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.
- *
- ************************************************************************/
-#ifndef DBACCESS_CORE_API_SINGLESELECTQUERYCOMPOSER_HXX
-#define DBACCESS_CORE_API_SINGLESELECTQUERYCOMPOSER_HXX
-
-#include <com/sun/star/sdb/XParametersSupplier.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/script/XTypeConverter.hpp>
-#include <cppuhelper/implbase5.hxx>
-#include <connectivity/sqliterator.hxx>
-#include <connectivity/sqlparse.hxx>
-#include "apitools.hxx"
-#include <comphelper/broadcasthelper.hxx>
-#include <comphelper/uno3.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include <comphelper/propertycontainer.hxx>
-#include <comphelper/componentcontext.hxx>
-
-#include <memory>
-
-namespace com { namespace sun { namespace star { namespace util {
- class XNumberFormatsSupplier;
- class XNumberFormatter;
-}}}}
-
-namespace dbaccess
-{
- typedef ::cppu::ImplHelper5< ::com::sun::star::sdb::XSingleSelectQueryComposer,
- ::com::sun::star::sdb::XParametersSupplier,
- ::com::sun::star::sdbcx::XColumnsSupplier,
- ::com::sun::star::sdbcx::XTablesSupplier,
- ::com::sun::star::lang::XServiceInfo > OSingleSelectQueryComposer_BASE;
-
- class OPrivateColumns;
- class OPrivateTables;
-
- class OSingleSelectQueryComposer : public ::comphelper::OMutexAndBroadcastHelper
- ,public OSubComponent
- ,public ::comphelper::OPropertyContainer
- ,public ::comphelper::OPropertyArrayUsageHelper < OSingleSelectQueryComposer >
- ,public OSingleSelectQueryComposer_BASE
- {
- enum SQLPart
- {
- Where = 0, // the 0 is important, as it will be used as index into arrays
- Group,
- Having,
- Order,
-
- SQLPartCount
- };
- inline void incSQLPart( SQLPart& e ) { e = (SQLPart)(1 + (size_t)e); }
- enum EColumnType
- {
- SelectColumns = 0,
- GroupByColumns = 1,
- OrderColumns = 2,
- ParameterColumns = 3
- };
- typedef ::std::const_mem_fun_t< const ::connectivity::OSQLParseNode*, ::connectivity::OSQLParseTreeIterator >
- TGetParseNode;
- ::connectivity::OSQLParser m_aSqlParser;
- ::connectivity::OSQLParseTreeIterator m_aSqlIterator; // the iterator for the complete statement
- ::connectivity::OSQLParseTreeIterator m_aAdditiveIterator; // the iterator for the "additive statement" (means without the clauses of the elementary statement)
- ::std::vector<OPrivateColumns*> m_aColumnsCollection; // used for columns and parameters of old queries
- ::std::vector<OPrivateTables*> m_aTablesCollection;
-
- ::std::vector< ::rtl::OUString > m_aElementaryParts; // the filter/groupby/having/order of the elementary statement
-
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> m_xConnection;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData> m_xMetaData;
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess> m_xConnectionTables;
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess> m_xConnectionQueries;
- ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > m_xNumberFormatsSupplier;
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess> m_xColumns;
- ::comphelper::ComponentContext m_aContext;
- ::com::sun::star::uno::Reference< ::com::sun::star::script::XTypeConverter > m_xTypeConverter;
-
- ::std::vector<OPrivateColumns*> m_aCurrentColumns;
- OPrivateTables* m_pTables; // currently used tables
-
- ::rtl::OUString m_aPureSelectSQL; // the pure select statement, without filter/order/groupby/having
- ::rtl::OUString m_sDecimalSep;
- ::rtl::OUString m_sCommand;
- ::com::sun::star::lang::Locale m_aLocale;
- sal_Int32 m_nBoolCompareMode; // how to compare bool values
- sal_Int32 m_nCommandType;
-
- // <properties>
- ::rtl::OUString m_sOrignal;
- // </properties>
-
-
- sal_Bool setORCriteria(::connectivity::OSQLParseNode* pCondition, ::connectivity::OSQLParseTreeIterator& _rIterator,
- ::std::vector< ::std::vector < ::com::sun::star::beans::PropertyValue > >& rFilters, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter > & xFormatter) const;
- sal_Bool setANDCriteria(::connectivity::OSQLParseNode* pCondition, ::connectivity::OSQLParseTreeIterator& _rIterator,
- ::std::vector < ::com::sun::star::beans::PropertyValue > & rFilters, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter > & xFormatter) const;
- sal_Bool setComparsionPredicate(::connectivity::OSQLParseNode* pCondition, ::connectivity::OSQLParseTreeIterator& _rIterator,
- ::std::vector < ::com::sun::star::beans::PropertyValue > & rFilters, const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter > & xFormatter) const;
-
- ::rtl::OUString getColumnName(::connectivity::OSQLParseNode* pColumnRef,::connectivity::OSQLParseTreeIterator& _rIterator) const;
- ::rtl::OUString getTableAlias(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& column ) const;
- sal_Int32 getPredicateType(::connectivity::OSQLParseNode * _pPredicate) const;
- // clears all Columns,Parameters and tables and insert it to their vectors
- void clearCurrentCollections();
- // clears the columns collection given by EColumnType
- void clearColumns( const EColumnType _eType );
-
- /** retrieves a particular part of a statement
- @param _rIterator
- the iterator to use.
- */
- ::rtl::OUString getStatementPart( TGetParseNode& _aGetFunctor, ::connectivity::OSQLParseTreeIterator& _rIterator );
- void setQuery_Impl( const ::rtl::OUString& command );
-
- void setConditionByColumn( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& column
- , sal_Bool andCriteria
- ,::std::mem_fun1_t<bool,OSingleSelectQueryComposer,::rtl::OUString>& _aSetFunctor
- ,sal_Int32 filterOperator);
-
- /** getStructuredCondition returns the structured condition for the where or having clause
- @param _aGetFunctor
- A member function to get the correct parse node.
-
- @return
- The structured filter
- */
- ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > >
- getStructuredCondition( TGetParseNode& _aGetFunctor );
-
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess >
- setCurrentColumns( EColumnType _eType, const ::rtl::Reference< ::connectivity::OSQLColumns >& _rCols );
-
- //helper methods for mem_fun_t
- inline bool implSetFilter(::rtl::OUString _sFilter) { setFilter(_sFilter); return true;}
- inline bool implSetHavingClause(::rtl::OUString _sFilter) { setHavingClause(_sFilter); return true;}
-
- /** returns the part of the seelect statement
- @param _ePart
- Which part should be returned.
- @param _bWithKeyword
- If <TRUE/> the keyword will be added too. Otherwise not.
- @param _rIterator
- The iterator to use.
-
- @return
- The part of the select statement.
- */
- ::rtl::OUString getSQLPart( SQLPart _ePart, ::connectivity::OSQLParseTreeIterator& _rIterator, sal_Bool _bWithKeyword );
-
- /** retrieves the keyword for the given SQLPart
- */
- ::rtl::OUString getKeyword( SQLPart _ePart ) const;
-
- /** sets a single "additive" clause, means a filter/groupby/having/order clause
- */
- void setSingleAdditiveClause( SQLPart _ePart, const ::rtl::OUString& _rClause );
-
- /** composes a statement from m_aPureSelectSQL and the 4 usual clauses
- */
- ::rtl::OUString composeStatementFromParts( const ::std::vector< ::rtl::OUString >& _rParts );
-
- /** return the name of the column.
- */
- ::rtl::OUString impl_getColumnName_throw(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& column);
-
- protected:
- virtual ~OSingleSelectQueryComposer();
- public:
-
- OSingleSelectQueryComposer( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess>& _xTableSupplier,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection,
- const ::comphelper::ComponentContext& _rContext);
-
-
- void SAL_CALL disposing(void);
- // ::com::sun::star::lang::XTypeProvider
- DECLARE_TYPEPROVIDER( );
-
- // com::sun::star::lang::XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::uno::XInterface
- DECLARE_XINTERFACE( )
-
- // XServiceInfo
- DECLARE_SERVICE_INFO();
-
- DECLARE_PROPERTYCONTAINER_DEFAULTS();
-
- // ::com::sun::star::sdb::XSingleSelectQueryComposer
- virtual ::rtl::OUString SAL_CALL getElementaryQuery() throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setElementaryQuery( const ::rtl::OUString& _rElementary ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setFilter( const ::rtl::OUString& filter ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setStructuredFilter( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > >& filter ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL appendFilterByColumn( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& column, sal_Bool andCriteria,sal_Int32 filterOperator ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL appendGroupByColumn( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& column ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setGroup( const ::rtl::OUString& group ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setHavingClause( const ::rtl::OUString& filter ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setStructuredHavingClause( const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > >& filter ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL appendHavingClauseByColumn( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& column, sal_Bool andCriteria,sal_Int32 filterOperator ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL appendOrderByColumn( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& column, sal_Bool ascending ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setOrder( const ::rtl::OUString& order ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // XSingleSelectQueryAnalyzer
- virtual ::rtl::OUString SAL_CALL getQuery( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setQuery( const ::rtl::OUString& command ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setCommand( const ::rtl::OUString& command,sal_Int32 CommandType ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getFilter( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > > SAL_CALL getStructuredFilter( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getGroup( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL getGroupColumns( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getHavingClause( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > > SAL_CALL getStructuredHavingClause( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getOrder( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL getOrderColumns( ) throw (::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getQueryWithSubstitution( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // XColumnsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getColumns( ) throw(::com::sun::star::uno::RuntimeException);
- // XTablesSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTables( ) throw(::com::sun::star::uno::RuntimeException);
- // XParametersSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL getParameters( ) throw(::com::sun::star::uno::RuntimeException);
- };
-}
-#endif // DBACCESS_CORE_API_SINGLESELECTQUERYCOMPOSER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/TableDeco.hxx b/dbaccess/source/core/inc/TableDeco.hxx
deleted file mode 100644
index 543081d8c..000000000
--- a/dbaccess/source/core/inc/TableDeco.hxx
+++ /dev/null
@@ -1,186 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_TABLEDECORATOR_HXX_
-#define _DBA_CORE_TABLEDECORATOR_HXX_
-
-#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
-#include <com/sun/star/sdbcx/XIndexesSupplier.hpp>
-#include <com/sun/star/sdbcx/XKeysSupplier.hpp>
-#include <com/sun/star/sdbcx/XRename.hpp>
-#include <com/sun/star/sdbcx/XAlterTable.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <cppuhelper/compbase9.hxx>
-#include <cppuhelper/implbase5.hxx>
-#include "apitools.hxx"
-#include "datasettings.hxx"
-#include "column.hxx"
-
-#include <connectivity/CommonTools.hxx>
-#include <connectivity/sdbcx/IRefreshable.hxx>
-#include <comphelper/IdPropArrayHelper.hxx>
-
-namespace dbaccess
-{
- typedef ::cppu::WeakComponentImplHelper9< ::com::sun::star::sdbcx::XColumnsSupplier,
- ::com::sun::star::sdbcx::XKeysSupplier,
- ::com::sun::star::container::XNamed,
- ::com::sun::star::lang::XServiceInfo,
- ::com::sun::star::sdbcx::XDataDescriptorFactory,
- ::com::sun::star::sdbcx::XIndexesSupplier,
- ::com::sun::star::sdbcx::XRename,
- ::com::sun::star::lang::XUnoTunnel,
- ::com::sun::star::sdbcx::XAlterTable> OTableDescriptor_BASE;
- //==========================================================================
- //= OTables
- //==========================================================================
- class ODBTableDecorator;
- typedef ::comphelper::OIdPropertyArrayUsageHelper< ODBTableDecorator > ODBTableDecorator_PROP;
-
- class ODBTableDecorator :public comphelper::OBaseMutex
- ,public OTableDescriptor_BASE
- ,public ODataSettings //ODataSettings_Base
- ,public IColumnFactory
- ,public ::connectivity::sdbcx::IRefreshableColumns
- ,public ODBTableDecorator_PROP
- {
- void fillPrivileges() const;
- protected:
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener > m_xColumnMediator;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier > m_xTable;
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xColumnDefinitions;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xConnection;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData;
- ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier > m_xNumberFormats;
-
- // <properties>
- mutable sal_Int32 m_nPrivileges;
- // </properties>
- ::connectivity::sdbcx::OCollection* m_pColumns;
- ::connectivity::sdbcx::OCollection* m_pTables;
-
- // IColumnFactory
- virtual OColumn* createColumn(const ::rtl::OUString& _rName) const;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createColumnDescriptor();
- virtual void columnAppended( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxSourceDescriptor );
- virtual void columnDropped(const ::rtl::OUString& _sName);
-
- virtual void refreshColumns();
-
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper(sal_Int32 _nId) const;
- virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
-
- // OPropertySetHelper
- virtual sal_Bool SAL_CALL convertFastPropertyValue(
- ::com::sun::star::uno::Any & rConvertedValue,
- ::com::sun::star::uno::Any & rOldValue,
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue )
- throw (::com::sun::star::lang::IllegalArgumentException);
- virtual void SAL_CALL getFastPropertyValue(::com::sun::star::uno::Any& rValue, sal_Int32 nHandle) const;
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue
- )
-
- throw (::com::sun::star::uno::Exception);
-
- virtual ~ODBTableDecorator();
- public:
- /** constructs a wrapper supporting the com.sun.star.sdb.Table service.
-
- @param _rxConn
- the connection the table belongs to. Must not be <NULL/>
- @param _rxTable
- the table from the driver can be <NULL/>
- */
- ODBTableDecorator(
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier >& _rxTable,
- const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatsSupplier >& _rxNumberFormats,
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxColumnDefinitions
- ) throw(::com::sun::star::sdbc::SQLException);
-
-
-
- // ODescriptor
- virtual void construct();
-
- //XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
- //XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- // ::com::sun::star::lang::XServiceInfo
- DECLARE_SERVICE_INFO();
- // XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::sdbcx::XRename,
- virtual void SAL_CALL rename( const ::rtl::OUString& _rNewName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XAlterTable,
- virtual void SAL_CALL alterColumnByName( const ::rtl::OUString& _rName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxDescriptor ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL alterColumnByIndex( sal_Int32 _nIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxDescriptor ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
-
- // XNamed
- virtual ::rtl::OUString SAL_CALL getName() throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setName( const ::rtl::OUString& aName ) throw (::com::sun::star::uno::RuntimeException);
- // com::sun::star::lang::XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
- static ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId();
-
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData> getMetaData() const { return m_xMetaData; }
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> getConnection() const { return m_xMetaData.is() ? m_xMetaData->getConnection() : ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>(); }
-
- // XColumnsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getColumns( ) throw (::com::sun::star::uno::RuntimeException);
- // XKeysSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL getKeys( ) throw (::com::sun::star::uno::RuntimeException);
- // XIndexesSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getIndexes( ) throw (::com::sun::star::uno::RuntimeException);
- // XDataDescriptorFactory
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL createDataDescriptor( ) throw (::com::sun::star::uno::RuntimeException);
-
- protected:
- using ODataSettings::getFastPropertyValue;
- };
-}
-#endif // _DBA_CORE_TABLEDECORATOR_HXX_
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/View.hxx b/dbaccess/source/core/inc/View.hxx
deleted file mode 100644
index a2dedc5a8..000000000
--- a/dbaccess/source/core/inc/View.hxx
+++ /dev/null
@@ -1,87 +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 2008 by Sun Microsystems, Inc.
- *
- * 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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_VIEW_HXX
-#define DBACCESS_VIEW_HXX
-
-#include "connectivity/sdbcx/VView.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/sdbcx/XAlterView.hpp>
-#include <com/sun/star/sdb/tools/XViewAccess.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/uno3.hxx>
-#include <cppuhelper/implbase1.hxx>
-
-namespace dbaccess
-{
-
- //====================================================================
- //= View
- //====================================================================
- typedef ::connectivity::sdbcx::OView View_Base;
- typedef ::cppu::ImplHelper1< ::com::sun::star::sdbcx::XAlterView > View_IBASE;
- class View :public View_Base
- ,public View_IBASE
- {
- public:
- View(
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection,
- sal_Bool _bCaseSensitive,
- const ::rtl::OUString& _rCatalogName,
- const ::rtl::OUString& _rSchemaName,
- const ::rtl::OUString& _rName
- );
-
- // UNO
- DECLARE_XINTERFACE()
- DECLARE_XTYPEPROVIDER()
-
- // XAlterView
- virtual void SAL_CALL alterCommand( const ::rtl::OUString& NewCommand ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- protected:
- virtual ~View();
-
- protected:
- // OPropertyContainer
- virtual void SAL_CALL getFastPropertyValue( ::com::sun::star::uno::Any& _rValue, sal_Int32 _nHandle ) const;
-
- private:
- ::com::sun::star::uno::Reference< ::com::sun::star::sdb::tools::XViewAccess> m_xViewAccess;
- sal_Int32 m_nCommandHandle;
- private:
- using View_Base::getFastPropertyValue;
- };
-
-} // namespace dbaccess
-
-#endif // DBACCESS_VIEW_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/callablestatement.hxx b/dbaccess/source/core/inc/callablestatement.hxx
deleted file mode 100644
index 26230ee9c..000000000
--- a/dbaccess/source/core/inc/callablestatement.hxx
+++ /dev/null
@@ -1,91 +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.
- *
- ************************************************************************/
-#ifndef _DBA_COREAPI_CALLABLESTATEMENT_HXX_
-#define _DBA_COREAPI_CALLABLESTATEMENT_HXX_
-
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XOutParameters.hpp>
-#include <preparedstatement.hxx>
-
-namespace dbaccess
-{
- //************************************************************
- // OCallableStatement
- //************************************************************
- class OCallableStatement : public OPreparedStatement,
- public ::com::sun::star::sdbc::XRow,
- public ::com::sun::star::sdbc::XOutParameters
- {
- public:
- OCallableStatement(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > & _xConn,
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & _xStatement)
- :OPreparedStatement(_xConn, _xStatement){}
-
- // ::com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XOutParameters
- virtual void SAL_CALL registerOutParameter( sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL registerNumericOutParameter( sal_Int32 parameterIndex, sal_Int32 sqlType, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XRow
- virtual sal_Bool SAL_CALL wasNull( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getString( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL getBoolean( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int8 SAL_CALL getByte( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int16 SAL_CALL getShort( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getInt( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int64 SAL_CALL getLong( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual float SAL_CALL getFloat( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual double SAL_CALL getDouble( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getBytes( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Date SAL_CALL getDate( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::Time SAL_CALL getTime( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::util::DateTime SAL_CALL getTimestamp( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getBinaryStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream > SAL_CALL getCharacterStream( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getObject( sal_Int32 columnIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& typeMap ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef > SAL_CALL getRef( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob > SAL_CALL getBlob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob > SAL_CALL getClob( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray > SAL_CALL getArray( sal_Int32 columnIndex ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- };
-}
-#endif // _DBA_COREAPI_CALLABLESTATEMENT_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/column.hxx b/dbaccess/source/core/inc/column.hxx
deleted file mode 100644
index fa96f0a1d..000000000
--- a/dbaccess/source/core/inc/column.hxx
+++ /dev/null
@@ -1,259 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_COREAPI_COLUMN_HXX_
-#define _DBA_COREAPI_COLUMN_HXX_
-
-#include "columnsettings.hxx"
-
-#include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/container/XEnumerationAccess.hpp>
-#include <com/sun/star/container/XIndexAccess.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/container/XNamed.hpp>
-#include <com/sun/star/io/IOException.hpp>
-#include <com/sun/star/io/XObjectInputStream.hpp>
-#include <com/sun/star/io/XObjectOutputStream.hpp>
-#include <com/sun/star/lang/WrappedTargetException.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XUnoTunnel.hpp>
-#include <com/sun/star/sdbc/XResultSet.hpp>
-#include <com/sun/star/sdbcx/XAppend.hpp>
-#include <com/sun/star/sdbcx/XDrop.hpp>
-#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
-
-#include <comphelper/broadcasthelper.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include <comphelper/propertycontainer.hxx>
-#include <comphelper/stl_types.hxx>
-#include <connectivity/CommonTools.hxx>
-#include <connectivity/FValue.hxx>
-#include <connectivity/TColumnsHelper.hxx>
-#include <connectivity/sdbcx/IRefreshable.hxx>
-#include <cppuhelper/compbase2.hxx>
-#include <cppuhelper/compbase4.hxx>
-#include <cppuhelper/implbase1.hxx>
-#include <cppuhelper/propshlp.hxx>
-#include <osl/diagnose.h>
-
-#include <boost/unordered_map.hpp>
-
-namespace dbaccess
-{
-
- //************************************************************
- // OColumn
- //************************************************************
- typedef ::cppu::WeakComponentImplHelper2< ::com::sun::star::lang::XServiceInfo,
- ::com::sun::star::container::XNamed
- > OColumnBase;
-
- class OColumn :public comphelper::OBaseMutex
- ,public OColumnBase
- ,public ::comphelper::OPropertyContainer
- ,public IPropertyContainer // convenience for the derived class which also derive from OColumnSettings
- {
- friend class OColumns;
-
- protected:
- // <properties>
- ::rtl::OUString m_sName;
- // </properties>
-
- protected:
- OColumn( const bool _bNameIsReadOnly );
-
- public:
- virtual ~OColumn();
-
- // com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException) = 0;
-
- // com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
-
- // com::sun::star::beans::XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-
- // cppu::OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // XNamed
- virtual ::rtl::OUString SAL_CALL getName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setName( const ::rtl::OUString& _rName ) throw(::com::sun::star::uno::RuntimeException);
-
- virtual void fireValueChange( const ::connectivity::ORowSetValue& _rOldValue );
-
- protected:
- // IPropertyContainer
- virtual void registerProperty( const ::rtl::OUString& _rName, sal_Int32 _nHandle, sal_Int32 _nAttributes, void* _pPointerToMember, const ::com::sun::star::uno::Type& _rMemberType );
- virtual void registerMayBeVoidProperty( const ::rtl::OUString& _rName, sal_Int32 _nHandle, sal_Int32 _nAttributes, ::com::sun::star::uno::Any* _pPointerToMember, const ::com::sun::star::uno::Type& _rExpectedType );
- virtual void registerPropertyNoMember( const ::rtl::OUString& _rName, sal_Int32 _nHandle, sal_Int32 _nAttributes, const ::com::sun::star::uno::Type& _rType, const void* _pInitialValue );
- };
-
- //============================================================
- //= IColumnFactory - used by OColumns for creating new columns
- //============================================================
- class SAL_NO_VTABLE IColumnFactory
- {
- public:
- /** creates a OColumn object which should represent the column with a given name
- */
- virtual OColumn*
- createColumn( const ::rtl::OUString& _rName ) const = 0;
-
- /** creates a column descriptor object.
-
- A column descriptor object is used to append new columns to the collection. If such an append
- actually happened, columnAppended is called afterwards.
- */
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createColumnDescriptor() = 0;
-
- /** notifies that a column, created from a column descriptor, has been appended
- */
- virtual void columnAppended( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxSourceDescriptor ) = 0;
-
- /** notifies that a column with a given name has been dropped
- */
- virtual void columnDropped( const ::rtl::OUString& _sName ) = 0;
- };
-
- //============================================================
- //= OColumns
- //= general columns map, could be used for readonly access
- //= no appending and dropping is supported
- //============================================================
- typedef ::boost::unordered_map<rtl::OUString, OColumn*, ::comphelper::UStringMixHash, ::comphelper::UStringMixEqual> OColumnMap;
- typedef ::std::vector<OColumn*> OColumnArray;
-
- class OContainerMediator;
- typedef ::cppu::ImplHelper1< ::com::sun::star::container::XChild > TXChild;
- typedef connectivity::OColumnsHelper OColumns_BASE;
-
- class OColumns : public OColumns_BASE
- ,public TXChild
- {
- OContainerMediator* m_pMediator;
-
- protected:
- // comes from the driver can be null
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xDrvColumns;
- ::com::sun::star::uno::WeakReference< ::com::sun::star::uno::XInterface > m_xParent;
- IColumnFactory* m_pColFactoryImpl;
- ::connectivity::sdbcx::IRefreshableColumns* m_pRefreshColumns;
-
- sal_Bool m_bInitialized : 1;
- sal_Bool m_bAddColumn : 1;
- sal_Bool m_bDropColumn : 1;
-
- virtual void impl_refresh() throw(::com::sun::star::uno::RuntimeException);
- virtual connectivity::sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createDescriptor();
- virtual connectivity::sdbcx::ObjectType appendObject( const ::rtl::OUString& _rForName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& descriptor );
- virtual void dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName);
-
- public:
- connectivity::sdbcx::ObjectType createBaseObject(const ::rtl::OUString& _rName)
- {
- return OColumns_BASE::createObject(_rName);
- }
- /** flag which determines whether the container is filled or not
- */
- inline sal_Bool isInitialized() const { return m_bInitialized; }
- inline void setInitialized() {m_bInitialized = sal_True;}
- inline void setMediator(OContainerMediator* _pMediator) { m_pMediator = _pMediator; }
-
- public:
- /** constructs an empty container without configuration location.
- @param rParent the parent object. This instance will be used for refcounting, so the parent
- cannot die before the container does.
- @param _rMutex the mutex of the parent.
- @param _bCaseSensitive the initial case sensitivity flag
- @see setCaseSensitive
- */
- OColumns(
- ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- sal_Bool _bCaseSensitive,
- const ::std::vector< ::rtl::OUString>& _rVector,
- IColumnFactory* _pColFactory,
- ::connectivity::sdbcx::IRefreshableColumns* _pRefresh,
- sal_Bool _bAddColumn = sal_False,
- sal_Bool _bDropColumn = sal_False,
- sal_Bool _bUseHardRef = sal_True);
-
- OColumns(
- ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxDrvColumns,
- sal_Bool _bCaseSensitive,
- const ::std::vector< ::rtl::OUString> &_rVector,
- IColumnFactory* _pColFactory,
- ::connectivity::sdbcx::IRefreshableColumns* _pRefresh,
- sal_Bool _bAddColumn = sal_False,
- sal_Bool _bDropColumn = sal_False,
- sal_Bool _bUseHardRef = sal_True);
- virtual ~OColumns();
-
- //XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw() { OColumns_BASE::acquire(); }
- virtual void SAL_CALL release() throw() { OColumns_BASE::release(); }
- //XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::container::XChild
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
-
- void append(const ::rtl::OUString& rName, OColumn*);
- void clearColumns();
- // only the name is identical to ::cppu::OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- private:
- using OColumns_BASE::setParent;
- };
-}
-#endif // _DBA_COREAPI_COLUMN_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/columnsettings.hxx b/dbaccess/source/core/inc/columnsettings.hxx
deleted file mode 100644
index 0fb7d4362..000000000
--- a/dbaccess/source/core/inc/columnsettings.hxx
+++ /dev/null
@@ -1,108 +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.
- *
-************************************************************************/
-
-#ifndef COLUMNSETTINGS_HXX
-#define COLUMNSETTINGS_HXX
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/XPropertySet.hpp>
-/** === end UNO includes === **/
-
-namespace dbaccess
-{
-
- // TODO: move the following to comphelper/propertycontainerhelper.hxx
- class IPropertyContainer
- {
- public:
- virtual void registerProperty(
- const ::rtl::OUString& _rName,
- sal_Int32 _nHandle,
- sal_Int32 _nAttributes,
- void* _pPointerToMember,
- const ::com::sun::star::uno::Type& _rMemberType
- ) = 0;
-
- virtual void registerMayBeVoidProperty(
- const ::rtl::OUString& _rName,
- sal_Int32 _nHandle,
- sal_Int32 _nAttributes,
- ::com::sun::star::uno::Any* _pPointerToMember,
- const ::com::sun::star::uno::Type& _rExpectedType
- ) = 0;
-
- virtual void registerPropertyNoMember(
- const ::rtl::OUString& _rName,
- sal_Int32 _nHandle,
- sal_Int32 _nAttributes,
- const ::com::sun::star::uno::Type& _rType,
- const void* _pInitialValue
- ) = 0;
- };
-
- //====================================================================
- //= OColumnSettings
- //====================================================================
- class OColumnSettings
- {
- // <properties>
- ::com::sun::star::uno::Any m_aWidth; // sal_Int32 or void
- ::com::sun::star::uno::Any m_aFormatKey; // sal_Int32 or void
- ::com::sun::star::uno::Any m_aRelativePosition; // sal_Int32 or void
- ::com::sun::star::uno::Any m_aAlignment; // sal_Int32 (::com::sun::star::awt::TextAlign) or void
- ::com::sun::star::uno::Any m_aHelpText; // the description of the column which is visible in the helptext of the column
- ::com::sun::star::uno::Any m_aControlDefault; // the default value which should be displayed as by a control when moving to a new row
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
- m_xControlModel;
- sal_Bool m_bHidden;
- // </properties>
-
- protected:
- virtual ~OColumnSettings();
-
- public:
- OColumnSettings();
-
- protected:
- void registerProperties( IPropertyContainer& _rPropertyContainer );
-
- /** determines whether the property with the given handle is handled by the class
- */
- static bool isColumnSettingProperty( const sal_Int32 _nPropertyHandle );
- static bool isDefaulted( const sal_Int32 _nPropertyHandle, const ::com::sun::star::uno::Any& _rPropertyValue );
-
- public:
- /** check if the persistent settings have their default value
- */
- static bool hasDefaultSettings( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxColumn );
- };
-
-} // namespace dbaccess
-
-#endif // COLUMNSETTINGS_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/commandbase.hxx b/dbaccess/source/core/inc/commandbase.hxx
deleted file mode 100644
index cc82cdc59..000000000
--- a/dbaccess/source/core/inc/commandbase.hxx
+++ /dev/null
@@ -1,64 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_COMMANDBASE_HXX_
-#define _DBA_CORE_COMMANDBASE_HXX_
-
-#include <com/sun/star/uno/Sequence.hxx>
-#include <com/sun/star/beans/PropertyValue.hpp>
-
-namespace dbaccess
-{
-
-//==========================================================================
-//= OCommandBase - a base class (in fact just a container for some members)
-//= for classes implementing the sdb.CommandDefinition service
-//==========================================================================
-class OCommandBase
-{
-public: // need public access
-// <properties>
- ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>
- m_aLayoutInformation;
- ::rtl::OUString m_sCommand;
- sal_Bool m_bEscapeProcessing; // no BitField ! so it can be used with a OPropertyStateContainer
- ::rtl::OUString m_sUpdateTableName;
- ::rtl::OUString m_sUpdateSchemaName;
- ::rtl::OUString m_sUpdateCatalogName;
-// </properties>
-
-protected:
- OCommandBase() : m_bEscapeProcessing(sal_True) { }
-
-};
-
-} // namespace dbaccess
-
-#endif // _DBA_CORE_COMMANDBASE_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/composertools.hxx b/dbaccess/source/core/inc/composertools.hxx
deleted file mode 100644
index eaaba4cdd..000000000
--- a/dbaccess/source/core/inc/composertools.hxx
+++ /dev/null
@@ -1,138 +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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_SOURCE_CORE_INC_COMPOSERTOOLS_HXX
-#define DBACCESS_SOURCE_CORE_INC_COMPOSERTOOLS_HXX
-
-/** === begin UNO includes === **/
-/** === end UNO includes === **/
-
-#include <rtl/ustrbuf.hxx>
-
-#include <functional>
-
-namespace dbaccess
-{
-
- //====================================================================
- //= TokenComposer
- //====================================================================
- struct TokenComposer : public ::std::unary_function< ::rtl::OUString, void >
- {
- private:
- #ifdef DBG_UTIL
- bool m_bUsed;
- #endif
-
- protected:
- ::rtl::OUStringBuffer m_aBuffer;
-
- public:
- ::rtl::OUString getComposedAndClear()
- {
- #ifdef DBG_UTIL
- m_bUsed = true;
- #endif
- return m_aBuffer.makeStringAndClear();
- }
-
- void clear()
- {
- #ifdef DBG_UTIL
- m_bUsed = false;
- #endif
- m_aBuffer.makeStringAndClear();
- }
-
- public:
- TokenComposer()
- #ifdef DBG_UTIL
- :m_bUsed( false )
- #endif
- {
- }
-
- virtual ~TokenComposer()
- {
- }
-
- void operator() (const ::rtl::OUString& lhs)
- {
- append(lhs);
- }
-
- void append( const ::rtl::OUString& lhs )
- {
- #ifdef DBG_UTIL
- OSL_ENSURE( !m_bUsed, "FilterCreator::append: already used up!" );
- #endif
- if ( lhs.getLength() )
- {
- if ( m_aBuffer.getLength() )
- appendNonEmptyToNonEmpty( lhs );
- else
- m_aBuffer.append( lhs );
- }
- }
-
- /// append the given part. Only to be called when both the part and our buffer so far are not empty
- virtual void appendNonEmptyToNonEmpty( const ::rtl::OUString& lhs ) = 0;
- };
-
- //====================================================================
- //= FilterCreator
- //====================================================================
- struct FilterCreator : public TokenComposer
- {
- virtual void appendNonEmptyToNonEmpty( const ::rtl::OUString& lhs )
- {
- m_aBuffer.insert( 0, (sal_Unicode)' ' );
- m_aBuffer.insert( 0, (sal_Unicode)'(' );
- m_aBuffer.appendAscii( " ) AND ( " );
- m_aBuffer.append( lhs );
- m_aBuffer.appendAscii( " )" );
- }
- };
-
- //====================================================================
- //= FilterCreator
- //====================================================================
- struct OrderCreator : public TokenComposer
- {
- virtual void appendNonEmptyToNonEmpty( const ::rtl::OUString& lhs )
- {
- m_aBuffer.appendAscii( ", " );
- m_aBuffer.append( lhs );
- }
- };
-
-} // namespace dbaccess
-
-#endif // DBACCESS_SOURCE_CORE_INC_COMPOSERTOOLS_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/containerapprove.hxx b/dbaccess/source/core/inc/containerapprove.hxx
deleted file mode 100644
index abedd666e..000000000
--- a/dbaccess/source/core/inc/containerapprove.hxx
+++ /dev/null
@@ -1,76 +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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_CONTAINERAPPROVE_HXX
-#define DBACCESS_CONTAINERAPPROVE_HXX
-
-/** === begin UNO includes === **/
-#include <com/sun/star/uno/XInterface.hpp>
-/** === end UNO includes === **/
-
-#include <boost/shared_ptr.hpp>
-
-namespace dbaccess
-{
-
- //====================================================================
- //= IContainerApprove
- //====================================================================
- /** interface for approving elements to be inserted into a container
-
- On the long run, one could imagine that this interface completely encapsulates
- container/element approvals in all our various container classes herein (document
- containers, definition containers, table containers, query containers,
- command definition containers, bookmark containers). This would decrease coupling
- of the respective classes.
- */
- class SAL_NO_VTABLE IContainerApprove
- {
- public:
- /** approves a given element for insertion into the container
- @param _rName
- specifies the name under which the element is going to be inserted
- @param _rxElement
- specifies the element which is going to be inserted
- @throws Exception
- if the name or the object are invalid, or not eligible for insertion
- into the container
- */
- virtual void SAL_CALL approveElement(
- const ::rtl::OUString& _rName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxElement
- ) = 0;
- };
-
- typedef ::boost::shared_ptr< IContainerApprove > PContainerApprove;
-
-} // namespace dbaccess
-
-#endif // DBACCESS_CONTAINERAPPROVE_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/core_resource.hrc b/dbaccess/source/core/inc/core_resource.hrc
deleted file mode 100644
index 77745302a..000000000
--- a/dbaccess/source/core/inc/core_resource.hrc
+++ /dev/null
@@ -1,110 +0,0 @@
-/*************************************************************************
- *
- * 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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_RESOURCE_HRC_
-#define _DBA_CORE_RESOURCE_HRC_
-
-#ifndef _SOLAR_HRC
-#include <svl/solar.hrc>
-#endif
-
-#define RID_CORE_STRINGS_START RID_DBACCESS_START
-
-//- String-IDs
-#define RID_STR_TRIED_OPEN_TABLE ( RID_CORE_STRINGS_START + 0 )
-#define RID_STR_CONNECTION_INVALID ( RID_CORE_STRINGS_START + 1 )
-#define RID_STR_TABLE_IS_FILTERED ( RID_CORE_STRINGS_START + 2 )
-#define RID_STR_NEED_CONFIG_WRITE_ACCESS ( RID_CORE_STRINGS_START + 3 )
-#define RID_STR_COULDNOTCONNECT_NODRIVER ( RID_CORE_STRINGS_START + 4 )
-#define RID_STR_COULDNOTCONNECT_UNSPECIFIED ( RID_CORE_STRINGS_START + 5 )
-#define RID_STR_COULDNOTLOAD_MANAGER ( RID_CORE_STRINGS_START + 6 )
-#define RID_STR_ONLY_QUERY ( RID_CORE_STRINGS_START + 7 )
-#define RID_STR_NO_VALUE_CHANGED ( RID_CORE_STRINGS_START + 8 )
-#define RID_STR_NO_XROWUPDATE ( RID_CORE_STRINGS_START + 9 )
-#define RID_STR_NO_XRESULTSETUPDATE ( RID_CORE_STRINGS_START + 10 )
-#define RID_STR_NO_UPDATE_MISSING_CONDITION ( RID_CORE_STRINGS_START + 11 )
-#define RID_STR_NO_COLUMN_ADD ( RID_CORE_STRINGS_START + 12 )
-#define RID_STR_NO_COLUMN_DROP ( RID_CORE_STRINGS_START + 13 )
-#define RID_STR_NO_CONDITION_FOR_PK ( RID_CORE_STRINGS_START + 14 )
-#define RID_STR_NO_XQUERIESSUPPLIER ( RID_CORE_STRINGS_START + 15 )
-#define RID_STR_NO_ABS_ZERO ( RID_CORE_STRINGS_START + 16 )
-#define RID_STR_NO_RELATIVE ( RID_CORE_STRINGS_START + 17 )
-#define RID_STR_NO_REFESH_AFTERLAST ( RID_CORE_STRINGS_START + 18 )
-#define RID_STR_NO_MOVETOINSERTROW_CALLED ( RID_CORE_STRINGS_START + 19 )
-#define RID_STR_NO_UPDATEROW ( RID_CORE_STRINGS_START + 20 )
-#define RID_STR_NO_DELETEROW ( RID_CORE_STRINGS_START + 21 )
-#define RID_STR_COLUMN_MUST_VISIBLE ( RID_CORE_STRINGS_START + 22 )
-#define RID_STR_COLUMN_NOT_VALID ( RID_CORE_STRINGS_START + 23 )
-#define RID_STR_COLUMN_NOT_SEARCHABLE ( RID_CORE_STRINGS_START + 24 )
-#define RID_STR_NOT_SEQUENCE_INT8 ( RID_CORE_STRINGS_START + 25 )
-#define RID_STR_NOT_SUPPORTED_BY_DRIVER ( RID_CORE_STRINGS_START + 26 )
-#define RID_STR_NO_TABLE_RENAME ( RID_CORE_STRINGS_START + 27 )
-#define RID_STR_COLUMN_ALTER_BY_NAME ( RID_CORE_STRINGS_START + 28 )
-#define RID_STR_COLUMN_ALTER_BY_INDEX ( RID_CORE_STRINGS_START + 29 )
-#define RID_STR_NO_ALTER_COLUMN_DEF ( RID_CORE_STRINGS_START + 30 )
-#define RID_STR_COLUMN_UNKNOWN_PROP ( RID_CORE_STRINGS_START + 31 )
-#define RID_STR_FORM ( RID_CORE_STRINGS_START + 32 )
-#define RID_STR_REPORT ( RID_CORE_STRINGS_START + 33 )
-#define RID_STR_DATASOURCE_NOT_STORED ( RID_CORE_STRINGS_START + 34 )
-#define RID_STR_FILE_DOES_NOT_EXIST ( RID_CORE_STRINGS_START + 35 )
-#define RID_STR_TABLE_DOES_NOT_EXIST ( RID_CORE_STRINGS_START + 36 )
-#define RID_STR_CONFLICTING_NAMES ( RID_CORE_STRINGS_START + 37 )
-#define RID_STR_COMMAND_LEADING_TO_ERROR ( RID_CORE_STRINGS_START + 38 )
-#define RID_STR_STATEMENT_WITHOUT_RESULT_SET ( RID_CORE_STRINGS_START + 39 )
-#define RID_STR_NAME_MUST_NOT_BE_EMPTY ( RID_CORE_STRINGS_START + 40 )
-#define RID_STR_NO_NULL_OBJECTS_IN_CONTAINER ( RID_CORE_STRINGS_START + 41 )
-#define RID_STR_NAME_ALREADY_USED ( RID_CORE_STRINGS_START + 42 )
-#define RID_STR_OBJECT_CONTAINER_MISMATCH ( RID_CORE_STRINGS_START + 43 )
-#define RID_STR_OBJECT_ALREADY_CONTAINED ( RID_CORE_STRINGS_START + 44 )
-#define RID_STR_NAME_NOT_FOUND ( RID_CORE_STRINGS_START + 45 )
-#define RID_STR_QUERY_DOES_NOT_EXIST ( RID_CORE_STRINGS_START + 46 )
-#define RID_STR_ERROR_WHILE_SAVING ( RID_CORE_STRINGS_START + 47 )
-#define RID_STR_NO_SUB_FOLDER ( RID_CORE_STRINGS_START + 48 )
-
-#define RID_STR_NO_DELETE_BEFORE_AFTER ( RID_CORE_STRINGS_START + 49 )
-#define RID_STR_NO_DELETE_INSERT_ROW ( RID_CORE_STRINGS_START + 50 )
-#define RID_STR_RESULT_IS_READONLY ( RID_CORE_STRINGS_START + 51 )
-#define RID_STR_NO_DELETE_PRIVILEGE ( RID_CORE_STRINGS_START + 52 )
-#define RID_STR_ROW_ALREADY_DELETED ( RID_CORE_STRINGS_START + 53 )
-#define RID_STR_UPDATE_FAILED ( RID_CORE_STRINGS_START + 54 )
-
-#define RID_STR_INVALID_INDEX ( RID_CORE_STRINGS_START + 55 )
-#define RID_STR_NO_INSERT_PRIVILEGE ( RID_CORE_STRINGS_START + 56 )
-#define RID_STR_INTERNAL_ERROR ( RID_CORE_STRINGS_START + 57 )
-#define RID_STR_EXPRESSION1 ( RID_CORE_STRINGS_START + 58 )
-#define RID_STR_NO_SQL_COMMAND ( RID_CORE_STRINGS_START + 59 )
-#define RID_STR_INVALID_CURSOR_STATE ( RID_CORE_STRINGS_START + 60 )
-#define RID_STR_CURSOR_BEFORE_OR_AFTER ( RID_CORE_STRINGS_START + 61 )
-#define RID_STR_NO_BOOKMARK_BEFORE_OR_AFTER ( RID_CORE_STRINGS_START + 62 )
-#define RID_STR_NO_BOOKMARK_DELETED ( RID_CORE_STRINGS_START + 63 )
-#define RID_STR_NO_EMBEDDING ( RID_CORE_STRINGS_START + 64 )
-#define RID_STR_CONNECTION_REQUEST ( RID_CORE_STRINGS_START + 65 )
-#define RID_STR_MISSING_EXTENSION ( RID_CORE_STRINGS_START + 66 )
-
-#define RID_NO_SUCH_DATA_SOURCE ( RID_CORE_STRINGS_START + 67 )
-
-#endif // _DBA_CORE_RESOURCE_HRC_
diff --git a/dbaccess/source/core/inc/core_resource.hxx b/dbaccess/source/core/inc/core_resource.hxx
deleted file mode 100644
index 87d52e689..000000000
--- a/dbaccess/source/core/inc/core_resource.hxx
+++ /dev/null
@@ -1,127 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_RESOURCE_HXX_
-#define _DBA_CORE_RESOURCE_HXX_
-
-#include <rtl/ustring.hxx>
-#include <osl/mutex.hxx>
-#include <sal/macros.h>
-
-class ResMgr;
-
-namespace dbaccess
-{
-
-#define DBA_RES( id ) ResourceManager::loadString( id )
-#define DBA_RES_PARAM( id, ascii, replace ) ResourceManager::loadString( id, ascii, replace )
-
-#define DBACORE_RESSTRING( id ) DBA_RES( id )
- // (compatibility)
-
- //==================================================================
- //= ResourceManager
- //= handling ressources within the DBA-Core library
- //==================================================================
- class ResourceManager
- {
- friend class OModuleClient;
- static ::osl::Mutex s_aMutex; /// access safety
- static sal_Int32 s_nClients; /// number of registered clients
- static ResMgr* m_pImpl;
-
- private:
- // no instantiation allowed
- ResourceManager() { }
- ~ResourceManager() { }
-
- protected:
- static void ensureImplExists();
- /// register a client for the module
- static void registerClient();
- /// revoke a client for the module
- static void revokeClient();
-
- public:
- /** loads the string with the specified resource id
- */
- static ::rtl::OUString loadString(sal_uInt16 _nResId);
-
- /** loads a string from the resource file, substituting a placeholder with a given string
-
- @param _nResId
- the resource ID of the string to load
- @param _pPlaceholderAscii
- the ASCII representation of the placeholder string
- @param _rReplace
- the string which should substitute the placeholder
- */
- static ::rtl::OUString loadString(
- sal_uInt16 _nResId,
- const sal_Char* _pPlaceholderAscii,
- const ::rtl::OUString& _rReplace
- );
-
- /** loads a string from the resource file, substituting two placeholders with given strings
-
- @param _nResId
- the resource ID of the string to load
- @param _pPlaceholderAscii1
- the ASCII representation of the first placeholder string
- @param _rReplace1
- the string which should substitute the first placeholder
- @param _pPlaceholderAscii2
- the ASCII representation of the second placeholder string
- @param _rReplace2
- the string which should substitute the second placeholder
- */
- static ::rtl::OUString loadString(
- sal_uInt16 _nResId,
- const sal_Char* _pPlaceholderAscii1,
- const ::rtl::OUString& _rReplace1,
- const sal_Char* _pPlaceholderAscii2,
- const ::rtl::OUString& _rReplace2
- );
- };
-
- //=========================================================================
- //= OModuleClient
- //=========================================================================
- /** base class for objects which uses any global module-specific ressources
- */
- class OModuleClient
- {
- public:
- OModuleClient() { ResourceManager::registerClient(); }
- ~OModuleClient() { ResourceManager::revokeClient(); }
- };
-}
-
-#endif // _DBA_CORE_RESOURCE_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/datasettings.hxx b/dbaccess/source/core/inc/datasettings.hxx
deleted file mode 100644
index ed28b409a..000000000
--- a/dbaccess/source/core/inc/datasettings.hxx
+++ /dev/null
@@ -1,95 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_DATASETTINGS_HXX_
-#define _DBA_CORE_DATASETTINGS_HXX_
-
-#include <com/sun/star/uno/Sequence.hxx>
-#include <com/sun/star/beans/Property.hpp>
-#include <com/sun/star/awt/FontDescriptor.hpp>
-#include <com/sun/star/lang/IllegalArgumentException.hpp>
-#include <rtl/ustring.hxx>
-#include <comphelper/propertystatecontainer.hxx>
-
-namespace dbaccess
-{
-
-//==========================================================================
-//= ODataSettings_Base - a base class which implements the property member
-//= for an object implementing the sdb::DataSettings
-//= service
-//= the properties have to to be registered when used
-//==========================================================================
-class ODataSettings_Base
-{
-public:
-// <properties>
- ::rtl::OUString m_sFilter;
- ::rtl::OUString m_sHavingClause;
- ::rtl::OUString m_sGroupBy;
- ::rtl::OUString m_sOrder;
- sal_Bool m_bApplyFilter; // no BitField ! the base class needs a pointer to this member !
- ::com::sun::star::awt::FontDescriptor m_aFont;
- ::com::sun::star::uno::Any m_aRowHeight;
- ::com::sun::star::uno::Any m_aTextColor;
- ::com::sun::star::uno::Any m_aTextLineColor;
- sal_Int16 m_nFontEmphasis;
- sal_Int16 m_nFontRelief;
-// </properties>
-
-protected:
- ODataSettings_Base();
- ODataSettings_Base(const ODataSettings_Base& _rSource);
- ~ODataSettings_Base();
-};
-//==========================================================================
-//= ODataSettings - a base class which implements the property handling
-//= for an object implementing the sdb::DataSettings
-//= service
-//==========================================================================
-
-class ODataSettings : public ::comphelper::OPropertyStateContainer
- , public ODataSettings_Base
-{
- sal_Bool m_bQuery;
-protected:
- ODataSettings(::cppu::OBroadcastHelper& _rBHelper,sal_Bool _bQuery = sal_False);
- virtual void getPropertyDefaultByHandle( sal_Int32 _nHandle, ::com::sun::star::uno::Any& _rDefault ) const;
-
- /** register the properties from the param given. The parameter instance must be alive as long as tis object live.
- @param _pItem
- The database settings, can be <br>this</br>
- */
- void registerPropertiesFor(ODataSettings_Base* _pItem);
-};
-
-} // namespace dbaccess
-
-#endif // _DBA_CORE_DATASETTINGS_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/dbamiscres.hrc b/dbaccess/source/core/inc/dbamiscres.hrc
deleted file mode 100644
index dbb4713c0..000000000
--- a/dbaccess/source/core/inc/dbamiscres.hrc
+++ /dev/null
@@ -1,62 +0,0 @@
-/*************************************************************************
- *
- * 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.
- *
- ************************************************************************/
-
-#ifndef _DBA_MISCRES_HRC_
-#define _DBA_MISCRES_HRC_
-
-//========================================================================
-// string ids (relative to other resources, that's why not unique)
-#define STR_MYSQL_ODBC 1
-#define STR_MYSQL_JDBC 2
-#define STR_ADABAS 3
-#define STR_ORACLE_JDBC 4
-#define STR_JDBC 5
-#define STR_ODBC 6
-#define STR_DBASE 7
-#define STR_MSACCESS 8
-#define STR_MSACCESS2007 9
-#define STR_ADO 10
-#define STR_FLAT 11
-#define STR_CALC 12
-#define STR_MOZILLA 13
-#define STR_LDAP 14
-#define STR_OUTLOOK 15
-#define STR_OUTLOOKEXP 16
-#define STR_EVOLUTION 17
-#define STR_EVOLUTION_GROUPWISE 18
-#define STR_EVOLUTION_LDAP 19
-#define STR_KAB 20
-#define STR_MACAB 21
-#define STR_EMBEDDED_HSQLDB 22
-#define STR_THUNDERBIRD 23
-#define STR_MYSQL_NATIVE 24
-
-#define STR_END STR_MYSQL_NATIVE + 1
-
-
-#endif // _DBA_MISCRES_HRC_
-
diff --git a/dbaccess/source/core/inc/definitioncolumn.hxx b/dbaccess/source/core/inc/definitioncolumn.hxx
deleted file mode 100644
index 5ad7d716f..000000000
--- a/dbaccess/source/core/inc/definitioncolumn.hxx
+++ /dev/null
@@ -1,320 +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.
- *
- ************************************************************************/
-#ifndef _DBACORE_DEFINITIONCOLUMN_HXX_
-#define _DBACORE_DEFINITIONCOLUMN_HXX_
-
-#include "apitools.hxx"
-#include "column.hxx"
-#include "columnsettings.hxx"
-
-#include <com/sun/star/sdbc/DataType.hpp>
-#include <com/sun/star/sdbc/ColumnValue.hpp>
-#include <com/sun/star/container/XChild.hpp>
-
-#include <comphelper/IdPropArrayHelper.hxx>
-#include <comphelper/uno3.hxx>
-#include <cppuhelper/implbase1.hxx>
-
-
-namespace dbaccess
-{
-
- typedef ::cppu::ImplHelper1< ::com::sun::star::container::XChild > TXChild;
- // =========================================================================
- //= OTableColumnDescriptor
- // =========================================================================
- /**
- * provides the properties for description. A descriptor could be used to create a new table column.
- */
- class OTableColumnDescriptor : public OColumn
- ,public OColumnSettings
- ,public ::comphelper::OPropertyArrayUsageHelper < OTableColumnDescriptor >
- ,public TXChild
- {
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_xParent;
- const bool m_bActAsDescriptor;
-
- protected:
- // <properties>
- rtl::OUString m_aTypeName;
- rtl::OUString m_aDescription;
- rtl::OUString m_aDefaultValue;
- rtl::OUString m_aAutoIncrementValue;
- sal_Int32 m_nType;
- sal_Int32 m_nPrecision;
- sal_Int32 m_nScale;
- sal_Int32 m_nIsNullable;
- sal_Bool m_bAutoIncrement;
- sal_Bool m_bRowVersion;
- sal_Bool m_bCurrency;
- // </properties>
-
- public:
- OTableColumnDescriptor( const bool _bActAsDescriptor )
- :OColumn( !_bActAsDescriptor )
- ,m_bActAsDescriptor( _bActAsDescriptor )
- ,m_nType( ::com::sun::star::sdbc::DataType::SQLNULL )
- ,m_nPrecision( 0 )
- ,m_nScale( 0 )
- ,m_nIsNullable( ::com::sun::star::sdbc::ColumnValue::NULLABLE_UNKNOWN )
- ,m_bAutoIncrement( sal_False )
- ,m_bRowVersion( sal_False )
- ,m_bCurrency( sal_False )
- {
- impl_registerProperties();
- }
-
- DECLARE_XINTERFACE( )
-
- // com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::container::XChild
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > SAL_CALL getParent( ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setParent( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& Parent ) throw (::com::sun::star::lang::NoSupportException, ::com::sun::star::uno::RuntimeException);
-
- // ::comphelper::OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const;
-
- // ::cppu::OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast( sal_Int32 nHandle, const ::com::sun::star::uno::Any& rValue ) throw (::com::sun::star::uno::Exception);
-
- private:
- void impl_registerProperties();
- };
-
- // =========================================================================
- // = OTableColumn
- // =========================================================================
- class OTableColumn;
- typedef ::comphelper::OPropertyArrayUsageHelper < OTableColumn > OTableColumn_PBase;
- /** describes a column of a table
- */
- class OTableColumn :public OTableColumnDescriptor
- ,public OTableColumn_PBase
- {
- protected:
- virtual ~OTableColumn();
-
- public:
- OTableColumn(const ::rtl::OUString& _rName);
-
- // XTypeProvider
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
-
- // OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const;
- };
-
- // =========================================================================
- // = OQueryColumn
- // =========================================================================
- class OQueryColumn;
- typedef ::comphelper::OPropertyArrayUsageHelper< OQueryColumn > OQueryColumn_PBase;
- /** a column of a Query, with additional information obtained from parsing the query statement
- */
- class OQueryColumn :public OTableColumnDescriptor
- ,public OQueryColumn_PBase
- {
- // <properties>
- ::rtl::OUString m_sCatalogName;
- ::rtl::OUString m_sSchemaName;
- ::rtl::OUString m_sTableName;
- ::rtl::OUString m_sRealName;
- ::rtl::OUString m_sLabel;
- // </properties>
-
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xOriginalTableColumn;
-
- protected:
- ~OQueryColumn();
-
- public:
- OQueryColumn(
- const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _rxParserColumn,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection,
- const ::rtl::OUString i_sLabel
- );
-
- // XTypeProvider
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
-
- // *Property*
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper() const;
- virtual void SAL_CALL getFastPropertyValue( ::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const;
-
- private:
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
- impl_determineOriginalTableColumn(
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection
- );
-
- using ::cppu::OPropertySetHelper::getFastPropertyValue;
- };
-
- // =========================================================================
- // = OColumnWrapper
- // =========================================================================
- /**
- * describes all properties for a columns of a table. Only the view parts are provided
- * directly, all the other parts are derived from a driver implementation
- */
- class OColumnWrapper :public OColumn
- {
- protected:
- // definition which is provided by a driver!
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >
- m_xAggregate;
-
- sal_Int32 m_nColTypeID;
-
- protected:
- OColumnWrapper( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rCol, const bool _bNameIsReadOnly );
- virtual ~OColumnWrapper();
-
- public:
- virtual void SAL_CALL getFastPropertyValue(
- ::com::sun::star::uno::Any& rValue,
- sal_Int32 nHandle
- ) const;
- virtual sal_Bool SAL_CALL convertFastPropertyValue(
- ::com::sun::star::uno::Any & rConvertedValue,
- ::com::sun::star::uno::Any & rOldValue,
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue )
- throw (::com::sun::star::lang::IllegalArgumentException);
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue
- )
- throw (::com::sun::star::uno::Exception);
-
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
-
- protected:
- ::rtl::OUString impl_getPropertyNameFromHandle( const sal_Int32 _nHandle ) const;
-
- protected:
- using OColumn::getFastPropertyValue;
- };
-
- // =========================================================================
- // = OTableColumnDescriptorWrapper
- // =========================================================================
- /**
- * provides the properties for description. A descriptor could be used to create a new table column.
- */
- class OTableColumnDescriptorWrapper :public OColumnWrapper
- ,public OColumnSettings
- ,public ::comphelper::OIdPropertyArrayUsageHelper < OTableColumnDescriptorWrapper >
- {
- const bool m_bPureWrap;
- const bool m_bIsDescriptor;
-
- public:
- OTableColumnDescriptorWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& rCol,
- const bool _bPureWrap, const bool _bIsDescriptor );
-
- // com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // OIdPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper(sal_Int32 nId) const;
-
- // cppu::OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
- virtual void SAL_CALL getFastPropertyValue(
- ::com::sun::star::uno::Any& rValue,
- sal_Int32 nHandle
- ) const;
- virtual sal_Bool SAL_CALL convertFastPropertyValue(
- ::com::sun::star::uno::Any & rConvertedValue,
- ::com::sun::star::uno::Any & rOldValue,
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue )
- throw (::com::sun::star::lang::IllegalArgumentException);
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue
- )
- throw (::com::sun::star::uno::Exception);
-
- protected:
- using OColumnWrapper::getFastPropertyValue;
- };
-
- // =========================================================================
- // = OTableColumnWrapper
- // =========================================================================
- /**
- * describes all properties for a columns of a table. Only the view parts are provided
- * directly, all the other parts are derived from a driver implementation
- */
- class OTableColumnWrapper :public OTableColumnDescriptorWrapper
- ,public ::comphelper::OIdPropertyArrayUsageHelper < OTableColumnWrapper >
- {
- protected:
- ~OTableColumnWrapper();
-
- public:
- OTableColumnWrapper( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& rCol,
- const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& rColDefintion,
- const bool _bPureWrap );
-
- // ::com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // OIdPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper(sal_Int32 nId) const;
- };
-}
-#endif // _DBACORE_DEFINITIONCOLUMN_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/definitioncontainer.hxx b/dbaccess/source/core/inc/definitioncontainer.hxx
deleted file mode 100644
index 478d2eefb..000000000
--- a/dbaccess/source/core/inc/definitioncontainer.hxx
+++ /dev/null
@@ -1,336 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_DEFINITIONCONTAINER_HXX_
-#define _DBA_CORE_DEFINITIONCONTAINER_HXX_
-
-#include <cppuhelper/interfacecontainer.hxx>
-#include <cppuhelper/implbase7.hxx>
-#include <comphelper/stl_types.hxx>
-#include <osl/mutex.hxx>
-#include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/container/XContainer.hpp>
-#include <com/sun/star/container/XEnumerationAccess.hpp>
-#include <com/sun/star/container/XIndexAccess.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/beans/XPropertyChangeListener.hpp>
-#include <com/sun/star/beans/XVetoableChangeListener.hpp>
-#include <com/sun/star/container/XContainerApproveBroadcaster.hpp>
-#include "ContentHelper.hxx"
-#include "containerapprove.hxx"
-#include <comphelper/uno3.hxx>
-#include <rtl/ref.hxx>
-#include "apitools.hxx"
-
-namespace dbaccess
-{
-
-class ODefinitionContainer_Impl : public OContentHelper_Impl
-{
-public:
- typedef ::std::map< ::rtl::OUString, TContentPtr > NamedDefinitions;
- typedef NamedDefinitions::iterator iterator;
- typedef NamedDefinitions::const_iterator const_iterator;
-
-private:
- NamedDefinitions m_aDefinitions;
-
-public:
- inline size_t size() const { return m_aDefinitions.size(); }
-
- inline const_iterator begin() const { return m_aDefinitions.begin(); }
- inline const_iterator end() const { return m_aDefinitions.end(); }
-
- inline const_iterator find( const ::rtl::OUString& _rName ) const { return m_aDefinitions.find( _rName ); }
- const_iterator find( TContentPtr _pDefinition ) const;
-
- inline void erase( const ::rtl::OUString& _rName ) { m_aDefinitions.erase( _rName ); }
- void erase( TContentPtr _pDefinition );
-
- inline void insert( const ::rtl::OUString& _rName, TContentPtr _pDefinition )
- {
- m_aDefinitions.insert( NamedDefinitions::value_type( _rName, _pDefinition ) );
- }
-
-private:
- iterator find( TContentPtr _pDefinition );
- // (for the moment, this is private. Make it public if needed. If really needed.)
-};
-
-//==========================================================================
-//= ODefinitionContainer - base class of collections of database definition
-//= documents
-//==========================================================================
-typedef ::cppu::ImplHelper7 < ::com::sun::star::container::XIndexAccess
- , ::com::sun::star::container::XNameContainer
- , ::com::sun::star::container::XEnumerationAccess
- , ::com::sun::star::container::XContainer
- , ::com::sun::star::container::XContainerApproveBroadcaster
- , ::com::sun::star::beans::XPropertyChangeListener
- , ::com::sun::star::beans::XVetoableChangeListener
- > ODefinitionContainer_Base;
-
-class ODefinitionContainer
- :public OContentHelper
- ,public ODefinitionContainer_Base
-{
-protected:
- DECLARE_STL_USTRINGACCESS_MAP(::com::sun::star::uno::WeakReference< ::com::sun::star::ucb::XContent >, Documents);
- DECLARE_STL_VECTOR(Documents::iterator, DocumentsIndexAccess);
-
- enum ContainerOperation
- {
- E_REPLACED,
- E_REMOVED,
- E_INSERTED
- };
-
- enum ListenerType
- {
- ApproveListeners,
- ContainerListemers
- };
-
-private:
- PContainerApprove m_pElementApproval;
-
-protected:
- // we can't just hold a vector of XContentRefs, as after initialization they're all empty
- // cause we load them only on access
- DocumentsIndexAccess m_aDocuments; // for a efficient index access
- Documents m_aDocumentMap; // for a efficient name access
-
- ::cppu::OInterfaceContainerHelper
- m_aApproveListeners;
- ::cppu::OInterfaceContainerHelper
- m_aContainerListeners;
-
- sal_Bool m_bInPropertyChange;
- bool m_bCheckSlash;
-
-protected:
- /** Additionally to our own approvals which new elements must pass, derived classes
- can specifiy an additional approval instance here.
-
- Every time a new element is inserted into the container (or an element is replaced
- with a new one), this new element must pass our own internal approval, plus the approval
- given here.
- */
- void setElementApproval( PContainerApprove _pElementApproval ) { m_pElementApproval = _pElementApproval; }
- PContainerApprove getElementApproval() const { return m_pElementApproval; }
-
-protected:
- virtual ~ODefinitionContainer();
-
- inline const ODefinitionContainer_Impl& getDefinitions() const
- {
- return dynamic_cast< const ODefinitionContainer_Impl& >( *m_pImpl.get() );
- }
-
- inline ODefinitionContainer_Impl& getDefinitions()
- {
- return dynamic_cast< ODefinitionContainer_Impl& >( *m_pImpl.get() );
- }
-public:
- /** constructs the container.
- */
- ODefinitionContainer(
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xORB
- , const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _xParentContainer
- , const TContentPtr& _pImpl
- , bool _bCheckSlash = true
- );
-
-// ::com::sun::star::uno::XInterface
- DECLARE_XINTERFACE( )
-// com::sun::star::lang::XTypeProvider
- DECLARE_TYPEPROVIDER( );
-
-// ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XElementAccess
- virtual ::com::sun::star::uno::Type SAL_CALL getElementType( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasElements( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XEnumerationAccess
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XEnumeration > SAL_CALL createEnumeration( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XIndexAccess
- virtual sal_Int32 SAL_CALL getCount( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getByIndex( sal_Int32 _nIndex ) throw(::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XNameContainer
- virtual void SAL_CALL insertByName( const ::rtl::OUString& _rName, const ::com::sun::star::uno::Any& aElement ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::ElementExistException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeByName( const ::rtl::OUString& _rName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XNameReplace
- virtual void SAL_CALL replaceByName( const ::rtl::OUString& _rName, const ::com::sun::star::uno::Any& aElement ) throw(::com::sun::star::lang::IllegalArgumentException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XNameAccess
- virtual ::com::sun::star::uno::Any SAL_CALL getByName( const ::rtl::OUString& aName ) throw(::com::sun::star::container::NoSuchElementException, ::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL hasByName( const ::rtl::OUString& aName ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::container::XContainer
- virtual void SAL_CALL addContainerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeContainerListener( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerListener >& xListener ) throw(::com::sun::star::uno::RuntimeException);
-
- // XContainerApproveBroadcaster
- virtual void SAL_CALL addContainerApproveListener( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerApproveListener >& Listener ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL removeContainerApproveListener( const ::com::sun::star::uno::Reference< ::com::sun::star::container::XContainerApproveListener >& Listener ) throw (::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::lang::XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
-
- // XPropertyChangeListener
- virtual void SAL_CALL propertyChange( const ::com::sun::star::beans::PropertyChangeEvent& evt ) throw (::com::sun::star::uno::RuntimeException);
- // XVetoableChangeListener
- virtual void SAL_CALL vetoableChange( const ::com::sun::star::beans::PropertyChangeEvent& aEvent ) throw (::com::sun::star::beans::PropertyVetoException, ::com::sun::star::uno::RuntimeException);
-
-protected:
- // helper
- virtual void SAL_CALL disposing();
-
- /** create a object from it's persistent data within the configuration. To be overwritten by derived classes.
- @param _rName the name the object has within the container
- @return the newly created object or an empty reference if somthing went wrong
- */
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent > createObject(
- const ::rtl::OUString& _rName) = 0;
-
- /** get the object specified by the given name. If desired, the object will be read if not already done so.<BR>
- @param _rName the object name
- @param _bReadIfNeccessary if sal_True, the object will be created if necessary
- @return the property set interface of the object. Usually the return value is not NULL, but
- if so, then the object could not be read from the configuration
- @throws NoSuchElementException if there is no object with the given name.
- @see createObject
- */
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent >
- implGetByName(const ::rtl::OUString& _rName, sal_Bool _bCreateIfNecessary) throw (::com::sun::star::container::NoSuchElementException);
-
- /** quickly checks if there already is an element with a given name. No access to the configuration occures, i.e.
- if there is such an object which is not already loaded, it won't be loaded now.
- @param _rName the object name to check
- @return sal_True if there already exists such an object
- */
- virtual sal_Bool checkExistence(const ::rtl::OUString& _rName);
-
- /** append a new object to the container. No plausibility checks are done, e.g. if the object is non-NULL or
- if the name is already used by another object or anything like this. This method is for derived classes
- which may support different methods to create and/or append objects, and don't want to deal with the
- internal structures of this class.<BR>
- The old component will not be disposed, this is the callers responsibility, too.
- @param _rName the name of the new object
- @param _rxNewObject the new object (not surprising, is it ?)
- @see createConfigKey
- @see implReplace
- @see implRemove
- */
- void implAppend(
- const ::rtl::OUString& _rName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent >& _rxNewObject
- );
-
- /** remove all references to an object from the container. No plausibility checks are done, e.g. whether
- or not there exists an object with the given name. This is the responsibility of the caller.<BR>
- Additionally the node for the given object will be removed from the registry (including all sub nodes).<BR>
- The old component will not be disposed, this is the callers responsibility, too.
- @param _rName the objects name
- @see implReplace
- @see implAppend
- */
- void implRemove(const ::rtl::OUString& _rName);
-
- /** remove a object in the container. No plausibility checks are done, e.g. whether
- or not there exists an object with the given name or the object is non-NULL. This is the responsibility of the caller.<BR>
- Additionally all object-related informations within the registry will be deleted. The new object config node,
- where the caller may want to store the new objects information, is returned.<BR>
- The old component will not be disposed, this is the callers responsibility, too.
- @param _rName the objects name
- @param _rxNewObject the new object
- @param _rNewObjectNode the configuration node where the new object may be stored
- @see implAppend
- @see implRemove
- */
- void implReplace(
- const ::rtl::OUString& _rName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent >& _rxNewObject
- );
-
- /** notifies our container/approve listeners
- */
- void notifyByName(
- ::osl::ResettableMutexGuard& _rGuard,
- const ::rtl::OUString& _rName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent >& _xNewElement,
- const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent >& xOldElement,
- ContainerOperation _eOperation,
- ListenerType _eType
- );
-
- inline SAL_CALL operator ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > () const
- {
- return const_cast< XContainer* >( static_cast< const XContainer* >( this ) );
- }
-
-private:
- void addObjectListener(const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent >& _xNewObject);
- void removeObjectListener(const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent >& _xNewObject);
-
- /** approve that the object given may be inserted into the container. Should be overloaded by derived classes,
- the default implementation just checks the object to be non-void.
-
- @throws IllegalArgumentException
- if the name or the object are invalid
- @throws ElementExistException
- if the object already exists in the container, or another object with the same name
- already exists
- @throws WrappedTargetException
- if another error occures which prevents insertion of the object into the container
- */
- void approveNewObject(
- const ::rtl::OUString& _sName,
- const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent >& _rxObject
- ) const;
-
- inline bool impl_haveAnyListeners_nothrow() const
- {
- return ( m_aContainerListeners.getLength() > 0 ) || ( m_aApproveListeners.getLength() > 0 );
- }
-};
-
-} // namespace dbaccess
-
-#endif // _DBA_CORE_DEFINITIONCONTAINER_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/module_dba.hxx b/dbaccess/source/core/inc/module_dba.hxx
deleted file mode 100644
index 8553348db..000000000
--- a/dbaccess/source/core/inc/module_dba.hxx
+++ /dev/null
@@ -1,43 +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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_MODULE_DBA_HXX
-#define DBACCESS_MODULE_DBA_HXX
-
-#include <unotools/componentresmodule.hxx>
-
-namespace dba
-{
-
- DEFINE_MODULE( DbaModule, DbaClient, DbaRes )
-
-} // namespace sdbtools
-
-#endif // DBACCESS_MODULE_DBA_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/object.hxx b/dbaccess/source/core/inc/object.hxx
deleted file mode 100644
index 7b32511f2..000000000
--- a/dbaccess/source/core/inc/object.hxx
+++ /dev/null
@@ -1,42 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_OBJECT_HXX_
-#define _DBA_OBJECT_HXX_
-
-enum ObjectType
-{
- dbaTable,
- dbaQuery,
- dbaForm,
- dbaReport
-};
-
-#endif // _DBA_OBJECT_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/objectnameapproval.hxx b/dbaccess/source/core/inc/objectnameapproval.hxx
deleted file mode 100644
index d641e6f1c..000000000
--- a/dbaccess/source/core/inc/objectnameapproval.hxx
+++ /dev/null
@@ -1,90 +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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_OBJECTNAMEAPPROVAL_HXX
-#define DBACCESS_OBJECTNAMEAPPROVAL_HXX
-
-#include "containerapprove.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/sdbc/XConnection.hpp>
-/** === end UNO includes === **/
-
-namespace dbaccess
-{
-
- //====================================================================
- //= ObjectNameApproval
- //====================================================================
- struct ObjectNameApproval_Impl;
- /** implementation of the IContainerApprove interface which approves
- elements for insertion into a query or tables container.
-
- The only check done by this instance is whether the query name is
- not already used, taking into account that in some databases, queries
- and tables share the same namespace.
-
- The class is not thread-safe.
- */
- class ObjectNameApproval : public IContainerApprove
- {
- ::std::auto_ptr< ObjectNameApproval_Impl > m_pImpl;
-
- public:
- enum ObjectType
- {
- TypeQuery,
- TypeTable
- };
-
- public:
- /** constructs the instance
-
- @param _rxConnection
- the connection relative to which the names should be checked. This connection
- will be held weak. In case it is closed, subsequent calls to this instance's
- methods throw a DisposedException.
- @param _eType
- specifies which type of objects is to be approved with this instance
- */
- ObjectNameApproval(
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection,
- ObjectType _eType
- );
- virtual ~ObjectNameApproval();
-
- // IContainerApprove
- virtual void SAL_CALL approveElement( const ::rtl::OUString& _rName, const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxElement );
-
- };
-
-} // namespace dbaccess
-
-#endif // DBACCESS_OBJECTNAMEAPPROVAL_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/preparedstatement.hxx b/dbaccess/source/core/inc/preparedstatement.hxx
deleted file mode 100644
index bdeb3391b..000000000
--- a/dbaccess/source/core/inc/preparedstatement.hxx
+++ /dev/null
@@ -1,118 +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.
- *
- ************************************************************************/
-#ifndef _DBA_COREAPI_PREPAREDSTATEMENT_HXX_
-#define _DBA_COREAPI_PREPAREDSTATEMENT_HXX_
-
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/sdbc/XPreparedStatement.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdbc/XParameters.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/sdbc/XParameters.hpp>
-#include <statement.hxx>
-#include <column.hxx>
-
-namespace dbaccess
-{
- //************************************************************
- // OPreparedStatement
- //************************************************************
- class OPreparedStatement : public OStatementBase,
- public ::com::sun::star::sdbc::XPreparedStatement,
- public ::com::sun::star::sdbc::XParameters,
- public ::com::sun::star::sdbc::XResultSetMetaDataSupplier,
- public ::com::sun::star::sdbcx::XColumnsSupplier,
- public ::com::sun::star::lang::XServiceInfo
- {
- protected:
- OColumns* m_pColumns;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XParameters > m_xAggregateAsParameters;
-
- public:
- OPreparedStatement(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > & _xConn,
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & _xStatement);
- virtual ~OPreparedStatement();
-
- // ::com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
-
- // ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- // OComponentHelper
- virtual void SAL_CALL disposing(void);
-
- // ::com::sun::star::sdbc::XPreparedStatement
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL executeUpdate( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL execute( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XColumnsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getColumns( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XResultSetMetaDataSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > SAL_CALL getMetaData( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbc::XParameters
- virtual void SAL_CALL setNull( sal_Int32 parameterIndex, sal_Int32 sqlType ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setObjectNull( sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBoolean( sal_Int32 parameterIndex, sal_Bool x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setByte( sal_Int32 parameterIndex, sal_Int8 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setShort( sal_Int32 parameterIndex, sal_Int16 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setInt( sal_Int32 parameterIndex, sal_Int32 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setLong( sal_Int32 parameterIndex, sal_Int64 x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setFloat( sal_Int32 parameterIndex, float x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setDouble( sal_Int32 parameterIndex, double x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setString( sal_Int32 parameterIndex, const ::rtl::OUString& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBytes( sal_Int32 parameterIndex, const ::com::sun::star::uno::Sequence< sal_Int8 >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setDate( sal_Int32 parameterIndex, const ::com::sun::star::util::Date& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setTime( sal_Int32 parameterIndex, const ::com::sun::star::util::Time& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setTimestamp( sal_Int32 parameterIndex, const ::com::sun::star::util::DateTime& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBinaryStream( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setCharacterStream( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >& x, sal_Int32 length ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setObject( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setObjectWithInfo( sal_Int32 parameterIndex, const ::com::sun::star::uno::Any& x, sal_Int32 targetSqlType, sal_Int32 scale ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setRef( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRef >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setBlob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XBlob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setClob( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XClob >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setArray( sal_Int32 parameterIndex, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XArray >& x ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearParameters( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- };
-}
-#endif // _DBA_COREAPI_PREPAREDSTATEMENT_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/querycomposer.hxx b/dbaccess/source/core/inc/querycomposer.hxx
deleted file mode 100644
index 02b574f7b..000000000
--- a/dbaccess/source/core/inc/querycomposer.hxx
+++ /dev/null
@@ -1,116 +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.
- *
- ************************************************************************/
-#ifndef DBACCESS_CORE_API_QUERYCOMPOSER_HXX
-#define DBACCESS_CORE_API_QUERYCOMPOSER_HXX
-
-#include <connectivity/CommonTools.hxx>
-#include <com/sun/star/sdb/XSQLQueryComposer.hpp>
-#include <com/sun/star/sdb/XParametersSupplier.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/script/XTypeConverter.hpp>
-#include <cppuhelper/implbase5.hxx>
-#include <connectivity/sqliterator.hxx>
-#include <connectivity/sqlparse.hxx>
-#include "apitools.hxx"
-#include <comphelper/broadcasthelper.hxx>
-#include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
-
-
-
-namespace com { namespace sun { namespace star { namespace util {
- class XNumberFormatsSupplier;
- class XNumberFormatter;
-}}}}
-
-namespace dbaccess
-{
- typedef ::cppu::ImplHelper5< ::com::sun::star::sdb::XSQLQueryComposer,
- ::com::sun::star::sdb::XParametersSupplier,
- ::com::sun::star::sdbcx::XTablesSupplier,
- ::com::sun::star::sdbcx::XColumnsSupplier,
- ::com::sun::star::lang::XServiceInfo > OQueryComposer_BASE;
-
- class OPrivateColumns;
- class OPrivateTables;
-
- class OQueryComposer : public ::comphelper::OBaseMutex,
- public OSubComponent,
- public OQueryComposer_BASE
- {
- ::std::vector< ::rtl::OUString> m_aFilters;
- ::std::vector< ::rtl::OUString> m_aOrders;
- ::rtl::OUString m_sOrgFilter;
- ::rtl::OUString m_sOrgOrder;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryComposer> m_xComposer;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryComposer> m_xComposerHelper;
-
- protected:
- virtual void SAL_CALL disposing();
- virtual ~OQueryComposer();
- public:
-
- OQueryComposer( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection );
-
- // ::com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
- // com::sun::star::lang::XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType )
- throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
- // XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
- // XSQLQueryComposer
- virtual ::rtl::OUString SAL_CALL getQuery( ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setQuery( const ::rtl::OUString& command ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getComposedQuery( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getFilter( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > > SAL_CALL getStructuredFilter( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::rtl::OUString SAL_CALL getOrder( ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL appendFilterByColumn( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& column ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL appendOrderByColumn( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& column, sal_Bool ascending ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setFilter( const ::rtl::OUString& filter ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL setOrder( const ::rtl::OUString& order ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- // XTablesSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getTables( ) throw(::com::sun::star::uno::RuntimeException);
- // XColumnsSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > SAL_CALL getColumns( ) throw(::com::sun::star::uno::RuntimeException);
- // XParametersSupplier
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > SAL_CALL getParameters( ) throw(::com::sun::star::uno::RuntimeException);
- };
-}
-#endif // DBACCESS_CORE_API_QUERYCOMPOSER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/querycontainer.hxx b/dbaccess/source/core/inc/querycontainer.hxx
deleted file mode 100644
index fce10a545..000000000
--- a/dbaccess/source/core/inc/querycontainer.hxx
+++ /dev/null
@@ -1,186 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_QUERYCONTAINER_HXX_
-#define _DBA_CORE_QUERYCONTAINER_HXX_
-
-#include <cppuhelper/implbase5.hxx>
-#include <comphelper/stl_types.hxx>
-#include <cppuhelper/interfacecontainer.hxx>
-
-/** === begin UNO includes == **/
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/container/XEnumerationAccess.hpp>
-#include <com/sun/star/container/XContainerListener.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/container/XIndexAccess.hpp>
-#include <com/sun/star/container/XContainer.hpp>
-#include <com/sun/star/util/XRefreshable.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/uno/Sequence.hxx>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
-#include <com/sun/star/sdbcx/XAppend.hpp>
-#include <com/sun/star/sdbcx/XDrop.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/beans/XPropertyChangeListener.hpp>
-#include <com/sun/star/container/XContainerApproveListener.hpp>
-/** === end UNO includes === **/
-
-#include "definitioncontainer.hxx"
-#include "apitools.hxx"
-
-namespace dbtools
-{
- class IWarningsContainer;
-}
-
-namespace dbaccess
-{
-
- typedef ::cppu::ImplHelper5 < ::com::sun::star::container::XContainerListener
- , ::com::sun::star::container::XContainerApproveListener
- , ::com::sun::star::sdbcx::XDataDescriptorFactory
- , ::com::sun::star::sdbcx::XAppend
- , ::com::sun::star::sdbcx::XDrop
- > OQueryContainer_Base;
-
- //==========================================================================
- //= OQueryContainer
- //==========================================================================
- class OQueryContainer;
- class OContainerListener;
- class OQuery;
- class OQueryContainer : public ODefinitionContainer
- , public OQueryContainer_Base
- {
- protected:
- ::dbtools::IWarningsContainer* m_pWarnings;
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >
- m_xCommandDefinitions;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >
- m_xConnection;
- // possible actions on our "aggregate"
- enum AGGREGATE_ACTION { NONE, INSERTING, FLUSHING };
- AGGREGATE_ACTION m_eDoingCurrently;
-
- OContainerListener* m_pCommandsListener;
-
- /** a class which automatically resets m_eDoingCurrently in it's destructor
- */
- class OAutoActionReset; // just for the following friend declaration
- friend class OAutoActionReset;
- class OAutoActionReset
- {
- OQueryContainer* m_pActor;
- public:
- OAutoActionReset(OQueryContainer* _pActor) : m_pActor(_pActor) { }
- ~OAutoActionReset() { m_pActor->m_eDoingCurrently = NONE; }
- };
-
- // ODefinitionContainer
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent > createObject( const ::rtl::OUString& _rName);
- virtual sal_Bool checkExistence(const ::rtl::OUString& _rName);
-
- // helper
- virtual void SAL_CALL disposing();
- virtual ~OQueryContainer();
- public:
- /** ctor of the container. The parent has to support the <type scope="com::sun::star::sdbc">XConnection</type>
- interface.<BR>
-
- @param _pWarnings
- specifies a warnings container (May be <NULL/>)
-
- Any errors which occur during the lifetime of the query container,
- which cannot be reported as exceptionts (for instance in methods where throwing an SQLException is
- not allowed) will be appended to this container.</p>
- <p>The caller is responsible for ensuring the lifetime of the object pointed to by this parameter.
- */
- OQueryContainer(
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _rxCommandDefinitions,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn,
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB,
- ::dbtools::IWarningsContainer* _pWarnings
- );
-
- DECLARE_XINTERFACE( )
- DECLARE_XTYPEPROVIDER( )
- DECLARE_SERVICE_INFO();
-
- // ::com::sun::star::container::XContainerListener
- virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementRemoved( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementReplaced( const ::com::sun::star::container::ContainerEvent& Event ) throw(::com::sun::star::uno::RuntimeException);
-
- // XContainerApproveListener
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XVeto > SAL_CALL approveInsertElement( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XVeto > SAL_CALL approveReplaceElement( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::util::XVeto > SAL_CALL approveRemoveElement( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::lang::WrappedTargetException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::lang::XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XDataDescriptorFactory
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > SAL_CALL createDataDescriptor( ) throw(::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XAppend
- virtual void SAL_CALL appendByDescriptor( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& descriptor ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XDrop
- virtual void SAL_CALL dropByName( const ::rtl::OUString& elementName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL dropByIndex( sal_Int32 index ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::container::XElementAccess
- virtual sal_Bool SAL_CALL hasElements( ) throw(::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::container::XIndexAccess
- virtual sal_Int32 SAL_CALL getCount( ) throw(::com::sun::star::uno::RuntimeException);
- // ::com::sun::star::container::XNameAccess
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getElementNames( ) throw(::com::sun::star::uno::RuntimeException);
-
- protected:
- // OContentHelper overridables
- virtual ::rtl::OUString determineContentType() const;
-
- private:
- // helper
- /** create a query object wrapping a CommandDefinition given by name. To retrieve the object, the CommandDescription
- container will be asked for the given name.<BR>
- The returned object is acquired once.
- */
- ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent > implCreateWrapper(const ::rtl::OUString& _rName);
- /// create a query object wrapping a CommandDefinition. The returned object is acquired once.
- ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent > implCreateWrapper(const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XContent >& _rxCommandDesc);
-
- };
-} // namespace dbaccess
-
-#endif // _DBA_CORE_QUERYCONTAINER_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/recovery/dbdocrecovery.hxx b/dbaccess/source/core/inc/recovery/dbdocrecovery.hxx
deleted file mode 100644
index 5808a1344..000000000
--- a/dbaccess/source/core/inc/recovery/dbdocrecovery.hxx
+++ /dev/null
@@ -1,91 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#ifndef DBACCESS_DBDOCRECOVERY_HXX
-#define DBACCESS_DBDOCRECOVERY_HXX
-
-#include "dbaccessdllapi.h"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/embed/XStorage.hpp>
-#include <com/sun/star/frame/XController.hpp>
-/** === end UNO includes === **/
-
-#include <vector>
-#include <memory>
-
-namespace comphelper
-{
- class ComponentContext;
-}
-
-namespace dbaccess
-{
-
- //====================================================================
- //= DatabaseDocumentRecovery
- //====================================================================
- struct DatabaseDocumentRecovery_Data;
- class DBACCESS_DLLPRIVATE DatabaseDocumentRecovery
- {
- public:
- DatabaseDocumentRecovery(
- const ::comphelper::ComponentContext& i_rContext
- );
- ~DatabaseDocumentRecovery();
-
- /** saves the modified sub components of the given controller(s) to the "recovery" sub storage of the document
- storage.
-
- @throws ::com::sun::star::uno::Exception
- in case of an error.
- */
- void saveModifiedSubComponents(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rTargetStorage,
- const ::std::vector< ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController > >& i_rControllers
- );
-
- /** recovery sub components from the given document storage, if applicable
-
- If the given document storage does not contain a recovery folder, the method silently returns.
-
- @throws ::com::sun::star::uno::Exception
- in case of an error.
- */
- void recoverSubDocuments(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rDocumentStorage,
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& i_rTargetController
- );
-
- private:
- const ::std::auto_ptr< DatabaseDocumentRecovery_Data > m_pData;
- };
-
-} // namespace dbaccess
-
-#endif // DBACCESS_DBDOCRECOVERY_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/sdbcoretools.hxx b/dbaccess/source/core/inc/sdbcoretools.hxx
deleted file mode 100644
index ad484201b..000000000
--- a/dbaccess/source/core/inc/sdbcoretools.hxx
+++ /dev/null
@@ -1,82 +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.
- *
- ************************************************************************/
-
-#ifndef DBACORE_SDBCORETOOLS_HXX
-#define DBACORE_SDBCORETOOLS_HXX
-
-/** === begin UNO includes === **/
-#include <com/sun/star/util/XNumberFormatsSupplier.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/embed/XStorage.hpp>
-#include <com/sun/star/io/IOException.hpp>
-#include <com/sun/star/lang/WrappedTargetException.hpp>
-#include <com/sun/star/uno/RuntimeException.hpp>
-/** === end UNO includes === **/
-
-namespace comphelper
-{
- class ComponentContext;
-}
-
-namespace dbaccess
-{
-
- void notifyDataSourceModified(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxObject,sal_Bool _bModified);
-
- ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >
- getDataSource( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxDependentObject );
-
- /** retrieves a to-be-displayed string for a given caught exception;
- */
- ::rtl::OUString extractExceptionMessage( const ::comphelper::ComponentContext& _rContext, const ::com::sun::star::uno::Any& _rError );
-
- namespace tools
- {
- namespace stor
- {
- bool storageIsWritable_nothrow(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage
- );
-
- /// commits a given storage if it's not readonly
- bool commitStorageIfWriteable(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& _rxStorage
- )
- SAL_THROW((
- ::com::sun::star::io::IOException,
- ::com::sun::star::lang::WrappedTargetException
- ));
- }
-
- }
-
-} // namespace dbaccess
-
-#endif // DBACORE_SDBCORETOOLS_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/statement.hxx b/dbaccess/source/core/inc/statement.hxx
deleted file mode 100644
index b0a0f4583..000000000
--- a/dbaccess/source/core/inc/statement.hxx
+++ /dev/null
@@ -1,194 +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.
- *
- ************************************************************************/
-#ifndef _DBA_COREAPI_STATEMENT_HXX_
-#define _DBA_COREAPI_STATEMENT_HXX_
-
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/sdbc/XStatement.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/util/XCancellable.hpp>
-#include <com/sun/star/sdbc/XWarningsSupplier.hpp>
-#include <com/sun/star/sdbc/XCloseable.hpp>
-#include <com/sun/star/sdbc/XMultipleResults.hpp>
-#include <com/sun/star/sdbc/XPreparedBatchExecution.hpp>
-#include <com/sun/star/sdbc/XBatchExecution.hpp>
-#include <com/sun/star/sdbc/XGeneratedResultSet.hpp>
-#include <com/sun/star/sdb/XSingleSelectQueryComposer.hpp>
-#include <cppuhelper/propshlp.hxx>
-#include <comphelper/proparrhlp.hxx>
-#include "apitools.hxx"
-#include <comphelper/broadcasthelper.hxx>
-
-#include <cppuhelper/implbase3.hxx>
-
-//************************************************************
-// OStatementBase
-//************************************************************
-class OStatementBase : public comphelper::OBaseMutex,
- public OSubComponent,
- public ::cppu::OPropertySetHelper,
- public ::comphelper::OPropertyArrayUsageHelper < OStatementBase >,
- public ::com::sun::star::util::XCancellable,
- public ::com::sun::star::sdbc::XWarningsSupplier,
- public ::com::sun::star::sdbc::XPreparedBatchExecution,
- public ::com::sun::star::sdbc::XMultipleResults,
- public ::com::sun::star::sdbc::XCloseable,
- public ::com::sun::star::sdbc::XGeneratedResultSet
-{
-protected:
- ::osl::Mutex m_aCancelMutex;
-
- ::com::sun::star::uno::WeakReferenceHelper m_aResultSet;
- ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xAggregateAsSet;
- ::com::sun::star::uno::Reference< ::com::sun::star::util::XCancellable > m_xAggregateAsCancellable;
- sal_Bool m_bUseBookmarks;
- sal_Bool m_bEscapeProcessing;
-
- virtual ~OStatementBase();
-
-public:
- OStatementBase(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > & _xConn,
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & _xStatement);
-
-
-// ::com::sun::star::lang::XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes() throw (::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::uno::XInterface
- virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL acquire() throw();
- virtual void SAL_CALL release() throw();
-
-// OComponentHelper
- virtual void SAL_CALL disposing(void);
-
-// com::sun::star::beans::XPropertySet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > SAL_CALL getPropertySetInfo( ) throw(::com::sun::star::uno::RuntimeException);
-
-// comphelper::OPropertyArrayUsageHelper
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( ) const;
-
-// cppu::OPropertySetHelper
- virtual ::cppu::IPropertyArrayHelper& SAL_CALL getInfoHelper();
-
- virtual sal_Bool SAL_CALL convertFastPropertyValue(
- ::com::sun::star::uno::Any & rConvertedValue,
- ::com::sun::star::uno::Any & rOldValue,
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue )
- throw (::com::sun::star::lang::IllegalArgumentException);
- virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
- sal_Int32 nHandle,
- const ::com::sun::star::uno::Any& rValue
- )
- throw (::com::sun::star::uno::Exception);
- virtual void SAL_CALL getFastPropertyValue( ::com::sun::star::uno::Any& rValue, sal_Int32 nHandle ) const;
-
-// ::com::sun::star::sdbc::XWarningsSupplier
- virtual ::com::sun::star::uno::Any SAL_CALL getWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearWarnings( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::util::XCancellable
- virtual void SAL_CALL cancel( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdbc::XCloseable
- virtual void SAL_CALL close( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdbc::XMultipleResults
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getResultSet( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL getUpdateCount( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL getMoreResults( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdbc::XPreparedBatchExecution
- virtual void SAL_CALL addBatch( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearBatch( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL executeBatch( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-// ::com::sun::star::sdbc::XGeneratedResultSet
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL getGeneratedValues( ) throw (::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
-// Helper
- void disposeResultSet();
-
-protected:
- using ::cppu::OPropertySetHelper::getFastPropertyValue;
-};
-
-//************************************************************
-// OStatement
-//************************************************************
-typedef ::cppu::ImplHelper3 < ::com::sun::star::sdbc::XStatement
- , ::com::sun::star::lang::XServiceInfo
- , ::com::sun::star::sdbc::XBatchExecution
- > OStatement_IFACE;
-class OStatement :public OStatementBase
- ,public OStatement_IFACE
-{
-private:
- ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement > m_xAggregateStatement;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdb::XSingleSelectQueryComposer > m_xComposer;
- bool m_bAttemptedComposerCreation;
-
-public:
- OStatement(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > & _xConn,
- const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > & _xStatement);
-
- DECLARE_XINTERFACE()
- DECLARE_XTYPEPROVIDER()
-
-// ::com::sun::star::lang::XServiceInfo
- virtual ::rtl::OUString SAL_CALL getImplementationName( ) throw(::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL supportsService( const ::rtl::OUString& ServiceName ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL getSupportedServiceNames( ) throw(::com::sun::star::uno::RuntimeException);
-
-// ::com::sun::star::sdbc::XStatement
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > SAL_CALL executeQuery( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Int32 SAL_CALL executeUpdate( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual sal_Bool SAL_CALL execute( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > SAL_CALL getConnection( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- // OComponentHelper
- virtual void SAL_CALL disposing();
-
- // XBatchExecution
- virtual void SAL_CALL addBatch( const ::rtl::OUString& sql ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL clearBatch( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int32 > SAL_CALL executeBatch( ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::uno::RuntimeException);
-
- using OStatementBase::addBatch;
-
-private:
- /** does escape processing for the given SQL command, if the our EscapeProcessing
- property allows so.
- */
- ::rtl::OUString impl_doEscapeProcessing_nothrow( const ::rtl::OUString& _rSQL ) const;
- bool impl_ensureComposer_nothrow() const;
-};
-
-#endif // _DBA_COREAPI_STATEMENT_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/table.hxx b/dbaccess/source/core/inc/table.hxx
deleted file mode 100644
index 506c316ce..000000000
--- a/dbaccess/source/core/inc/table.hxx
+++ /dev/null
@@ -1,165 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_TABLE_HXX_
-#define _DBA_CORE_TABLE_HXX_
-
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
-#include <com/sun/star/sdbcx/XIndexesSupplier.hpp>
-#include <com/sun/star/sdbcx/XKeysSupplier.hpp>
-#include <com/sun/star/sdbcx/XRename.hpp>
-#include <com/sun/star/sdbcx/XAlterTable.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XConnection.hpp>
-
-#include <cppuhelper/compbase7.hxx>
-#include "apitools.hxx"
-#include "datasettings.hxx"
-#include <column.hxx>
-#include <connectivity/CommonTools.hxx>
-#include <connectivity/TTableHelper.hxx>
-#include <comphelper/uno3.hxx>
-#include <comphelper/IdPropArrayHelper.hxx>
-
-namespace dbaccess
-{
-
- //==========================================================================
- //= OTables
- //==========================================================================
- class ODBTable;
- class OContainerMediator;
- typedef ::comphelper::OIdPropertyArrayUsageHelper< ODBTable > ODBTable_PROP;
- typedef ::connectivity::OTableHelper OTable_Base;
-
- class ODBTable :public ODataSettings_Base
- ,public ODBTable_PROP
- ,public OTable_Base
- ,public IColumnFactory
- {
- private:
- ::rtl::Reference< OContainerMediator > m_pColumnMediator;
-
- protected:
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xColumnDefinitions;
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xDriverColumns;
-
- // <properties>
- sal_Int32 m_nPrivileges;
- // </properties>
-
- virtual ::cppu::IPropertyArrayHelper* createArrayHelper( sal_Int32 _nId) const;
- virtual ::cppu::IPropertyArrayHelper & SAL_CALL getInfoHelper();
-
- // IColumnFactory
- virtual OColumn* createColumn(const ::rtl::OUString& _rName) const;
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createColumnDescriptor();
- virtual void columnAppended( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxSourceDescriptor );
- virtual void columnDropped(const ::rtl::OUString& _sName);
-
- /** creates the column collection for the table
- @param _rNames
- The column names.
- */
- virtual ::connectivity::sdbcx::OCollection* createColumns(const ::connectivity::TStringVector& _rNames);
-
- /** creates the key collection for the table
- @param _rNames
- The key names.
- */
- virtual ::connectivity::sdbcx::OCollection* createKeys(const ::connectivity::TStringVector& _rNames);
-
- /** creates the index collection for the table
- @param _rNames
- The index names.
- */
- virtual ::connectivity::sdbcx::OCollection* createIndexes(const ::connectivity::TStringVector& _rNames);
-
- // OComponentHelper
- virtual void SAL_CALL disposing(void);
- public:
- /** constructs a wrapper supporting the com.sun.star.sdb.Table service.<BR>
- @param _rxConn the connection the table belongs to
- @param _rxTable the table from the driver can be null
- @param _rCatalog the name of the catalog the table belongs to. May be empty.
- @param _rSchema the name of the schema the table belongs to. May be empty.
- @param _rName the name of the table
- @param _rType the type of the table, as supplied by the driver
- @param _rDesc the description of the table, as supplied by the driver
- */
- ODBTable(connectivity::sdbcx::OCollection* _pTables
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn
- ,const ::rtl::OUString& _rCatalog
- , const ::rtl::OUString& _rSchema
- , const ::rtl::OUString& _rName
- ,const ::rtl::OUString& _rType
- , const ::rtl::OUString& _rDesc
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >& _rxColumnDefinitions)
- throw(::com::sun::star::sdbc::SQLException);
-
- ODBTable(connectivity::sdbcx::OCollection* _pTables
- ,const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConn)
- throw(::com::sun::star::sdbc::SQLException);
- virtual ~ODBTable();
-
- // ODescriptor
- virtual void construct();
-
- //XInterface
- DECLARE_XINTERFACE()
- //XTypeProvider
- virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes( ) throw(::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException);
- static ::com::sun::star::uno::Sequence< sal_Int8 > getUnoTunnelImplementationId();
-
- // ::com::sun::star::lang::XServiceInfo
- DECLARE_SERVICE_INFO();
-
- // com::sun::star::beans::XPropertySet
- virtual void SAL_CALL getFastPropertyValue(::com::sun::star::uno::Any& rValue, sal_Int32 nHandle) const;
-
- // ::com::sun::star::sdbcx::XRename,
- virtual void SAL_CALL rename( const ::rtl::OUString& _rNewName ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::container::ElementExistException, ::com::sun::star::uno::RuntimeException);
-
- // ::com::sun::star::sdbcx::XAlterTable,
- virtual void SAL_CALL alterColumnByName( const ::rtl::OUString& _rName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxDescriptor ) throw(::com::sun::star::sdbc::SQLException, ::com::sun::star::container::NoSuchElementException, ::com::sun::star::uno::RuntimeException);
-
- // com::sun::star::lang::XUnoTunnel
- virtual sal_Int64 SAL_CALL getSomething( const ::com::sun::star::uno::Sequence< sal_Int8 >& aIdentifier ) throw(::com::sun::star::uno::RuntimeException);
-
- private:
- using OTable_Base::createArrayHelper;
- using OTable_Base::getFastPropertyValue;
- };
-}
-#endif // _DBA_CORE_TABLE_HXX_
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/tablecontainer.hxx b/dbaccess/source/core/inc/tablecontainer.hxx
deleted file mode 100644
index 577ab1bb8..000000000
--- a/dbaccess/source/core/inc/tablecontainer.hxx
+++ /dev/null
@@ -1,119 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_TABLECONTAINER_HXX_
-#define _DBA_CORE_TABLECONTAINER_HXX_
-
-#include <cppuhelper/implbase1.hxx>
-#include <comphelper/stl_types.hxx>
-#include <com/sun/star/container/XEnumerationAccess.hpp>
-#include <com/sun/star/container/XNameAccess.hpp>
-#include <com/sun/star/container/XIndexAccess.hpp>
-#include <com/sun/star/util/XRefreshable.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/uno/Sequence.hxx>
-#include <com/sun/star/sdbc/XConnection.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/container/XContainerListener.hpp>
-#include <com/sun/star/container/XNameContainer.hpp>
-#include "FilteredContainer.hxx"
-#include <connectivity/warningscontainer.hxx>
-#include "RefreshListener.hxx"
-#include "apitools.hxx"
-
-namespace dbaccess
-{
- typedef ::cppu::ImplHelper1< ::com::sun::star::container::XContainerListener> OTableContainer_Base;
-
- //==========================================================================
- //= OTableContainer
- //==========================================================================
- class OTable;
- class OTableContainer;
- class OContainerMediator;
-
- class OTableContainer : public OFilteredContainer,
- public OTableContainer_Base
- {
- ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > m_xTableDefinitions;
- ::rtl::Reference< OContainerMediator > m_pTableMediator;
- sal_Bool m_bInDrop; // set when we are in the drop method
-
-
- // OFilteredContainer
- virtual void addMasterContainerListener();
- virtual void removeMasterContainerListener();
- virtual ::rtl::OUString getTableTypeRestriction() const;
-
- // ::connectivity::sdbcx::OCollection
- virtual connectivity::sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createDescriptor();
- virtual connectivity::sdbcx::ObjectType appendObject( const ::rtl::OUString& _rForName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& descriptor );
- virtual void dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName);
-
- virtual void SAL_CALL disposing();
-
- inline virtual void SAL_CALL acquire() throw(){ OFilteredContainer::acquire();}
- inline virtual void SAL_CALL release() throw(){ OFilteredContainer::release();}
- // ::com::sun::star::lang::XServiceInfo
- DECLARE_SERVICE_INFO();
-
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
- // XContainerListener
- virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementRemoved( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementReplaced( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
-
- public:
- /** ctor of the container. The parent has to support the <type scope="com::sun::star::sdbc">XConnection</type>
- interface.<BR>
- @param _rParent the object which acts as parent for the container.
- all refcounting is rerouted to this object
- @param _rMutex the access safety object of the parent
- @param _rTableFilter restricts the visible tables by name
- @param _rTableTypeFilter restricts the visible tables by type
- @see construct
- */
- OTableContainer( ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xCon,
- sal_Bool _bCase,
- const ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >& _xTableDefinitions,
- IRefreshListener* _pRefreshListener,
- ::dbtools::IWarningsContainer* _pWarningsContainer,
- oslInterlockedCount& _nInAppend
- );
-
- virtual ~OTableContainer();
- };
-}
-#endif // _DBA_CORE_TABLECONTAINER_HXX_
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/userinformation.hxx b/dbaccess/source/core/inc/userinformation.hxx
deleted file mode 100644
index 7efbf6586..000000000
--- a/dbaccess/source/core/inc/userinformation.hxx
+++ /dev/null
@@ -1,48 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_USERINFORMATION_HXX_
-#define _DBA_CORE_USERINFORMATION_HXX_
-
-#include <com/sun/star/lang/Locale.hpp>
-
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-
-class UserInformation
-{
- ::com::sun::star::lang::Locale m_aUserLocale;
-
-public:
- UserInformation();
-
- ::com::sun::star::lang::Locale getUserLanguage() const { return m_aUserLocale; }
-};
-
-#endif // _DBA_CORE_USERINFORMATION_HXX_
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/veto.hxx b/dbaccess/source/core/inc/veto.hxx
deleted file mode 100644
index 787d3d107..000000000
--- a/dbaccess/source/core/inc/veto.hxx
+++ /dev/null
@@ -1,73 +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.
- *
- ************************************************************************/
-
-#ifndef DBACCESS_VETO_HXX
-#define DBACCESS_VETO_HXX
-
-/** === begin UNO includes === **/
-#include <com/sun/star/util/XVeto.hpp>
-/** === end UNO includes === **/
-
-#include <cppuhelper/implbase1.hxx>
-
-namespace dbaccess
-{
-
- //====================================================================
- //= Veto
- //====================================================================
- typedef ::cppu::WeakImplHelper1 < ::com::sun::star::util::XVeto
- > Veto_Base;
- /** implements ::com::sun::star::util::XVeto
- */
- class Veto : public Veto_Base
- {
- private:
- const ::rtl::OUString m_sReason;
- const ::com::sun::star::uno::Any m_aDetails;
-
- public:
- Veto( const ::rtl::OUString& _rReason, const ::com::sun::star::uno::Any& _rDetails );
-
- virtual ::rtl::OUString SAL_CALL getReason() throw (::com::sun::star::uno::RuntimeException);
- virtual ::com::sun::star::uno::Any SAL_CALL getDetails() throw (::com::sun::star::uno::RuntimeException);
-
- protected:
- ~Veto();
-
- private:
- Veto(); // never implemented
- Veto( const Veto& ); // never implemented
- Veto& operator=( const Veto& ); // never implemented
- };
-
-} // namespace dbaccess
-
-#endif // DBACCESS_VETO_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/inc/viewcontainer.hxx b/dbaccess/source/core/inc/viewcontainer.hxx
deleted file mode 100644
index 95836f7ab..000000000
--- a/dbaccess/source/core/inc/viewcontainer.hxx
+++ /dev/null
@@ -1,115 +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.
- *
- ************************************************************************/
-
-#ifndef _DBA_CORE_VIEWCONTAINER_HXX_
-#define _DBA_CORE_VIEWCONTAINER_HXX_
-
-#include <cppuhelper/implbase1.hxx>
-#include <comphelper/stl_types.hxx>
-
-#include <com/sun/star/container/XEnumerationAccess.hpp>
-#include <com/sun/star/container/XIndexAccess.hpp>
-#include <com/sun/star/util/XRefreshable.hpp>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/uno/Sequence.hxx>
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/sdbc/SQLWarning.hpp>
-#include <com/sun/star/sdb/SQLContext.hpp>
-#include <com/sun/star/container/XContainerListener.hpp>
-#include "apitools.hxx"
-
-#include "FilteredContainer.hxx"
-
-namespace dbtools
-{
- class IWarningsContainer;
-}
-
-namespace dbaccess
-{
- typedef ::cppu::ImplHelper1< ::com::sun::star::container::XContainerListener> OViewContainer_Base;
-
- //==========================================================================
- //= OViewContainer
- //==========================================================================
- class OViewContainer : public OFilteredContainer,
- public OViewContainer_Base
- {
- public:
- /** ctor of the container. The parent has to support the <type scope="com::sun::star::sdbc">XConnection</type>
- interface.<BR>
- @param _rParent the object which acts as parent for the container.
- all refcounting is rerouted to this object
- @param _rMutex the access safety object of the parent
- @param _rTableFilter restricts the visible tables by name
- @param _rTableTypeFilter restricts the visible tables by type
- @see construct
- */
- OViewContainer( ::cppu::OWeakObject& _rParent,
- ::osl::Mutex& _rMutex,
- const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xCon,
- sal_Bool _bCase,
- IRefreshListener* _pRefreshListener,
- ::dbtools::IWarningsContainer* _pWarningsContainer,
- oslInterlockedCount& _nInAppend
- );
-
- virtual ~OViewContainer();
-
- protected:
- // OFilteredContainer overridables
- virtual ::rtl::OUString getTableTypeRestriction() const;
-
- private:
- inline virtual void SAL_CALL acquire() throw(){ OFilteredContainer::acquire();}
- inline virtual void SAL_CALL release() throw(){ OFilteredContainer::release();}
- // ::com::sun::star::lang::XServiceInfo
- DECLARE_SERVICE_INFO();
-
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
- // XContainerListener
- virtual void SAL_CALL elementInserted( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementRemoved( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL elementReplaced( const ::com::sun::star::container::ContainerEvent& Event ) throw (::com::sun::star::uno::RuntimeException);
-
- // ::connectivity::sdbcx::OCollection
- virtual ::connectivity::sdbcx::ObjectType createObject(const ::rtl::OUString& _rName);
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createDescriptor();
- virtual connectivity::sdbcx::ObjectType appendObject( const ::rtl::OUString& _rForName, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& descriptor );
- virtual void dropObject(sal_Int32 _nPos,const ::rtl::OUString _sElementName);
-
- using OFilteredContainer::disposing;
-
- bool m_bInElementRemoved;
- };
-}
-#endif // _DBA_CORE_VIEWCONTAINER_HXX_
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/ContainerListener.cxx b/dbaccess/source/core/misc/ContainerListener.cxx
deleted file mode 100644
index 83f7f2507..000000000
--- a/dbaccess/source/core/misc/ContainerListener.cxx
+++ /dev/null
@@ -1,132 +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_dbaccess.hxx"
-
-#include "ContainerListener.hxx"
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::container::ContainerEvent;
- using ::com::sun::star::lang::WrappedTargetException;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::container::XContainerApproveListener;
- using ::com::sun::star::container::XContainerListener;
- using ::com::sun::star::lang::EventObject;
- using ::com::sun::star::util::XVeto;
- using ::com::sun::star::uno::Reference;
- /** === end UNO using === **/
-
- //====================================================================
- //= OContainerListener
- //====================================================================
- //--------------------------------------------------------------------
- OContainerListener::~OContainerListener()
- {
- }
-
- //--------------------------------------------------------------------
- Reference< XVeto > SAL_CALL OContainerListener::approveInsertElement( const ContainerEvent& _Event ) throw (WrappedTargetException, RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_rMutex );
- if ( m_bDisposed )
- return NULL;
-
- return dynamic_cast< XContainerApproveListener& >( m_rDestination ).approveInsertElement( _Event );
- }
-
- //--------------------------------------------------------------------
- Reference< XVeto > SAL_CALL OContainerListener::approveReplaceElement( const ContainerEvent& _Event ) throw (WrappedTargetException, RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_rMutex );
- if ( m_bDisposed )
- return NULL;
-
- return dynamic_cast< XContainerApproveListener& >( m_rDestination ).approveReplaceElement( _Event );
- }
-
- //--------------------------------------------------------------------
- Reference< XVeto > SAL_CALL OContainerListener::approveRemoveElement( const ContainerEvent& _Event ) throw (WrappedTargetException, RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_rMutex );
- if ( m_bDisposed )
- return NULL;
-
- return dynamic_cast< XContainerApproveListener& >( m_rDestination ).approveRemoveElement( _Event );
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL OContainerListener::elementInserted( const ContainerEvent& _Event ) throw(RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_rMutex );
- if ( m_bDisposed )
- return;
-
- dynamic_cast< XContainerListener& >( m_rDestination ).elementInserted( _Event );
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL OContainerListener::elementRemoved( const ContainerEvent& _Event ) throw(RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_rMutex );
- if ( m_bDisposed )
- return;
-
- dynamic_cast< XContainerListener& >( m_rDestination ).elementRemoved( _Event );
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL OContainerListener::elementReplaced( const ContainerEvent& _Event ) throw(RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_rMutex );
- if ( m_bDisposed )
- return;
-
- dynamic_cast< XContainerListener& >( m_rDestination ).elementReplaced( _Event );
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL OContainerListener::disposing( const EventObject& _Source ) throw(RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_rMutex );
- if ( m_bDisposed )
- return;
-
- dynamic_cast< XContainerListener& >( m_rDestination ).disposing( _Source );
- }
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/ContainerMediator.cxx b/dbaccess/source/core/misc/ContainerMediator.cxx
deleted file mode 100644
index e383e55ea..000000000
--- a/dbaccess/source/core/misc/ContainerMediator.cxx
+++ /dev/null
@@ -1,264 +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_dbaccess.hxx"
-#include "ContainerMediator.hxx"
-#include "dbastrings.hrc"
-#include "PropertyForward.hxx"
-
-#include <com/sun/star/beans/PropertyAttribute.hpp>
-#include <com/sun/star/sdbcx/XColumnsSupplier.hpp>
-#include <com/sun/star/sdbcx/XTablesSupplier.hpp>
-#include <com/sun/star/sdbcx/XRename.hpp>
-#include <connectivity/dbtools.hxx>
-#include <comphelper/property.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
- using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star::lang;
- using namespace ::com::sun::star::sdbc;
- using namespace ::com::sun::star::sdbcx;
- using namespace ::com::sun::star::beans;
- using namespace ::com::sun::star::container;
-
-DBG_NAME(OContainerMediator)
-OContainerMediator::OContainerMediator( const Reference< XContainer >& _xContainer, const Reference< XNameAccess >& _xSettings,
- const Reference< XConnection >& _rxConnection, ContainerType _eType )
- : m_xSettings( _xSettings )
- , m_xContainer( _xContainer )
- , m_aConnection( _rxConnection )
- , m_eType( _eType )
-{
- DBG_CTOR(OContainerMediator,NULL);
-
- if ( _xSettings.is() && _xContainer.is() )
- {
- osl_incrementInterlockedCount(&m_refCount);
- try
- {
- m_xContainer->addContainerListener(this);
- Reference< XContainer > xContainer(_xSettings, UNO_QUERY);
- if ( xContainer.is() )
- xContainer->addContainerListener(this);
- }
- catch(Exception&)
- {
- OSL_FAIL("OContainerMediator::OContainerMediator: caught an exception!");
- }
- osl_decrementInterlockedCount( &m_refCount );
- }
- else
- {
- m_xSettings.clear();
- m_xContainer.clear();
- }
-}
-// -----------------------------------------------------------------------------
-OContainerMediator::~OContainerMediator()
-{
- DBG_DTOR(OContainerMediator,NULL);
- acquire();
- impl_cleanup_nothrow();
-}
-
-// -----------------------------------------------------------------------------
-void OContainerMediator::impl_cleanup_nothrow()
-{
- try
- {
- Reference< XContainer > xContainer( m_xSettings, UNO_QUERY );
- if ( xContainer.is() )
- xContainer->removeContainerListener( this );
- m_xSettings.clear();
-
- xContainer = m_xContainer;
- if ( xContainer.is() )
- xContainer->removeContainerListener( this );
- m_xContainer.clear();
-
- m_aForwardList.clear();
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-// -----------------------------------------------------------------------------
-void SAL_CALL OContainerMediator::elementInserted( const ContainerEvent& _rEvent ) throw(RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- if ( _rEvent.Source == m_xSettings && m_xSettings.is() )
- {
- ::rtl::OUString sElementName;
- _rEvent.Accessor >>= sElementName;
- PropertyForwardList::iterator aFind = m_aForwardList.find(sElementName);
- if ( aFind != m_aForwardList.end() )
- {
- Reference< XPropertySet> xDest(_rEvent.Element,UNO_QUERY);
- aFind->second->setDefinition( xDest );
- }
- }
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL OContainerMediator::elementRemoved( const ContainerEvent& _rEvent ) throw(RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
- Reference< XContainer > xContainer = m_xContainer;
- if ( _rEvent.Source == xContainer && xContainer.is() )
- {
- ::rtl::OUString sElementName;
- _rEvent.Accessor >>= sElementName;
- m_aForwardList.erase(sElementName);
- try
- {
- Reference<XNameContainer> xNameContainer( m_xSettings, UNO_QUERY );
- if ( xNameContainer.is() && m_xSettings->hasByName( sElementName ) )
- xNameContainer->removeByName( sElementName );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL OContainerMediator::elementReplaced( const ContainerEvent& _rEvent ) throw(RuntimeException)
-{
- Reference< XContainer > xContainer = m_xContainer;
- if ( _rEvent.Source == xContainer && xContainer.is() )
- {
- ::rtl::OUString sElementName;
- _rEvent.ReplacedElement >>= sElementName;
-
- PropertyForwardList::iterator aFind = m_aForwardList.find(sElementName);
- if ( aFind != m_aForwardList.end() )
- {
- ::rtl::OUString sNewName;
- _rEvent.Accessor >>= sNewName;
- try
- {
- Reference<XNameContainer> xNameContainer( m_xSettings, UNO_QUERY_THROW );
- if ( xNameContainer.is() && m_xSettings->hasByName( sElementName ) )
- {
- Reference<XRename> xSource(m_xSettings->getByName(sElementName),UNO_QUERY_THROW);
- xSource->rename(sNewName);
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- aFind->second->setName(sNewName);
- }
- }
-}
-
-// -----------------------------------------------------------------------------
-void SAL_CALL OContainerMediator::disposing( const EventObject& /*Source*/ ) throw(RuntimeException)
-{
- ::osl::MutexGuard aGuard(m_aMutex);
-
- impl_cleanup_nothrow();
-}
-
-// -----------------------------------------------------------------------------
-void OContainerMediator::impl_initSettings_nothrow( const ::rtl::OUString& _rName, const Reference< XPropertySet >& _rxDestination )
-{
- try
- {
- if ( m_xSettings.is() && m_xSettings->hasByName( _rName ) )
- {
- Reference< XPropertySet > xSettings( m_xSettings->getByName( _rName ), UNO_QUERY_THROW );
- ::comphelper::copyProperties( xSettings, _rxDestination );
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-}
-
-// -----------------------------------------------------------------------------
-void OContainerMediator::notifyElementCreated( const ::rtl::OUString& _sName, const Reference< XPropertySet >& _xDest )
-{
- if ( !m_xSettings.is() )
- return;
-
- PropertyForwardList::iterator aFind = m_aForwardList.find( _sName );
- if ( aFind != m_aForwardList.end()
- && aFind->second->getDefinition().is()
- )
- {
- OSL_FAIL( "OContainerMediator::notifyElementCreated: is this really a valid case?" );
- return;
- }
-
- ::std::vector< ::rtl::OUString > aPropertyList;
- try
- {
- // initially copy from the settings object (if existent) to the newly created object
- impl_initSettings_nothrow( _sName, _xDest );
-
- // collect the to-be-monitored properties
- Reference< XPropertySetInfo > xPSI( _xDest->getPropertySetInfo(), UNO_QUERY_THROW );
- Sequence< Property > aProperties( xPSI->getProperties() );
- const Property* property = aProperties.getConstArray();
- const Property* propertyEnd = aProperties.getConstArray() + aProperties.getLength();
- for ( ; property != propertyEnd; ++property )
- {
- if ( ( property->Attributes & PropertyAttribute::READONLY ) != 0 )
- continue;
- if ( ( property->Attributes & PropertyAttribute::BOUND ) == 0 )
- continue;
-
- aPropertyList.push_back( property->Name );
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- ::rtl::Reference< OPropertyForward > pForward( new OPropertyForward( _xDest, m_xSettings, _sName, aPropertyList ) );
- m_aForwardList[ _sName ] = pForward;
-}
-// -----------------------------------------------------------------------------
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/DatabaseDataProvider.cxx b/dbaccess/source/core/misc/DatabaseDataProvider.cxx
deleted file mode 100644
index cf011efbc..000000000
--- a/dbaccess/source/core/misc/DatabaseDataProvider.cxx
+++ /dev/null
@@ -1,1174 +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_dbaccess.hxx"
-
-#include "DatabaseDataProvider.hxx"
-#include "dbastrings.hrc"
-#include "cppuhelper/implbase1.hxx"
-#include <comphelper/types.hxx>
-#include <comphelper/namedvaluecollection.hxx>
-#include <connectivity/FValue.hxx>
-#include <connectivity/dbtools.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <rtl/math.hxx>
-#include <sal/macros.h>
-#include <tools/diagnose_ex.h>
-
-#include <com/sun/star/task/XInteractionHandler.hpp>
-#include <com/sun/star/sdb/XCompletedExecution.hpp>
-#include <com/sun/star/sdb/CommandType.hpp>
-#include <com/sun/star/sdbc/DataType.hpp>
-#include <com/sun/star/sdbc/XRow.hpp>
-#include <com/sun/star/sdbc/XResultSet.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaDataSupplier.hpp>
-#include <com/sun/star/sdbc/XResultSetMetaData.hpp>
-#include <com/sun/star/sdbc/XColumnLocate.hpp>
-#include <com/sun/star/beans/NamedValue.hpp>
-#include <com/sun/star/chart/ChartDataRowSource.hpp>
-#include <com/sun/star/chart/XChartDataArray.hpp>
-#include <com/sun/star/chart/XDateCategories.hpp>
-
-#include <vector>
-#include <list>
-
-namespace dbaccess
-{
-using namespace ::com::sun::star;
-using ::com::sun::star::sdbc::SQLException;
-using ::com::sun::star::uno::Reference;
-using ::com::sun::star::uno::RuntimeException;
-// -----------------------------------------------------------------------------
-DatabaseDataProvider::DatabaseDataProvider(uno::Reference< uno::XComponentContext > const & context) :
- TDatabaseDataProvider(m_aMutex),
- ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >(
- context, static_cast< Implements >(
- IMPLEMENTS_PROPERTY_SET), uno::Sequence< ::rtl::OUString >()),
- m_aParameterManager( m_aMutex, uno::Reference< lang::XMultiServiceFactory >(context->getServiceManager(),uno::UNO_QUERY) ),
- m_aFilterManager( uno::Reference< lang::XMultiServiceFactory >(context->getServiceManager(),uno::UNO_QUERY) ),
- m_xContext(context),
- m_CommandType(sdb::CommandType::COMMAND), // #i94114
- m_RowLimit(0),
- m_EscapeProcessing(sal_True),
- m_ApplyFilter(sal_True)
-{
- m_xInternal.set( m_xContext->getServiceManager()->createInstanceWithContext(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.chart.InternalDataProvider")),m_xContext ), uno::UNO_QUERY );
- m_xRangeConversion.set(m_xInternal,uno::UNO_QUERY);
- m_xComplexDescriptionAccess.set(m_xInternal,uno::UNO_QUERY);
-
- osl_incrementInterlockedCount( &m_refCount );
- {
- m_xRowSet.set( m_xContext->getServiceManager()->createInstanceWithContext(SERVICE_SDB_ROWSET,m_xContext ), uno::UNO_QUERY );
- m_xAggregate.set(m_xRowSet,uno::UNO_QUERY);
- m_xAggregateSet.set(m_xRowSet,uno::UNO_QUERY);
- uno::Reference<beans::XPropertySet> xProp(static_cast< ::cppu::OWeakObject* >( this ),uno::UNO_QUERY);
- m_aFilterManager.initialize( m_xAggregateSet );
- m_aParameterManager.initialize( xProp, m_xAggregate );
- m_xAggregateSet->setPropertyValue(PROPERTY_COMMAND_TYPE,uno::makeAny(m_CommandType));
- m_xAggregateSet->setPropertyValue(PROPERTY_ESCAPE_PROCESSING,uno::makeAny(m_EscapeProcessing));
- }
- osl_decrementInterlockedCount( &m_refCount );
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::disposing()
-{
- lang::EventObject aEvt(static_cast<XWeak*>(this));
- m_aParameterManager.disposing( aEvt );
-
- m_aParameterManager.dispose(); // (to free any references it may have to me)
- m_aFilterManager.dispose(); // (dito)
-
- m_xParent.clear();
- m_xAggregateSet.clear();
- m_xAggregate.clear();
- m_xRangeConversion.clear();
- ::comphelper::disposeComponent(m_xRowSet);
- ::comphelper::disposeComponent(m_xInternal);
- m_xActiveConnection.clear();
-}
-// -----------------------------------------------------------------------------
-uno::Any DatabaseDataProvider::queryInterface(uno::Type const & type) throw (uno::RuntimeException)
-{
- return TDatabaseDataProvider::queryInterface(type);
-}
-// -----------------------------------------------------------------------------
-
-//------------------------------------------------------------------------------
-rtl::OUString DatabaseDataProvider::getImplementationName_Static( ) throw(uno::RuntimeException)
-{
- return rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.comp.chart2.data.DatabaseDataProvider"));
-}
-// -----------------------------------------------------------------------------
-// -------------------------------------------------------------------------
-// XServiceInfo
-::rtl::OUString SAL_CALL DatabaseDataProvider::getImplementationName( ) throw(uno::RuntimeException)
-{
- return getImplementationName_Static();
-}
-// -----------------------------------------------------------------------------
-// -------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::supportsService( const ::rtl::OUString& _rServiceName ) throw(uno::RuntimeException)
-{
- return ::comphelper::findValue(getSupportedServiceNames(), _rServiceName, sal_True).getLength() != 0;
-}
-// -----------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-uno::Sequence< ::rtl::OUString > DatabaseDataProvider::getSupportedServiceNames_Static( ) throw (uno::RuntimeException)
-{
- uno::Sequence< rtl::OUString > aSNS( 1 );
- aSNS[0] = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.chart2.data.DatabaseDataProvider"));
- return aSNS;
-}
-// -----------------------------------------------------------------------------
-uno::Sequence< ::rtl::OUString > SAL_CALL DatabaseDataProvider::getSupportedServiceNames( ) throw(uno::RuntimeException)
-{
- return getSupportedServiceNames_Static();
-}
-// -----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > DatabaseDataProvider::Create(uno::Reference< uno::XComponentContext > const & context)
-{
- return *(new DatabaseDataProvider(context)) ;
-}
-// -----------------------------------------------------------------------------
-// lang::XInitialization:
-void SAL_CALL DatabaseDataProvider::initialize(const uno::Sequence< uno::Any > & aArguments) throw (uno::RuntimeException, uno::Exception)
-{
- osl::MutexGuard g(m_aMutex);
- const uno::Any* pIter = aArguments.getConstArray();
- const uno::Any* pEnd = pIter + aArguments.getLength();
- for(;pIter != pEnd;++pIter)
- {
- if ( !m_xActiveConnection.is() )
- (*pIter) >>= m_xActiveConnection;
- else if ( !m_xHandler.is() )
- (*pIter) >>= m_xHandler;
- }
- m_xAggregateSet->setPropertyValue( PROPERTY_ACTIVE_CONNECTION, uno::makeAny( m_xActiveConnection ) );
-}
-// -----------------------------------------------------------------------------
-
-// chart2::data::XDataProvider:
-::sal_Bool SAL_CALL DatabaseDataProvider::createDataSourcePossible(const uno::Sequence< beans::PropertyValue > & _aArguments) throw (uno::RuntimeException)
-{
- const beans::PropertyValue* pArgIter = _aArguments.getConstArray();
- const beans::PropertyValue* pArgEnd = pArgIter + _aArguments.getLength();
- for(;pArgIter != pArgEnd;++pArgIter)
- {
- if ( pArgIter->Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("DataRowSource")) )
- {
- ::com::sun::star::chart::ChartDataRowSource eRowSource = ::com::sun::star::chart::ChartDataRowSource_COLUMNS;
- pArgIter->Value >>= eRowSource;
- if ( eRowSource != ::com::sun::star::chart::ChartDataRowSource_COLUMNS )
- return sal_False;
- }
- else if ( pArgIter->Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("CellRangeRepresentation")) )
- {
- ::rtl::OUString sRange;
- pArgIter->Value >>= sRange;
- if ( !sRange.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("all")) )
- return sal_False;
- }
- else if ( pArgIter->Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("FirstCellAsLabel")) )
- {
- sal_Bool bFirstCellAsLabel = sal_True;
- pArgIter->Value >>= bFirstCellAsLabel;
- if ( !bFirstCellAsLabel )
- return sal_False;
- }
- }
- return sal_True;
-}
-// -----------------------------------------------------------------------------
-// -----------------------------------------------------------------------------
-uno::Reference< chart2::data::XDataSource > SAL_CALL DatabaseDataProvider::createDataSource(const uno::Sequence< beans::PropertyValue > & _aArguments) throw (uno::RuntimeException, lang::IllegalArgumentException)
-{
- osl::ResettableMutexGuard aClearForNotifies(m_aMutex);
- if ( createDataSourcePossible(_aArguments) )
- {
- try
- {
- uno::Reference< chart::XChartDataArray> xChartData( m_xInternal, uno::UNO_QUERY_THROW );
- xChartData->setData( uno::Sequence< uno::Sequence< double > >() );
- xChartData->setColumnDescriptions( uno::Sequence< ::rtl::OUString >() );
- if ( m_xInternal->hasDataByRangeRepresentation( ::rtl::OUString::valueOf( sal_Int32(0) ) ) )
- m_xInternal->deleteSequence(0);
- }
- catch( const uno::Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- ::comphelper::NamedValueCollection aArgs( _aArguments );
- const sal_Bool bHasCategories = aArgs.getOrDefault( "HasCategories", sal_True );
- uno::Sequence< ::rtl::OUString > aColumnNames =
- aArgs.getOrDefault( "ColumnDescriptions", uno::Sequence< ::rtl::OUString >() );
-
- bool bRet = false;
- if ( m_Command.getLength() != 0 && m_xActiveConnection.is() )
- {
- try
- {
- impl_fillRowSet_throw();
- impl_executeRowSet_throw(aClearForNotifies);
- impl_fillInternalDataProvider_throw(bHasCategories,aColumnNames);
- bRet = true;
- }
- catch(const uno::Exception& /*e*/)
- {
- }
- }
- if ( !bRet ) // no command set or an error occurred, use Internal data handler
- {
- uno::Reference< lang::XInitialization> xIni(m_xInternal,uno::UNO_QUERY);
- if ( xIni.is() )
- {
- uno::Sequence< uno::Any > aInitArgs(1);
- beans::NamedValue aParam(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("CreateDefaultData")),uno::makeAny(sal_True));
- aInitArgs[0] <<= aParam;
- xIni->initialize(aInitArgs);
- }
- }
-
- }
- return m_xInternal->createDataSource(_aArguments);
-}
-// -----------------------------------------------------------------------------
-
-uno::Sequence< beans::PropertyValue > SAL_CALL DatabaseDataProvider::detectArguments(const uno::Reference< chart2::data::XDataSource > & _xDataSource) throw (uno::RuntimeException)
-{
- ::comphelper::NamedValueCollection aArguments;
- aArguments.put( "CellRangeRepresentation", uno::Any( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "all" ) ) ) );
- aArguments.put( "DataRowSource", uno::makeAny( chart::ChartDataRowSource_COLUMNS ) );
- // internal data always contains labels and categories
- aArguments.put( "FirstCellAsLabel", uno::makeAny( sal_True ) );
-
- sal_Bool bHasCategories = sal_False;
- if( _xDataSource.is())
- {
- uno::Sequence< uno::Reference< chart2::data::XLabeledDataSequence > > aSequences(_xDataSource->getDataSequences());
- const sal_Int32 nCount( aSequences.getLength());
- for( sal_Int32 nIdx=0; nIdx<nCount; ++nIdx )
- {
- if( aSequences[nIdx].is() )
- {
- uno::Reference< beans::XPropertySet > xSeqProp( aSequences[nIdx]->getValues(), uno::UNO_QUERY );
- ::rtl::OUString aRole;
- if ( xSeqProp.is()
- && ( xSeqProp->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Role" ) ) ) >>= aRole )
- && aRole.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "categories" ) )
- )
- {
- bHasCategories = sal_True;
- break;
- }
- }
- }
- }
- aArguments.put( "HasCategories", uno::makeAny( bHasCategories ) );
- return aArguments.getPropertyValues();
-}
-// -----------------------------------------------------------------------------
-
-::sal_Bool SAL_CALL DatabaseDataProvider::createDataSequenceByRangeRepresentationPossible(const ::rtl::OUString & /*aRangeRepresentation*/) throw (uno::RuntimeException)
-{
- return sal_True;
-}
-// -----------------------------------------------------------------------------
-uno::Any DatabaseDataProvider::impl_getNumberFormatKey_nothrow(const ::rtl::OUString & _sRangeRepresentation) const
-{
- ::std::map< ::rtl::OUString,com::sun::star::uno::Any>::const_iterator aFind = m_aNumberFormats.find(_sRangeRepresentation);
- if ( aFind != m_aNumberFormats.end() )
- return aFind->second;
- return uno::makeAny(sal_Int32(0));
-}
-// -----------------------------------------------------------------------------
-uno::Reference< chart2::data::XDataSequence > SAL_CALL DatabaseDataProvider::createDataSequenceByRangeRepresentation(const ::rtl::OUString & _sRangeRepresentation) throw (uno::RuntimeException, lang::IllegalArgumentException)
-{
- osl::MutexGuard g(m_aMutex);
- uno::Reference< chart2::data::XDataSequence > xData = m_xInternal->createDataSequenceByRangeRepresentation(_sRangeRepresentation);;
- uno::Reference<beans::XPropertySet> xProp(xData,uno::UNO_QUERY);
- const static ::rtl::OUString s_sNumberFormatKey(RTL_CONSTASCII_USTRINGPARAM("NumberFormatKey"));
- if ( xProp.is() && xProp->getPropertySetInfo()->hasPropertyByName(s_sNumberFormatKey) )
- {
- xProp->setPropertyValue(s_sNumberFormatKey,impl_getNumberFormatKey_nothrow(_sRangeRepresentation));
- }
- return xData;
-}
-
-uno::Sequence< uno::Sequence< rtl::OUString > > SAL_CALL DatabaseDataProvider::getComplexRowDescriptions() throw (uno::RuntimeException)
-{
- return m_xComplexDescriptionAccess->getComplexRowDescriptions();
-}
-void SAL_CALL DatabaseDataProvider::setComplexRowDescriptions( const uno::Sequence< uno::Sequence< ::rtl::OUString > >& aRowDescriptions ) throw (uno::RuntimeException)
-{
- m_xComplexDescriptionAccess->setComplexRowDescriptions(aRowDescriptions);
-}
-uno::Sequence< uno::Sequence< rtl::OUString > > SAL_CALL DatabaseDataProvider::getComplexColumnDescriptions() throw (uno::RuntimeException)
-{
- return m_xComplexDescriptionAccess->getComplexColumnDescriptions();
-}
-void SAL_CALL DatabaseDataProvider::setComplexColumnDescriptions( const uno::Sequence< uno::Sequence< rtl::OUString > >& aColumnDescriptions ) throw (uno::RuntimeException)
-{
- m_xComplexDescriptionAccess->setComplexColumnDescriptions(aColumnDescriptions);
-}
-// ____ XChartDataArray ____
-uno::Sequence< uno::Sequence< double > > SAL_CALL DatabaseDataProvider::getData() throw (uno::RuntimeException)
-{
- return m_xComplexDescriptionAccess->getData();
-}
-
-void SAL_CALL DatabaseDataProvider::setData( const uno::Sequence< uno::Sequence< double > >& rDataInRows ) throw (uno::RuntimeException)
-{
- m_xComplexDescriptionAccess->setData(rDataInRows);
-}
-
-void SAL_CALL DatabaseDataProvider::setRowDescriptions( const uno::Sequence< rtl::OUString >& aRowDescriptions ) throw (uno::RuntimeException)
-{
- m_xComplexDescriptionAccess->setRowDescriptions(aRowDescriptions);
-}
-
-void SAL_CALL DatabaseDataProvider::setColumnDescriptions( const uno::Sequence< rtl::OUString >& aColumnDescriptions ) throw (uno::RuntimeException)
-{
- m_xComplexDescriptionAccess->setColumnDescriptions(aColumnDescriptions);
-}
-
-uno::Sequence< rtl::OUString > SAL_CALL DatabaseDataProvider::getRowDescriptions() throw (uno::RuntimeException)
-{
- return m_xComplexDescriptionAccess->getRowDescriptions();
-}
-
-uno::Sequence< rtl::OUString > SAL_CALL DatabaseDataProvider::getColumnDescriptions() throw (uno::RuntimeException)
-{
- return m_xComplexDescriptionAccess->getColumnDescriptions();
-}
-
-// ____ XChartData (base of XChartDataArray) ____
-void SAL_CALL DatabaseDataProvider::addChartDataChangeEventListener(const uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& x) throw (uno::RuntimeException)
-{
- m_xComplexDescriptionAccess->addChartDataChangeEventListener(x);
-}
-
-void SAL_CALL DatabaseDataProvider::removeChartDataChangeEventListener(const uno::Reference< ::com::sun::star::chart::XChartDataChangeEventListener >& x) throw (uno::RuntimeException)
-{
- m_xComplexDescriptionAccess->removeChartDataChangeEventListener(x);
-}
-
-double SAL_CALL DatabaseDataProvider::getNotANumber() throw (uno::RuntimeException)
-{
- return m_xComplexDescriptionAccess->getNotANumber();
-}
-
-::sal_Bool SAL_CALL DatabaseDataProvider::isNotANumber( double nNumber ) throw (uno::RuntimeException)
-{
- return m_xComplexDescriptionAccess->isNotANumber(nNumber);
-}
-
-// -----------------------------------------------------------------------------
-
-uno::Reference< sheet::XRangeSelection > SAL_CALL DatabaseDataProvider::getRangeSelection() throw (uno::RuntimeException)
-{
- // TODO: Exchange the default return implementation for "getRangeSelection" !!!
- // Exchange the default return implementation.
- // NOTE: Default initialized polymorphic structs can cause problems because of
- // missing default initialization of primitive types of some C++ compilers or
- // different Any initialization in Java and C++ polymorphic structs.
- return uno::Reference< sheet::XRangeSelection >();
-}
-// -----------------------------------------------------------------------------
-// chart2::data::XRangeXMLConversion:
-::rtl::OUString SAL_CALL DatabaseDataProvider::convertRangeToXML(const ::rtl::OUString & _sRangeRepresentation) throw (uno::RuntimeException, lang::IllegalArgumentException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_xRangeConversion->convertRangeToXML(_sRangeRepresentation);
-}
-// -----------------------------------------------------------------------------
-
-::rtl::OUString SAL_CALL DatabaseDataProvider::convertRangeFromXML(const ::rtl::OUString & _sXMLRange) throw (uno::RuntimeException, lang::IllegalArgumentException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_xRangeConversion->convertRangeFromXML(_sXMLRange);
-}
-// -----------------------------------------------------------------------------
-
-// com.sun.star.beans.XPropertySet:
-uno::Reference< beans::XPropertySetInfo > SAL_CALL DatabaseDataProvider::getPropertySetInfo() throw (uno::RuntimeException)
-{
- return ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::getPropertySetInfo();
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::setPropertyValue(const ::rtl::OUString & aPropertyName, const uno::Any & aValue) throw (uno::RuntimeException, beans::UnknownPropertyException, beans::PropertyVetoException, lang::IllegalArgumentException, lang::WrappedTargetException)
-{
- ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::setPropertyValue(aPropertyName, aValue);
-}
-// -----------------------------------------------------------------------------
-
-uno::Any SAL_CALL DatabaseDataProvider::getPropertyValue(const ::rtl::OUString & aPropertyName) throw (uno::RuntimeException, beans::UnknownPropertyException, lang::WrappedTargetException)
-{
- return ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::getPropertyValue(aPropertyName);
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::addPropertyChangeListener(const ::rtl::OUString & aPropertyName, const uno::Reference< beans::XPropertyChangeListener > & xListener) throw (uno::RuntimeException, beans::UnknownPropertyException, lang::WrappedTargetException)
-{
- ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::addPropertyChangeListener(aPropertyName, xListener);
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::removePropertyChangeListener(const ::rtl::OUString & aPropertyName, const uno::Reference< beans::XPropertyChangeListener > & xListener) throw (uno::RuntimeException, beans::UnknownPropertyException, lang::WrappedTargetException)
-{
- ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::removePropertyChangeListener(aPropertyName, xListener);
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::addVetoableChangeListener(const ::rtl::OUString & aPropertyName, const uno::Reference< beans::XVetoableChangeListener > & xListener) throw (uno::RuntimeException, beans::UnknownPropertyException, lang::WrappedTargetException)
-{
- ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::addVetoableChangeListener(aPropertyName, xListener);
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::removeVetoableChangeListener(const ::rtl::OUString & aPropertyName, const uno::Reference< beans::XVetoableChangeListener > & xListener) throw (uno::RuntimeException, beans::UnknownPropertyException, lang::WrappedTargetException)
-{
- ::cppu::PropertySetMixin< chart2::data::XDatabaseDataProvider >::removeVetoableChangeListener(aPropertyName, xListener);
-}
-// -----------------------------------------------------------------------------
-
-// chart2::data::XDatabaseDataProvider:
-uno::Sequence< ::rtl::OUString > SAL_CALL DatabaseDataProvider::getMasterFields() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_MasterFields;
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::setMasterFields(const uno::Sequence< ::rtl::OUString > & the_value) throw (uno::RuntimeException)
-{
- impl_invalidateParameter_nothrow();
- set(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("MasterFields")),the_value,m_MasterFields);
-}
-// -----------------------------------------------------------------------------
-
-uno::Sequence< ::rtl::OUString > SAL_CALL DatabaseDataProvider::getDetailFields() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_DetailFields;
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::setDetailFields(const uno::Sequence< ::rtl::OUString > & the_value) throw (uno::RuntimeException)
-{
- set(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("DetailFields")),the_value,m_DetailFields);
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString SAL_CALL DatabaseDataProvider::getCommand() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_Command;
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::setCommand(const ::rtl::OUString & the_value) throw (uno::RuntimeException)
-{
- {
- osl::MutexGuard g(m_aMutex);
- impl_invalidateParameter_nothrow();
- m_xAggregateSet->setPropertyValue( PROPERTY_COMMAND, uno::makeAny( the_value ) );
- }
- set(PROPERTY_COMMAND,the_value,m_Command);
-}
-// -----------------------------------------------------------------------------
-
-::sal_Int32 SAL_CALL DatabaseDataProvider::getCommandType() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_CommandType;
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::setCommandType(::sal_Int32 the_value) throw (uno::RuntimeException)
-{
- {
- osl::MutexGuard g(m_aMutex);
- m_xAggregateSet->setPropertyValue( PROPERTY_COMMAND_TYPE, uno::makeAny( the_value ) );
- }
- set(PROPERTY_COMMAND_TYPE,the_value,m_CommandType);
-}
-// -----------------------------------------------------------------------------
-
-::rtl::OUString SAL_CALL DatabaseDataProvider::getFilter() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_aFilterManager.getFilterComponent( dbtools::FilterManager::fcPublicFilter );
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::setFilter(const ::rtl::OUString & the_value) throw (uno::RuntimeException)
-{
- {
- osl::MutexGuard g(m_aMutex);
- m_aFilterManager.setFilterComponent( dbtools::FilterManager::fcPublicFilter, the_value );
- }
- set(PROPERTY_FILTER,the_value,m_Filter);
-}
-// -----------------------------------------------------------------------------
-::sal_Bool SAL_CALL DatabaseDataProvider::getApplyFilter() throw (RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_ApplyFilter;
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setApplyFilter( ::sal_Bool the_value ) throw (RuntimeException)
-{
- {
- osl::MutexGuard g(m_aMutex);
- m_xAggregateSet->setPropertyValue( PROPERTY_APPLYFILTER, uno::makeAny( the_value ) );
- }
- set(PROPERTY_APPLYFILTER,the_value,m_ApplyFilter);
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString SAL_CALL DatabaseDataProvider::getHavingClause() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_HavingClause;
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setHavingClause( const ::rtl::OUString& the_value ) throw (beans::UnknownPropertyException, uno::RuntimeException)
-{
- {
- osl::MutexGuard g(m_aMutex);
- m_xAggregateSet->setPropertyValue( PROPERTY_HAVING_CLAUSE, uno::makeAny( the_value ) );
- }
- set(PROPERTY_HAVING_CLAUSE,the_value,m_HavingClause);
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString SAL_CALL DatabaseDataProvider::getGroupBy() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_GroupBy;
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setGroupBy( const ::rtl::OUString& the_value ) throw (beans::UnknownPropertyException, uno::RuntimeException)
-{
- {
- osl::MutexGuard g(m_aMutex);
- m_xAggregateSet->setPropertyValue( PROPERTY_GROUP_BY, uno::makeAny( the_value ) );
- }
- set(PROPERTY_GROUP_BY,the_value,m_GroupBy);
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString SAL_CALL DatabaseDataProvider::getOrder() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_Order;
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setOrder( const ::rtl::OUString& the_value ) throw (uno::RuntimeException)
-{
- {
- osl::MutexGuard g(m_aMutex);
- m_xAggregateSet->setPropertyValue( PROPERTY_ORDER, uno::makeAny( the_value ) );
- }
- set(PROPERTY_ORDER,the_value,m_Order);
-}
-// -----------------------------------------------------------------------------
-::sal_Bool SAL_CALL DatabaseDataProvider::getEscapeProcessing() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_EscapeProcessing;
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::setEscapeProcessing(::sal_Bool the_value) throw (uno::RuntimeException)
-{
- set(PROPERTY_ESCAPE_PROCESSING,the_value,m_EscapeProcessing);
-}
-// -----------------------------------------------------------------------------
-::sal_Int32 SAL_CALL DatabaseDataProvider::getRowLimit() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_RowLimit;
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::setRowLimit(::sal_Int32 the_value) throw (uno::RuntimeException)
-{
- set(::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("RowLimit")),the_value,m_RowLimit);
-}
-// -----------------------------------------------------------------------------
-uno::Reference< sdbc::XConnection > SAL_CALL DatabaseDataProvider::getActiveConnection() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_xActiveConnection;
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::setActiveConnection(const uno::Reference< sdbc::XConnection > & the_value) throw (uno::RuntimeException, lang::IllegalArgumentException)
-{
- if ( !the_value.is() )
- throw lang::IllegalArgumentException();
- set(PROPERTY_ACTIVE_CONNECTION,the_value,m_xActiveConnection);
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString SAL_CALL DatabaseDataProvider::getDataSourceName() throw (uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- return m_DataSourceName;
-}
-// -----------------------------------------------------------------------------
-
-void SAL_CALL DatabaseDataProvider::setDataSourceName(const ::rtl::OUString& the_value) throw (uno::RuntimeException)
-{
- set(PROPERTY_DATASOURCENAME,the_value,m_DataSourceName);
-}
-// -----------------------------------------------------------------------------
-void DatabaseDataProvider::impl_executeRowSet_throw(::osl::ResettableMutexGuard& _rClearForNotifies)
-{
- if ( impl_fillParameters_nothrow(_rClearForNotifies) )
- m_xRowSet->execute();
-}
-
-// -----------------------------------------------------------------------------
-namespace
-{
- struct ColumnDescription
- {
- ::rtl::OUString sName;
- sal_Int32 nResultSetPosition;
- sal_Int32 nDataType;
-
- ColumnDescription()
- :sName()
- ,nResultSetPosition( 0 )
- ,nDataType( sdbc::DataType::VARCHAR )
- {
- }
- explicit ColumnDescription( const ::rtl::OUString& i_rName )
- :sName( i_rName )
- ,nResultSetPosition( 0 )
- ,nDataType( sdbc::DataType::VARCHAR )
- {
- }
- };
-
- struct CreateColumnDescription : public ::std::unary_function< ::rtl::OUString, ColumnDescription >
- {
- ColumnDescription operator()( const ::rtl::OUString& i_rName )
- {
- return ColumnDescription( i_rName );
- }
- };
-
- struct SelectColumnName : public ::std::unary_function< ColumnDescription, ::rtl::OUString >
- {
- const ::rtl::OUString& operator()( const ColumnDescription& i_rColumn )
- {
- return i_rColumn.sName;
- }
- };
-}
-
-// -----------------------------------------------------------------------------
-void DatabaseDataProvider::impl_fillInternalDataProvider_throw(sal_Bool _bHasCategories,const uno::Sequence< ::rtl::OUString >& i_aColumnNames)
-{
- // clear the data before fill the new one
- uno::Reference< sdbcx::XColumnsSupplier > xColSup(m_xRowSet,uno::UNO_QUERY_THROW);
- uno::Reference< container::XNameAccess > xColumns( xColSup->getColumns(), uno::UNO_SET_THROW );
- const uno::Sequence< ::rtl::OUString > aRowSetColumnNames( xColumns->getElementNames() );
-
- typedef ::std::vector< ColumnDescription > ColumnDescriptions;
- ColumnDescriptions aColumns;
- bool bFirstColumnIsCategory = _bHasCategories;
- if ( i_aColumnNames.getLength() )
- {
- // some normalizations ...
- uno::Sequence< ::rtl::OUString > aImposedColumnNames( i_aColumnNames );
-
- // strangely, there exist documents where the ColumnDescriptions end with a number of empty strings. /me
- // thinks they're generated when you have a chart based on a result set with n columns, but remove some
- // of those columns from the chart - it looks like a bug in the report XML export to me.
- // So, get rid of the "trailing" empty columns
- sal_Int32 nLastNonEmptyColName = aImposedColumnNames.getLength() - 1;
- for ( ; nLastNonEmptyColName >= 0; --nLastNonEmptyColName )
- {
- if ( aImposedColumnNames[ nLastNonEmptyColName ].getLength() != 0 )
- break;
- }
- aImposedColumnNames.realloc( nLastNonEmptyColName + 1 );
-
- // second, for X-Y-charts the ColumnDescriptions exported by chart miss the name of the first (non-category)
- // column. This, this results in a ColumnDescriptions array like <"", "col2", "col3">, where you'd expect
- // <"col1", "col2", "col3">.
- // Fix this with some heuristics:
- if ( ( aImposedColumnNames.getLength() > 0 ) && ( aImposedColumnNames[0].getLength() == 0 ) )
- {
- const sal_Int32 nAssumedRowSetColumnIndex = _bHasCategories ? 1 : 0;
- if ( nAssumedRowSetColumnIndex < aRowSetColumnNames.getLength() )
- aImposedColumnNames[0] = aRowSetColumnNames[ nAssumedRowSetColumnIndex ];
- }
-
- const sal_Int32 nCount = aImposedColumnNames.getLength();
- for ( sal_Int32 i = 0 ; i < nCount; ++i )
- {
- const ::rtl::OUString sColumnName( aImposedColumnNames[i] );
- if ( !xColumns->hasByName( sColumnName ) )
- continue;
-
- if ( _bHasCategories && aColumns.empty() )
- {
- if ( aRowSetColumnNames.getLength() )
- aColumns.push_back( ColumnDescription( aRowSetColumnNames[0] ) );
- else
- aColumns.push_back( ColumnDescription( sColumnName ) );
- bFirstColumnIsCategory = true;
- }
- aColumns.push_back( ColumnDescription( sColumnName ) );
- }
- }
- if ( aColumns.empty() )
- {
- aColumns.resize( aRowSetColumnNames.getLength() );
- ::std::transform(
- aRowSetColumnNames.getConstArray(),
- aRowSetColumnNames.getConstArray() + aRowSetColumnNames.getLength(),
- aColumns.begin(),
- CreateColumnDescription()
- );
- }
-
- // fill the data
- uno::Reference< sdbc::XResultSet> xRes( m_xRowSet, uno::UNO_QUERY_THROW );
- uno::Reference< sdbc::XRow> xRow( m_xRowSet,uno::UNO_QUERY_THROW );
- uno::Reference< sdbc::XResultSetMetaDataSupplier > xSuppMeta( m_xRowSet,uno::UNO_QUERY_THROW );
- uno::Reference< sdbc::XResultSetMetaData > xResultSetMetaData( xSuppMeta->getMetaData(), uno::UNO_SET_THROW );
- uno::Reference< sdbc::XColumnLocate > xColumnLocate( m_xRowSet, uno::UNO_QUERY_THROW );
-
- for ( ColumnDescriptions::iterator col = aColumns.begin();
- col != aColumns.end();
- ++col
- )
- {
- col->nResultSetPosition = xColumnLocate->findColumn( col->sName );
-
- const uno::Reference< beans::XPropertySet > xColumn( xColumns->getByName( col->sName ), uno::UNO_QUERY_THROW );
- const uno::Any aNumberFormat( xColumn->getPropertyValue( PROPERTY_NUMBERFORMAT ) );
- OSL_VERIFY( xColumn->getPropertyValue( PROPERTY_TYPE ) >>= col->nDataType );
-
- const sal_Int32 columnIndex = col - aColumns.begin();
- const ::rtl::OUString sRangeName = ::rtl::OUString::valueOf( columnIndex );
- m_aNumberFormats.insert( ::std::map< ::rtl::OUString, uno::Any >::value_type( sRangeName, aNumberFormat ) );
- }
-
- ::std::vector< ::rtl::OUString > aRowLabels;
- ::std::vector< ::std::vector< double > > aDataValues;
- sal_Int32 nRowCount = 0;
- ::connectivity::ORowSetValue aValue;
- while( xRes->next() && (!m_RowLimit || nRowCount < m_RowLimit) )
- {
- ++nRowCount;
-
- aValue.fill( aColumns[0].nResultSetPosition, aColumns[0].nDataType, xRow );
- aRowLabels.push_back( aValue.getString() );
-
- ::std::vector< double > aRow;
- for ( ColumnDescriptions::const_iterator col = aColumns.begin();
- col != aColumns.end();
- ++col
- )
- {
- if ( bFirstColumnIsCategory && ( col == aColumns.begin() ) )
- continue;
-
- aValue.fill( col->nResultSetPosition, col->nDataType, xRow );
- if ( aValue.isNull() )
- {
- double nValue;
- ::rtl::math::setNan( &nValue );
- aRow.push_back( nValue );
- }
- else
- aRow.push_back( aValue.getDouble() );
- }
-
- aDataValues.push_back( aRow );
- }
-
- // insert default data when no rows exist
- if ( !nRowCount )
- {
- nRowCount = 3;
- const double fDefaultData[ ] =
- { 9.10, 3.20, 4.54,
- 2.40, 8.80, 9.65,
- 3.10, 1.50, 3.70,
- 4.30, 9.02, 6.20 };
- for(sal_Int32 h = 0,k = 0; h < nRowCount; ++h,++k )
- {
- aRowLabels.push_back(::rtl::OUString::valueOf(h+1));
- ::std::vector< double > aRow;
- const sal_Int32 nSize = SAL_N_ELEMENTS(fDefaultData);
- for (size_t j = 0; j < (aColumns.size()-1); ++j,++k)
- {
- if ( k >= nSize )
- k = 0;
- aRow.push_back(fDefaultData[k]);
- }
- aDataValues.push_back(aRow);
- }
- }
-
- uno::Reference< chart::XChartDataArray> xData(m_xInternal,uno::UNO_QUERY);
- xData->setRowDescriptions(uno::Sequence< ::rtl::OUString >(&(*aRowLabels.begin()),aRowLabels.size()));
-
- const size_t nOffset = bFirstColumnIsCategory ? 1 : 0;
- uno::Sequence< ::rtl::OUString > aColumnDescriptions( aColumns.size() - nOffset );
- ::std::transform(
- aColumns.begin() + nOffset,
- aColumns.end(),
- aColumnDescriptions.getArray(),
- SelectColumnName()
- );
- xData->setColumnDescriptions( aColumnDescriptions );
-
- uno::Sequence< uno::Sequence< double > > aData(aDataValues.size());
- uno::Sequence< double >* pDataIter = aData.getArray();
- uno::Sequence< double >* pDataEnd = pDataIter + aData.getLength();
- for(sal_Int32 i= 0;pDataIter != pDataEnd; ++pDataIter,++i )
- {
- if ( !aDataValues[i].empty() )
- *pDataIter = uno::Sequence< double >(&(*(aDataValues[i]).begin()),(aDataValues[i]).size());
- }
- xData->setData(aData);
-}
-// -----------------------------------------------------------------------------
-void DatabaseDataProvider::impl_fillRowSet_throw()
-{
- m_xAggregateSet->setPropertyValue( PROPERTY_FILTER, uno::makeAny( getFilter() ) );
- uno::Reference< sdbc::XParameters> xParam(m_xRowSet,uno::UNO_QUERY_THROW);
- xParam->clearParameters( );
-}
-// -----------------------------------------------------------------------------
-bool DatabaseDataProvider::impl_fillParameters_nothrow( ::osl::ResettableMutexGuard& _rClearForNotifies)
-{
- // do we have to fill the parameters again?
- if ( !m_aParameterManager.isUpToDate() )
- m_aParameterManager.updateParameterInfo( m_aFilterManager );
-
- if ( m_aParameterManager.isUpToDate() )
- return m_aParameterManager.fillParameterValues( m_xHandler, _rClearForNotifies );
-
- return true;
-}
-// com::sun::star::sdbc::XParameters
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setNull(sal_Int32 parameterIndex, sal_Int32 sqlType) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setNull(parameterIndex, sqlType);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setObjectNull(sal_Int32 parameterIndex, sal_Int32 sqlType, const ::rtl::OUString& typeName) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setObjectNull(parameterIndex, sqlType, typeName);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setBoolean(sal_Int32 parameterIndex, sal_Bool x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setBoolean(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setByte(sal_Int32 parameterIndex, sal_Int8 x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setByte(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setShort(sal_Int32 parameterIndex, sal_Int16 x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setShort(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setInt(sal_Int32 parameterIndex, sal_Int32 x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setInt(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setLong(sal_Int32 parameterIndex, sal_Int64 x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setLong(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setFloat(sal_Int32 parameterIndex, float x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setFloat(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setDouble(sal_Int32 parameterIndex, double x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setDouble(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setString(sal_Int32 parameterIndex, const ::rtl::OUString& x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setString(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setBytes(sal_Int32 parameterIndex, const uno::Sequence< sal_Int8 >& x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setBytes(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setDate(sal_Int32 parameterIndex, const util::Date& x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setDate(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setTime(sal_Int32 parameterIndex, const util::Time& x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setTime(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setTimestamp(sal_Int32 parameterIndex, const util::DateTime& x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setTimestamp(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setBinaryStream(sal_Int32 parameterIndex, const uno::Reference<io::XInputStream>& x, sal_Int32 length) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setBinaryStream(parameterIndex, x, length);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setCharacterStream(sal_Int32 parameterIndex, const uno::Reference<io::XInputStream>& x, sal_Int32 length) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setCharacterStream(parameterIndex, x, length);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setObjectWithInfo(sal_Int32 parameterIndex, const uno::Any& x, sal_Int32 targetSqlType, sal_Int32 scale) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setObjectWithInfo(parameterIndex, x, targetSqlType, scale);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setObject(sal_Int32 parameterIndex, const uno::Any& x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setObject(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setRef(sal_Int32 parameterIndex, const uno::Reference<sdbc::XRef>& x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setRef(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setBlob(sal_Int32 parameterIndex, const uno::Reference<sdbc::XBlob>& x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setBlob(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setClob(sal_Int32 parameterIndex, const uno::Reference<sdbc::XClob>& x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setClob(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setArray(sal_Int32 parameterIndex, const Reference<sdbc::XArray>& x) throw( SQLException, RuntimeException )
-{
- m_aParameterManager.setArray(parameterIndex, x);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::clearParameters() throw( SQLException, RuntimeException )
-{
- m_aParameterManager.clearParameters();
-}
-//==============================================================================
-// com::sun::star::sdbc::XRowSet
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::execute() throw( SQLException, RuntimeException )
-{
- uno::Sequence< beans::PropertyValue > aEmpty;
- createDataSource(aEmpty);
-}
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::addRowSetListener(const uno::Reference<sdbc::XRowSetListener>& _rListener) throw( RuntimeException )
-{
- if (m_xRowSet.is())
- m_xRowSet->addRowSetListener(_rListener);
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::removeRowSetListener(const uno::Reference<sdbc::XRowSetListener>& _rListener) throw( RuntimeException )
-{
- if (m_xRowSet.is())
- m_xRowSet->removeRowSetListener(_rListener);
-}
-//==============================================================================
-// com::sun::star::sdbc::XResultSet
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::next() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->next();
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::isBeforeFirst() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->isBeforeFirst();
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::isAfterLast() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->isAfterLast();
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::isFirst() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->isFirst();
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::isLast() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->isLast();
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::beforeFirst() throw( SQLException, RuntimeException )
-{
- m_xRowSet->beforeFirst();
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::afterLast() throw( SQLException, RuntimeException )
-{
- m_xRowSet->afterLast();
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::first() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->first();
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::last() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->last();
-}
-
-//------------------------------------------------------------------------------
-sal_Int32 SAL_CALL DatabaseDataProvider::getRow() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->getRow();
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::absolute(sal_Int32 row) throw( SQLException, RuntimeException )
-{
- return m_xRowSet->absolute(row);
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::relative(sal_Int32 rows) throw( SQLException, RuntimeException )
-{
- return m_xRowSet->relative(rows);
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::previous() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->previous();
-}
-
-//------------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::refreshRow() throw( SQLException, RuntimeException )
-{
- m_xRowSet->refreshRow();
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::rowUpdated() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->rowUpdated();
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::rowInserted() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->rowInserted();
-}
-
-//------------------------------------------------------------------------------
-sal_Bool SAL_CALL DatabaseDataProvider::rowDeleted() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->rowDeleted();
-}
-
-//------------------------------------------------------------------------------
-uno::Reference< uno::XInterface > SAL_CALL DatabaseDataProvider::getStatement() throw( SQLException, RuntimeException )
-{
- return m_xRowSet->getStatement();
-}
-// -----------------------------------------------------------------------------
-uno::Reference< uno::XInterface > SAL_CALL DatabaseDataProvider::getParent( ) throw (uno::RuntimeException)
-{
- return m_xParent;
-}
-// -----------------------------------------------------------------------------
-void SAL_CALL DatabaseDataProvider::setParent( const uno::Reference< uno::XInterface >& _xParent ) throw (lang::NoSupportException, uno::RuntimeException)
-{
- osl::MutexGuard g(m_aMutex);
- m_xParent = _xParent;
-}
-// -----------------------------------------------------------------------------
-void DatabaseDataProvider::impl_invalidateParameter_nothrow()
-{
- osl::MutexGuard g(m_aMutex);
- m_aParameterManager.clearAllParameterInformation();
-}
-// -----------------------------------------------------------------------------
-} // namespace dbaccess
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/PropertyForward.cxx b/dbaccess/source/core/misc/PropertyForward.cxx
deleted file mode 100644
index 3c5557b47..000000000
--- a/dbaccess/source/core/misc/PropertyForward.cxx
+++ /dev/null
@@ -1,175 +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_dbaccess.hxx"
-
-#include "PropertyForward.hxx"
-#include "dbastrings.hrc"
-
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/sdbcx/XDataDescriptorFactory.hpp>
-#include <com/sun/star/sdbcx/XAppend.hpp>
-
-#include <comphelper/property.hxx>
-#include <tools/debug.hxx>
-#include <tools/diagnose_ex.h>
-
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star::beans;
- using namespace ::com::sun::star::container;
- using namespace ::com::sun::star::sdbcx;
- using namespace ::com::sun::star::lang;
-
- DBG_NAME(OPropertyForward)
-
- //------------------------------------------------------------------------
- OPropertyForward::OPropertyForward( const Reference< XPropertySet>& _xSource, const Reference< XNameAccess>& _xDestContainer,
- const ::rtl::OUString& _sName, const ::std::vector< ::rtl::OUString>& _aPropertyList )
- :m_xSource( _xSource, UNO_SET_THROW )
- ,m_xDestContainer( _xDestContainer, UNO_SET_THROW )
- ,m_sName( _sName )
- ,m_bInInsert( sal_False )
- {
- DBG_CTOR(OPropertyForward,NULL);
-
- osl_incrementInterlockedCount(&m_refCount);
- try
- {
- if ( _aPropertyList.empty() )
- _xSource->addPropertyChangeListener( ::rtl::OUString(), this );
- else
- {
- ::std::vector< ::rtl::OUString >::const_iterator aIter = _aPropertyList.begin();
- ::std::vector< ::rtl::OUString >::const_iterator aEnd = _aPropertyList.end();
- for (; aIter != aEnd ; ++aIter )
- _xSource->addPropertyChangeListener( *aIter, this );
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- osl_decrementInterlockedCount( &m_refCount );
- }
-
- // -----------------------------------------------------------------------------
- OPropertyForward::~OPropertyForward()
- {
- DBG_DTOR(OPropertyForward,NULL);
- }
-
- // -----------------------------------------------------------------------------
- void SAL_CALL OPropertyForward::propertyChange( const PropertyChangeEvent& evt ) throw(RuntimeException)
- {
- ::osl::MutexGuard aGuard( m_aMutex );
-
- if ( !m_xDestContainer.is() )
- throw DisposedException( ::rtl::OUString(), *this );
-
- try
- {
- if ( !m_xDest.is() )
- {
- if ( m_xDestContainer->hasByName( m_sName ) )
- {
- m_xDest.set( m_xDestContainer->getByName( m_sName ), UNO_QUERY_THROW );
- }
- else
- {
- Reference< XDataDescriptorFactory > xFactory( m_xDestContainer, UNO_QUERY_THROW );
- m_xDest.set( xFactory->createDataDescriptor(), UNO_SET_THROW );
-
- ::comphelper::copyProperties( m_xSource, m_xDest );
-
- m_bInInsert = sal_True;
- Reference< XAppend > xAppend( m_xDestContainer, UNO_QUERY_THROW );
- xAppend->appendByDescriptor( m_xDest );
- m_bInInsert = sal_False;
- }
-
- m_xDestInfo.set( m_xDest->getPropertySetInfo(), UNO_SET_THROW );
- }
-
- if ( m_xDestInfo->hasPropertyByName( evt.PropertyName ) )
- {
- m_xDest->setPropertyValue( evt.PropertyName, evt.NewValue );
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
- // -----------------------------------------------------------------------------
- void SAL_CALL OPropertyForward::disposing( const ::com::sun::star::lang::EventObject& /*_rSource*/ ) throw (RuntimeException)
- {
- ::osl::MutexGuard aGuard(m_aMutex);
-
- if ( !m_xSource.is() )
- throw DisposedException( ::rtl::OUString(), *this );
-
- m_xSource->removePropertyChangeListener( ::rtl::OUString(), this );
- m_xSource = NULL;
- m_xDestContainer = NULL;
- m_xDestInfo = NULL;
- m_xDest = NULL;
- }
-
- // -----------------------------------------------------------------------------
- void OPropertyForward::setDefinition( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xDest )
- {
- ::osl::MutexGuard aGuard( m_aMutex );
- if ( m_bInInsert )
- return;
-
- OSL_ENSURE( !m_xDest.is(), "OPropertyForward::setDefinition: definition object is already set!" );
- try
- {
- m_xDest.set( _xDest, UNO_SET_THROW );
- m_xDestInfo.set( m_xDest->getPropertySetInfo(), UNO_SET_THROW );
- ::comphelper::copyProperties( m_xDest, m_xSource );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/apitools.cxx b/dbaccess/source/core/misc/apitools.cxx
deleted file mode 100644
index db763f853..000000000
--- a/dbaccess/source/core/misc/apitools.cxx
+++ /dev/null
@@ -1,147 +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_dbaccess.hxx"
-
-#include "apitools.hxx"
-#include "dbastrings.hrc"
-#include <cppuhelper/typeprovider.hxx>
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <osl/diagnose.h>
-#include <tools/debug.hxx>
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace cppu;
-using namespace osl;
-using namespace dbaccess;
-
-//==================================================================================
-//= various helper functions
-//==================================================================================
-//============================================================
-//= OSubComponent
-//============================================================
-DBG_NAME(OSubComponent)
-//--------------------------------------------------------------------------
-OSubComponent::OSubComponent(Mutex& _rMutex, const Reference< XInterface > & xParent)
- :OComponentHelper(_rMutex)
- ,m_xParent(xParent)
-{
- DBG_CTOR(OSubComponent,NULL);
-
-}
-// -----------------------------------------------------------------------------
-OSubComponent::~OSubComponent()
-{
- m_xParent = NULL;
-
- DBG_DTOR(OSubComponent,NULL);
-}
-
-// com::sun::star::lang::XTypeProvider
-//--------------------------------------------------------------------------
-Sequence< Type > OSubComponent::getTypes() throw (RuntimeException)
-{
- OTypeCollection aTypes(::getCppuType( (const Reference< XComponent > *)0 ),
- ::getCppuType( (const Reference< XTypeProvider > *)0 ),
- ::getCppuType( (const Reference< XWeak > *)0 ));
-
- return aTypes.getTypes();
-}
-
-// XInterface
-//--------------------------------------------------------------------------
-void OSubComponent::acquire() throw ( )
-{
- OComponentHelper::acquire();
-}
-
-//--------------------------------------------------------------------------
-void OSubComponent::release() throw ( )
-{
- Reference< XInterface > x( xDelegator );
- if (! x.is())
- {
- if (osl_decrementInterlockedCount( &m_refCount ) == 0 )
- {
- if (! rBHelper.bDisposed)
- {
- // *before* again incrementing our ref count, ensure that our weak connection point
- // will not create references to us anymore (via XAdapter::queryAdapted)
- disposeWeakConnectionPoint();
-
- Reference< XInterface > xHoldAlive( *this );
- // remember the parent
- Reference< XInterface > xParent;
- {
- MutexGuard aGuard( rBHelper.rMutex );
- xParent = m_xParent;
- m_xParent = NULL;
- }
-
- OSL_ENSURE( m_refCount == 1, "OSubComponent::release: invalid ref count (before dispose)!" );
-
- // First dispose
- dispose();
-
- // only the alive ref holds the object
- OSL_ENSURE( m_refCount == 1, "OSubComponent::release: invalid ref count (after dispose)!" );
-
- // release the parent in the ~
- if (xParent.is())
- {
- MutexGuard aGuard( rBHelper.rMutex );
- m_xParent = xParent;
- }
-
- // destroy the object if xHoldAlive decrement the refcount to 0
- return;
- }
- }
- // restore the reference count
- osl_incrementInterlockedCount( &m_refCount );
- }
-
- // as we cover the job of the componenthelper we use the ...
- OWeakAggObject::release();
-}
-
-//--------------------------------------------------------------------------
-Any OSubComponent::queryInterface( const Type & rType ) throw(RuntimeException)
-{
- Any aReturn;
- if (!rType.equals(::getCppuType(static_cast< Reference< XAggregation >* >(NULL))))
- aReturn = OComponentHelper::queryInterface(rType);
-
- return aReturn;
-}
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/dbastrings.cxx b/dbaccess/source/core/misc/dbastrings.cxx
deleted file mode 100644
index 479baa1df..000000000
--- a/dbaccess/source/core/misc/dbastrings.cxx
+++ /dev/null
@@ -1,50 +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_dbaccess.hxx"
-#include "dbastrings.hrc"
-
-namespace dbaccess
-{
-
-#include "stringconstants.inc"
- //============================================================
- //= SQLSTATE
- //============================================================
- IMPLEMENT_CONSTASCII_USTRING(SQLSTATE_GENERAL, "01000");
-
- //============================================================
- //= Properties
- //============================================================
- IMPLEMENT_CONSTASCII_USTRING( PROPERTY_APPLYFORMDESIGNMODE, "ApplyFormDesignMode" );
- IMPLEMENT_CONSTASCII_USTRING( PROPERTY_IS_FORM, "IsForm" );
- IMPLEMENT_CONSTASCII_USTRING( PROPERTY_PERSISTENT_PATH, "PersistentPath" );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/dsntypes.cxx b/dbaccess/source/core/misc/dsntypes.cxx
deleted file mode 100644
index 98318ad63..000000000
--- a/dbaccess/source/core/misc/dsntypes.cxx
+++ /dev/null
@@ -1,633 +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_dbaccess.hxx"
-
-#include <sal/macros.h>
-
-#include "dsntypes.hxx"
-#include "dbamiscres.hrc"
-#include <unotools/confignode.hxx>
-#include <tools/debug.hxx>
-#include <osl/diagnose.h>
-#include <tools/wldcrd.hxx>
-#include <osl/file.hxx>
-#include "dbastrings.hrc"
-#include "core_resource.hxx"
-#include "core_resource.hrc"
-#include <comphelper/documentconstants.hxx>
-
-//.........................................................................
-namespace dbaccess
-{
-//.........................................................................
-
- using namespace ::com::sun::star;
- using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star::beans;
- using namespace ::com::sun::star::lang;
-
- namespace
- {
- void lcl_extractHostAndPort(const String& _sUrl,String& _sHostname,sal_Int32& _nPortNumber)
- {
- if ( _sUrl.GetTokenCount(':') >= 2 )
- {
- _sHostname = _sUrl.GetToken(0,':');
- _nPortNumber = _sUrl.GetToken(1,':').ToInt32();
- }
- }
- }
-//=========================================================================
-//= ODsnTypeCollection
-//=========================================================================
-DBG_NAME(ODsnTypeCollection)
-//-------------------------------------------------------------------------
-ODsnTypeCollection::ODsnTypeCollection(const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _xFactory)
-:m_aDriverConfig(_xFactory)
-,m_xFactory(_xFactory)
-#if OSL_DEBUG_LEVEL > 0
-,m_nLivingIterators(0)
-#endif
-{
- DBG_CTOR(ODsnTypeCollection,NULL);
- const uno::Sequence< ::rtl::OUString > aURLs = m_aDriverConfig.getURLs();
- const ::rtl::OUString* pIter = aURLs.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aURLs.getLength();
- for(;pIter != pEnd;++pIter )
- {
- m_aDsnPrefixes.push_back(*pIter);
- m_aDsnTypesDisplayNames.push_back(m_aDriverConfig.getDriverTypeDisplayName(*pIter));
- }
-
- OSL_ENSURE(m_aDsnTypesDisplayNames.size() == m_aDsnPrefixes.size(),
- "ODsnTypeCollection::ODsnTypeCollection : invalid resources !");
-}
-
-//-------------------------------------------------------------------------
-ODsnTypeCollection::~ODsnTypeCollection()
-{
- DBG_DTOR(ODsnTypeCollection,NULL);
- OSL_ENSURE(0 == m_nLivingIterators, "ODsnTypeCollection::~ODsnTypeCollection : there are still living iterator objects!");
-}
-//-------------------------------------------------------------------------
-String ODsnTypeCollection::getTypeDisplayName(const ::rtl::OUString& _sURL) const
-{
- return m_aDriverConfig.getDriverTypeDisplayName(_sURL);
-}
-//-------------------------------------------------------------------------
-String ODsnTypeCollection::cutPrefix(const ::rtl::OUString& _sURL) const
-{
- String sURL( _sURL);
- String sRet;
- String sOldPattern;
- StringVector::const_iterator aIter = m_aDsnPrefixes.begin();
- StringVector::const_iterator aEnd = m_aDsnPrefixes.end();
- for(;aIter != aEnd;++aIter)
- {
- WildCard aWildCard(*aIter);
- if ( sOldPattern.Len() < aIter->Len() && aWildCard.Matches(_sURL) )
- {
- if ( aIter->Len() < sURL.Len() )
- sRet = sURL.Copy(sURL.Match(*aIter));
- else
- sRet = sURL.Copy(aIter->Match(sURL));
- sOldPattern = *aIter;
- }
- }
-
- return sRet;
-}
-
-//-------------------------------------------------------------------------
-String ODsnTypeCollection::getPrefix(const ::rtl::OUString& _sURL) const
-{
- String sURL( _sURL);
- String sRet;
- String sOldPattern;
- StringVector::const_iterator aIter = m_aDsnPrefixes.begin();
- StringVector::const_iterator aEnd = m_aDsnPrefixes.end();
- for(;aIter != aEnd;++aIter)
- {
- WildCard aWildCard(*aIter);
- if ( sOldPattern.Len() < aIter->Len() && aWildCard.Matches(sURL) )
- {
- if ( aIter->Len() < sURL.Len() )
- sRet = aIter->Copy(0,sURL.Match(*aIter));
- else
- sRet = sURL.Copy(0,aIter->Match(sURL));
- sRet.EraseTrailingChars('*');
- sOldPattern = *aIter;
- }
- }
-
- return sRet;
-}
-
-//-------------------------------------------------------------------------
-bool ODsnTypeCollection::hasDriver( const sal_Char* _pAsciiPattern ) const
-{
- String sPrefix( getPrefix( ::rtl::OUString::createFromAscii( _pAsciiPattern ) ) );
- return ( sPrefix.Len() > 0 );
-}
-
-// -----------------------------------------------------------------------------
-bool ODsnTypeCollection::isConnectionUrlRequired(const ::rtl::OUString& _sURL) const
-{
- String sURL( _sURL);
- String sRet;
- String sOldPattern;
- StringVector::const_iterator aIter = m_aDsnPrefixes.begin();
- StringVector::const_iterator aEnd = m_aDsnPrefixes.end();
- for(;aIter != aEnd;++aIter)
- {
- WildCard aWildCard(*aIter);
- if ( sOldPattern.Len() < aIter->Len() && aWildCard.Matches(sURL) )
- {
- sRet = *aIter;
- sOldPattern = *aIter;
- }
- }
- return sRet.GetChar(sRet.Len()-1) == '*';
-}
-// -----------------------------------------------------------------------------
-String ODsnTypeCollection::getMediaType(const ::rtl::OUString& _sURL) const
-{
- const ::comphelper::NamedValueCollection& aFeatures = m_aDriverConfig.getMetaData(_sURL);
- return aFeatures.getOrDefault("MediaType",::rtl::OUString());
-}
-// -----------------------------------------------------------------------------
-String ODsnTypeCollection::getDatasourcePrefixFromMediaType(const ::rtl::OUString& _sMediaType,const ::rtl::OUString& _sExtension)
-{
- String sURL, sFallbackURL;
- const uno::Sequence< ::rtl::OUString > aURLs = m_aDriverConfig.getURLs();
- const ::rtl::OUString* pIter = aURLs.getConstArray();
- const ::rtl::OUString* pEnd = pIter + aURLs.getLength();
- for(;pIter != pEnd;++pIter )
- {
- const ::comphelper::NamedValueCollection& aFeatures = m_aDriverConfig.getMetaData(*pIter);
- if ( aFeatures.getOrDefault("MediaType",::rtl::OUString()) == _sMediaType )
- {
- const ::rtl::OUString sFileExtension = aFeatures.getOrDefault("Extension",::rtl::OUString());
- if ( _sExtension == sFileExtension )
- {
- sURL = *pIter;
- break;
- }
- if ( !sFileExtension.getLength() && _sExtension.getLength() )
- sFallbackURL = *pIter;
- }
- }
-
- if ( !sURL.Len() && sFallbackURL.Len() )
- sURL = sFallbackURL;
-
- sURL.EraseTrailingChars('*');
- return sURL;
-}
-// -----------------------------------------------------------------------------
-bool ODsnTypeCollection::isShowPropertiesEnabled( const ::rtl::OUString& _sURL ) const
-{
- return !( _sURL.matchIgnoreAsciiCaseAsciiL("sdbc:embedded:hsqldb",sizeof("sdbc:embedded:hsqldb")-1)
- || _sURL.matchIgnoreAsciiCaseAsciiL("sdbc:address:outlook",sizeof("sdbc:address:outlook")-1)
- || _sURL.matchIgnoreAsciiCaseAsciiL("sdbc:address:outlookexp",sizeof("sdbc:address:outlookexp")-1)
- || _sURL.matchIgnoreAsciiCaseAsciiL("sdbc:address:mozilla:",sizeof("sdbc:address:mozilla:")-1)
- || _sURL.matchIgnoreAsciiCaseAsciiL("sdbc:address:kab",sizeof("sdbc:address:kab")-1)
- || _sURL.matchIgnoreAsciiCaseAsciiL("sdbc:address:evolution:local",sizeof("sdbc:address:evolution:local")-1)
- || _sURL.matchIgnoreAsciiCaseAsciiL("sdbc:address:evolution:groupwise",sizeof("sdbc:address:evolution:groupwise")-1)
- || _sURL.matchIgnoreAsciiCaseAsciiL("sdbc:address:evolution:ldap",sizeof("sdbc:address:evolution:ldap")-1)
- || _sURL.matchIgnoreAsciiCaseAsciiL("sdbc:address:macab",sizeof("sdbc:address:macab")-1) );
-}
-// -----------------------------------------------------------------------------
-void ODsnTypeCollection::extractHostNamePort(const ::rtl::OUString& _rDsn,String& _sDatabaseName,String& _rsHostname,sal_Int32& _nPortNumber) const
-{
- String sUrl = cutPrefix(_rDsn);
- if ( _rDsn.matchIgnoreAsciiCaseAsciiL("jdbc:oracle:thin:",sizeof("jdbc:oracle:thin:")-1) )
- {
- lcl_extractHostAndPort(sUrl,_rsHostname,_nPortNumber);
- if ( !_rsHostname.Len() && sUrl.GetTokenCount(':') == 2 )
- {
- _nPortNumber = -1;
- _rsHostname = sUrl.GetToken(0,':');
- }
- if ( _rsHostname.Len() )
- _rsHostname = _rsHostname.GetToken(_rsHostname.GetTokenCount('@') - 1,'@');
- _sDatabaseName = sUrl.GetToken(sUrl.GetTokenCount(':') - 1,':');
- }
- else if ( _rDsn.matchIgnoreAsciiCaseAsciiL("sdbc:address:ldap:",sizeof("sdbc:address:ldap:")-1) )
- {
- lcl_extractHostAndPort(sUrl,_sDatabaseName,_nPortNumber);
- }
- else if ( _rDsn.matchIgnoreAsciiCaseAsciiL("sdbc:adabas:",sizeof("sdbc:adabas:")-1) )
- {
- if ( sUrl.GetTokenCount(':') == 2 )
- _rsHostname = sUrl.GetToken(0,':');
- _sDatabaseName = sUrl.GetToken(sUrl.GetTokenCount(':') - 1,':');
- }
- else if ( _rDsn.matchIgnoreAsciiCaseAsciiL("sdbc:mysql:mysqlc:",sizeof("sdbc:mysql:mysqlc:")-1) || _rDsn.matchIgnoreAsciiCaseAsciiL("sdbc:mysql:jdbc:",sizeof("sdbc:mysql:jdbc:")-1) )
- {
- lcl_extractHostAndPort(sUrl,_rsHostname,_nPortNumber);
-
- if ( _nPortNumber == -1 && !_rsHostname.Len() && sUrl.GetTokenCount('/') == 2 )
- _rsHostname = sUrl.GetToken(0,'/');
- _sDatabaseName = sUrl.GetToken(sUrl.GetTokenCount('/') - 1,'/');
- }
- else if ( _rDsn.matchIgnoreAsciiCaseAsciiL("sdbc:ado:access:Provider=Microsoft.ACE.OLEDB.12.0;DATA SOURCE=",sizeof("sdbc:ado:access:Provider=Microsoft.ACE.OLEDB.12.0;DATA SOURCE=")-1)
- || _rDsn.matchIgnoreAsciiCaseAsciiL("sdbc:ado:access:PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=",sizeof("sdbc:ado:access:PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=")-1))
- {
- ::rtl::OUString sNewFileName;
- if ( ::osl::FileBase::getFileURLFromSystemPath( sUrl, sNewFileName ) == ::osl::FileBase::E_None )
- {
- _sDatabaseName = sNewFileName;
- }
- }
-}
-// -----------------------------------------------------------------------------
-String ODsnTypeCollection::getJavaDriverClass(const ::rtl::OUString& _sURL) const
-{
- const ::comphelper::NamedValueCollection& aFeatures = m_aDriverConfig.getProperties(_sURL);
- return aFeatures.getOrDefault("JavaDriverClass",::rtl::OUString());
-}
-//-------------------------------------------------------------------------
-sal_Bool ODsnTypeCollection::isFileSystemBased(const ::rtl::OUString& _sURL) const
-{
- const ::comphelper::NamedValueCollection& aFeatures = m_aDriverConfig.getMetaData(_sURL);
- return aFeatures.getOrDefault("FileSystemBased",sal_False);
-}
-// -----------------------------------------------------------------------------
-sal_Bool ODsnTypeCollection::supportsTableCreation(const ::rtl::OUString& _sURL) const
-{
- const ::comphelper::NamedValueCollection& aFeatures = m_aDriverConfig.getMetaData(_sURL);
- return aFeatures.getOrDefault("SupportsTableCreation",sal_False);
-}
-// -----------------------------------------------------------------------------
-sal_Bool ODsnTypeCollection::supportsColumnDescription(const ::rtl::OUString& _sURL) const
-{
- const ::comphelper::NamedValueCollection& aFeatures = m_aDriverConfig.getMetaData(_sURL);
- return aFeatures.getOrDefault("SupportsColumnDescription",sal_False);
-}
-// -----------------------------------------------------------------------------
-sal_Bool ODsnTypeCollection::supportsBrowsing(const ::rtl::OUString& _sURL) const
-{
- const ::comphelper::NamedValueCollection& aFeatures = m_aDriverConfig.getMetaData(_sURL);
- return aFeatures.getOrDefault("SupportsBrowsing",sal_False);
-}
-// -----------------------------------------------------------------------------
-bool ODsnTypeCollection::needsJVM(const String& _sURL) const
-{
- const ::comphelper::NamedValueCollection& aFeatures = m_aDriverConfig.getMetaData(_sURL);
- return aFeatures.getOrDefault("UseJava",sal_False);
-}
-// -----------------------------------------------------------------------------
-Sequence<PropertyValue> ODsnTypeCollection::getDefaultDBSettings( const ::rtl::OUString& _sURL ) const
-{
- const ::comphelper::NamedValueCollection& aProperties = m_aDriverConfig.getProperties(_sURL);
- return aProperties.getPropertyValues();
-}
-
-//-------------------------------------------------------------------------
-bool ODsnTypeCollection::isEmbeddedDatabase( const ::rtl::OUString& _sURL ) const
-{
- const ::rtl::OUString sEmbeddedDatabaseURL = getEmbeddedDatabase();
- WildCard aWildCard(sEmbeddedDatabaseURL);
- return aWildCard.Matches(_sURL);
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString ODsnTypeCollection::getEmbeddedDatabase() const
-{
- ::rtl::OUString sEmbeddedDatabaseURL;
- static const ::rtl::OUString s_sNodeName(RTL_CONSTASCII_USTRINGPARAM("org.openoffice.Office.DataAccess")); ///Installed
- const ::utl::OConfigurationTreeRoot aInstalled = ::utl::OConfigurationTreeRoot::createWithServiceFactory(m_xFactory, s_sNodeName, -1, ::utl::OConfigurationTreeRoot::CM_READONLY);
- if ( aInstalled.isValid() )
- {
- if ( aInstalled.hasByName("EmbeddedDatabases/DefaultEmbeddedDatabase/Value") )
- {
- static const ::rtl::OUString s_sValue(RTL_CONSTASCII_USTRINGPARAM("EmbeddedDatabases/DefaultEmbeddedDatabase/Value"));
-
- aInstalled.getNodeValue(s_sValue) >>= sEmbeddedDatabaseURL;
- if ( sEmbeddedDatabaseURL.getLength() )
- aInstalled.getNodeValue(s_sValue + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/")) + sEmbeddedDatabaseURL + ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("/URL"))) >>= sEmbeddedDatabaseURL;
- }
- }
- if ( !sEmbeddedDatabaseURL.getLength() )
- sEmbeddedDatabaseURL = ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("sdbc:embedded:hsqldb"));
- return sEmbeddedDatabaseURL;
-}
-//-------------------------------------------------------------------------
-ODsnTypeCollection::TypeIterator ODsnTypeCollection::begin() const
-{
- return TypeIterator(this, 0);
-}
-
-//-------------------------------------------------------------------------
-ODsnTypeCollection::TypeIterator ODsnTypeCollection::end() const
-{
- return TypeIterator(this, m_aDsnTypesDisplayNames.size());
-}
-//-------------------------------------------------------------------------
-DATASOURCE_TYPE ODsnTypeCollection::determineType(const String& _rDsn) const
-{
- String sDsn(_rDsn);
- sDsn.EraseTrailingChars('*');
- sal_uInt16 nSeparator = sDsn.Search((sal_Unicode)':');
- if (STRING_NOTFOUND == nSeparator)
- {
- // there should be at least one such separator
- OSL_FAIL("ODsnTypeCollection::implDetermineType : missing the colon !");
- return DST_UNKNOWN;
- }
- // find first :
- sal_uInt16 nOracleSeparator = sDsn.Search((sal_Unicode)':', nSeparator + 1);
- if ( nOracleSeparator != STRING_NOTFOUND )
- {
- nOracleSeparator = sDsn.Search((sal_Unicode)':', nOracleSeparator + 1);
- if (nOracleSeparator != STRING_NOTFOUND && sDsn.EqualsIgnoreCaseAscii("jdbc:oracle:thin", 0, nOracleSeparator))
- return DST_ORACLE_JDBC;
- }
-
- if (sDsn.EqualsIgnoreCaseAscii("jdbc", 0, nSeparator))
- return DST_JDBC;
-
- if (sDsn.EqualsIgnoreCaseAscii("sdbc:embedded:hsqldb", 0, sDsn.Len()))
- return DST_EMBEDDED_HSQLDB;
-
- // find second :
- nSeparator = sDsn.Search((sal_Unicode)':', nSeparator + 1);
- if (STRING_NOTFOUND == nSeparator)
- {
- // at the moment only jdbc is allowed to have just one separator
- OSL_FAIL("ODsnTypeCollection::implDetermineType : missing the second colon !");
- return DST_UNKNOWN;
- }
-
- if (sDsn.EqualsIgnoreCaseAscii("sdbc:ado:", 0, nSeparator))
- {
- nSeparator = sDsn.Search((sal_Unicode)':', nSeparator + 1);
- if (STRING_NOTFOUND != nSeparator && sDsn.EqualsIgnoreCaseAscii("sdbc:ado:access",0, nSeparator) )
- {
- nSeparator = sDsn.Search((sal_Unicode)';', nSeparator + 1);
- if (STRING_NOTFOUND != nSeparator && sDsn.EqualsIgnoreCaseAscii("sdbc:ado:access:Provider=Microsoft.ACE.OLEDB.12.0",0, nSeparator) )
- return DST_MSACCESS_2007;
-
- return DST_MSACCESS;
- }
- return DST_ADO;
- }
-
- struct KnownPrefix
- {
- const sal_Char* pAsciiPrefix;
- const DATASOURCE_TYPE eType;
- const bool bMatchComplete;
-
- KnownPrefix()
- :pAsciiPrefix( NULL )
- ,eType( DST_UNKNOWN )
- ,bMatchComplete( false )
- {
- }
- KnownPrefix( const sal_Char* _p, const DATASOURCE_TYPE _t, const bool _m )
- :pAsciiPrefix( _p )
- ,eType ( _t )
- ,bMatchComplete( _m )
- {
- }
- };
- KnownPrefix aKnowPrefixes[] =
- {
- KnownPrefix( "sdbc:calc:", DST_CALC, false ),
- KnownPrefix( "sdbc:flat:", DST_FLAT, false ),
- KnownPrefix( "sdbc:adabas:", DST_ADABAS, false ),
- KnownPrefix( "sdbc:odbc:", DST_ODBC, false ),
- KnownPrefix( "sdbc:dbase:", DST_DBASE, false ),
- KnownPrefix( "sdbc:mysql:odbc:", DST_MYSQL_ODBC, false ),
- KnownPrefix( "sdbc:mysql:jdbc:", DST_MYSQL_JDBC, false ),
- KnownPrefix( "sdbc:mysql:mysqlc:", DST_MYSQL_NATIVE, false ),
- KnownPrefix( "sdbc:mysqlc:", DST_MYSQL_NATIVE_DIRECT,false ),
-
- KnownPrefix( "sdbc:address:mozilla:", DST_MOZILLA, true ),
- KnownPrefix( "sdbc:address:thunderbird:", DST_THUNDERBIRD, true ),
- KnownPrefix( "sdbc:address:ldap:", DST_LDAP, true ),
- KnownPrefix( "sdbc:address:outlook", DST_OUTLOOK, true ),
- KnownPrefix( "sdbc:address:outlookexp", DST_OUTLOOKEXP, true ),
- KnownPrefix( "sdbc:address:evolution:ldap", DST_EVOLUTION_LDAP, true ),
- KnownPrefix( "sdbc:address:evolution:groupwise",DST_EVOLUTION_GROUPWISE,true ),
- KnownPrefix( "sdbc:address:evolution:local", DST_EVOLUTION, true ),
- KnownPrefix( "sdbc:address:kab", DST_KAB, true ),
- KnownPrefix( "sdbc:address:macab", DST_MACAB, true )
- };
-
- for ( size_t i=0; i < SAL_N_ELEMENTS( aKnowPrefixes ); ++i )
- {
- sal_uInt16 nMatchLen = aKnowPrefixes[i].bMatchComplete ? sDsn.Len() : (sal_uInt16)rtl_str_getLength( aKnowPrefixes[i].pAsciiPrefix );
- if ( sDsn.EqualsIgnoreCaseAscii( aKnowPrefixes[i].pAsciiPrefix, 0, nMatchLen ) )
- return aKnowPrefixes[i].eType;
- }
-
- return DST_UNKNOWN;
-}
-// -----------------------------------------------------------------------------
-void ODsnTypeCollection::fillPageIds(const ::rtl::OUString& _sURL,::std::vector<sal_Int16>& _rOutPathIds) const
-{
- DATASOURCE_TYPE eType = determineType(_sURL);
- switch(eType)
- {
- case DST_ADO:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_ADO);
- break;
- case DST_DBASE:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_DBASE);
- break;
- case DST_FLAT:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_TEXT);
- break;
- case DST_CALC:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_SPREADSHEET);
- break;
- case DST_ODBC:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_ODBC);
- break;
- case DST_JDBC:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_JDBC);
- break;
- case DST_MYSQL_ODBC:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_MYSQL_INTRO);
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_MYSQL_ODBC);
- break;
- case DST_MYSQL_JDBC:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_MYSQL_INTRO);
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_MYSQL_JDBC);
- break;
- case DST_MYSQL_NATIVE:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_MYSQL_INTRO);
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_MYSQL_NATIVE);
- break;
- case DST_ORACLE_JDBC:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_ORACLE);
- break;
- case DST_ADABAS:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_ADABAS);
- break;
- case DST_LDAP:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_LDAP);
- break;
- case DST_MSACCESS:
- case DST_MSACCESS_2007:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_MSACCESS);
- break;
- case DST_OUTLOOKEXP:
- case DST_OUTLOOK:
- case DST_MOZILLA:
- case DST_THUNDERBIRD:
- case DST_EVOLUTION:
- case DST_EVOLUTION_GROUPWISE:
- case DST_EVOLUTION_LDAP:
- case DST_KAB:
- case DST_MACAB:
- case DST_EMBEDDED_HSQLDB:
- break;
- default:
- _rOutPathIds.push_back(PAGE_DBSETUPWIZARD_USERDEFINED);
- break;
- }
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString ODsnTypeCollection::getType(const ::rtl::OUString& _sURL) const
-{
- ::rtl::OUString sOldPattern;
- StringVector::const_iterator aIter = m_aDsnPrefixes.begin();
- StringVector::const_iterator aEnd = m_aDsnPrefixes.end();
- for(;aIter != aEnd;++aIter)
- {
- WildCard aWildCard(*aIter);
- if ( sOldPattern.getLength() < aIter->Len() && aWildCard.Matches(_sURL) )
- {
- sOldPattern = *aIter;
- }
- }
- return sOldPattern;
-}
-// -----------------------------------------------------------------------------
-sal_Int32 ODsnTypeCollection::getIndexOf(const ::rtl::OUString& _sURL) const
-{
- sal_Int32 nRet = -1;
- String sURL( _sURL);
- String sOldPattern;
- StringVector::const_iterator aIter = m_aDsnPrefixes.begin();
- StringVector::const_iterator aEnd = m_aDsnPrefixes.end();
- for(sal_Int32 i = 0;aIter != aEnd;++aIter,++i)
- {
- WildCard aWildCard(*aIter);
- if ( sOldPattern.Len() < aIter->Len() && aWildCard.Matches(sURL) )
- {
- nRet = i;
- sOldPattern = *aIter;
- }
- }
-
- return nRet;
-}
-// -----------------------------------------------------------------------------
-sal_Int32 ODsnTypeCollection::size() const
-{
- return m_aDsnPrefixes.size();
-}
-//=========================================================================
-//= ODsnTypeCollection::TypeIterator
-//=========================================================================
-//-------------------------------------------------------------------------
-ODsnTypeCollection::TypeIterator::TypeIterator(const ODsnTypeCollection* _pContainer, sal_Int32 _nInitialPos)
- :m_pContainer(_pContainer)
- ,m_nPosition(_nInitialPos)
-{
- OSL_ENSURE(m_pContainer, "ODsnTypeCollection::TypeIterator::TypeIterator : invalid container!");
-#if OSL_DEBUG_LEVEL > 0
- ++const_cast<ODsnTypeCollection*>(m_pContainer)->m_nLivingIterators;
-#endif
-}
-
-//-------------------------------------------------------------------------
-ODsnTypeCollection::TypeIterator::TypeIterator(const TypeIterator& _rSource)
- :m_pContainer(_rSource.m_pContainer)
- ,m_nPosition(_rSource.m_nPosition)
-{
-#if OSL_DEBUG_LEVEL > 0
- ++const_cast<ODsnTypeCollection*>(m_pContainer)->m_nLivingIterators;
-#endif
-}
-
-//-------------------------------------------------------------------------
-ODsnTypeCollection::TypeIterator::~TypeIterator()
-{
-#if OSL_DEBUG_LEVEL > 0
- --const_cast<ODsnTypeCollection*>(m_pContainer)->m_nLivingIterators;
-#endif
-}
-
-//-------------------------------------------------------------------------
-String ODsnTypeCollection::TypeIterator::getDisplayName() const
-{
- OSL_ENSURE(m_nPosition < (sal_Int32)m_pContainer->m_aDsnTypesDisplayNames.size(), "ODsnTypeCollection::TypeIterator::getDisplayName : invalid position!");
- return m_pContainer->m_aDsnTypesDisplayNames[m_nPosition];
-}
-// -----------------------------------------------------------------------------
-::rtl::OUString ODsnTypeCollection::TypeIterator::getURLPrefix() const
-{
- OSL_ENSURE(m_nPosition < (sal_Int32)m_pContainer->m_aDsnPrefixes.size(), "ODsnTypeCollection::TypeIterator::getDisplayName : invalid position!");
- return m_pContainer->m_aDsnPrefixes[m_nPosition];
-}
-//-------------------------------------------------------------------------
-const ODsnTypeCollection::TypeIterator& ODsnTypeCollection::TypeIterator::operator++()
-{
- OSL_ENSURE(m_nPosition < (sal_Int32)m_pContainer->m_aDsnTypesDisplayNames.size(), "ODsnTypeCollection::TypeIterator::operator++ : invalid position!");
- if (m_nPosition < (sal_Int32)m_pContainer->m_aDsnTypesDisplayNames.size())
- ++m_nPosition;
- return *this;
-}
-
-//-------------------------------------------------------------------------
-const ODsnTypeCollection::TypeIterator& ODsnTypeCollection::TypeIterator::operator--()
-{
- OSL_ENSURE(m_nPosition >= 0, "ODsnTypeCollection::TypeIterator::operator-- : invalid position!");
- if (m_nPosition >= 0)
- --m_nPosition;
- return *this;
-}
-
-//-------------------------------------------------------------------------
-bool operator==(const ODsnTypeCollection::TypeIterator& lhs, const ODsnTypeCollection::TypeIterator& rhs)
-{
- return (lhs.m_pContainer == rhs.m_pContainer) && (lhs.m_nPosition == rhs.m_nPosition);
-}
-
-//.........................................................................
-} // namespace dbaccess
-//.........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/module_dba.cxx b/dbaccess/source/core/misc/module_dba.cxx
deleted file mode 100644
index 1c4472f12..000000000
--- a/dbaccess/source/core/misc/module_dba.cxx
+++ /dev/null
@@ -1,45 +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_dbaccess.hxx"
-
-#include "module_dba.hxx"
-
-//........................................................................
-namespace dba
-{
-//........................................................................
-
- IMPLEMENT_MODULE( DbaModule, "dba" )
-
-//........................................................................
-} // namespace sdbtools
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/objectnameapproval.cxx b/dbaccess/source/core/misc/objectnameapproval.cxx
deleted file mode 100644
index 06ba68246..000000000
--- a/dbaccess/source/core/misc/objectnameapproval.cxx
+++ /dev/null
@@ -1,104 +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_dbaccess.hxx"
-
-#include "objectnameapproval.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/lang/DisposedException.hpp>
-#include <com/sun/star/sdb/tools/XConnectionTools.hpp>
-#include <com/sun/star/sdb/CommandType.hpp>
-#include <com/sun/star/sdbc/SQLException.hpp>
-/** === end UNO includes === **/
-
-#include <cppuhelper/weakref.hxx>
-#include <cppuhelper/exc_hlp.hxx>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::sdbc::XConnection;
- using ::com::sun::star::uno::WeakReference;
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::lang::DisposedException;
- using ::com::sun::star::sdb::tools::XConnectionTools;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::sdb::tools::XObjectNames;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::sdbc::SQLException;
- /** === end UNO using === **/
-
- namespace CommandType = com::sun::star::sdb::CommandType;
-
- //====================================================================
- //= ObjectNameApproval_Impl
- //====================================================================
- struct ObjectNameApproval_Impl
- {
- WeakReference< XConnection > aConnection;
- sal_Int32 nCommandType;
- };
-
- //====================================================================
- //= ObjectNameApproval
- //====================================================================
- //--------------------------------------------------------------------
- ObjectNameApproval::ObjectNameApproval( const Reference< XConnection >& _rxConnection, ObjectType _eType )
- :m_pImpl( new ObjectNameApproval_Impl )
- {
- m_pImpl->aConnection = _rxConnection;
- m_pImpl->nCommandType = _eType == TypeQuery ? CommandType::QUERY : CommandType::TABLE;
- }
-
- //--------------------------------------------------------------------
- ObjectNameApproval::~ObjectNameApproval()
- {
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL ObjectNameApproval::approveElement( const ::rtl::OUString& _rName, const Reference< XInterface >& /*_rxElement*/ )
- {
- Reference< XConnection > xConnection( m_pImpl->aConnection );
- if ( !xConnection.is() )
- throw DisposedException();
-
- Reference< XConnectionTools > xConnectionTools( xConnection, UNO_QUERY_THROW );
- Reference< XObjectNames > xObjectNames( xConnectionTools->getObjectNames(), UNO_QUERY_THROW );
- xObjectNames->checkNameForCreate( m_pImpl->nCommandType, _rName );
- }
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/sdbcoretools.cxx b/dbaccess/source/core/misc/sdbcoretools.cxx
deleted file mode 100644
index 01cdab86f..000000000
--- a/dbaccess/source/core/misc/sdbcoretools.cxx
+++ /dev/null
@@ -1,177 +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_dbaccess.hxx"
-
-#include "sdbcoretools.hxx"
-#include "dbastrings.hrc"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/beans/XPropertySet.hpp>
-#include <com/sun/star/beans/PropertyValue.hpp>
-#include <com/sun/star/container/XChild.hpp>
-#include <com/sun/star/util/XModifiable.hpp>
-#include <com/sun/star/sdb/XDocumentDataSource.hpp>
-#include <com/sun/star/task/XInteractionRequestStringResolver.hpp>
-#include <com/sun/star/embed/XTransactedObject.hpp>
-#include <com/sun/star/embed/ElementModes.hpp>
-/** === end UNO includes === **/
-
-#include <tools/diagnose_ex.h>
-#include <tools/debug.hxx>
-#include <comphelper/componentcontext.hxx>
-#include <comphelper/interaction.hxx>
-#include <rtl/ref.hxx>
-#include <rtl/ustrbuf.hxx>
-
-//.........................................................................
-namespace dbaccess
-{
-//.........................................................................
-
- using namespace ::com::sun::star::uno;
- using namespace ::com::sun::star::lang;
- using namespace ::com::sun::star::util;
- using namespace ::com::sun::star::io;
- using namespace ::com::sun::star::sdbc;
- using namespace ::com::sun::star::sdb;
- using namespace ::com::sun::star::beans;
- using namespace ::com::sun::star::task;
- using namespace ::com::sun::star::embed;
- using namespace ::com::sun::star::container;
-
- // =========================================================================
- // -------------------------------------------------------------------------
- void notifyDataSourceModified(const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxObject,sal_Bool _bModified)
- {
- Reference< XInterface > xDs = getDataSource( _rxObject );
- Reference<XDocumentDataSource> xDocumentDataSource(xDs,UNO_QUERY);
- if ( xDocumentDataSource.is() )
- xDs = xDocumentDataSource->getDatabaseDocument();
- Reference< XModifiable > xModi( xDs, UNO_QUERY );
- if ( xModi.is() )
- xModi->setModified(_bModified);
- }
-
- // -------------------------------------------------------------------------
- Reference< XInterface > getDataSource( const Reference< XInterface >& _rxDependentObject )
- {
- Reference< XInterface > xParent = _rxDependentObject;
- Reference< XInterface > xReturn;
- while( xParent.is() )
- {
- xReturn = xParent;
- Reference<XChild> xChild(xParent,UNO_QUERY);
- xParent.set(xChild.is() ? xChild->getParent() : Reference< XInterface >(),UNO_QUERY);
- }
- return xReturn;
- }
-
-// -----------------------------------------------------------------------------
- ::rtl::OUString extractExceptionMessage( const ::comphelper::ComponentContext& _rContext, const Any& _rError )
- {
- ::rtl::OUString sDisplayMessage;
-
- try
- {
- Reference< XInteractionRequestStringResolver > xStringResolver;
- if ( _rContext.createComponent( "com.sun.star.task.InteractionRequestStringResolver", xStringResolver ) )
- {
- ::rtl::Reference< ::comphelper::OInteractionRequest > pRequest( new ::comphelper::OInteractionRequest( _rError ) );
- ::rtl::Reference< ::comphelper::OInteractionApprove > pApprove( new ::comphelper::OInteractionApprove );
- pRequest->addContinuation( pApprove.get() );
- Optional< ::rtl::OUString > aMessage = xStringResolver->getStringFromInformationalRequest( pRequest.get() );
- if ( aMessage.IsPresent )
- sDisplayMessage = aMessage.Value;
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
-
- if ( !sDisplayMessage.getLength() )
- {
- Exception aExcept;
- _rError >>= aExcept;
-
- ::rtl::OUStringBuffer aBuffer;
- aBuffer.append( _rError.getValueTypeName() );
- aBuffer.appendAscii( ":\n" );
- aBuffer.append( aExcept.Message );
-
- sDisplayMessage = aBuffer.makeStringAndClear();
- }
-
- return sDisplayMessage;
- }
-
- namespace tools { namespace stor {
-
- // -----------------------------------------------------------------------------
- bool storageIsWritable_nothrow( const Reference< XStorage >& _rxStorage )
- {
- if ( !_rxStorage.is() )
- return false;
-
- sal_Int32 nMode = ElementModes::READ;
- try
- {
- Reference< XPropertySet > xStorageProps( _rxStorage, UNO_QUERY_THROW );
- xStorageProps->getPropertyValue(
- ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "OpenMode" ) ) ) >>= nMode;
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return ( nMode & ElementModes::WRITE ) != 0;
- }
-
- // -----------------------------------------------------------------------------
- bool commitStorageIfWriteable( const Reference< XStorage >& _rxStorage ) SAL_THROW(( IOException, WrappedTargetException, RuntimeException ))
- {
- bool bSuccess = false;
- Reference< XTransactedObject > xTrans( _rxStorage, UNO_QUERY );
- if ( xTrans.is() )
- {
- if ( storageIsWritable_nothrow( _rxStorage ) )
- xTrans->commit();
- bSuccess = true;
- }
- return bSuccess;
- }
-
- } } // tools::stor
-
-//.........................................................................
-} // namespace dbaccess
-//.........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/services.cxx b/dbaccess/source/core/misc/services.cxx
deleted file mode 100644
index d0b90e172..000000000
--- a/dbaccess/source/core/misc/services.cxx
+++ /dev/null
@@ -1,122 +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_dbaccess.hxx"
-
-#include <cppuhelper/factory.hxx>
-#include <cppuhelper/implementationentry.hxx>
-#include "module_dba.hxx"
-#include <osl/diagnose.h>
-#include "DatabaseDataProvider.hxx"
-#include "dbadllapi.hxx"
-
-#include <../dataaccess/databasecontext.hxx>
-
-/********************************************************************************************/
-
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-using namespace ::com::sun::star::registry;
-
-//***************************************************************************************
-//
-// registry functions
-extern "C" void SAL_CALL createRegistryInfo_OCommandDefinition();
-extern "C" void SAL_CALL createRegistryInfo_OComponentDefinition();
-extern "C" void SAL_CALL createRegistryInfo_ORowSet();
-extern "C" void SAL_CALL createRegistryInfo_ODatabaseDocument();
-extern "C" void SAL_CALL createRegistryInfo_ODatabaseSource();
-extern "C" void SAL_CALL createRegistryInfo_DataAccessDescriptorFactory();
-
-namespace dba{
-//--------------------------------------------------------------------------
- ::cppu::ImplementationEntry entries[] = {
- {
- &::dbaccess::DatabaseDataProvider::Create,
- &::dbaccess::DatabaseDataProvider::getImplementationName_Static,
- &::dbaccess::DatabaseDataProvider::getSupportedServiceNames_Static,
- &cppu::createSingleComponentFactory, 0, 0
- },
-
- {
- &dbaccess::ODatabaseContext::Create,
- &dbaccess::ODatabaseContext::getImplementationName_static,
- &dbaccess::ODatabaseContext::getSupportedServiceNames_static,
- &cppu::createOneInstanceComponentFactory, 0, 0
- },
-
- { 0, 0, 0, 0, 0, 0 }
- };
-}
-
-//***************************************************************************************
-//
-// The prescribed C api must be complied with
-// It consists of three functions which must be exported by the module.
-//
-extern "C" void SAL_CALL createRegistryInfo_DBA()
-{
- static sal_Bool bInit = sal_False;
- if (!bInit)
- {
- createRegistryInfo_OCommandDefinition();
- createRegistryInfo_OComponentDefinition();
- createRegistryInfo_ORowSet();
- createRegistryInfo_ODatabaseDocument();
- createRegistryInfo_ODatabaseSource();
- createRegistryInfo_DataAccessDescriptorFactory();
- bInit = sal_True;
- }
-}
-
-//---------------------------------------------------------------------------------------
-extern "C" SAL_DLLPUBLIC_EXPORT void* SAL_CALL dba_component_getFactory(
- const sal_Char* pImplementationName,
- void* pServiceManager,
- void* pRegistryKey)
-{
- createRegistryInfo_DBA();
-
- Reference< XInterface > xRet;
- if (pServiceManager && pImplementationName)
- {
- xRet = ::dba::DbaModule::getInstance().getComponentFactory(
- ::rtl::OUString::createFromAscii( pImplementationName ),
- static_cast< XMultiServiceFactory* >( pServiceManager ) );
- }
-
- if (xRet.is())
- xRet->acquire();
- else
- return cppu::component_getFactoryHelper(
- pImplementationName, pServiceManager, pRegistryKey, dba::entries);
- return xRet.get();
-};
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/userinformation.cxx b/dbaccess/source/core/misc/userinformation.cxx
deleted file mode 100644
index 679236c69..000000000
--- a/dbaccess/source/core/misc/userinformation.cxx
+++ /dev/null
@@ -1,51 +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_dbaccess.hxx"
-
-#include "userinformation.hxx"
-
-#include <osl/diagnose.h>
-#include <i18npool/mslangid.hxx>
-#include <unotools/configmgr.hxx>
-#include <comphelper/types.hxx>
-
-using namespace ::utl;
-using namespace ::com::sun::star::uno;
-using namespace ::com::sun::star::lang;
-
-//--------------------------------------------------------------------------
-UserInformation::UserInformation()
-{
- Any aValue = ConfigManager::GetDirectConfigProperty(ConfigManager::LOCALE);
- LanguageType eLanguage = MsLangId::convertIsoStringToLanguage(comphelper::getString(aValue),'-');
- m_aUserLocale = MsLangId::convertLanguageToLocale(eLanguage);
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/misc/veto.cxx b/dbaccess/source/core/misc/veto.cxx
deleted file mode 100644
index 80ec1e3fa..000000000
--- a/dbaccess/source/core/misc/veto.cxx
+++ /dev/null
@@ -1,78 +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_dbaccess.hxx"
-
-#include "veto.hxx"
-
-/** === begin UNO includes === **/
-/** === end UNO includes === **/
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::RuntimeException;
- /** === end UNO using === **/
-
- //====================================================================
- //= Veto
- //====================================================================
- //--------------------------------------------------------------------
- Veto::Veto( const ::rtl::OUString& _rReason, const Any& _rDetails )
- :m_sReason( _rReason )
- ,m_aDetails( _rDetails )
- {
- }
-
- //--------------------------------------------------------------------
- Veto::~Veto()
- {
- }
-
- //--------------------------------------------------------------------
- ::rtl::OUString SAL_CALL Veto::getReason() throw (RuntimeException)
- {
- return m_sReason;
- }
-
- //--------------------------------------------------------------------
- Any SAL_CALL Veto::getDetails() throw (RuntimeException)
- {
- return m_aDetails;
- }
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/dbdocrecovery.cxx b/dbaccess/source/core/recovery/dbdocrecovery.cxx
deleted file mode 100644
index 5dc9a5e51..000000000
--- a/dbaccess/source/core/recovery/dbdocrecovery.cxx
+++ /dev/null
@@ -1,440 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#include "precompiled_dbaccess.hxx"
-
-#include "recovery/dbdocrecovery.hxx"
-#include "sdbcoretools.hxx"
-#include "storagetextstream.hxx"
-#include "subcomponentrecovery.hxx"
-#include "subcomponents.hxx"
-#include "dbastrings.hrc"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
-#include <com/sun/star/embed/ElementModes.hpp>
-#include <com/sun/star/document/XStorageBasedDocument.hpp>
-#include <com/sun/star/io/XTextOutputStream.hpp>
-#include <com/sun/star/io/XTextInputStream.hpp>
-#include <com/sun/star/io/XActiveDataSource.hpp>
-#include <com/sun/star/io/XActiveDataSink.hpp>
-#include <com/sun/star/util/XModifiable.hpp>
-#include <com/sun/star/beans/XPropertySet.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/componentcontext.hxx>
-#include <comphelper/namedvaluecollection.hxx>
-#include <rtl/ustrbuf.hxx>
-#include <tools/diagnose_ex.h>
-#include <sal/macros.h>
-
-#include <algorithm>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- using ::com::sun::star::embed::XStorage;
- using ::com::sun::star::frame::XController;
- using ::com::sun::star::sdb::application::XDatabaseDocumentUI;
- using ::com::sun::star::lang::XComponent;
- using ::com::sun::star::document::XStorageBasedDocument;
- using ::com::sun::star::beans::PropertyValue;
- using ::com::sun::star::io::XStream;
- using ::com::sun::star::io::XTextOutputStream;
- using ::com::sun::star::io::XActiveDataSource;
- using ::com::sun::star::io::XTextInputStream;
- using ::com::sun::star::io::XActiveDataSink;
- using ::com::sun::star::frame::XModel;
- using ::com::sun::star::util::XModifiable;
- using ::com::sun::star::beans::XPropertySet;
- using ::com::sun::star::lang::XMultiServiceFactory;
- /** === end UNO using === **/
-
- namespace ElementModes = ::com::sun::star::embed::ElementModes;
-
- //====================================================================
- //= helpers
- //====================================================================
- namespace
- {
- // .........................................................................
- static void lcl_getPersistentRepresentation( const MapStringToCompDesc::value_type& i_rComponentDesc, ::rtl::OUStringBuffer& o_rBuffer )
- {
- o_rBuffer.append( i_rComponentDesc.first );
- o_rBuffer.append( sal_Unicode( '=' ) );
- o_rBuffer.append( i_rComponentDesc.second.sName );
- o_rBuffer.append( sal_Unicode( ',' ) );
- o_rBuffer.append( sal_Unicode( i_rComponentDesc.second.bForEditing ? '1' : '0' ) );
- }
-
- // .........................................................................
- static bool lcl_extractCompDesc( const ::rtl::OUString& i_rIniLine, ::rtl::OUString& o_rStorName, SubComponentDescriptor& o_rCompDesc )
- {
- const sal_Int32 nEqualSignPos = i_rIniLine.indexOf( sal_Unicode( '=' ) );
- if ( nEqualSignPos < 1 )
- {
- OSL_FAIL( "lcl_extractCompDesc: invalid map file entry - unexpected pos of '='" );
- return false;
- }
- o_rStorName = i_rIniLine.copy( 0, nEqualSignPos );
-
- const sal_Int32 nCommaPos = i_rIniLine.lastIndexOf( sal_Unicode( ',' ) );
- if ( nCommaPos != i_rIniLine.getLength() - 2 )
- {
- OSL_FAIL( "lcl_extractCompDesc: invalid map file entry - unexpected pos of ','" );
- return false;
- }
- o_rCompDesc.sName = i_rIniLine.copy( nEqualSignPos + 1, nCommaPos - nEqualSignPos - 1 );
- o_rCompDesc.bForEditing = ( i_rIniLine.getStr()[ nCommaPos + 1 ] == '1' );
- return true;
- }
-
- // .........................................................................
- static const ::rtl::OUString& lcl_getRecoveryDataSubStorageName()
- {
- static const ::rtl::OUString s_sRecDataStorName( RTL_CONSTASCII_USTRINGPARAM( "recovery" ) );
- return s_sRecDataStorName;
- }
- // .........................................................................
- static const ::rtl::OUString& lcl_getObjectMapStreamName()
- {
- static const ::rtl::OUString s_sObjectMapStreamName( RTL_CONSTASCII_USTRINGPARAM( "storage-component-map.ini" ) );
- return s_sObjectMapStreamName;
- }
-
- // .........................................................................
- static const ::rtl::OUString& lcl_getMapStreamEncodingName()
- {
- static const ::rtl::OUString s_sMapStreamEncodingName( RTL_CONSTASCII_USTRINGPARAM( "UTF-8" ) );
- return s_sMapStreamEncodingName;
- }
-
- // .........................................................................
- static void lcl_writeObjectMap_throw( const ::comphelper::ComponentContext& i_rContext, const Reference< XStorage >& i_rStorage,
- const MapStringToCompDesc& i_mapStorageToCompDesc )
- {
- if ( i_mapStorageToCompDesc.empty() )
- // nothing to do
- return;
-
- StorageTextOutputStream aTextOutput( i_rContext, i_rStorage, lcl_getObjectMapStreamName() );
-
- aTextOutput.writeLine( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "[storages]" ) ) );
-
- for ( MapStringToCompDesc::const_iterator stor = i_mapStorageToCompDesc.begin();
- stor != i_mapStorageToCompDesc.end();
- ++stor
- )
- {
- ::rtl::OUStringBuffer aLine;
- lcl_getPersistentRepresentation( *stor, aLine );
-
- aTextOutput.writeLine( aLine.makeStringAndClear() );
- }
-
- aTextOutput.writeLine();
- }
-
- // .........................................................................
- static bool lcl_isSectionStart( const ::rtl::OUString& i_rIniLine, ::rtl::OUString& o_rSectionName )
- {
- const sal_Int32 nLen = i_rIniLine.getLength();
- if ( ( nLen > 0 ) && ( i_rIniLine.getStr()[0] == '[' ) && ( i_rIniLine.getStr()[ nLen - 1 ] == ']' ) )
- {
- o_rSectionName = i_rIniLine.copy( 1, nLen -2 );
- return true;
- }
- return false;
- }
-
- // .........................................................................
- static void lcl_stripTrailingLineFeed( ::rtl::OUString& io_rLine )
- {
- const sal_Int32 nLen = io_rLine.getLength();
- if ( ( nLen > 0 ) && ( io_rLine.getStr()[ nLen - 1 ] == '\n' ) )
- io_rLine = io_rLine.copy( 0, nLen - 1 );
- }
-
- // .........................................................................
- static void lcl_readObjectMap_throw( const ::comphelper::ComponentContext& i_rContext, const Reference< XStorage >& i_rStorage,
- MapStringToCompDesc& o_mapStorageToObjectName )
- {
- ENSURE_OR_THROW( i_rStorage.is(), "invalid storage" );
- if ( !i_rStorage->hasByName( lcl_getObjectMapStreamName() ) )
- { // nothing to do, though suspicious
- OSL_FAIL( "lcl_readObjectMap_throw: if there's no map file, then there's expected to be no storage, too!" );
- return;
- }
-
- Reference< XStream > xIniStream( i_rStorage->openStreamElement(
- lcl_getObjectMapStreamName(), ElementModes::READ ), UNO_SET_THROW );
-
- Reference< XTextInputStream > xTextInput( i_rContext.createComponent( "com.sun.star.io.TextInputStream" ), UNO_QUERY_THROW );
- xTextInput->setEncoding( lcl_getMapStreamEncodingName() );
-
- Reference< XActiveDataSink > xDataSink( xTextInput, UNO_QUERY_THROW );
- xDataSink->setInputStream( xIniStream->getInputStream() );
-
- ::rtl::OUString sCurrentSection;
- bool bCurrentSectionIsKnownToBeUnsupported = true;
- while ( !xTextInput->isEOF() )
- {
- ::rtl::OUString sLine = xTextInput->readLine();
- lcl_stripTrailingLineFeed( sLine );
-
- if ( sLine.getLength() == 0 )
- continue;
-
- if ( lcl_isSectionStart( sLine, sCurrentSection ) )
- {
- bCurrentSectionIsKnownToBeUnsupported = false;
- continue;
- }
-
- if ( bCurrentSectionIsKnownToBeUnsupported )
- continue;
-
- // the only section we support so far is "storages"
- if ( !sCurrentSection.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "storages" ) ) )
- {
- bCurrentSectionIsKnownToBeUnsupported = true;
- continue;
- }
-
- ::rtl::OUString sStorageName;
- SubComponentDescriptor aCompDesc;
- if ( !lcl_extractCompDesc( sLine, sStorageName, aCompDesc ) )
- continue;
- o_mapStorageToObjectName[ sStorageName ] = aCompDesc;
- }
- }
-
- // .........................................................................
- static void lcl_markModified( const Reference< XComponent >& i_rSubComponent )
- {
- const Reference< XModifiable > xModify( i_rSubComponent, UNO_QUERY );
- if ( !xModify.is() )
- {
- OSL_FAIL( "lcl_markModified: unhandled case!" );
- return;
- }
-
- xModify->setModified( sal_True );
- }
- }
-
- //====================================================================
- //= DatabaseDocumentRecovery_Data
- //====================================================================
- struct DBACCESS_DLLPRIVATE DatabaseDocumentRecovery_Data
- {
- const ::comphelper::ComponentContext aContext;
-
- DatabaseDocumentRecovery_Data( const ::comphelper::ComponentContext& i_rContext )
- :aContext( i_rContext )
- {
- }
- };
-
- //====================================================================
- //= DatabaseDocumentRecovery
- //====================================================================
- //--------------------------------------------------------------------
- DatabaseDocumentRecovery::DatabaseDocumentRecovery( const ::comphelper::ComponentContext& i_rContext )
- :m_pData( new DatabaseDocumentRecovery_Data( i_rContext ) )
- {
- }
-
- //--------------------------------------------------------------------
- DatabaseDocumentRecovery::~DatabaseDocumentRecovery()
- {
- }
-
- //--------------------------------------------------------------------
- void DatabaseDocumentRecovery::saveModifiedSubComponents( const Reference< XStorage >& i_rTargetStorage,
- const ::std::vector< Reference< XController > >& i_rControllers )
- {
- ENSURE_OR_THROW( i_rTargetStorage.is(), "invalid document storage" );
-
- // create a sub storage for recovery data
- if ( i_rTargetStorage->hasByName( lcl_getRecoveryDataSubStorageName() ) )
- i_rTargetStorage->removeElement( lcl_getRecoveryDataSubStorageName() );
- Reference< XStorage > xRecoveryStorage = i_rTargetStorage->openStorageElement( lcl_getRecoveryDataSubStorageName(), ElementModes::READWRITE );
-
- // store recovery data for open sub components of the given controller(s)
- if ( !i_rControllers.empty() )
- {
- ENSURE_OR_THROW( i_rControllers.size() == 1, "can't handle more than one controller" );
- // At the moment, there can be only one view to a database document. If we ever allow for more than this,
- // then we need a concept for sub documents opened from different controllers (i.e. two document views,
- // and the user opens the very same form in both views). And depending on this, we need a concept for
- // how those are saved to the recovery file.
-
- MapCompTypeToCompDescs aMapCompDescs;
-
- for ( ::std::vector< Reference< XController > >::const_iterator ctrl = i_rControllers.begin();
- ctrl != i_rControllers.end();
- ++ctrl
- )
- {
- Reference< XDatabaseDocumentUI > xDatabaseUI( *ctrl, UNO_QUERY_THROW );
- Sequence< Reference< XComponent > > aComponents( xDatabaseUI->getSubComponents() );
-
- const Reference< XComponent >* component = aComponents.getConstArray();
- const Reference< XComponent >* componentEnd = aComponents.getConstArray() + aComponents.getLength();
- for ( ; component != componentEnd; ++component )
- {
- SubComponentRecovery aComponentRecovery( m_pData->aContext, xDatabaseUI, *component );
- aComponentRecovery.saveToRecoveryStorage( xRecoveryStorage, aMapCompDescs );
- }
- }
-
- for ( MapCompTypeToCompDescs::const_iterator map = aMapCompDescs.begin();
- map != aMapCompDescs.end();
- ++map
- )
- {
- Reference< XStorage > xComponentsStor( xRecoveryStorage->openStorageElement(
- SubComponentRecovery::getComponentsStorageName( map->first ), ElementModes::WRITE | ElementModes::NOCREATE ) );
- lcl_writeObjectMap_throw( m_pData->aContext, xComponentsStor, map->second );
- tools::stor::commitStorageIfWriteable( xComponentsStor );
- }
- }
-
- // commit the recovery storage
- tools::stor::commitStorageIfWriteable( xRecoveryStorage );
- }
-
- //--------------------------------------------------------------------
- void DatabaseDocumentRecovery::recoverSubDocuments( const Reference< XStorage >& i_rDocumentStorage,
- const Reference< XController >& i_rTargetController )
- {
- ENSURE_OR_THROW( i_rDocumentStorage.is(), "illegal document storage" );
- Reference< XDatabaseDocumentUI > xDocumentUI( i_rTargetController, UNO_QUERY_THROW );
-
- if ( !i_rDocumentStorage->hasByName( lcl_getRecoveryDataSubStorageName() ) )
- // that's allowed
- return;
-
- // the "recovery" sub storage
- Reference< XStorage > xRecoveryStorage = i_rDocumentStorage->openStorageElement( lcl_getRecoveryDataSubStorageName(), ElementModes::READ );
-
- // read the map from sub storages to object names
- MapCompTypeToCompDescs aMapCompDescs;
- SubComponentType aKnownTypes[] = { TABLE, QUERY, FORM, REPORT, RELATION_DESIGN };
- for ( size_t i = 0; i < SAL_N_ELEMENTS( aKnownTypes ); ++i )
- {
- if ( !xRecoveryStorage->hasByName( SubComponentRecovery::getComponentsStorageName( aKnownTypes[i] ) ) )
- continue;
-
- Reference< XStorage > xComponentsStor( xRecoveryStorage->openStorageElement(
- SubComponentRecovery::getComponentsStorageName( aKnownTypes[i] ), ElementModes::READ ) );
- lcl_readObjectMap_throw( m_pData->aContext, xComponentsStor, aMapCompDescs[ aKnownTypes[i] ] );
- xComponentsStor->dispose();
- }
-
- // recover all sub components as indicated by the map
- for ( MapCompTypeToCompDescs::const_iterator map = aMapCompDescs.begin();
- map != aMapCompDescs.end();
- ++map
- )
- {
- const SubComponentType eComponentType = map->first;
-
- // the storage for all components of the current type
- Reference< XStorage > xComponentsStor( xRecoveryStorage->openStorageElement(
- SubComponentRecovery::getComponentsStorageName( eComponentType ), ElementModes::READ ), UNO_QUERY_THROW );
-
- // loop thru all components of this type
- for ( MapStringToCompDesc::const_iterator stor = map->second.begin();
- stor != map->second.end();
- ++stor
- )
- {
- const ::rtl::OUString sComponentName( stor->second.sName );
- if ( !xComponentsStor->hasByName( stor->first ) )
- {
- #if OSL_DEBUG_LEVEL > 0
- ::rtl::OStringBuffer message;
- message.append( "DatabaseDocumentRecovery::recoverSubDocuments: inconsistent recovery storage: storage '" );
- message.append( ::rtl::OUStringToOString( stor->first, RTL_TEXTENCODING_ASCII_US ) );
- message.append( "' not found in '" );
- message.append( ::rtl::OUStringToOString( SubComponentRecovery::getComponentsStorageName( eComponentType ), RTL_TEXTENCODING_ASCII_US ) );
- message.append( "', but required per map file!" );
- OSL_FAIL( message.makeStringAndClear() );
- #endif
- continue;
- }
-
- // the controller needs to have a connection to be able to open sub components
- if ( !xDocumentUI->isConnected() )
- xDocumentUI->connect();
-
- // recover the single component
- Reference< XStorage > xCompStor( xComponentsStor->openStorageElement( stor->first, ElementModes::READ ) );
- SubComponentRecovery aComponentRecovery( m_pData->aContext, xDocumentUI, eComponentType );
- Reference< XComponent > xSubComponent( aComponentRecovery.recoverFromStorage( xCompStor, sComponentName, stor->second.bForEditing ) );
-
- // at the moment, we only store, during session save, sub components which are modified. So, set this
- // recovered sub component to "modified", too.
- lcl_markModified( xSubComponent );
- }
-
- xComponentsStor->dispose();
- }
-
- xRecoveryStorage->dispose();
-
- // now that we successfully recovered, removed the "recovery" sub storage
- try
- {
- i_rDocumentStorage->removeElement( lcl_getRecoveryDataSubStorageName() );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/settingsimport.cxx b/dbaccess/source/core/recovery/settingsimport.cxx
deleted file mode 100644
index 5fd359da0..000000000
--- a/dbaccess/source/core/recovery/settingsimport.cxx
+++ /dev/null
@@ -1,297 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#include "precompiled_dbaccess.hxx"
-
-#include "settingsimport.hxx"
-
-/** === begin UNO includes === **/
-/** === end UNO includes === **/
-
-#include <tools/diagnose_ex.h>
-#include <xmloff/xmltoken.hxx>
-#include <xmloff/xmluconv.hxx>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- using ::com::sun::star::xml::sax::XAttributeList;
- /** === end UNO using === **/
-
- //====================================================================
- //= SettingsImport
- //====================================================================
- //--------------------------------------------------------------------
- SettingsImport::SettingsImport()
- :m_refCount( 0 )
- {
- }
-
- //--------------------------------------------------------------------
- SettingsImport::~SettingsImport()
- {
- }
-
- //--------------------------------------------------------------------
- oslInterlockedCount SAL_CALL SettingsImport::acquire()
- {
- return osl_incrementInterlockedCount( &m_refCount );
- }
-
- //--------------------------------------------------------------------
- oslInterlockedCount SAL_CALL SettingsImport::release()
- {
- oslInterlockedCount newCount = osl_decrementInterlockedCount( &m_refCount );
- if ( newCount == 0 )
- delete this;
- return newCount;
- }
-
- //--------------------------------------------------------------------
- void SettingsImport::startElement( const Reference< XAttributeList >& i_rAttributes )
- {
- // find the name of the setting
- if ( i_rAttributes.is() )
- {
- m_sItemName = i_rAttributes->getValueByName( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "config:name" ) ) );
- m_sItemType = i_rAttributes->getValueByName( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "config:type" ) ) );
- }
- }
-
- //--------------------------------------------------------------------
- void SettingsImport::endElement()
- {
- }
-
- //--------------------------------------------------------------------
- void SettingsImport::characters( const ::rtl::OUString& i_rCharacters )
- {
- m_aCharacters.append( i_rCharacters );
- }
-
- //--------------------------------------------------------------------
- void SettingsImport::split( const ::rtl::OUString& i_rElementName, ::rtl::OUString& o_rNamespace, ::rtl::OUString& o_rLocalName )
- {
- o_rNamespace = ::rtl::OUString();
- o_rLocalName = i_rElementName;
- const sal_Int32 nSeparatorPos = i_rElementName.indexOf( ':' );
- if ( nSeparatorPos > -1 )
- {
- o_rNamespace = i_rElementName.copy( 0, nSeparatorPos );
- o_rLocalName = i_rElementName.copy( nSeparatorPos + 1 );
- }
-
- OSL_ENSURE( o_rNamespace.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "config" ) ), "SettingsImport::split: unexpected namespace!" );
- // our recovery file is kind of hand-made, so there shouldn't be anything else than "config".
- // If there is, then just ignore it ...
- }
-
- //====================================================================
- //= IgnoringSettingsImport
- //====================================================================
- //--------------------------------------------------------------------
- ::rtl::Reference< SettingsImport > IgnoringSettingsImport::nextState( const ::rtl::OUString& i_rElementName )
- {
- (void)i_rElementName;
- return this;
- }
-
- //====================================================================
- //= OfficeSettingsImport
- //====================================================================
- //--------------------------------------------------------------------
- OfficeSettingsImport::OfficeSettingsImport( ::comphelper::NamedValueCollection& o_rSettings )
- :m_rSettings( o_rSettings )
- {
- }
-
- //--------------------------------------------------------------------
- OfficeSettingsImport::~OfficeSettingsImport()
- {
- }
-
- //--------------------------------------------------------------------
- ::rtl::Reference< SettingsImport > OfficeSettingsImport::nextState( const ::rtl::OUString& i_rElementName )
- {
- // separate the namespace part from the element name
- ::rtl::OUString sNamespace;
- ::rtl::OUString sLocalName;
- split( i_rElementName, sNamespace, sLocalName );
-
- if ( sLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "config-item-set" ) ) )
- return new ConfigItemSetImport( m_rSettings );
-
-#if OSL_DEBUG_LEVEL > 0
- ::rtl::OString sMessage( "unknown (or unsupported at this place) element name '" );
- sMessage += ::rtl::OUStringToOString( i_rElementName, RTL_TEXTENCODING_UTF8 );
- sMessage += "', ignoring";
- OSL_FAIL( sMessage.getStr() );
-#endif
- return new IgnoringSettingsImport;
- }
-
- //====================================================================
- //= ConfigItemImport
- //====================================================================
- //--------------------------------------------------------------------
- ConfigItemImport::ConfigItemImport( ::comphelper::NamedValueCollection& o_rSettings )
- :m_rSettings( o_rSettings )
- {
- }
-
- //--------------------------------------------------------------------
- ConfigItemImport::~ConfigItemImport()
- {
- }
-
- //--------------------------------------------------------------------
- ::rtl::Reference< SettingsImport > ConfigItemImport::nextState( const ::rtl::OUString& i_rElementName )
- {
- OSL_FAIL( "ConfigItemImport::nextState: unexpected: this class is responsible for child-less items only!" );
- (void)i_rElementName;
- return new IgnoringSettingsImport;
- }
-
- //--------------------------------------------------------------------
- void ConfigItemImport::endElement()
- {
- SettingsImport::endElement();
-
- const ::rtl::OUString sItemName( getItemName() );
- ENSURE_OR_RETURN_VOID( sItemName.getLength(), "no item name -> no item value" );
- Any aValue;
- getItemValue( aValue );
- m_rSettings.put( sItemName, aValue );
- }
-
- //--------------------------------------------------------------------
- void ConfigItemImport::getItemValue( ::com::sun::star::uno::Any& o_rValue ) const
- {
- o_rValue.clear();
-
- // the characters building up th evalue
- ::rtl::OUStringBuffer aCharacters( getAccumulatedCharacters() );
- const ::rtl::OUString sValue = aCharacters.makeStringAndClear();
-
- const ::rtl::OUString& rItemType( getItemType() );
- ENSURE_OR_RETURN_VOID( rItemType.getLength(), "no item type -> no item value" );
-
- if ( ::xmloff::token::IsXMLToken( rItemType, ::xmloff::token::XML_INT ) )
- {
- sal_Int32 nValue(0);
- if ( SvXMLUnitConverter::convertNumber( nValue, sValue ) )
- o_rValue <<= nValue;
- else
- {
- OSL_FAIL( "ConfigItemImport::getItemValue: could not convert an int value!" );
- }
- }
- else if ( ::xmloff::token::IsXMLToken( rItemType, ::xmloff::token::XML_BOOLEAN ) )
- {
- bool nValue( sal_False );
- if ( SvXMLUnitConverter::convertBool( nValue, sValue ) )
- o_rValue <<= nValue;
- else
- {
- OSL_FAIL( "ConfigItemImport::getItemValue: could not convert a boolean value!" );
- }
- }
- else if ( ::xmloff::token::IsXMLToken( rItemType, ::xmloff::token::XML_STRING ) )
- {
- o_rValue <<= sValue;
- }
-#if OSL_DEBUG_LEVEL > 0
- else
- {
- ::rtl::OString sMessage( "ConfigItemImport::getItemValue: unsupported item type '" );
- sMessage += ::rtl::OUStringToOString( rItemType, RTL_TEXTENCODING_UTF8 );
- sMessage += "', ignoring";
- OSL_FAIL( sMessage.getStr() );
- }
-#endif
- }
-
- //====================================================================
- //= ConfigItemSetImport
- //====================================================================
- //--------------------------------------------------------------------
- ConfigItemSetImport::ConfigItemSetImport( ::comphelper::NamedValueCollection& o_rSettings )
- :ConfigItemImport( o_rSettings )
- {
- }
-
- //--------------------------------------------------------------------
- ConfigItemSetImport::~ConfigItemSetImport()
- {
- }
-
- //--------------------------------------------------------------------
- ::rtl::Reference< SettingsImport > ConfigItemSetImport::nextState( const ::rtl::OUString& i_rElementName )
- {
- // separate the namespace part from the element name
- ::rtl::OUString sNamespace;
- ::rtl::OUString sLocalName;
- split( i_rElementName, sNamespace, sLocalName );
-
- if ( sLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "config-item-set" ) ) )
- return new ConfigItemSetImport( m_aChildSettings );
- if ( sLocalName.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "config-item" ) ) )
- return new ConfigItemImport( m_aChildSettings );
-
-#if OSL_DEBUG_LEVEL > 0
- ::rtl::OString sMessage( "unknown element name '" );
- sMessage += ::rtl::OUStringToOString( i_rElementName, RTL_TEXTENCODING_UTF8 );
- sMessage += "', ignoring";
- OSL_FAIL( sMessage.getStr() );
-#endif
- return new IgnoringSettingsImport;
- }
-
- //--------------------------------------------------------------------
- void ConfigItemSetImport::getItemValue( Any& o_rValue ) const
- {
- o_rValue <<= m_aChildSettings.getPropertyValues();
- }
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/settingsimport.hxx b/dbaccess/source/core/recovery/settingsimport.hxx
deleted file mode 100644
index ad241cacf..000000000
--- a/dbaccess/source/core/recovery/settingsimport.hxx
+++ /dev/null
@@ -1,193 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#ifndef SETTINGSIMPORT_HXX
-#define SETTINGSIMPORT_HXX
-
-/** === begin UNO includes === **/
-#include <com/sun/star/xml/sax/XAttributeList.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/namedvaluecollection.hxx>
-#include <rtl/ref.hxx>
-#include <rtl/ustrbuf.hxx>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- //====================================================================
- //= SettingsImport
- //====================================================================
- /** a simplified version of xmloff/DocumentSettingsContext
-
- It would be nice if the DocumentSettingsContext would not be that tightly interwoven with the SvXMLImport
- class, so we could re-use it here ...
- */
- class SettingsImport : public ::rtl::IReference
- {
- public:
- SettingsImport();
-
- // IReference
- virtual oslInterlockedCount SAL_CALL acquire();
- virtual oslInterlockedCount SAL_CALL release();
-
- // own overriables
- virtual ::rtl::Reference< SettingsImport > nextState(
- const ::rtl::OUString& i_rElementName
- ) = 0;
- virtual void startElement(
- const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XAttributeList >& i_rAttributes
- );
- virtual void endElement();
- virtual void characters( const ::rtl::OUString& i_rCharacters );
-
- protected:
- virtual ~SettingsImport();
-
- protected:
- static void split( const ::rtl::OUString& i_rElementName, ::rtl::OUString& o_rNamespace, ::rtl::OUString& o_rLocalName );
-
- protected:
- const ::rtl::OUString& getItemName() const { return m_sItemName; }
- const ::rtl::OUString& getItemType() const { return m_sItemType; }
- const ::rtl::OUStringBuffer& getAccumulatedCharacters() const { return m_aCharacters; }
-
- private:
- oslInterlockedCount m_refCount;
- // value of the config:name attribute, if any
- ::rtl::OUString m_sItemName;
- // value of the config:type attribute, if any
- ::rtl::OUString m_sItemType;
- // accumulated characters, if any
- ::rtl::OUStringBuffer m_aCharacters;
- };
-
- //====================================================================
- //= IgnoringSettingsImport
- //====================================================================
- class IgnoringSettingsImport : public SettingsImport
- {
- public:
- IgnoringSettingsImport()
- {
- }
-
- // SettingsImport overridables
- virtual ::rtl::Reference< SettingsImport > nextState(
- const ::rtl::OUString& i_rElementName
- );
-
- private:
- ~IgnoringSettingsImport()
- {
- }
- };
-
- //====================================================================
- //= OfficeSettingsImport
- //====================================================================
- class OfficeSettingsImport : public SettingsImport
- {
- public:
- OfficeSettingsImport( ::comphelper::NamedValueCollection& o_rSettings );
-
- // SettingsImport overridables
- virtual ::rtl::Reference< SettingsImport > nextState(
- const ::rtl::OUString& i_rElementName
- );
-
- protected:
- ~OfficeSettingsImport();
-
- private:
- // the settings collection to which |this| will contribute a single setting
- ::comphelper::NamedValueCollection& m_rSettings;
- };
-
- //====================================================================
- //= ConfigItemSetImport
- //====================================================================
- class ConfigItemImport : public SettingsImport
- {
- public:
- ConfigItemImport( ::comphelper::NamedValueCollection& o_rSettings );
-
- protected:
- ~ConfigItemImport();
-
- public:
- // SettingsImport overridables
- virtual ::rtl::Reference< SettingsImport > nextState(
- const ::rtl::OUString& i_rElementName
- );
- virtual void endElement();
-
- protected:
- // own overridables
- /// retrieves the value represented by the element
- virtual void getItemValue( ::com::sun::star::uno::Any& o_rValue ) const;
-
- private:
- // the settings collection to which |this| will contribute a single setting
- ::comphelper::NamedValueCollection& m_rSettings;
- };
-
- //====================================================================
- //= ConfigItemSetImport
- //====================================================================
- class ConfigItemSetImport : public ConfigItemImport
- {
- public:
- ConfigItemSetImport( ::comphelper::NamedValueCollection& o_rSettings );
-
- protected:
- ~ConfigItemSetImport();
-
- public:
- // SettingsImport overridables
- virtual ::rtl::Reference< SettingsImport > nextState(
- const ::rtl::OUString& i_rElementName
- );
-
- protected:
- // ConfigItemImport overridables
- virtual void getItemValue( ::com::sun::star::uno::Any& o_rValue ) const;
-
- private:
- /// the settings represented by our child elements
- ::comphelper::NamedValueCollection m_aChildSettings;
- };
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // SETTINGSIMPORT_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/storagestream.cxx b/dbaccess/source/core/recovery/storagestream.cxx
deleted file mode 100644
index 4a7f9e603..000000000
--- a/dbaccess/source/core/recovery/storagestream.cxx
+++ /dev/null
@@ -1,129 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#include "precompiled_dbaccess.hxx"
-
-#include "storagestream.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/embed/ElementModes.hpp>
-/** === end UNO includes === **/
-
-#include <tools/diagnose_ex.h>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- using ::com::sun::star::embed::XStorage;
- using ::com::sun::star::io::XStream;
- /** === end UNO using === **/
- namespace ElementModes = ::com::sun::star::embed::ElementModes;
-
- //====================================================================
- //= StorageOutputStream
- //====================================================================
- //--------------------------------------------------------------------
- StorageOutputStream::StorageOutputStream( const ::comphelper::ComponentContext& i_rContext,
- const Reference< XStorage >& i_rParentStorage,
- const ::rtl::OUString& i_rStreamName
- )
- :m_rContext( i_rContext )
- {
- ENSURE_OR_THROW( i_rParentStorage.is(), "illegal stream" );
-
- const Reference< XStream > xStream(
- i_rParentStorage->openStreamElement( i_rStreamName, ElementModes::READWRITE ), UNO_QUERY_THROW );
- m_xOutputStream.set( xStream->getOutputStream(), UNO_SET_THROW );
- }
-
- //--------------------------------------------------------------------
- StorageOutputStream::~StorageOutputStream()
- {
- }
-
- //--------------------------------------------------------------------
- void StorageOutputStream::close()
- {
- ENSURE_OR_RETURN_VOID( m_xOutputStream.is(), "already closed" );
- m_xOutputStream->closeOutput();
- m_xOutputStream.clear();
-
- // if you add additional functionality here, be aware that there are derived classes which
- // (legitimately) do not call this method here.
- }
-
- //====================================================================
- //= StorageInputStream
- //====================================================================
- //--------------------------------------------------------------------
- StorageInputStream::StorageInputStream( const ::comphelper::ComponentContext& i_rContext,
- const Reference< XStorage >& i_rParentStorage,
- const ::rtl::OUString& i_rStreamName
- )
- :m_rContext( i_rContext )
- {
- ENSURE_OR_THROW( i_rParentStorage.is(), "illegal stream" );
-
- const Reference< XStream > xStream(
- i_rParentStorage->openStreamElement( i_rStreamName, ElementModes::READ ), UNO_QUERY_THROW );
- m_xInputStream.set( xStream->getInputStream(), UNO_SET_THROW );
- }
-
- //--------------------------------------------------------------------
- StorageInputStream::~StorageInputStream()
- {
- }
-
- //--------------------------------------------------------------------
- void StorageInputStream::close()
- {
- ENSURE_OR_RETURN_VOID( m_xInputStream.is(), "already closed" );
- m_xInputStream->closeInput();
- m_xInputStream.clear();
-
- // if you add additional functionality here, be aware that there are derived classes which
- // (legitimately) do not call this method here.
- }
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/storagestream.hxx b/dbaccess/source/core/recovery/storagestream.hxx
deleted file mode 100644
index efe9846f4..000000000
--- a/dbaccess/source/core/recovery/storagestream.hxx
+++ /dev/null
@@ -1,112 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#ifndef STORAGESTREAM_HXX
-#define STORAGESTREAM_HXX
-
-#include "dbaccessdllapi.h"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/embed/XStorage.hpp>
-/** === end UNO includes === **/
-
-namespace comphelper
-{
- class ComponentContext;
-}
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- //====================================================================
- //= StorageOutputStream
- //====================================================================
- /** convenience wrapper around a stream living in a storage
- */
- class DBACCESS_DLLPRIVATE StorageOutputStream
- {
- public:
- StorageOutputStream(
- const ::comphelper::ComponentContext& i_rContext,
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rParentStorage,
- const ::rtl::OUString& i_rStreamName
- );
- virtual ~StorageOutputStream();
-
- /** simply calls closeOutput on our output stream, override to extend/modify this behavior
- */
- virtual void close();
-
- protected:
- const ::comphelper::ComponentContext& getContext() const { return m_rContext; }
- const ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >&
- getOutputStream() const { return m_xOutputStream; }
-
- private:
- const ::comphelper::ComponentContext& m_rContext;
- ::com::sun::star::uno::Reference< ::com::sun::star::io::XOutputStream >
- m_xOutputStream;
- };
-
- //====================================================================
- //= StorageInputStream
- //====================================================================
- /** convenience wrapper around a stream living in a storage
- */
- class DBACCESS_DLLPRIVATE StorageInputStream
- {
- public:
- StorageInputStream(
- const ::comphelper::ComponentContext& i_rContext,
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rParentStorage,
- const ::rtl::OUString& i_rStreamName
- );
- virtual ~StorageInputStream();
-
- /** simply calls closeInput on our input stream, override to extend/modify this behavior
- */
- virtual void close();
-
- protected:
- const ::comphelper::ComponentContext& getContext() const { return m_rContext; }
- const ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >&
- getInputStream() const { return m_xInputStream; }
-
- private:
- const ::comphelper::ComponentContext& m_rContext;
- ::com::sun::star::uno::Reference< ::com::sun::star::io::XInputStream >
- m_xInputStream;
- };
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // STORAGESTREAM_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/storagetextstream.cxx b/dbaccess/source/core/recovery/storagetextstream.cxx
deleted file mode 100644
index 77b6d53dd..000000000
--- a/dbaccess/source/core/recovery/storagetextstream.cxx
+++ /dev/null
@@ -1,133 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#include "precompiled_dbaccess.hxx"
-
-#include "storagetextstream.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/io/XTextOutputStream.hpp>
-#include <com/sun/star/io/XActiveDataSource.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/componentcontext.hxx>
-#include <tools/diagnose_ex.h>
-
-//......................................................................................................................
-namespace dbaccess
-{
-//......................................................................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- using ::com::sun::star::embed::XStorage;
- using ::com::sun::star::io::XTextOutputStream;
- using ::com::sun::star::io::XActiveDataSource;
- /** === end UNO using === **/
-
- //==================================================================================================================
- //= StorageTextOutputStream_Data
- //==================================================================================================================
- struct StorageTextOutputStream_Data
- {
- Reference< XTextOutputStream > xTextOutput;
- };
-
- //==================================================================================================================
- //= helper
- //==================================================================================================================
- namespace
- {
- //--------------------------------------------------------------------------------------------------------------
- static const ::rtl::OUString& lcl_getTextStreamEncodingName()
- {
- static const ::rtl::OUString s_sMapStreamEncodingName( RTL_CONSTASCII_USTRINGPARAM( "UTF-8" ) );
- return s_sMapStreamEncodingName;
- }
-
- //--------------------------------------------------------------------------------------------------------------
- static const ::rtl::OUString& lcl_getLineFeed()
- {
- static const ::rtl::OUString s_sLineFeed( sal_Unicode( '\n' ) );
- return s_sLineFeed;
- }
- }
-
- //==================================================================================================================
- //= StorageTextOutputStream
- //==================================================================================================================
- //------------------------------------------------------------------------------------------------------------------
- StorageTextOutputStream::StorageTextOutputStream( const ::comphelper::ComponentContext& i_rContext,
- const Reference< XStorage >& i_rParentStorage,
- const ::rtl::OUString& i_rStreamName
- )
- :StorageOutputStream( i_rContext, i_rParentStorage, i_rStreamName )
- ,m_pData( new StorageTextOutputStream_Data )
- {
- m_pData->xTextOutput.set( i_rContext.createComponent( "com.sun.star.io.TextOutputStream" ), UNO_QUERY_THROW );
- m_pData->xTextOutput->setEncoding( lcl_getTextStreamEncodingName() );
-
- Reference< XActiveDataSource > xDataSource( m_pData->xTextOutput, UNO_QUERY_THROW );
- xDataSource->setOutputStream( getOutputStream() );
- }
-
- //------------------------------------------------------------------------------------------------------------------
- StorageTextOutputStream::~StorageTextOutputStream()
- {
- }
-
- //------------------------------------------------------------------------------------------------------------------
- void StorageTextOutputStream::writeLine( const ::rtl::OUString& i_rLine )
- {
- ENSURE_OR_RETURN_VOID( m_pData->xTextOutput.is(), "no text output" );
-
- m_pData->xTextOutput->writeString( i_rLine );
- m_pData->xTextOutput->writeString( lcl_getLineFeed() );
- }
-
- //------------------------------------------------------------------------------------------------------------------
- void StorageTextOutputStream::writeLine()
- {
- ENSURE_OR_RETURN_VOID( m_pData->xTextOutput.is(), "no text output" );
-
- m_pData->xTextOutput->writeString( lcl_getLineFeed() );
- }
-
-//......................................................................................................................
-} // namespace dbaccess
-//......................................................................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/storagetextstream.hxx b/dbaccess/source/core/recovery/storagetextstream.hxx
deleted file mode 100644
index 91d7592f4..000000000
--- a/dbaccess/source/core/recovery/storagetextstream.hxx
+++ /dev/null
@@ -1,69 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#ifndef STORAGETEXTSTREAM_HXX
-#define STORAGETEXTSTREAM_HXX
-
-#include "storagestream.hxx"
-
-/** === begin UNO includes === **/
-/** === end UNO includes === **/
-
-#include <memory>
-
-//......................................................................................................................
-namespace dbaccess
-{
-//......................................................................................................................
-
- //==================================================================================================================
- //= StorageTextStream
- //==================================================================================================================
- struct StorageTextOutputStream_Data;
- class DBACCESS_DLLPRIVATE StorageTextOutputStream : public StorageOutputStream
- {
- public:
- StorageTextOutputStream(
- const ::comphelper::ComponentContext& i_rContext,
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rParentStorage,
- const ::rtl::OUString& i_rStreamName
- );
- ~StorageTextOutputStream();
-
- void writeLine( const ::rtl::OUString& i_rLine );
- void writeLine();
-
- private:
- ::std::auto_ptr< StorageTextOutputStream_Data > m_pData;
- };
-
-//......................................................................................................................
-} // namespace dbaccess
-//......................................................................................................................
-
-#endif // STORAGETEXTSTREAM_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/storagexmlstream.cxx b/dbaccess/source/core/recovery/storagexmlstream.cxx
deleted file mode 100644
index 860f77298..000000000
--- a/dbaccess/source/core/recovery/storagexmlstream.cxx
+++ /dev/null
@@ -1,200 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#include "precompiled_dbaccess.hxx"
-
-#include "storagexmlstream.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
-#include <com/sun/star/io/XActiveDataSource.hpp>
-#include <com/sun/star/xml/sax/XParser.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/componentcontext.hxx>
-#include <cppuhelper/implbase1.hxx>
-#include <rtl/ref.hxx>
-#include <tools/diagnose_ex.h>
-#include <xmloff/attrlist.hxx>
-
-#include <stack>
-
-//......................................................................................................................
-namespace dbaccess
-{
-//......................................................................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- using ::com::sun::star::embed::XStorage;
- using ::com::sun::star::xml::sax::XDocumentHandler;
- using ::com::sun::star::xml::sax::XAttributeList;
- using ::com::sun::star::io::XStream;
- using ::com::sun::star::io::XOutputStream;
- using ::com::sun::star::io::XActiveDataSource;
- using ::com::sun::star::xml::sax::XParser;
- using ::com::sun::star::xml::sax::InputSource;
- /** === end UNO using === **/
-
- //==================================================================================================================
- //= StorageXMLOutputStream_Data
- //==================================================================================================================
- struct StorageXMLOutputStream_Data
- {
- Reference< XDocumentHandler > xHandler;
- ::std::stack< ::rtl::OUString > aElements;
- ::rtl::Reference< SvXMLAttributeList > xAttributes;
- };
-
- //==================================================================================================================
- //= StorageXMLOutputStream
- //==================================================================================================================
- //------------------------------------------------------------------------------------------------------------------
- StorageXMLOutputStream::StorageXMLOutputStream( const ::comphelper::ComponentContext& i_rContext,
- const Reference< XStorage >& i_rParentStorage,
- const ::rtl::OUString& i_rStreamName )
- :StorageOutputStream( i_rContext, i_rParentStorage, i_rStreamName )
- ,m_pData( new StorageXMLOutputStream_Data )
- {
- const Reference< XActiveDataSource > xSaxWriter( i_rContext.createComponent( "com.sun.star.xml.sax.Writer" ), UNO_QUERY_THROW );
- xSaxWriter->setOutputStream( getOutputStream() );
-
- m_pData->xHandler.set( xSaxWriter, UNO_QUERY_THROW );
- m_pData->xHandler->startDocument();
-
- m_pData->xAttributes = new SvXMLAttributeList;
- }
-
- //------------------------------------------------------------------------------------------------------------------
- StorageXMLOutputStream::~StorageXMLOutputStream()
- {
- }
-
- //------------------------------------------------------------------------------------------------------------------
- void StorageXMLOutputStream::close()
- {
- ENSURE_OR_RETURN_VOID( m_pData->xHandler.is(), "illegal document handler" );
- m_pData->xHandler->endDocument();
- // do not call the base class, it would call closeOutput on the output stream, which is already done by
- // endDocument
- }
-
- //------------------------------------------------------------------------------------------------------------------
- void StorageXMLOutputStream::addAttribute( const ::rtl::OUString& i_rName, const ::rtl::OUString& i_rValue ) const
- {
- m_pData->xAttributes->AddAttribute( i_rName, i_rValue );
- }
-
- //------------------------------------------------------------------------------------------------------------------
- void StorageXMLOutputStream::startElement( const ::rtl::OUString& i_rElementName ) const
- {
- ENSURE_OR_RETURN_VOID( m_pData->xHandler.is(), "no document handler" );
-
- m_pData->xHandler->startElement( i_rElementName, m_pData->xAttributes.get() );
- m_pData->xAttributes = new SvXMLAttributeList;
- m_pData->aElements.push( i_rElementName );
- }
-
- //------------------------------------------------------------------------------------------------------------------
- void StorageXMLOutputStream::endElement() const
- {
- ENSURE_OR_RETURN_VOID( m_pData->xHandler.is(), "no document handler" );
- ENSURE_OR_RETURN_VOID( !m_pData->aElements.empty(), "no element on the stack" );
-
- const ::rtl::OUString sElementName( m_pData->aElements.top() );
- m_pData->xHandler->endElement( sElementName );
- m_pData->aElements.pop();
- }
-
- //------------------------------------------------------------------------------------------------------------------
- void StorageXMLOutputStream::ignorableWhitespace( const ::rtl::OUString& i_rWhitespace ) const
- {
- ENSURE_OR_RETURN_VOID( m_pData->xHandler.is(), "no document handler" );
-
- m_pData->xHandler->ignorableWhitespace( i_rWhitespace );
- }
-
- //------------------------------------------------------------------------------------------------------------------
- void StorageXMLOutputStream::characters( const ::rtl::OUString& i_rCharacters ) const
- {
- ENSURE_OR_RETURN_VOID( m_pData->xHandler.is(), "no document handler" );
-
- m_pData->xHandler->characters( i_rCharacters );
- }
-
- //==================================================================================================================
- //= StorageXMLInputStream_Data
- //==================================================================================================================
- struct StorageXMLInputStream_Data
- {
- Reference< XParser > xParser;
- };
-
- //==================================================================================================================
- //= StorageXMLInputStream
- //==================================================================================================================
- //------------------------------------------------------------------------------------------------------------------
- StorageXMLInputStream::StorageXMLInputStream( const ::comphelper::ComponentContext& i_rContext,
- const Reference< XStorage >& i_rParentStorage,
- const ::rtl::OUString& i_rStreamName )
- :StorageInputStream( i_rContext, i_rParentStorage, i_rStreamName )
- ,m_pData( new StorageXMLInputStream_Data )
- {
- m_pData->xParser.set( i_rContext.createComponent( "com.sun.star.xml.sax.Parser" ), UNO_QUERY_THROW );
- }
-
- //------------------------------------------------------------------------------------------------------------------
- void StorageXMLInputStream::import( const Reference< XDocumentHandler >& i_rHandler )
- {
- ENSURE_OR_THROW( i_rHandler.is(), "illegal document handler (NULL)" );
-
- InputSource aInputSource;
- aInputSource.aInputStream = getInputStream();
-
- m_pData->xParser->setDocumentHandler( i_rHandler );
- m_pData->xParser->parseStream( aInputSource );
- }
-
- //------------------------------------------------------------------------------------------------------------------
- StorageXMLInputStream::~StorageXMLInputStream()
- {
- }
-
-//......................................................................................................................
-} // namespace dbaccess
-//......................................................................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/storagexmlstream.hxx b/dbaccess/source/core/recovery/storagexmlstream.hxx
deleted file mode 100644
index 92be6dad3..000000000
--- a/dbaccess/source/core/recovery/storagexmlstream.hxx
+++ /dev/null
@@ -1,116 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#ifndef STORAGEXMLSTREAM_HXX
-#define STORAGEXMLSTREAM_HXX
-
-#include "storagestream.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/embed/XStorage.hpp>
-#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
-/** === end UNO includes === **/
-
-#include <memory>
-
-namespace comphelper
-{
- class ComponentContext;
-}
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- //====================================================================
- //= StorageXMLOutputStream
- //====================================================================
- struct StorageXMLOutputStream_Data;
- class DBACCESS_DLLPRIVATE StorageXMLOutputStream : public StorageOutputStream
- {
- public:
- StorageXMLOutputStream(
- const ::comphelper::ComponentContext& i_rContext,
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rParentStorage,
- const ::rtl::OUString& i_rStreamName
- );
- ~StorageXMLOutputStream();
-
- // StorageOutputStream overridables
- virtual void close();
-
- void addAttribute( const ::rtl::OUString& i_rName, const ::rtl::OUString& i_rValue ) const;
-
- void startElement( const ::rtl::OUString& i_rElementName ) const;
- void endElement() const;
-
- void ignorableWhitespace( const ::rtl::OUString& i_rWhitespace ) const;
- void characters( const ::rtl::OUString& i_rCharacters ) const;
-
- private:
- StorageXMLOutputStream(); // never implemented
- StorageXMLOutputStream( const StorageXMLOutputStream& ); // never implemented
- StorageXMLOutputStream& operator=( const StorageXMLOutputStream& ); // never implemented
-
- private:
- ::std::auto_ptr< StorageXMLOutputStream_Data > m_pData;
- };
-
- //====================================================================
- //= StorageXMLInputStream
- //====================================================================
- struct StorageXMLInputStream_Data;
- class DBACCESS_DLLPRIVATE StorageXMLInputStream : public StorageInputStream
- {
- public:
- StorageXMLInputStream(
- const ::comphelper::ComponentContext& i_rContext,
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rParentStorage,
- const ::rtl::OUString& i_rStreamName
- );
- ~StorageXMLInputStream();
-
- void import(
- const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XDocumentHandler >& i_rHandler
- );
-
- private:
- StorageXMLInputStream(); // never implemented
- StorageXMLInputStream( const StorageXMLInputStream& ); // never implemented
- StorageXMLInputStream& operator=( const StorageXMLInputStream& ); // never implemented
-
- private:
- ::std::auto_ptr< StorageXMLInputStream_Data > m_pData;
- };
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // STORAGEXMLSTREAM_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/subcomponentloader.cxx b/dbaccess/source/core/recovery/subcomponentloader.cxx
deleted file mode 100644
index 6c169c7ce..000000000
--- a/dbaccess/source/core/recovery/subcomponentloader.cxx
+++ /dev/null
@@ -1,203 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#include "precompiled_dbaccess.hxx"
-
-#include "subcomponentloader.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/ucb/Command.hpp>
-#include <com/sun/star/frame/XController2.hpp>
-/** === end UNO includes === **/
-
-#include <tools/diagnose_ex.h>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- using ::com::sun::star::frame::XController;
- using ::com::sun::star::frame::XFrame;
- using ::com::sun::star::awt::XWindow;
- using ::com::sun::star::awt::WindowEvent;
- using ::com::sun::star::lang::EventObject;
- using ::com::sun::star::ucb::Command;
- using ::com::sun::star::ucb::XCommandProcessor;
- using ::com::sun::star::frame::XController2;
- using ::com::sun::star::lang::XComponent;
- /** === end UNO using === **/
-
- //====================================================================
- //= SubComponentLoader
- //====================================================================
- struct DBACCESS_DLLPRIVATE SubComponentLoader_Data
- {
- const Reference< XCommandProcessor > xDocDefCommands;
- const Reference< XComponent > xNonDocComponent;
- Reference< XWindow > xAppComponentWindow;
-
- SubComponentLoader_Data( const Reference< XCommandProcessor >& i_rDocumentDefinition )
- :xDocDefCommands( i_rDocumentDefinition, UNO_SET_THROW )
- ,xNonDocComponent()
- {
- }
-
- SubComponentLoader_Data( const Reference< XComponent >& i_rNonDocumentComponent )
- :xDocDefCommands()
- ,xNonDocComponent( i_rNonDocumentComponent, UNO_SET_THROW )
- {
- }
- };
-
- //====================================================================
- //= helper
- //====================================================================
- namespace
- {
- //................................................................
- void lcl_onWindowShown_nothrow( const SubComponentLoader_Data& i_rData )
- {
- try
- {
- if ( i_rData.xDocDefCommands.is() )
- {
- Command aCommandOpen;
- aCommandOpen.Name = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "show" ) );
-
- const sal_Int32 nCommandIdentifier = i_rData.xDocDefCommands->createCommandIdentifier();
- i_rData.xDocDefCommands->execute( aCommandOpen, nCommandIdentifier, NULL );
- }
- else
- {
- const Reference< XController > xController( i_rData.xNonDocComponent, UNO_QUERY_THROW );
- const Reference< XFrame > xFrame( xController->getFrame(), UNO_SET_THROW );
- const Reference< XWindow > xWindow( xFrame->getContainerWindow(), UNO_SET_THROW );
- xWindow->setVisible( sal_True );
- }
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- }
- }
-
- //====================================================================
- //= SubComponentLoader
- //====================================================================
- //--------------------------------------------------------------------
- SubComponentLoader::SubComponentLoader( const Reference< XController >& i_rApplicationController,
- const Reference< XCommandProcessor >& i_rSubDocumentDefinition )
- :m_pData( new SubComponentLoader_Data( i_rSubDocumentDefinition ) )
- {
- // add as window listener to the controller's container window, so we get notified when it is shown
- Reference< XController2 > xController( i_rApplicationController, UNO_QUERY_THROW );
- m_pData->xAppComponentWindow.set( xController->getComponentWindow(), UNO_SET_THROW );
-
- osl_incrementInterlockedCount( &m_refCount );
- {
- m_pData->xAppComponentWindow->addWindowListener( this );
- }
- osl_decrementInterlockedCount( &m_refCount );
- }
-
- //--------------------------------------------------------------------
- SubComponentLoader::SubComponentLoader( const Reference< XController >& i_rApplicationController,
- const Reference< XComponent >& i_rNonDocumentComponent )
- :m_pData( new SubComponentLoader_Data( i_rNonDocumentComponent ) )
- {
- // add as window listener to the controller's container window, so we get notified when it is shown
- Reference< XController2 > xController( i_rApplicationController, UNO_QUERY_THROW );
- m_pData->xAppComponentWindow.set( xController->getComponentWindow(), UNO_SET_THROW );
-
- osl_incrementInterlockedCount( &m_refCount );
- {
- m_pData->xAppComponentWindow->addWindowListener( this );
- }
- osl_decrementInterlockedCount( &m_refCount );
- }
-
- //--------------------------------------------------------------------
- SubComponentLoader::~SubComponentLoader()
- {
- delete m_pData, m_pData = NULL;
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SubComponentLoader::windowResized( const WindowEvent& i_rEvent ) throw (RuntimeException)
- {
- // not interested in
- (void)i_rEvent;
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SubComponentLoader::windowMoved( const WindowEvent& i_rEvent ) throw (RuntimeException)
- {
- // not interested in
- (void)i_rEvent;
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SubComponentLoader::windowShown( const EventObject& i_rEvent ) throw (RuntimeException)
- {
- (void)i_rEvent;
-
- lcl_onWindowShown_nothrow( *m_pData );
- m_pData->xAppComponentWindow->removeWindowListener( this );
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SubComponentLoader::windowHidden( const EventObject& i_rEvent ) throw (RuntimeException)
- {
- // not interested in
- (void)i_rEvent;
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SubComponentLoader::disposing( const EventObject& i_rEvent ) throw (RuntimeException)
- {
- // not interested in
- (void)i_rEvent;
- }
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/subcomponentloader.hxx b/dbaccess/source/core/recovery/subcomponentloader.hxx
deleted file mode 100644
index 190ad0b4a..000000000
--- a/dbaccess/source/core/recovery/subcomponentloader.hxx
+++ /dev/null
@@ -1,90 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#ifndef SUBCOMPONENTLOADER_HXX
-#define SUBCOMPONENTLOADER_HXX
-
-#include "dbaccessdllapi.h"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/awt/XWindowListener.hpp>
-#include <com/sun/star/frame/XController.hpp>
-#include <com/sun/star/lang/XComponent.hpp>
-#include <com/sun/star/ucb/XCommandProcessor.hpp>
-/** === end UNO includes === **/
-
-#include <cppuhelper/implbase1.hxx>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- //====================================================================
- //= SubComponentLoader
- //====================================================================
- typedef ::cppu::WeakImplHelper1 < ::com::sun::star::awt::XWindowListener
- > SubComponentLoader_Base;
- struct SubComponentLoader_Data;
- /** is a helper class which loads/opens a given sub component as soon as the main application
- window becomes visible.
- */
- class DBACCESS_DLLPRIVATE SubComponentLoader : public SubComponentLoader_Base
- {
- public:
- SubComponentLoader(
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& i_rApplicationController,
- const ::com::sun::star::uno::Reference< ::com::sun::star::ucb::XCommandProcessor >& i_rSubDocumentDefinition
- );
-
- SubComponentLoader(
- const ::com::sun::star::uno::Reference< ::com::sun::star::frame::XController >& i_rApplicationController,
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& i_rNonDocumentComponent
- );
-
- // XWindowListener
- virtual void SAL_CALL windowResized( const ::com::sun::star::awt::WindowEvent& e ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL windowMoved( const ::com::sun::star::awt::WindowEvent& e ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL windowShown( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException);
- virtual void SAL_CALL windowHidden( const ::com::sun::star::lang::EventObject& e ) throw (::com::sun::star::uno::RuntimeException);
-
- // XEventListener
- virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw (::com::sun::star::uno::RuntimeException);
-
- protected:
- virtual ~SubComponentLoader();
-
- private:
- SubComponentLoader_Data* m_pData;
- };
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // SUBCOMPONENTLOADER_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/subcomponentrecovery.cxx b/dbaccess/source/core/recovery/subcomponentrecovery.cxx
deleted file mode 100644
index 9c7b411db..000000000
--- a/dbaccess/source/core/recovery/subcomponentrecovery.cxx
+++ /dev/null
@@ -1,705 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#include "precompiled_dbaccess.hxx"
-
-#include "subcomponentrecovery.hxx"
-
-#include "sdbcoretools.hxx"
-#include "storagexmlstream.hxx"
-#include "subcomponentloader.hxx"
-#include "settingsimport.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/embed/ElementModes.hpp>
-#include <com/sun/star/frame/XModuleManager.hpp>
-#include <com/sun/star/document/XStorageBasedDocument.hpp>
-#include <com/sun/star/ucb/XCommandProcessor.hpp>
-#include <com/sun/star/container/XHierarchicalNameAccess.hpp>
-#include <com/sun/star/sdb/XFormDocumentsSupplier.hpp>
-#include <com/sun/star/sdb/XReportDocumentsSupplier.hpp>
-#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/namedvaluecollection.hxx>
-#include <connectivity/dbtools.hxx>
-#include <tools/diagnose_ex.h>
-#include <xmloff/XMLSettingsExportContext.hxx>
-#include <xmloff/SettingsExportHelper.hxx>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- /** === begin UNO using === **/
- using ::com::sun::star::uno::Reference;
- using ::com::sun::star::uno::XInterface;
- using ::com::sun::star::uno::UNO_QUERY;
- using ::com::sun::star::uno::UNO_QUERY_THROW;
- using ::com::sun::star::uno::UNO_SET_THROW;
- using ::com::sun::star::uno::Exception;
- using ::com::sun::star::uno::RuntimeException;
- using ::com::sun::star::uno::Any;
- using ::com::sun::star::uno::makeAny;
- using ::com::sun::star::uno::Sequence;
- using ::com::sun::star::uno::Type;
- using ::com::sun::star::lang::XMultiServiceFactory;
- using ::com::sun::star::embed::XStorage;
- using ::com::sun::star::sdb::application::XDatabaseDocumentUI;
- using ::com::sun::star::beans::Pair;
- using ::com::sun::star::frame::XModuleManager;
- using ::com::sun::star::lang::XComponent;
- using ::com::sun::star::frame::XModel;
- using ::com::sun::star::frame::XController;
- using ::com::sun::star::beans::XPropertySet;
- using ::com::sun::star::beans::PropertyValue;
- using ::com::sun::star::document::XStorageBasedDocument;
- using ::com::sun::star::ucb::XCommandProcessor;
- using ::com::sun::star::container::XHierarchicalNameAccess;
- using ::com::sun::star::sdb::XFormDocumentsSupplier;
- using ::com::sun::star::sdb::XReportDocumentsSupplier;
- using ::com::sun::star::xml::sax::SAXException;
- using ::com::sun::star::xml::sax::XLocator;
- using ::com::sun::star::xml::sax::XDocumentHandler;
- using ::com::sun::star::xml::sax::XAttributeList;
- /** === end UNO using === **/
-
- namespace ElementModes = ::com::sun::star::embed::ElementModes;
-
-
- //====================================================================
- //= helper
- //====================================================================
- namespace
- {
- // .........................................................................
- static const ::rtl::OUString& lcl_getComponentStorageBaseName( const SubComponentType i_eType )
- {
- static const ::rtl::OUString s_sFormBaseName( RTL_CONSTASCII_USTRINGPARAM( "form" ) );
- static const ::rtl::OUString s_sReportBaseName( RTL_CONSTASCII_USTRINGPARAM( "report" ) );
- static const ::rtl::OUString s_sTableBaseName( RTL_CONSTASCII_USTRINGPARAM( "table" ) );
- static const ::rtl::OUString s_sQueryBaseName( RTL_CONSTASCII_USTRINGPARAM( "query" ) );
-
- switch ( i_eType )
- {
- case FORM:
- return s_sFormBaseName;
- case REPORT:
- return s_sReportBaseName;
- case TABLE:
- return s_sTableBaseName;
- case QUERY:
- return s_sQueryBaseName;
- default:
- break;
- }
-
- OSL_FAIL( "lcl_getComponentStorageBaseName: unimplemented case!" );
- static const ::rtl::OUString s_sFallback;
- return s_sFallback;
- }
-
- // .........................................................................
- static SubComponentType lcl_databaseObjectToSubComponentType( const sal_Int32 i_nObjectType )
- {
- switch ( i_nObjectType )
- {
- case DatabaseObject::TABLE: return TABLE;
- case DatabaseObject::QUERY: return QUERY;
- case DatabaseObject::FORM: return FORM;
- case DatabaseObject::REPORT:return REPORT;
- default:
- break;
- }
- return UNKNOWN;
- }
-
- // .........................................................................
- static bool lcl_determineReadOnly( const Reference< XComponent >& i_rComponent )
- {
- Reference< XModel > xDocument( i_rComponent, UNO_QUERY );
- if ( !xDocument.is() )
- {
- Reference< XController > xController( i_rComponent, UNO_QUERY_THROW );
- xDocument = xController->getModel();
- }
-
- if ( !xDocument.is() )
- return false;
-
- ::comphelper::NamedValueCollection aDocArgs( xDocument->getArgs() );
- return aDocArgs.getOrDefault( "ReadOnly", false );
- }
-
- // .........................................................................
- static Reference< XCommandProcessor > lcl_getSubComponentDef_nothrow( const Reference< XDatabaseDocumentUI >& i_rAppUI,
- const SubComponentType i_eType, const ::rtl::OUString& i_rName )
- {
- Reference< XController > xController( i_rAppUI, UNO_QUERY_THROW );
- ENSURE_OR_RETURN( ( i_eType == FORM ) || ( i_eType == REPORT ), "lcl_getSubComponentDef_nothrow: illegal controller", NULL );
-
- Reference< XCommandProcessor > xCommandProcessor;
- try
- {
- Reference< XHierarchicalNameAccess > xDefinitionContainer;
- if ( i_eType == FORM )
- {
- Reference< XFormDocumentsSupplier > xSuppForms( xController->getModel(), UNO_QUERY_THROW );
- xDefinitionContainer.set( xSuppForms->getFormDocuments(), UNO_QUERY_THROW );
- }
- else
- {
- Reference< XReportDocumentsSupplier > xSuppReports( xController->getModel(), UNO_QUERY_THROW );
- xDefinitionContainer.set( xSuppReports->getReportDocuments(), UNO_QUERY_THROW );
- }
- xCommandProcessor.set( xDefinitionContainer->getByHierarchicalName( i_rName ), UNO_QUERY_THROW );
- }
- catch( const Exception& )
- {
- DBG_UNHANDLED_EXCEPTION();
- }
- return xCommandProcessor;
- }
-
- // .........................................................................
- static const ::rtl::OUString& lcl_getSettingsStreamName()
- {
- static const ::rtl::OUString s_sStatementStreamName( RTL_CONSTASCII_USTRINGPARAM( "settings.xml" ) );
- return s_sStatementStreamName;
- }
-
- // .........................................................................
- static const ::rtl::OUString& lcl_getCurrentQueryDesignName()
- {
- static const ::rtl::OUString s_sQuerySettingsName( RTL_CONSTASCII_USTRINGPARAM( "ooo:current-query-design" ) );
- return s_sQuerySettingsName;
- }
- }
-
- //====================================================================
- //= SettingsExportContext
- //====================================================================
- class DBACCESS_DLLPRIVATE SettingsExportContext : public ::xmloff::XMLSettingsExportContext
- {
- public:
- SettingsExportContext( const ::comphelper::ComponentContext& i_rContext, const StorageXMLOutputStream& i_rDelegator )
- :m_rContext( i_rContext )
- ,m_rDelegator( i_rDelegator )
- ,m_aNamespace( ::xmloff::token::GetXMLToken( ::xmloff::token::XML_NP_CONFIG ) )
- {
- }
-
- virtual ~SettingsExportContext()
- {
- }
-
- public:
- virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, const ::rtl::OUString& i_rValue );
- virtual void AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, enum ::xmloff::token::XMLTokenEnum i_eValue );
- virtual void StartElement( enum ::xmloff::token::XMLTokenEnum i_eName, const sal_Bool i_bIgnoreWhitespace );
- virtual void EndElement ( const sal_Bool i_bIgnoreWhitespace );
- virtual void Characters( const ::rtl::OUString& i_rCharacters );
-
- virtual ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >
- GetServiceFactory() const;
-
- private:
- ::rtl::OUString impl_prefix( const ::xmloff::token::XMLTokenEnum i_eToken )
- {
- ::rtl::OUStringBuffer aQualifiedName( m_aNamespace );
- aQualifiedName.append( sal_Unicode( ':' ) );
- aQualifiedName.append( ::xmloff::token::GetXMLToken( i_eToken ) );
- return aQualifiedName.makeStringAndClear();
- }
-
- private:
- const ::comphelper::ComponentContext& m_rContext;
- const StorageXMLOutputStream& m_rDelegator;
- const ::rtl::OUStringBuffer m_aNamespace;
- };
-
- //--------------------------------------------------------------------
- void SettingsExportContext::AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, const ::rtl::OUString& i_rValue )
- {
- m_rDelegator.addAttribute( impl_prefix( i_eName ), i_rValue );
- }
-
- //--------------------------------------------------------------------
- void SettingsExportContext::AddAttribute( enum ::xmloff::token::XMLTokenEnum i_eName, enum ::xmloff::token::XMLTokenEnum i_eValue )
- {
- m_rDelegator.addAttribute( impl_prefix( i_eName ), ::xmloff::token::GetXMLToken( i_eValue ) );
- }
-
- //--------------------------------------------------------------------
- void SettingsExportContext::StartElement( enum ::xmloff::token::XMLTokenEnum i_eName, const sal_Bool i_bIgnoreWhitespace )
- {
- if ( i_bIgnoreWhitespace )
- m_rDelegator.ignorableWhitespace( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( " " ) ) );
-
- m_rDelegator.startElement( impl_prefix( i_eName ) );
- }
-
- //--------------------------------------------------------------------
- void SettingsExportContext::EndElement( const sal_Bool i_bIgnoreWhitespace )
- {
- if ( i_bIgnoreWhitespace )
- m_rDelegator.ignorableWhitespace( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( " " ) ) );
- m_rDelegator.endElement();
- }
-
- //--------------------------------------------------------------------
- void SettingsExportContext::Characters( const ::rtl::OUString& i_rCharacters )
- {
- m_rDelegator.characters( i_rCharacters );
- }
-
- //--------------------------------------------------------------------
- Reference< XMultiServiceFactory > SettingsExportContext::GetServiceFactory() const
- {
- return m_rContext.getLegacyServiceFactory();
- }
-
- //==================================================================================================================
- //= SettingsDocumentHandler
- //==================================================================================================================
- typedef ::cppu::WeakImplHelper1 < XDocumentHandler
- > SettingsDocumentHandler_Base;
- class DBACCESS_DLLPRIVATE SettingsDocumentHandler : public SettingsDocumentHandler_Base
- {
- public:
- SettingsDocumentHandler()
- {
- }
-
- protected:
- virtual ~SettingsDocumentHandler()
- {
- }
-
- public:
- // XDocumentHandler
- virtual void SAL_CALL startDocument( ) throw (SAXException, RuntimeException);
- virtual void SAL_CALL endDocument( ) throw (SAXException, RuntimeException);
- virtual void SAL_CALL startElement( const ::rtl::OUString& aName, const Reference< XAttributeList >& xAttribs ) throw (SAXException, RuntimeException);
- virtual void SAL_CALL endElement( const ::rtl::OUString& aName ) throw (SAXException, RuntimeException);
- virtual void SAL_CALL characters( const ::rtl::OUString& aChars ) throw (SAXException, RuntimeException);
- virtual void SAL_CALL ignorableWhitespace( const ::rtl::OUString& aWhitespaces ) throw (SAXException, RuntimeException);
- virtual void SAL_CALL processingInstruction( const ::rtl::OUString& aTarget, const ::rtl::OUString& aData ) throw (SAXException, RuntimeException);
- virtual void SAL_CALL setDocumentLocator( const Reference< XLocator >& xLocator ) throw (SAXException, RuntimeException);
-
- const ::comphelper::NamedValueCollection& getSettings() const { return m_aSettings; }
-
- private:
- ::std::stack< ::rtl::Reference< SettingsImport > > m_aStates;
- ::comphelper::NamedValueCollection m_aSettings;
- };
-
- //--------------------------------------------------------------------
- void SAL_CALL SettingsDocumentHandler::startDocument( ) throw (SAXException, RuntimeException)
- {
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SettingsDocumentHandler::endDocument( ) throw (SAXException, RuntimeException)
- {
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SettingsDocumentHandler::startElement( const ::rtl::OUString& i_Name, const Reference< XAttributeList >& i_Attribs ) throw (SAXException, RuntimeException)
- {
- ::rtl::Reference< SettingsImport > pNewState;
-
- if ( m_aStates.empty() )
- {
- if ( i_Name.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "office:settings" ) ) )
- {
- pNewState = new OfficeSettingsImport( m_aSettings );
- }
- else
- {
- OSL_FAIL( "SettingsDocumentHandler::startElement: invalid settings file!" );
- // Yes, that's not correct. Somebody could, in theory, give us a document which starts with "foo:settings",
- // where "foo" is mapped to the proper namespace URL.
- // However, there's no need to bother with this. The "recovery" sub storage we're recovering from is
- // not part of ODF, so we can impose any format restrictions on it ...
- }
- }
- else
- {
- ::rtl::Reference< SettingsImport > pCurrentState( m_aStates.top() );
- pNewState = pCurrentState->nextState( i_Name );
- }
-
- ENSURE_OR_THROW( pNewState.is(), "no new state - aborting import" );
- pNewState->startElement( i_Attribs );
-
- m_aStates.push( pNewState );
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SettingsDocumentHandler::endElement( const ::rtl::OUString& i_Name ) throw (SAXException, RuntimeException)
- {
- ENSURE_OR_THROW( !m_aStates.empty(), "no active element" );
- (void)i_Name;
-
- ::rtl::Reference< SettingsImport > pCurrentState( m_aStates.top() );
- pCurrentState->endElement();
- m_aStates.pop();
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SettingsDocumentHandler::characters( const ::rtl::OUString& i_Chars ) throw (SAXException, RuntimeException)
- {
- ENSURE_OR_THROW( !m_aStates.empty(), "no active element" );
-
- ::rtl::Reference< SettingsImport > pCurrentState( m_aStates.top() );
- pCurrentState->characters( i_Chars );
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SettingsDocumentHandler::ignorableWhitespace( const ::rtl::OUString& aWhitespaces ) throw (SAXException, RuntimeException)
- {
- // ignore them - that's why they're called "ignorable"
- (void)aWhitespaces;
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SettingsDocumentHandler::processingInstruction( const ::rtl::OUString& i_Target, const ::rtl::OUString& i_Data ) throw (SAXException, RuntimeException)
- {
- OSL_FAIL( "SettingsDocumentHandler::processingInstruction: unexpected ..." );
- (void)i_Target;
- (void)i_Data;
- }
-
- //--------------------------------------------------------------------
- void SAL_CALL SettingsDocumentHandler::setDocumentLocator( const Reference< XLocator >& i_Locator ) throw (SAXException, RuntimeException)
- {
- (void)i_Locator;
- }
-
- //====================================================================
- //= SubComponentRecovery
- //====================================================================
- //--------------------------------------------------------------------
- const ::rtl::OUString SubComponentRecovery::getComponentsStorageName( const SubComponentType i_eType )
- {
- static const ::rtl::OUString s_sFormsStorageName( RTL_CONSTASCII_USTRINGPARAM( "forms" ) );
- static const ::rtl::OUString s_sReportsStorageName( RTL_CONSTASCII_USTRINGPARAM( "reports" ) );
- static const ::rtl::OUString s_sTablesStorageName( RTL_CONSTASCII_USTRINGPARAM( "tables" ) );
- static const ::rtl::OUString s_sQueriesStorageName( RTL_CONSTASCII_USTRINGPARAM( "queries" ) );
- static const ::rtl::OUString s_sRelationsStorageName( RTL_CONSTASCII_USTRINGPARAM( "relations" ) );
-
- switch ( i_eType )
- {
- case FORM:
- return s_sFormsStorageName;
- case REPORT:
- return s_sReportsStorageName;
- case TABLE:
- return s_sTablesStorageName;
- case QUERY:
- return s_sQueriesStorageName;
- case RELATION_DESIGN:
- return s_sRelationsStorageName;
- default:
- break;
- }
-
- OSL_FAIL( "SubComponentRecovery::getComponentsStorageName: unimplemented case!" );
- static const ::rtl::OUString s_sFallback;
- return s_sFallback;
- }
-
- //--------------------------------------------------------------------
- void SubComponentRecovery::saveToRecoveryStorage( const Reference< XStorage >& i_rRecoveryStorage,
- MapCompTypeToCompDescs& io_mapCompDescs )
- {
- if ( m_eType == UNKNOWN )
- // quite fatal, but has already been reported (as assertion) before
- return;
-
- // open the sub storage for the given kind of components
- const ::rtl::OUString& rStorageName( getComponentsStorageName( m_eType ) );
- const Reference< XStorage > xComponentsStorage( i_rRecoveryStorage->openStorageElement(
- rStorageName, ElementModes::READWRITE ), UNO_QUERY_THROW );
-
- // find a free sub storage name, and create Yet Another Sub Storage
- const ::rtl::OUString& rBaseName( lcl_getComponentStorageBaseName( m_eType ) );
- const ::rtl::OUString sStorName = ::dbtools::createUniqueName( xComponentsStorage.get(), rBaseName, true );
- const Reference< XStorage > xObjectStor( xComponentsStorage->openStorageElement(
- sStorName, ElementModes::READWRITE ), UNO_QUERY_THROW );
-
- switch ( m_eType )
- {
- case FORM:
- case REPORT:
- impl_saveSubDocument_throw( xObjectStor );
- break;
-
- case QUERY:
- impl_saveQueryDesign_throw( xObjectStor );
- break;
-
- default:
- // TODO
- OSL_FAIL( "SubComponentRecoverys::saveToRecoveryStorage: unimplemented case!" );
- break;
- }
-
- // commit the storage(s)
- tools::stor::commitStorageIfWriteable( xObjectStor );
- tools::stor::commitStorageIfWriteable( xComponentsStorage );
-
- // remember the relationship from the component name to the storage name
- MapStringToCompDesc& rMapCompDescs = io_mapCompDescs[ m_eType ];
- OSL_ENSURE( rMapCompDescs.find( sStorName ) == rMapCompDescs.end(),
- "SubComponentRecoverys::saveToRecoveryStorage: object name already used!" );
- rMapCompDescs[ sStorName ] = m_aCompDesc;
- }
-
- //--------------------------------------------------------------------
- void SubComponentRecovery::impl_identifyComponent_throw()
- {
- // ask the controller
- Pair< sal_Int32, ::rtl::OUString > aComponentIdentity = m_xDocumentUI->identifySubComponent( m_xComponent );
- m_eType = lcl_databaseObjectToSubComponentType( aComponentIdentity.First );
- m_aCompDesc.sName = aComponentIdentity.Second;
-
- // what the controller didn't give us is the information whether this is in edit mode or not ...
- Reference< XModuleManager > xModuleManager( m_rContext.createComponent( "com.sun.star.frame.ModuleManager" ), UNO_QUERY_THROW );
- const ::rtl::OUString sModuleIdentifier = xModuleManager->identify( m_xComponent );
-
- switch ( m_eType )
- {
- case TABLE:
- m_aCompDesc.bForEditing = sModuleIdentifier.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.sdb.TableDesign" ) );
- break;
-
- case QUERY:
- m_aCompDesc.bForEditing = sModuleIdentifier.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.sdb.QueryDesign" ) );
- break;
-
- case REPORT:
- if ( sModuleIdentifier.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.report.ReportDefinition" ) ) )
- {
- // it's an SRB report designer
- m_aCompDesc.bForEditing = true;
- break;
- }
- // fall through
-
- case FORM:
- m_aCompDesc.bForEditing = !lcl_determineReadOnly( m_xComponent );
- break;
-
- default:
- if ( sModuleIdentifier.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.sdb.RelationDesign" ) ) )
- {
- m_eType = RELATION_DESIGN;
- m_aCompDesc.bForEditing = true;
- }
- else
- {
- OSL_FAIL( "SubComponentRecovery::impl_identifyComponent_throw: couldn't classify the given sub component!" );
- }
- break;
- }
-
- OSL_POSTCOND( m_eType != UNKNOWN,
- "SubComponentRecovery::impl_identifyComponent_throw: couldn't classify the component!" );
- }
-
- //--------------------------------------------------------------------
- void SubComponentRecovery::impl_saveQueryDesign_throw( const Reference< XStorage >& i_rObjectStorage )
- {
- ENSURE_OR_THROW( m_eType == QUERY, "illegal sub component type" );
- ENSURE_OR_THROW( i_rObjectStorage.is(), "illegal storage" );
-
- // retrieve the current query design (which might differ from what we can retrieve as ActiveCommand property, since
- // the latter is updated only upon successful save of the design)
- Reference< XPropertySet > xDesignerProps( m_xComponent, UNO_QUERY_THROW );
- Sequence< PropertyValue > aCurrentQueryDesign;
- OSL_VERIFY( xDesignerProps->getPropertyValue( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "CurrentQueryDesign" ) ) ) >>= aCurrentQueryDesign );
-
- // write the query design
- StorageXMLOutputStream aDesignOutput( m_rContext, i_rObjectStorage, lcl_getSettingsStreamName() );
- SettingsExportContext aSettingsExportContext( m_rContext, aDesignOutput );
-
- const ::rtl::OUString sWhitespace( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( " " ) ) );
-
- aDesignOutput.startElement( ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "office:settings" ) ) );
- aDesignOutput.ignorableWhitespace( sWhitespace );
-
- XMLSettingsExportHelper aSettingsExporter( aSettingsExportContext );
- aSettingsExporter.exportAllSettings( aCurrentQueryDesign, lcl_getCurrentQueryDesignName() );
-
- aDesignOutput.ignorableWhitespace( sWhitespace );
- aDesignOutput.endElement();
- aDesignOutput.close();
- }
-
- //--------------------------------------------------------------------
- void SubComponentRecovery::impl_saveSubDocument_throw( const Reference< XStorage >& i_rObjectStorage )
- {
- ENSURE_OR_THROW( ( m_eType == FORM ) || ( m_eType == REPORT ), "illegal sub component type" );
- ENSURE_OR_THROW( i_rObjectStorage.is(), "illegal storage" );
-
- // store the document into the storage
- Reference< XStorageBasedDocument > xStorageDocument( m_xComponent, UNO_QUERY_THROW );
- xStorageDocument->storeToStorage( i_rObjectStorage, Sequence< PropertyValue >() );
- }
-
- //--------------------------------------------------------------------
- Reference< XComponent > SubComponentRecovery::impl_recoverSubDocument_throw( const Reference< XStorage >& i_rRecoveryStorage,
- const ::rtl::OUString& i_rComponentName, const bool i_bForEditing )
- {
- Reference< XComponent > xSubComponent;
- Reference< XCommandProcessor > xDocDefinition;
-
- ::comphelper::NamedValueCollection aLoadArgs;
- aLoadArgs.put( "RecoveryStorage", i_rRecoveryStorage );
-
- // load/create the sub component hidden. We'll show it when the main app window is shown.
- aLoadArgs.put( "Hidden", true );
-
- if ( i_rComponentName.getLength() )
- {
- xDocDefinition = lcl_getSubComponentDef_nothrow( m_xDocumentUI, m_eType, i_rComponentName );
- xSubComponent.set( m_xDocumentUI->loadComponentWithArguments(
- m_eType,
- i_rComponentName,
- i_bForEditing,
- aLoadArgs.getPropertyValues()
- ),
- UNO_SET_THROW
- );
- }
- else
- {
- Reference< XComponent > xDocDefComponent;
- xSubComponent.set( m_xDocumentUI->createComponentWithArguments(
- m_eType,
- aLoadArgs.getPropertyValues(),
- xDocDefComponent
- ),
- UNO_SET_THROW
- );
-
- xDocDefinition.set( xDocDefComponent, UNO_QUERY );
- OSL_ENSURE( xDocDefinition.is(), "DatabaseDocumentRecovery::recoverSubDocuments: loaded a form/report, but don't have a document definition?!" );
- }
-
- if ( xDocDefinition.is() )
- {
- Reference< XController > xController( m_xDocumentUI, UNO_QUERY_THROW );
- Reference< XInterface > xLoader( *new SubComponentLoader( xController, xDocDefinition ) );
- (void)xLoader;
- }
-
- return xSubComponent;
- }
-
- //--------------------------------------------------------------------
- Reference< XComponent > SubComponentRecovery::impl_recoverQueryDesign_throw( const Reference< XStorage >& i_rRecoveryStorage,
- const ::rtl::OUString& i_rComponentName, const bool i_bForEditing )
- {
- Reference< XComponent > xSubComponent;
-
- // first read the settings query design settings from the storage
- StorageXMLInputStream aDesignInput( m_rContext, i_rRecoveryStorage, lcl_getSettingsStreamName() );
-
- ::rtl::Reference< SettingsDocumentHandler > pDocHandler( new SettingsDocumentHandler );
- aDesignInput.import( pDocHandler.get() );
-
- const ::comphelper::NamedValueCollection& rSettings( pDocHandler->getSettings() );
- const Any aCurrentQueryDesign = rSettings.get( lcl_getCurrentQueryDesignName() );
-#if OSL_DEBUG_LEVEL > 0
- Sequence< PropertyValue > aQueryDesignLayout;
- OSL_VERIFY( aCurrentQueryDesign >>= aQueryDesignLayout );
-#endif
-
- // then load the query designer
- ::comphelper::NamedValueCollection aLoadArgs;
- aLoadArgs.put( "CurrentQueryDesign", aCurrentQueryDesign );
- aLoadArgs.put( "Hidden", true );
-
- if ( i_rComponentName.getLength() )
- {
- xSubComponent.set( m_xDocumentUI->loadComponentWithArguments(
- m_eType,
- i_rComponentName,
- i_bForEditing,
- aLoadArgs.getPropertyValues()
- ),
- UNO_SET_THROW
- );
- }
- else
- {
- Reference< XComponent > xDummy;
- xSubComponent.set( m_xDocumentUI->createComponentWithArguments(
- m_eType,
- aLoadArgs.getPropertyValues(),
- xDummy
- ),
- UNO_SET_THROW
- );
- }
-
- Reference< XController > xController( m_xDocumentUI, UNO_QUERY_THROW );
- Reference< XInterface > xLoader( *new SubComponentLoader( xController, xSubComponent ) );
- (void)xLoader;
-
- return xSubComponent;
- }
-
- //--------------------------------------------------------------------
- Reference< XComponent > SubComponentRecovery::recoverFromStorage( const Reference< XStorage >& i_rRecoveryStorage,
- const ::rtl::OUString& i_rComponentName, const bool i_bForEditing )
- {
- Reference< XComponent > xSubComponent;
- switch ( m_eType )
- {
- case FORM:
- case REPORT:
- xSubComponent = impl_recoverSubDocument_throw( i_rRecoveryStorage, i_rComponentName, i_bForEditing );
- break;
- case QUERY:
- xSubComponent = impl_recoverQueryDesign_throw( i_rRecoveryStorage, i_rComponentName, i_bForEditing );
- break;
- default:
- OSL_FAIL( "SubComponentRecovery::recoverFromStorage: unimplemented case!" );
- break;
- }
- return xSubComponent;
- }
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/subcomponentrecovery.hxx b/dbaccess/source/core/recovery/subcomponentrecovery.hxx
deleted file mode 100644
index 6ddd121c3..000000000
--- a/dbaccess/source/core/recovery/subcomponentrecovery.hxx
+++ /dev/null
@@ -1,129 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#ifndef SUBCOMPONENTRECOVERY_HXX
-#define SUBCOMPONENTRECOVERY_HXX
-
-#include "subcomponents.hxx"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
-#include <com/sun/star/embed/XStorage.hpp>
-/** === end UNO includes === **/
-
-#include <comphelper/componentcontext.hxx>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- //====================================================================
- //= SubComponentRecovery
- //====================================================================
- class DBACCESS_DLLPRIVATE SubComponentRecovery
- {
- public:
- SubComponentRecovery( const ::comphelper::ComponentContext& i_rContext, const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& i_rController,
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >& i_rComponent )
- :m_rContext( i_rContext )
- ,m_xDocumentUI( i_rController, ::com::sun::star::uno::UNO_SET_THROW )
- ,m_xComponent( i_rComponent )
- ,m_eType( UNKNOWN )
- ,m_aCompDesc()
- {
- impl_identifyComponent_throw();
- }
-
- SubComponentRecovery( const ::comphelper::ComponentContext& i_rContext, const ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >& i_rController,
- const SubComponentType i_eType )
- :m_rContext( i_rContext )
- ,m_xDocumentUI( i_rController, ::com::sun::star::uno::UNO_SET_THROW )
- ,m_xComponent()
- ,m_eType( i_eType )
- ,m_aCompDesc()
- {
- }
-
- // only to be used after being constructed with a component
- void saveToRecoveryStorage(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rRecoveryStorage,
- MapCompTypeToCompDescs& io_mapCompDescs
- );
-
- // only to be used after being constructed with a type
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
- recoverFromStorage(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rRecoveryStorage,
- const ::rtl::OUString& i_rComponentName,
- const bool i_bForEditing
- );
-
- static const ::rtl::OUString getComponentsStorageName( const SubComponentType i_eType );
-
- private:
- void impl_saveSubDocument_throw(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rObjectStorage
- );
-
- void impl_saveQueryDesign_throw(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rObjectStorage
- );
-
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
- impl_recoverSubDocument_throw(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rRecoveryStorage,
- const ::rtl::OUString& i_rComponentName,
- const bool i_bForEditing
- );
-
- ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
- impl_recoverQueryDesign_throw(
- const ::com::sun::star::uno::Reference< ::com::sun::star::embed::XStorage >& i_rRecoveryStorage,
- const ::rtl::OUString& i_rComponentName,
- const bool i_bForEditing
- );
-
- void impl_identifyComponent_throw();
-
- private:
- const ::comphelper::ComponentContext& m_rContext;
- ::com::sun::star::uno::Reference< ::com::sun::star::sdb::application::XDatabaseDocumentUI >
- m_xDocumentUI;
- const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XComponent >
- m_xComponent;
- SubComponentType m_eType;
- SubComponentDescriptor m_aCompDesc;
- };
-
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // SUBCOMPONENTRECOVERY_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/recovery/subcomponents.hxx b/dbaccess/source/core/recovery/subcomponents.hxx
deleted file mode 100644
index 43b7fa8cb..000000000
--- a/dbaccess/source/core/recovery/subcomponents.hxx
+++ /dev/null
@@ -1,91 +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 2009 by Sun Microsystems, Inc.
-*
-* 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.
-************************************************************************/
-
-#ifndef SUBCOMPONENTS_HXX
-#define SUBCOMPONENTS_HXX
-
-#include "dbaccessdllapi.h"
-
-/** === begin UNO includes === **/
-#include <com/sun/star/sdb/application/DatabaseObject.hpp>
-/** === end UNO includes === **/
-
-#include <rtl/ustring.hxx>
-
-#include <boost/unordered_map.hpp>
-#include <map>
-
-//........................................................................
-namespace dbaccess
-{
-//........................................................................
-
- namespace DatabaseObject = ::com::sun::star::sdb::application::DatabaseObject;
-
- // -------------------------------------------------------------------
- enum SubComponentType
- {
- TABLE = DatabaseObject::TABLE,
- QUERY = DatabaseObject::QUERY,
- FORM = DatabaseObject::FORM,
- REPORT = DatabaseObject::REPORT,
-
- RELATION_DESIGN = 1000,
-
- UNKNOWN = 10001
- };
-
- // -------------------------------------------------------------------
- struct DBACCESS_DLLPRIVATE SubComponentDescriptor
- {
- ::rtl::OUString sName;
- bool bForEditing;
-
- SubComponentDescriptor()
- :sName()
- ,bForEditing( false )
- {
- }
-
- SubComponentDescriptor( const ::rtl::OUString& i_rName, const bool i_bForEditing )
- :sName( i_rName )
- ,bForEditing( i_bForEditing )
- {
- }
- };
-
- // -------------------------------------------------------------------
- typedef ::boost::unordered_map< ::rtl::OUString, SubComponentDescriptor, ::rtl::OUStringHash > MapStringToCompDesc;
- typedef ::std::map< SubComponentType, MapStringToCompDesc > MapCompTypeToCompDescs;
-
-
-//........................................................................
-} // namespace dbaccess
-//........................................................................
-
-#endif // SUBCOMPONENTS_HXX
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/resource/core_resource.cxx b/dbaccess/source/core/resource/core_resource.cxx
deleted file mode 100644
index 123aeb118..000000000
--- a/dbaccess/source/core/resource/core_resource.cxx
+++ /dev/null
@@ -1,117 +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_dbaccess.hxx"
-
-#include "core_resource.hxx"
-
-#include <tools/resmgr.hxx>
-
-// ---- needed as long as we have no contexts for components ---
-#include <vcl/svapp.hxx>
-//---------------------------------------------------
-
-#include <svl/solar.hrc>
-
-//.........................................................................
-namespace dbaccess
-{
-
- //==================================================================
- //= ResourceManager
- //==================================================================
- ::osl::Mutex ResourceManager::s_aMutex;
- sal_Int32 ResourceManager::s_nClients = 0;
- ResMgr* ResourceManager::m_pImpl = NULL;
-
- //------------------------------------------------------------------
- void ResourceManager::ensureImplExists()
- {
- if (m_pImpl)
- return;
-
- ::com::sun::star::lang::Locale aLocale = Application::GetSettings().GetUILocale();
-
- ByteString sFileName("dba");
-
- m_pImpl = ResMgr::CreateResMgr(sFileName.GetBuffer(), aLocale);
- }
-
- //------------------------------------------------------------------
- ::rtl::OUString ResourceManager::loadString(sal_uInt16 _nResId)
- {
- ::rtl::OUString sReturn;
-
- ensureImplExists();
- if (m_pImpl)
- sReturn = String(ResId(_nResId,*m_pImpl));
-
- return sReturn;
- }
-
- //------------------------------------------------------------------
- ::rtl::OUString ResourceManager::loadString( sal_uInt16 _nResId, const sal_Char* _pPlaceholderAscii, const ::rtl::OUString& _rReplace )
- {
- String sString( loadString( _nResId ) );
- sString.SearchAndReplaceAscii( _pPlaceholderAscii, _rReplace );
- return sString;
- }
-
- //------------------------------------------------------------------
- ::rtl::OUString ResourceManager::loadString( sal_uInt16 _nResId, const sal_Char* _pPlaceholderAscii1, const ::rtl::OUString& _rReplace1,
- const sal_Char* _pPlaceholderAscii2, const ::rtl::OUString& _rReplace2 )
- {
- String sString( loadString( _nResId ) );
- sString.SearchAndReplaceAscii( _pPlaceholderAscii1, _rReplace1 );
- sString.SearchAndReplaceAscii( _pPlaceholderAscii2, _rReplace2 );
- return sString;
- }
-
- //-------------------------------------------------------------------------
- void ResourceManager::registerClient()
- {
- ::osl::MutexGuard aGuard(s_aMutex);
- ++s_nClients;
- }
-
- //-------------------------------------------------------------------------
- void ResourceManager::revokeClient()
- {
- ::osl::MutexGuard aGuard(s_aMutex);
- if (!--s_nClients && m_pImpl)
- {
- delete m_pImpl;
- m_pImpl = NULL;
- }
- }
-//.........................................................................
-}
-//.........................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/dbaccess/source/core/resource/strings.src b/dbaccess/source/core/resource/strings.src
deleted file mode 100644
index 1a572c8a1..000000000
--- a/dbaccess/source/core/resource/strings.src
+++ /dev/null
@@ -1,371 +0,0 @@
-/*************************************************************************
- *
- * 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.
- *
- ************************************************************************/
-
-#include "core_resource.hrc"
-#include "dbamiscres.hrc"
-
-String RID_STR_TRIED_OPEN_TABLE
-{
- Text [ en-US ] = "Tried to open the table $name$.";
-};
-
-String RID_STR_CONNECTION_INVALID
-{
- Text [ en-US ] = "No connection could be established.";
-};
-
-String RID_STR_TABLE_IS_FILTERED
-{
- Text [ en-US ] = "The table $name$ already exists. It is not visible because it has been filtered out.";
-};
-
-String RID_STR_NEED_CONFIG_WRITE_ACCESS
-{
- Text [ en-US ] = "You have no write access to the configuration data the object is based on.";
-};
-
-String RID_STR_COULDNOTCONNECT_UNSPECIFIED
-{
- Text [ en-US ] = "The connection to the external data source could not be established. An unknown error occurred. The driver is probably defective.";
-};
-
-String RID_STR_COULDNOTCONNECT_NODRIVER
-{
- Text [ en-US ] = "The connection to the external data source could not be established. No SDBC driver was found for the given URL.";
-};
-
-String RID_STR_COULDNOTLOAD_MANAGER
-{
- Text [ en-US ] = "The connection to the external data source could not be established. The SDBC driver manager could not be loaded.";
-};
-
-String RID_STR_FORM
-{
- Text [ en-US ] = "Form";
-};
-
-String RID_STR_REPORT
-{
- Text [ en-US ] = "Report";
-};
-
-String RID_STR_DATASOURCE_NOT_STORED
-{
- Text [ en-US ] = "The data source was not saved. Please use the interface XStorable to save the data source.";
-};
-
-String RID_STR_ONLY_QUERY
-{
- Text [ en-US ] = "The given command is not a SELECT statement.\nOnly queries are allowed.";
-};
-
-String RID_STR_NO_VALUE_CHANGED
-{
- Text [ en-US ] = "No values were modified.";
-};
-
-String RID_STR_NO_XROWUPDATE
-{
- Text [ en-US ] = "Values could not be inserted. The XRowUpdate interface is not supported by ResultSet.";
-};
-
-String RID_STR_NO_XRESULTSETUPDATE
-{
- Text [ en-US ] = "Values could not be inserted. The XResultSetUpdate interface is not supported by ResultSet.";
-};
-
-String RID_STR_NO_UPDATE_MISSING_CONDITION
-{
- Text [ en-US ] = "Values could not be modified, due to a missing condition statement.";
-};
-
-String RID_STR_NO_COLUMN_ADD
-{
- Text [ en-US ] = "The adding of columns is not supported.";
-};
-
-String RID_STR_NO_COLUMN_DROP
-{
- Text [ en-US ] = "The dropping of columns is not supported.";
-};
-
-String RID_STR_NO_CONDITION_FOR_PK
-{
- Text [ en-US ] = "The WHERE condition could not be created for the primary key.";
-};
-
-String RID_STR_COLUMN_UNKNOWN_PROP
-{
- Text [ en-US ] = "The column does not support the property '%value'.";
-};
-
-String RID_STR_COLUMN_NOT_SEARCHABLE
-{
- Text [ en-US ] = "The column is not searchable!";
-};
-
-String RID_STR_NOT_SEQUENCE_INT8
-{
- Text [ en-US ] = "The value of the columns is not of the type Sequence<sal_Int8>.";
-};
-
-String RID_STR_COLUMN_NOT_VALID
-{
- Text [ en-US ] = "The column is not valid.";
-};
-
-String RID_STR_COLUMN_MUST_VISIBLE
-{
- Text [ en-US ] = "The column '%name' must be visible as a column.";
-};
-
-String RID_STR_NO_XQUERIESSUPPLIER
-{
- Text [ en-US ] = "The interface XQueriesSupplier is not available.";
-};
-
-String RID_STR_NOT_SUPPORTED_BY_DRIVER
-{
- Text [ en-US ] = "The driver does not support this function.";
-};
-
-String RID_STR_NO_ABS_ZERO
-{
- Text [ en-US ] = "An 'absolute(0)' call is not allowed.";
-};
-
-String RID_STR_NO_RELATIVE
-{
- Text [ en-US ] = "Relative positioning is not allowed in this state.";
-};
-
-String RID_STR_NO_REFESH_AFTERLAST
-{
- Text [ en-US ] = "A row cannot be refreshed when the ResultSet is positioned after the last row.";
-};
-
-String RID_STR_NO_MOVETOINSERTROW_CALLED
-{
- Text [ en-US ] = "A new row cannot be inserted when the ResultSet is not first moved to the insert row.";
-};
-
-String RID_STR_NO_UPDATEROW
-{
- Text [ en-US ] = "A row cannot be modified in this state";
-};
-
-String RID_STR_NO_DELETEROW
-{
- Text [ en-US ] = "A row cannot be deleted in this state.";
-};
-
-String RID_STR_NO_TABLE_RENAME
-{
- Text [ en-US ] = "The driver does not support table renaming.";
-};
-
-String RID_STR_NO_ALTER_COLUMN_DEF
-{
- Text [ en-US ] = "The driver does not support the modification of column descriptions.";
-};
-
-String RID_STR_COLUMN_ALTER_BY_NAME
-{
- Text [ en-US ] = "The driver does not support the modification of column descriptions by changing the name.";
-};
-
-String RID_STR_COLUMN_ALTER_BY_INDEX
-{
- Text [ en-US ] = "The driver does not support the modification of column descriptions by changing the index.";
-};
-
-String RID_STR_FILE_DOES_NOT_EXIST
-{
- Text[ en-US ] = "The file \"$file$\" does not exist.";
-};
-
-String RID_STR_TABLE_DOES_NOT_EXIST
-{
- Text [ en-US ] = "There exists no table named \"$table$\".";
-};
-
-String RID_STR_QUERY_DOES_NOT_EXIST
-{
- Text [ en-US ] = "There exists no query named \"$table$\".";
-};
-
-String RID_STR_CONFLICTING_NAMES
-{
- Text [ en-US ] = "There are tables in the database whose names conflict with the names of existing queries. To make full use of all queries and tables, make sure they have distinct names.";
-};
-
-String RID_STR_COMMAND_LEADING_TO_ERROR
-{
- Text [ en-US ] = "The SQL command leading to this error is:\n\n$command$";
-};
-
-String RID_STR_STATEMENT_WITHOUT_RESULT_SET
-{
- Text [ en-US ] = "The SQL command does not describe a result set.";
-};
-
-String RID_STR_NAME_MUST_NOT_BE_EMPTY
-{
- Text [ en-US ] = "The name must not be empty.";
-};
-
-String RID_STR_NO_NULL_OBJECTS_IN_CONTAINER
-{
- Text [ en-US ] = "The container cannot contain NULL objects.";
-};
-
-String RID_STR_NAME_ALREADY_USED
-{
- Text [ en-US ] = "There already is an object with the given name.";
-};
-
-String RID_STR_OBJECT_CONTAINER_MISMATCH
-{
- Text [ en-US ] = "This object cannot be part of this container.";
-};
-
-String RID_STR_OBJECT_ALREADY_CONTAINED
-{
- Text [ en-US ] = "The object already is, with a different name, part of the container.";
-};
-
-String RID_STR_NAME_NOT_FOUND
-{
- Text [ en-US ] = "Unable to find the document '$name$'.";
-};
-
-String RID_STR_ERROR_WHILE_SAVING
-{
- Text [ en-US ] = "Could not save the document to $location$:\n$message$";
-};
-
-String RID_NO_SUCH_DATA_SOURCE
-{
- Text [ en-US ] = "Error accessing data source '$name$':\n$error$";
-};
-
-String RID_STR_NO_SUB_FOLDER
-{
- Text [ en-US ] = "There exists no folder named \"$folder$\".";
-};
-
-String RID_STR_NO_DELETE_BEFORE_AFTER
-{
- Text [ en-US ] = "Cannot delete the before-first or after-last row.";
-};
-
-String RID_STR_NO_DELETE_INSERT_ROW
-{
- Text [ en-US ] = "Cannot delete the insert-row.";
-};
-
-String RID_STR_RESULT_IS_READONLY
-{
- Text [ en-US ] = "Result set is read only.";
-};
-
-String RID_STR_NO_DELETE_PRIVILEGE
-{
- Text [ en-US ] = "DELETE privilege not available.";
-};
-
-String RID_STR_ROW_ALREADY_DELETED
-{
- Text [ en-US ] = "Current row is already deleted.";
-};
-
-String RID_STR_UPDATE_FAILED
-{
- Text [ en-US ] = "Current row could not be updated.";
-};
-
-//-------------------------------------------------------------------------
-
-String RID_STR_NO_INSERT_PRIVILEGE
-{
- Text [ en-US ] = "INSERT privilege not available.";
-};
-
-String RID_STR_INTERNAL_ERROR
-{
- Text [ en-US ] = "Internal error: no statement object provided by the database driver.";
-};
-
-String RID_STR_EXPRESSION1
-{
- Text [ en-US ] = "Expression1";
-};
-
-String RID_STR_NO_SQL_COMMAND
-{
- Text [ en-US ] = "No SQL command was provided.";
-};
-
-String RID_STR_INVALID_INDEX
-{
- Text [ en-US ] = "Invalid column index.";
-};
-
-String RID_STR_INVALID_CURSOR_STATE
-{
- Text [ en-US ] = "Invalid cursor state.";
-};
-
-String RID_STR_CURSOR_BEFORE_OR_AFTER
-{
- Text [ en-US ] = "The cursor points to before the first or after the last row.";
-};
-
-String RID_STR_NO_BOOKMARK_BEFORE_OR_AFTER
-{
- Text [ en-US ] = "The rows before the first and after the last row don't have a bookmark.";
-};
-
-String RID_STR_NO_BOOKMARK_DELETED
-{
- Text [ en-US ] = "The current row is deleted, and thus doesn't have a bookmark.";
-};
-
-String RID_STR_NO_EMBEDDING
-{
- Text [ en-US ] = "Embedding of database documents is not supported.";
-};
-
-String RID_STR_CONNECTION_REQUEST
-{
- Text [ en-US ] = "A connection for the following URL was requested \"$name$\".";
-};
-
-String RID_STR_MISSING_EXTENSION
-{
- Text [ en-US ] = "The extension is not installed.";
-};