summaryrefslogtreecommitdiff
path: root/dbaccess/source/ui/dlg/dbadmin.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'dbaccess/source/ui/dlg/dbadmin.cxx')
-rw-r--r--dbaccess/source/ui/dlg/dbadmin.cxx515
1 files changed, 515 insertions, 0 deletions
diff --git a/dbaccess/source/ui/dlg/dbadmin.cxx b/dbaccess/source/ui/dlg/dbadmin.cxx
new file mode 100644
index 000000000000..1d5bb1cb167c
--- /dev/null
+++ b/dbaccess/source/ui/dlg/dbadmin.cxx
@@ -0,0 +1,515 @@
+/*************************************************************************
+ *
+ * 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 "ConnectionPage.hxx"
+#include "DbAdminImpl.hxx"
+#include "DriverSettings.hxx"
+#include "adminpages.hxx"
+#include "dbadmin.hrc"
+#include "dbadmin.hxx"
+#include "dbu_dlg.hrc"
+#include <svl/stritem.hxx>
+#include <svl/eitem.hxx>
+#include <svl/intitem.hxx>
+#include "dbustrings.hrc"
+#include "dsitems.hxx"
+#include "dsnItem.hxx"
+#include "localresaccess.hxx"
+#include "optionalboolitem.hxx"
+#include "propertysetitem.hxx"
+#include "stringlistitem.hxx"
+
+#include <svl/eitem.hxx>
+#include <svl/intitem.hxx>
+#include <svl/stritem.hxx>
+#include <unotools/confignode.hxx>
+#include <vcl/msgbox.hxx>
+
+//.........................................................................
+namespace dbaui
+{
+//.........................................................................
+using namespace com::sun::star::uno;
+using namespace com::sun::star::sdbc;
+using namespace com::sun::star::lang;
+using namespace com::sun::star::util;
+using namespace com::sun::star::beans;
+using namespace com::sun::star::container;
+
+//=========================================================================
+//= ODbAdminDialog
+//=========================================================================
+DBG_NAME(ODbAdminDialog)
+//-------------------------------------------------------------------------
+ODbAdminDialog::ODbAdminDialog(Window* _pParent
+ , SfxItemSet* _pItems
+ , const Reference< XMultiServiceFactory >& _rxORB
+ )
+ :SfxTabDialog(_pParent, ModuleRes(DLG_DATABASE_ADMINISTRATION), _pItems)
+ ,m_bApplied(sal_False)
+ ,m_bUIEnabled( sal_True )
+ ,m_nMainPageID( PAGE_CONNECTION )
+{
+ DBG_CTOR(ODbAdminDialog,NULL);
+
+ m_pImpl = ::std::auto_ptr<ODbDataSourceAdministrationHelper>(new ODbDataSourceAdministrationHelper(_rxORB,this,this));
+
+ // add the initial tab page
+ AddTabPage( m_nMainPageID, String( ModuleRes( STR_PAGETITLE_GENERAL ) ), OConnectionTabPage::Create, NULL );
+
+ // remove the reset button - it's meaning is much too ambiguous in this dialog
+ RemoveResetButton();
+ // no local resources needed anymore
+ FreeResource();
+}
+
+//-------------------------------------------------------------------------
+ODbAdminDialog::~ODbAdminDialog()
+{
+ SetInputSet(NULL);
+ DELETEZ(pExampleSet);
+
+ DBG_DTOR(ODbAdminDialog,NULL);
+}
+//-------------------------------------------------------------------------
+short ODbAdminDialog::Ok()
+{
+ SfxTabDialog::Ok();
+ disabledUI();
+ return ( AR_LEAVE_MODIFIED == implApplyChanges() ) ? RET_OK : RET_CANCEL;
+ // TODO : AR_ERROR is not handled correctly, we always close the dialog here
+}
+
+//-------------------------------------------------------------------------
+void ODbAdminDialog::PageCreated(USHORT _nId, SfxTabPage& _rPage)
+{
+ // register ourself as modified listener
+ static_cast<OGenericAdministrationPage&>(_rPage).SetServiceFactory(m_pImpl->getORB());
+ static_cast<OGenericAdministrationPage&>(_rPage).SetAdminDialog(this,this);
+
+ AdjustLayout();
+ Window *pWin = GetViewWindow();
+ if(pWin)
+ pWin->Invalidate();
+
+ SfxTabDialog::PageCreated(_nId, _rPage);
+}
+
+// -----------------------------------------------------------------------------
+void ODbAdminDialog::addDetailPage(USHORT _nPageId, USHORT _nTextId, CreateTabPage _pCreateFunc)
+{
+ // open our own resource block, as the page titles are strings local to this block
+ LocalResourceAccess aDummy(DLG_DATABASE_ADMINISTRATION, RSC_TABDIALOG);
+
+ AddTabPage(_nPageId, String(ModuleRes(_nTextId)), _pCreateFunc, NULL);
+ m_aCurrentDetailPages.push(_nPageId);
+}
+
+//-------------------------------------------------------------------------
+void ODbAdminDialog::impl_selectDataSource(const ::com::sun::star::uno::Any& _aDataSourceName)
+{
+ m_pImpl->setDataSourceOrName(_aDataSourceName);
+ Reference< XPropertySet > xDatasource = m_pImpl->getCurrentDataSource();
+ impl_resetPages( xDatasource );
+
+ DbuTypeCollectionItem* pCollectionItem = PTR_CAST(DbuTypeCollectionItem, getOutputSet()->GetItem(DSID_TYPECOLLECTION));
+ ::dbaccess::ODsnTypeCollection* pCollection = pCollectionItem->getCollection();
+ ::dbaccess::DATASOURCE_TYPE eType = pCollection->determineType(getDatasourceType(*getOutputSet()));
+
+ // and insert the new ones
+ switch ( eType )
+ {
+ case ::dbaccess::DST_DBASE:
+ addDetailPage(PAGE_DBASE, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateDbase);
+ // bResetPasswordRequired = sal_True;
+ break;
+
+ case ::dbaccess::DST_ADO:
+ addDetailPage(PAGE_ADO, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateAdo);
+ break;
+
+ case ::dbaccess::DST_FLAT:
+ addDetailPage(PAGE_TEXT, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateText);
+ // bResetPasswordRequired = sal_True;
+ break;
+
+ case ::dbaccess::DST_ODBC:
+ addDetailPage(PAGE_ODBC, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateODBC);
+ break;
+
+ case ::dbaccess::DST_MYSQL_ODBC:
+ addDetailPage(PAGE_MYSQL_ODBC, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateMySQLODBC);
+ break;
+
+ case ::dbaccess::DST_MYSQL_JDBC:
+ addDetailPage(PAGE_MYSQL_JDBC, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateMySQLJDBC);
+ break;
+
+ case ::dbaccess::DST_ORACLE_JDBC:
+ addDetailPage(PAGE_ORACLE_JDBC, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateOracleJDBC);
+ break;
+
+ case ::dbaccess::DST_ADABAS:
+ // for adabas we have more than one page
+ // CAUTION: the order of inserting pages matters.
+ // the major detail page should be inserted last always (thus, it becomes the first page after
+ // the general page)
+ addDetailPage(PAGE_ADABAS, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateAdabas);
+ break;
+
+ case ::dbaccess::DST_LDAP:
+ addDetailPage(PAGE_LDAP,STR_PAGETITLE_ADVANCED,ODriversSettings::CreateLDAP);
+ break;
+ case ::dbaccess::DST_USERDEFINE1: /// first user defined driver
+ case ::dbaccess::DST_USERDEFINE2:
+ case ::dbaccess::DST_USERDEFINE3:
+ case ::dbaccess::DST_USERDEFINE4:
+ case ::dbaccess::DST_USERDEFINE5:
+ case ::dbaccess::DST_USERDEFINE6:
+ case ::dbaccess::DST_USERDEFINE7:
+ case ::dbaccess::DST_USERDEFINE8:
+ case ::dbaccess::DST_USERDEFINE9:
+ case ::dbaccess::DST_USERDEFINE10:
+ {
+ LocalResourceAccess aDummy(DLG_DATABASE_ADMINISTRATION, RSC_TABDIALOG);
+ String aTitle(ModuleRes(STR_PAGETITLE_ADVANCED));
+ AddTabPage(PAGE_USERDRIVER, aTitle, ODriversSettings::CreateUser, 0, sal_False, 1);
+ m_aCurrentDetailPages.push(PAGE_USERDRIVER);
+ }
+ break;
+ default:
+ break;
+ }
+}
+
+//-------------------------------------------------------------------------
+void ODbAdminDialog::impl_resetPages(const Reference< XPropertySet >& _rxDatasource)
+{
+ // the selection is valid if and only if we have a datasource now
+ GetInputSetImpl()->Put(SfxBoolItem(DSID_INVALID_SELECTION, !_rxDatasource.is()));
+ // (sal_False tells the tab pages to disable and reset all their controls, which is different
+ // from "just set them to readonly")
+
+ // reset the pages
+
+ // prevent flicker
+ SetUpdateMode(sal_False);
+
+ // remove all items which relate to indirect properties from the input set
+ // (without this, the following may happen: select an arbitrary data source where some indirect properties
+ // are set. Select another data source of the same type, where the indirect props are not set (yet). Then,
+ // the indirect property values of the first ds are shown in the second ds ...)
+ const ODbDataSourceAdministrationHelper::MapInt2String& rMap = m_pImpl->getIndirectProperties();
+ for ( ODbDataSourceAdministrationHelper::ConstMapInt2StringIterator aIndirect = rMap.begin();
+ aIndirect != rMap.end();
+ ++aIndirect
+ )
+ GetInputSetImpl()->ClearItem( (sal_uInt16)aIndirect->first );
+
+ // extract all relevant data from the property set of the data source
+ m_pImpl->translateProperties(_rxDatasource, *GetInputSetImpl());
+
+ // propagate this set as our new input set and reset the example set
+ SetInputSet(GetInputSetImpl());
+ delete pExampleSet;
+ pExampleSet = new SfxItemSet(*GetInputSetImpl());
+
+ // special case: MySQL Native does not have the generic PAGE_CONNECTION page
+
+ DbuTypeCollectionItem* pCollectionItem = PTR_CAST(DbuTypeCollectionItem, getOutputSet()->GetItem(DSID_TYPECOLLECTION));
+ ::dbaccess::ODsnTypeCollection* pCollection = pCollectionItem->getCollection();
+ if ( pCollection->determineType(getDatasourceType( *pExampleSet )) == ::dbaccess::DST_MYSQL_NATIVE )
+ {
+ LocalResourceAccess aDummy(DLG_DATABASE_ADMINISTRATION, RSC_TABDIALOG);
+ AddTabPage( PAGE_MYSQL_NATIVE, String( ModuleRes( STR_PAGETITLE_CONNECTION ) ), ODriversSettings::CreateMySQLNATIVE, NULL );
+ RemoveTabPage( PAGE_CONNECTION );
+ m_nMainPageID = PAGE_MYSQL_NATIVE;
+ }
+
+ ShowPage( m_nMainPageID );
+ SfxTabPage* pConnectionPage = GetTabPage( m_nMainPageID );
+ if ( pConnectionPage )
+ pConnectionPage->Reset(*GetInputSetImpl());
+ // if this is NULL, the page has not been created yet, which means we're called before the
+ // dialog was displayed (probably from inside the ctor)
+
+ SetUpdateMode(sal_True);
+}
+// -----------------------------------------------------------------------------
+void ODbAdminDialog::setTitle(const ::rtl::OUString& _sTitle)
+{
+ SetText(_sTitle);
+}
+//-------------------------------------------------------------------------
+void ODbAdminDialog::enableConfirmSettings( bool _bEnable )
+{
+ (void)_bEnable;
+}
+//-------------------------------------------------------------------------
+sal_Bool ODbAdminDialog::saveDatasource()
+{
+ return PrepareLeaveCurrentPage();
+}
+//-------------------------------------------------------------------------
+ODbAdminDialog::ApplyResult ODbAdminDialog::implApplyChanges()
+{
+ if (!PrepareLeaveCurrentPage())
+ { // the page did not allow us to leave
+ return AR_KEEP;
+ }
+
+ if ( !m_pImpl->saveChanges(*pExampleSet) )
+ return AR_KEEP;
+
+ if ( isUIEnabled() )
+ ShowPage(GetCurPageId());
+ // This does the usual ActivatePage, so the pages can save their current status.
+ // This way, next time they're asked what has changed since now and here, they really
+ // can compare with the status they have _now_ (not the one they had before this apply call).
+
+ m_bApplied = sal_True;
+
+ return AR_LEAVE_MODIFIED;
+}
+//-------------------------------------------------------------------------
+void ODbAdminDialog::selectDataSource(const ::com::sun::star::uno::Any& _aDataSourceName)
+{
+ impl_selectDataSource(_aDataSourceName);
+}
+
+// -----------------------------------------------------------------------------
+const SfxItemSet* ODbAdminDialog::getOutputSet() const
+{
+ return GetExampleSet();
+}
+// -----------------------------------------------------------------------------
+SfxItemSet* ODbAdminDialog::getWriteOutputSet()
+{
+ return pExampleSet;
+}
+// -----------------------------------------------------------------------------
+::std::pair< Reference<XConnection>,sal_Bool> ODbAdminDialog::createConnection()
+{
+ return m_pImpl->createConnection();
+}
+// -----------------------------------------------------------------------------
+Reference< XMultiServiceFactory > ODbAdminDialog::getORB() const
+{
+ return m_pImpl->getORB();
+}
+// -----------------------------------------------------------------------------
+Reference< XDriver > ODbAdminDialog::getDriver()
+{
+ return m_pImpl->getDriver();
+}
+// -----------------------------------------------------------------------------
+::rtl::OUString ODbAdminDialog::getDatasourceType(const SfxItemSet& _rSet) const
+{
+ return m_pImpl->getDatasourceType(_rSet);
+}
+// -----------------------------------------------------------------------------
+void ODbAdminDialog::clearPassword()
+{
+ m_pImpl->clearPassword();
+}
+//-------------------------------------------------------------------------
+SfxItemSet* ODbAdminDialog::createItemSet(SfxItemSet*& _rpSet, SfxItemPool*& _rpPool, SfxPoolItem**& _rppDefaults, ::dbaccess::ODsnTypeCollection* _pTypeCollection)
+{
+ // just to be sure ....
+ _rpSet = NULL;
+ _rpPool = NULL;
+ _rppDefaults = NULL;
+
+ const ::rtl::OUString sFilterAll( "%", 1, RTL_TEXTENCODING_ASCII_US );
+ // create and initialize the defaults
+ _rppDefaults = new SfxPoolItem*[DSID_LAST_ITEM_ID - DSID_FIRST_ITEM_ID + 1];
+ SfxPoolItem** pCounter = _rppDefaults; // want to modify this without affecting the out param _rppDefaults
+ *pCounter++ = new SfxStringItem(DSID_NAME, String());
+ *pCounter++ = new SfxStringItem(DSID_ORIGINALNAME, String());
+ *pCounter++ = new SfxStringItem(DSID_CONNECTURL, String());
+ *pCounter++ = new OStringListItem(DSID_TABLEFILTER, Sequence< ::rtl::OUString >(&sFilterAll, 1));
+ *pCounter++ = new DbuTypeCollectionItem(DSID_TYPECOLLECTION, _pTypeCollection);
+ *pCounter++ = new SfxBoolItem(DSID_INVALID_SELECTION, sal_False);
+ *pCounter++ = new SfxBoolItem(DSID_READONLY, sal_False);
+ *pCounter++ = new SfxStringItem(DSID_USER, String());
+ *pCounter++ = new SfxStringItem(DSID_PASSWORD, String());
+ *pCounter++ = new SfxStringItem(DSID_ADDITIONALOPTIONS, String());
+ *pCounter++ = new SfxStringItem(DSID_CHARSET, String());
+ *pCounter++ = new SfxBoolItem(DSID_PASSWORDREQUIRED, sal_False);
+ *pCounter++ = new SfxBoolItem(DSID_SHOWDELETEDROWS, sal_False);
+ *pCounter++ = new SfxBoolItem(DSID_ALLOWLONGTABLENAMES, sal_False);
+ *pCounter++ = new SfxStringItem(DSID_JDBCDRIVERCLASS, String());
+ *pCounter++ = new SfxStringItem(DSID_FIELDDELIMITER, ',');
+ *pCounter++ = new SfxStringItem(DSID_TEXTDELIMITER, '"');
+ *pCounter++ = new SfxStringItem(DSID_DECIMALDELIMITER, '.');
+ *pCounter++ = new SfxStringItem(DSID_THOUSANDSDELIMITER, String());
+ *pCounter++ = new SfxStringItem(DSID_TEXTFILEEXTENSION, String::CreateFromAscii("txt"));
+ *pCounter++ = new SfxBoolItem(DSID_TEXTFILEHEADER, sal_True);
+ *pCounter++ = new SfxBoolItem(DSID_PARAMETERNAMESUBST, sal_False);
+ *pCounter++ = new SfxInt32Item(DSID_CONN_PORTNUMBER, 8100);
+ *pCounter++ = new SfxBoolItem(DSID_SUPPRESSVERSIONCL, sal_False);
+ *pCounter++ = new OPropertySetItem(DSID_DATASOURCE_UNO);
+ *pCounter++ = new SfxBoolItem(DSID_CONN_SHUTSERVICE, sal_False);
+ *pCounter++ = new SfxInt32Item(DSID_CONN_DATAINC, 20);
+ *pCounter++ = new SfxInt32Item(DSID_CONN_CACHESIZE, 20);
+ *pCounter++ = new SfxStringItem(DSID_CONN_CTRLUSER, String());
+ *pCounter++ = new SfxStringItem(DSID_CONN_CTRLPWD, String());
+ *pCounter++ = new SfxBoolItem(DSID_USECATALOG, sal_False);
+ *pCounter++ = new SfxStringItem(DSID_CONN_HOSTNAME, String());
+ *pCounter++ = new SfxStringItem(DSID_CONN_LDAP_BASEDN, String());
+ *pCounter++ = new SfxInt32Item(DSID_CONN_LDAP_PORTNUMBER, 389);
+ *pCounter++ = new SfxInt32Item(DSID_CONN_LDAP_ROWCOUNT, 100);
+ *pCounter++ = new SfxBoolItem(DSID_SQL92CHECK, sal_False);
+ *pCounter++ = new SfxStringItem(DSID_AUTOINCREMENTVALUE, String());
+ *pCounter++ = new SfxStringItem(DSID_AUTORETRIEVEVALUE, String());
+ *pCounter++ = new SfxBoolItem(DSID_AUTORETRIEVEENABLED, sal_False);
+ *pCounter++ = new SfxBoolItem(DSID_APPEND_TABLE_ALIAS, sal_False);
+ *pCounter++ = new SfxInt32Item(DSID_MYSQL_PORTNUMBER, 3306);
+ *pCounter++ = new SfxBoolItem(DSID_IGNOREDRIVER_PRIV, sal_True);
+ *pCounter++ = new SfxInt32Item(DSID_BOOLEANCOMPARISON, 0);
+ *pCounter++ = new SfxInt32Item(DSID_ORACLE_PORTNUMBER, 1521);
+ *pCounter++ = new SfxBoolItem(DSID_ENABLEOUTERJOIN, sal_True);
+ *pCounter++ = new SfxBoolItem(DSID_CATALOG, sal_True);
+ *pCounter++ = new SfxBoolItem(DSID_SCHEMA, sal_True);
+ *pCounter++ = new SfxBoolItem(DSID_INDEXAPPENDIX, sal_True);
+ *pCounter++ = new SfxBoolItem(DSID_CONN_LDAP_USESSL, sal_False);
+ *pCounter++ = new SfxStringItem(DSID_DOCUMENT_URL, String());
+ *pCounter++ = new SfxBoolItem(DSID_DOSLINEENDS, sal_False);
+ *pCounter++ = new SfxStringItem(DSID_DATABASENAME, String());
+ *pCounter++ = new SfxBoolItem(DSID_AS_BEFORE_CORRNAME, sal_True);
+ *pCounter++ = new SfxBoolItem(DSID_CHECK_REQUIRED_FIELDS, sal_True);
+ *pCounter++ = new SfxBoolItem(DSID_IGNORECURRENCY, sal_False);
+ *pCounter++ = new SfxStringItem(DSID_CONN_SOCKET, String());
+ *pCounter++ = new SfxBoolItem(DSID_ESCAPE_DATETIME, sal_True);
+ *pCounter++ = new SfxStringItem(DSID_NAMED_PIPE, String());
+ *pCounter++ = new OptionalBoolItem( DSID_PRIMARY_KEY_SUPPORT );
+
+ // create the pool
+ static SfxItemInfo __READONLY_DATA aItemInfos[DSID_LAST_ITEM_ID - DSID_FIRST_ITEM_ID + 1] =
+ {
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0},
+ {0,0}
+ };
+
+ OSL_ENSURE(sizeof(aItemInfos)/sizeof(aItemInfos[0]) == DSID_LAST_ITEM_ID,"Invalid Ids!");
+ _rpPool = new SfxItemPool(String::CreateFromAscii("DSAItemPool"), DSID_FIRST_ITEM_ID, DSID_LAST_ITEM_ID,
+ aItemInfos, _rppDefaults);
+ _rpPool->FreezeIdRanges();
+
+ // and, finally, the set
+ _rpSet = new SfxItemSet(*_rpPool, sal_True);
+
+ return _rpSet;
+}
+//-------------------------------------------------------------------------
+void ODbAdminDialog::destroyItemSet(SfxItemSet*& _rpSet, SfxItemPool*& _rpPool, SfxPoolItem**& _rppDefaults)
+{
+ // _first_ delete the set (refering the pool)
+ if (_rpSet)
+ {
+ delete _rpSet;
+ _rpSet = NULL;
+ }
+
+ // delete the pool
+ if (_rpPool)
+ {
+ _rpPool->ReleaseDefaults(sal_True);
+ // the "true" means delete the items, too
+ SfxItemPool::Free(_rpPool);
+ _rpPool = NULL;
+ }
+
+ // reset the defaults ptr
+ _rppDefaults = NULL;
+ // no need to explicitly delete the defaults, this has been done by the ReleaseDefaults
+}
+
+//.........................................................................
+} // namespace dbaui
+//.........................................................................
+