1*96de5490SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*96de5490SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*96de5490SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*96de5490SAndrew Rist * distributed with this work for additional information 6*96de5490SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*96de5490SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*96de5490SAndrew Rist * "License"); you may not use this file except in compliance 9*96de5490SAndrew Rist * with the License. You may obtain a copy of the License at 10cdf0e10cSrcweir * 11*96de5490SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12cdf0e10cSrcweir * 13*96de5490SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*96de5490SAndrew Rist * software distributed under the License is distributed on an 15*96de5490SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*96de5490SAndrew Rist * KIND, either express or implied. See the License for the 17*96de5490SAndrew Rist * specific language governing permissions and limitations 18*96de5490SAndrew Rist * under the License. 19cdf0e10cSrcweir * 20*96de5490SAndrew Rist *************************************************************/ 21*96de5490SAndrew Rist 22*96de5490SAndrew Rist 23cdf0e10cSrcweir 24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove 25cdf0e10cSrcweir #include "precompiled_dbaccess.hxx" 26cdf0e10cSrcweir 27cdf0e10cSrcweir #include "ConnectionPage.hxx" 28cdf0e10cSrcweir #include "DbAdminImpl.hxx" 29cdf0e10cSrcweir #include "DriverSettings.hxx" 30cdf0e10cSrcweir #include "adminpages.hxx" 31cdf0e10cSrcweir #include "dbadmin.hrc" 32cdf0e10cSrcweir #include "dbadmin.hxx" 33cdf0e10cSrcweir #include "dbu_dlg.hrc" 34cdf0e10cSrcweir #include <svl/stritem.hxx> 35cdf0e10cSrcweir #include <svl/eitem.hxx> 36cdf0e10cSrcweir #include <svl/intitem.hxx> 37cdf0e10cSrcweir #include "dbustrings.hrc" 38cdf0e10cSrcweir #include "dsitems.hxx" 39cdf0e10cSrcweir #include "dsnItem.hxx" 40cdf0e10cSrcweir #include "localresaccess.hxx" 41cdf0e10cSrcweir #include "optionalboolitem.hxx" 42cdf0e10cSrcweir #include "propertysetitem.hxx" 43cdf0e10cSrcweir #include "stringlistitem.hxx" 44cdf0e10cSrcweir 45cdf0e10cSrcweir #include <svl/eitem.hxx> 46cdf0e10cSrcweir #include <svl/intitem.hxx> 47cdf0e10cSrcweir #include <svl/stritem.hxx> 48cdf0e10cSrcweir #include <unotools/confignode.hxx> 49cdf0e10cSrcweir #include <vcl/msgbox.hxx> 50cdf0e10cSrcweir 51cdf0e10cSrcweir //......................................................................... 52cdf0e10cSrcweir namespace dbaui 53cdf0e10cSrcweir { 54cdf0e10cSrcweir //......................................................................... 55cdf0e10cSrcweir using namespace com::sun::star::uno; 56cdf0e10cSrcweir using namespace com::sun::star::sdbc; 57cdf0e10cSrcweir using namespace com::sun::star::lang; 58cdf0e10cSrcweir using namespace com::sun::star::util; 59cdf0e10cSrcweir using namespace com::sun::star::beans; 60cdf0e10cSrcweir using namespace com::sun::star::container; 61cdf0e10cSrcweir 62cdf0e10cSrcweir //========================================================================= 63cdf0e10cSrcweir //= ODbAdminDialog 64cdf0e10cSrcweir //========================================================================= 65cdf0e10cSrcweir DBG_NAME(ODbAdminDialog) 66cdf0e10cSrcweir //------------------------------------------------------------------------- 67cdf0e10cSrcweir ODbAdminDialog::ODbAdminDialog(Window* _pParent 68cdf0e10cSrcweir , SfxItemSet* _pItems 69cdf0e10cSrcweir , const Reference< XMultiServiceFactory >& _rxORB 70cdf0e10cSrcweir ) 71cdf0e10cSrcweir :SfxTabDialog(_pParent, ModuleRes(DLG_DATABASE_ADMINISTRATION), _pItems) 72cdf0e10cSrcweir ,m_bApplied(sal_False) 73cdf0e10cSrcweir ,m_bUIEnabled( sal_True ) 74cdf0e10cSrcweir ,m_nMainPageID( PAGE_CONNECTION ) 75cdf0e10cSrcweir { 76cdf0e10cSrcweir DBG_CTOR(ODbAdminDialog,NULL); 77cdf0e10cSrcweir 78cdf0e10cSrcweir m_pImpl = ::std::auto_ptr<ODbDataSourceAdministrationHelper>(new ODbDataSourceAdministrationHelper(_rxORB,this,this)); 79cdf0e10cSrcweir 80cdf0e10cSrcweir // add the initial tab page 81cdf0e10cSrcweir AddTabPage( m_nMainPageID, String( ModuleRes( STR_PAGETITLE_GENERAL ) ), OConnectionTabPage::Create, NULL ); 82cdf0e10cSrcweir 83cdf0e10cSrcweir // remove the reset button - it's meaning is much too ambiguous in this dialog 84cdf0e10cSrcweir RemoveResetButton(); 85cdf0e10cSrcweir // no local resources needed anymore 86cdf0e10cSrcweir FreeResource(); 87cdf0e10cSrcweir } 88cdf0e10cSrcweir 89cdf0e10cSrcweir //------------------------------------------------------------------------- 90cdf0e10cSrcweir ODbAdminDialog::~ODbAdminDialog() 91cdf0e10cSrcweir { 92cdf0e10cSrcweir SetInputSet(NULL); 93cdf0e10cSrcweir DELETEZ(pExampleSet); 94cdf0e10cSrcweir 95cdf0e10cSrcweir DBG_DTOR(ODbAdminDialog,NULL); 96cdf0e10cSrcweir } 97cdf0e10cSrcweir //------------------------------------------------------------------------- 98cdf0e10cSrcweir short ODbAdminDialog::Ok() 99cdf0e10cSrcweir { 100cdf0e10cSrcweir SfxTabDialog::Ok(); 101cdf0e10cSrcweir disabledUI(); 102cdf0e10cSrcweir return ( AR_LEAVE_MODIFIED == implApplyChanges() ) ? RET_OK : RET_CANCEL; 103cdf0e10cSrcweir // TODO : AR_ERROR is not handled correctly, we always close the dialog here 104cdf0e10cSrcweir } 105cdf0e10cSrcweir 106cdf0e10cSrcweir //------------------------------------------------------------------------- 107cdf0e10cSrcweir void ODbAdminDialog::PageCreated(sal_uInt16 _nId, SfxTabPage& _rPage) 108cdf0e10cSrcweir { 109cdf0e10cSrcweir // register ourself as modified listener 110cdf0e10cSrcweir static_cast<OGenericAdministrationPage&>(_rPage).SetServiceFactory(m_pImpl->getORB()); 111cdf0e10cSrcweir static_cast<OGenericAdministrationPage&>(_rPage).SetAdminDialog(this,this); 112cdf0e10cSrcweir 113cdf0e10cSrcweir AdjustLayout(); 114cdf0e10cSrcweir Window *pWin = GetViewWindow(); 115cdf0e10cSrcweir if(pWin) 116cdf0e10cSrcweir pWin->Invalidate(); 117cdf0e10cSrcweir 118cdf0e10cSrcweir SfxTabDialog::PageCreated(_nId, _rPage); 119cdf0e10cSrcweir } 120cdf0e10cSrcweir 121cdf0e10cSrcweir // ----------------------------------------------------------------------------- 122cdf0e10cSrcweir void ODbAdminDialog::addDetailPage(sal_uInt16 _nPageId, sal_uInt16 _nTextId, CreateTabPage _pCreateFunc) 123cdf0e10cSrcweir { 124cdf0e10cSrcweir // open our own resource block, as the page titles are strings local to this block 125cdf0e10cSrcweir LocalResourceAccess aDummy(DLG_DATABASE_ADMINISTRATION, RSC_TABDIALOG); 126cdf0e10cSrcweir 127cdf0e10cSrcweir AddTabPage(_nPageId, String(ModuleRes(_nTextId)), _pCreateFunc, NULL); 128cdf0e10cSrcweir m_aCurrentDetailPages.push(_nPageId); 129cdf0e10cSrcweir } 130cdf0e10cSrcweir 131cdf0e10cSrcweir //------------------------------------------------------------------------- 132cdf0e10cSrcweir void ODbAdminDialog::impl_selectDataSource(const ::com::sun::star::uno::Any& _aDataSourceName) 133cdf0e10cSrcweir { 134cdf0e10cSrcweir m_pImpl->setDataSourceOrName(_aDataSourceName); 135cdf0e10cSrcweir Reference< XPropertySet > xDatasource = m_pImpl->getCurrentDataSource(); 136cdf0e10cSrcweir impl_resetPages( xDatasource ); 137cdf0e10cSrcweir 138cdf0e10cSrcweir DbuTypeCollectionItem* pCollectionItem = PTR_CAST(DbuTypeCollectionItem, getOutputSet()->GetItem(DSID_TYPECOLLECTION)); 139cdf0e10cSrcweir ::dbaccess::ODsnTypeCollection* pCollection = pCollectionItem->getCollection(); 140cdf0e10cSrcweir ::dbaccess::DATASOURCE_TYPE eType = pCollection->determineType(getDatasourceType(*getOutputSet())); 141cdf0e10cSrcweir 142cdf0e10cSrcweir // and insert the new ones 143cdf0e10cSrcweir switch ( eType ) 144cdf0e10cSrcweir { 145cdf0e10cSrcweir case ::dbaccess::DST_DBASE: 146cdf0e10cSrcweir addDetailPage(PAGE_DBASE, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateDbase); 147cdf0e10cSrcweir // bResetPasswordRequired = sal_True; 148cdf0e10cSrcweir break; 149cdf0e10cSrcweir 150cdf0e10cSrcweir case ::dbaccess::DST_ADO: 151cdf0e10cSrcweir addDetailPage(PAGE_ADO, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateAdo); 152cdf0e10cSrcweir break; 153cdf0e10cSrcweir 154cdf0e10cSrcweir case ::dbaccess::DST_FLAT: 155cdf0e10cSrcweir addDetailPage(PAGE_TEXT, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateText); 156cdf0e10cSrcweir // bResetPasswordRequired = sal_True; 157cdf0e10cSrcweir break; 158cdf0e10cSrcweir 159cdf0e10cSrcweir case ::dbaccess::DST_ODBC: 160cdf0e10cSrcweir addDetailPage(PAGE_ODBC, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateODBC); 161cdf0e10cSrcweir break; 162cdf0e10cSrcweir 163cdf0e10cSrcweir case ::dbaccess::DST_MYSQL_ODBC: 164cdf0e10cSrcweir addDetailPage(PAGE_MYSQL_ODBC, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateMySQLODBC); 165cdf0e10cSrcweir break; 166cdf0e10cSrcweir 167cdf0e10cSrcweir case ::dbaccess::DST_MYSQL_JDBC: 168cdf0e10cSrcweir addDetailPage(PAGE_MYSQL_JDBC, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateMySQLJDBC); 169cdf0e10cSrcweir break; 170cdf0e10cSrcweir 171cdf0e10cSrcweir case ::dbaccess::DST_ORACLE_JDBC: 172cdf0e10cSrcweir addDetailPage(PAGE_ORACLE_JDBC, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateOracleJDBC); 173cdf0e10cSrcweir break; 174cdf0e10cSrcweir 175cdf0e10cSrcweir case ::dbaccess::DST_ADABAS: 176cdf0e10cSrcweir // for adabas we have more than one page 177cdf0e10cSrcweir // CAUTION: the order of inserting pages matters. 178cdf0e10cSrcweir // the major detail page should be inserted last always (thus, it becomes the first page after 179cdf0e10cSrcweir // the general page) 180cdf0e10cSrcweir addDetailPage(PAGE_ADABAS, STR_PAGETITLE_ADVANCED, ODriversSettings::CreateAdabas); 181cdf0e10cSrcweir break; 182cdf0e10cSrcweir 183cdf0e10cSrcweir case ::dbaccess::DST_LDAP: 184cdf0e10cSrcweir addDetailPage(PAGE_LDAP,STR_PAGETITLE_ADVANCED,ODriversSettings::CreateLDAP); 185cdf0e10cSrcweir break; 186cdf0e10cSrcweir case ::dbaccess::DST_USERDEFINE1: /// first user defined driver 187cdf0e10cSrcweir case ::dbaccess::DST_USERDEFINE2: 188cdf0e10cSrcweir case ::dbaccess::DST_USERDEFINE3: 189cdf0e10cSrcweir case ::dbaccess::DST_USERDEFINE4: 190cdf0e10cSrcweir case ::dbaccess::DST_USERDEFINE5: 191cdf0e10cSrcweir case ::dbaccess::DST_USERDEFINE6: 192cdf0e10cSrcweir case ::dbaccess::DST_USERDEFINE7: 193cdf0e10cSrcweir case ::dbaccess::DST_USERDEFINE8: 194cdf0e10cSrcweir case ::dbaccess::DST_USERDEFINE9: 195cdf0e10cSrcweir case ::dbaccess::DST_USERDEFINE10: 196cdf0e10cSrcweir { 197cdf0e10cSrcweir LocalResourceAccess aDummy(DLG_DATABASE_ADMINISTRATION, RSC_TABDIALOG); 198cdf0e10cSrcweir String aTitle(ModuleRes(STR_PAGETITLE_ADVANCED)); 199cdf0e10cSrcweir AddTabPage(PAGE_USERDRIVER, aTitle, ODriversSettings::CreateUser, 0, sal_False, 1); 200cdf0e10cSrcweir m_aCurrentDetailPages.push(PAGE_USERDRIVER); 201cdf0e10cSrcweir } 202cdf0e10cSrcweir break; 203cdf0e10cSrcweir default: 204cdf0e10cSrcweir break; 205cdf0e10cSrcweir } 206cdf0e10cSrcweir } 207cdf0e10cSrcweir 208cdf0e10cSrcweir //------------------------------------------------------------------------- 209cdf0e10cSrcweir void ODbAdminDialog::impl_resetPages(const Reference< XPropertySet >& _rxDatasource) 210cdf0e10cSrcweir { 211cdf0e10cSrcweir // the selection is valid if and only if we have a datasource now 212cdf0e10cSrcweir GetInputSetImpl()->Put(SfxBoolItem(DSID_INVALID_SELECTION, !_rxDatasource.is())); 213cdf0e10cSrcweir // (sal_False tells the tab pages to disable and reset all their controls, which is different 214cdf0e10cSrcweir // from "just set them to readonly") 215cdf0e10cSrcweir 216cdf0e10cSrcweir // reset the pages 217cdf0e10cSrcweir 218cdf0e10cSrcweir // prevent flicker 219cdf0e10cSrcweir SetUpdateMode(sal_False); 220cdf0e10cSrcweir 221cdf0e10cSrcweir // remove all items which relate to indirect properties from the input set 222cdf0e10cSrcweir // (without this, the following may happen: select an arbitrary data source where some indirect properties 223cdf0e10cSrcweir // are set. Select another data source of the same type, where the indirect props are not set (yet). Then, 224cdf0e10cSrcweir // the indirect property values of the first ds are shown in the second ds ...) 225cdf0e10cSrcweir const ODbDataSourceAdministrationHelper::MapInt2String& rMap = m_pImpl->getIndirectProperties(); 226cdf0e10cSrcweir for ( ODbDataSourceAdministrationHelper::ConstMapInt2StringIterator aIndirect = rMap.begin(); 227cdf0e10cSrcweir aIndirect != rMap.end(); 228cdf0e10cSrcweir ++aIndirect 229cdf0e10cSrcweir ) 230cdf0e10cSrcweir GetInputSetImpl()->ClearItem( (sal_uInt16)aIndirect->first ); 231cdf0e10cSrcweir 232cdf0e10cSrcweir // extract all relevant data from the property set of the data source 233cdf0e10cSrcweir m_pImpl->translateProperties(_rxDatasource, *GetInputSetImpl()); 234cdf0e10cSrcweir 235cdf0e10cSrcweir // propagate this set as our new input set and reset the example set 236cdf0e10cSrcweir SetInputSet(GetInputSetImpl()); 237cdf0e10cSrcweir delete pExampleSet; 238cdf0e10cSrcweir pExampleSet = new SfxItemSet(*GetInputSetImpl()); 239cdf0e10cSrcweir 240cdf0e10cSrcweir // special case: MySQL Native does not have the generic PAGE_CONNECTION page 241cdf0e10cSrcweir 242cdf0e10cSrcweir DbuTypeCollectionItem* pCollectionItem = PTR_CAST(DbuTypeCollectionItem, getOutputSet()->GetItem(DSID_TYPECOLLECTION)); 243cdf0e10cSrcweir ::dbaccess::ODsnTypeCollection* pCollection = pCollectionItem->getCollection(); 244cdf0e10cSrcweir if ( pCollection->determineType(getDatasourceType( *pExampleSet )) == ::dbaccess::DST_MYSQL_NATIVE ) 245cdf0e10cSrcweir { 246cdf0e10cSrcweir LocalResourceAccess aDummy(DLG_DATABASE_ADMINISTRATION, RSC_TABDIALOG); 247cdf0e10cSrcweir AddTabPage( PAGE_MYSQL_NATIVE, String( ModuleRes( STR_PAGETITLE_CONNECTION ) ), ODriversSettings::CreateMySQLNATIVE, NULL ); 248cdf0e10cSrcweir RemoveTabPage( PAGE_CONNECTION ); 249cdf0e10cSrcweir m_nMainPageID = PAGE_MYSQL_NATIVE; 250cdf0e10cSrcweir } 251cdf0e10cSrcweir 252cdf0e10cSrcweir ShowPage( m_nMainPageID ); 253cdf0e10cSrcweir SfxTabPage* pConnectionPage = GetTabPage( m_nMainPageID ); 254cdf0e10cSrcweir if ( pConnectionPage ) 255cdf0e10cSrcweir pConnectionPage->Reset(*GetInputSetImpl()); 256cdf0e10cSrcweir // if this is NULL, the page has not been created yet, which means we're called before the 257cdf0e10cSrcweir // dialog was displayed (probably from inside the ctor) 258cdf0e10cSrcweir 259cdf0e10cSrcweir SetUpdateMode(sal_True); 260cdf0e10cSrcweir } 261cdf0e10cSrcweir // ----------------------------------------------------------------------------- 262cdf0e10cSrcweir void ODbAdminDialog::setTitle(const ::rtl::OUString& _sTitle) 263cdf0e10cSrcweir { 264cdf0e10cSrcweir SetText(_sTitle); 265cdf0e10cSrcweir } 266cdf0e10cSrcweir //------------------------------------------------------------------------- 267cdf0e10cSrcweir void ODbAdminDialog::enableConfirmSettings( bool _bEnable ) 268cdf0e10cSrcweir { 269cdf0e10cSrcweir (void)_bEnable; 270cdf0e10cSrcweir } 271cdf0e10cSrcweir //------------------------------------------------------------------------- 272cdf0e10cSrcweir sal_Bool ODbAdminDialog::saveDatasource() 273cdf0e10cSrcweir { 274cdf0e10cSrcweir return PrepareLeaveCurrentPage(); 275cdf0e10cSrcweir } 276cdf0e10cSrcweir //------------------------------------------------------------------------- 277cdf0e10cSrcweir ODbAdminDialog::ApplyResult ODbAdminDialog::implApplyChanges() 278cdf0e10cSrcweir { 279cdf0e10cSrcweir if (!PrepareLeaveCurrentPage()) 280cdf0e10cSrcweir { // the page did not allow us to leave 281cdf0e10cSrcweir return AR_KEEP; 282cdf0e10cSrcweir } 283cdf0e10cSrcweir 284cdf0e10cSrcweir if ( !m_pImpl->saveChanges(*pExampleSet) ) 285cdf0e10cSrcweir return AR_KEEP; 286cdf0e10cSrcweir 287cdf0e10cSrcweir if ( isUIEnabled() ) 288cdf0e10cSrcweir ShowPage(GetCurPageId()); 289cdf0e10cSrcweir // This does the usual ActivatePage, so the pages can save their current status. 290cdf0e10cSrcweir // This way, next time they're asked what has changed since now and here, they really 291cdf0e10cSrcweir // can compare with the status they have _now_ (not the one they had before this apply call). 292cdf0e10cSrcweir 293cdf0e10cSrcweir m_bApplied = sal_True; 294cdf0e10cSrcweir 295cdf0e10cSrcweir return AR_LEAVE_MODIFIED; 296cdf0e10cSrcweir } 297cdf0e10cSrcweir //------------------------------------------------------------------------- 298cdf0e10cSrcweir void ODbAdminDialog::selectDataSource(const ::com::sun::star::uno::Any& _aDataSourceName) 299cdf0e10cSrcweir { 300cdf0e10cSrcweir impl_selectDataSource(_aDataSourceName); 301cdf0e10cSrcweir } 302cdf0e10cSrcweir 303cdf0e10cSrcweir // ----------------------------------------------------------------------------- 304cdf0e10cSrcweir const SfxItemSet* ODbAdminDialog::getOutputSet() const 305cdf0e10cSrcweir { 306cdf0e10cSrcweir return GetExampleSet(); 307cdf0e10cSrcweir } 308cdf0e10cSrcweir // ----------------------------------------------------------------------------- 309cdf0e10cSrcweir SfxItemSet* ODbAdminDialog::getWriteOutputSet() 310cdf0e10cSrcweir { 311cdf0e10cSrcweir return pExampleSet; 312cdf0e10cSrcweir } 313cdf0e10cSrcweir // ----------------------------------------------------------------------------- 314cdf0e10cSrcweir ::std::pair< Reference<XConnection>,sal_Bool> ODbAdminDialog::createConnection() 315cdf0e10cSrcweir { 316cdf0e10cSrcweir return m_pImpl->createConnection(); 317cdf0e10cSrcweir } 318cdf0e10cSrcweir // ----------------------------------------------------------------------------- 319cdf0e10cSrcweir Reference< XMultiServiceFactory > ODbAdminDialog::getORB() const 320cdf0e10cSrcweir { 321cdf0e10cSrcweir return m_pImpl->getORB(); 322cdf0e10cSrcweir } 323cdf0e10cSrcweir // ----------------------------------------------------------------------------- 324cdf0e10cSrcweir Reference< XDriver > ODbAdminDialog::getDriver() 325cdf0e10cSrcweir { 326cdf0e10cSrcweir return m_pImpl->getDriver(); 327cdf0e10cSrcweir } 328cdf0e10cSrcweir // ----------------------------------------------------------------------------- 329cdf0e10cSrcweir ::rtl::OUString ODbAdminDialog::getDatasourceType(const SfxItemSet& _rSet) const 330cdf0e10cSrcweir { 331cdf0e10cSrcweir return m_pImpl->getDatasourceType(_rSet); 332cdf0e10cSrcweir } 333cdf0e10cSrcweir // ----------------------------------------------------------------------------- 334cdf0e10cSrcweir void ODbAdminDialog::clearPassword() 335cdf0e10cSrcweir { 336cdf0e10cSrcweir m_pImpl->clearPassword(); 337cdf0e10cSrcweir } 338cdf0e10cSrcweir //------------------------------------------------------------------------- 339cdf0e10cSrcweir SfxItemSet* ODbAdminDialog::createItemSet(SfxItemSet*& _rpSet, SfxItemPool*& _rpPool, SfxPoolItem**& _rppDefaults, ::dbaccess::ODsnTypeCollection* _pTypeCollection) 340cdf0e10cSrcweir { 341cdf0e10cSrcweir // just to be sure .... 342cdf0e10cSrcweir _rpSet = NULL; 343cdf0e10cSrcweir _rpPool = NULL; 344cdf0e10cSrcweir _rppDefaults = NULL; 345cdf0e10cSrcweir 346cdf0e10cSrcweir const ::rtl::OUString sFilterAll( "%", 1, RTL_TEXTENCODING_ASCII_US ); 347cdf0e10cSrcweir // create and initialize the defaults 348cdf0e10cSrcweir _rppDefaults = new SfxPoolItem*[DSID_LAST_ITEM_ID - DSID_FIRST_ITEM_ID + 1]; 349cdf0e10cSrcweir SfxPoolItem** pCounter = _rppDefaults; // want to modify this without affecting the out param _rppDefaults 350cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_NAME, String()); 351cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_ORIGINALNAME, String()); 352cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_CONNECTURL, String()); 353cdf0e10cSrcweir *pCounter++ = new OStringListItem(DSID_TABLEFILTER, Sequence< ::rtl::OUString >(&sFilterAll, 1)); 354cdf0e10cSrcweir *pCounter++ = new DbuTypeCollectionItem(DSID_TYPECOLLECTION, _pTypeCollection); 355cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_INVALID_SELECTION, sal_False); 356cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_READONLY, sal_False); 357cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_USER, String()); 358cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_PASSWORD, String()); 359cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_ADDITIONALOPTIONS, String()); 360cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_CHARSET, String()); 361cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_PASSWORDREQUIRED, sal_False); 362cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_SHOWDELETEDROWS, sal_False); 363cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_ALLOWLONGTABLENAMES, sal_False); 364cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_JDBCDRIVERCLASS, String()); 365cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_FIELDDELIMITER, ','); 366cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_TEXTDELIMITER, '"'); 367cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_DECIMALDELIMITER, '.'); 368cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_THOUSANDSDELIMITER, String()); 369cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_TEXTFILEEXTENSION, String::CreateFromAscii("txt")); 370cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_TEXTFILEHEADER, sal_True); 371cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_PARAMETERNAMESUBST, sal_False); 372cdf0e10cSrcweir *pCounter++ = new SfxInt32Item(DSID_CONN_PORTNUMBER, 8100); 373cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_SUPPRESSVERSIONCL, sal_False); 374cdf0e10cSrcweir *pCounter++ = new OPropertySetItem(DSID_DATASOURCE_UNO); 375cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_CONN_SHUTSERVICE, sal_False); 376cdf0e10cSrcweir *pCounter++ = new SfxInt32Item(DSID_CONN_DATAINC, 20); 377cdf0e10cSrcweir *pCounter++ = new SfxInt32Item(DSID_CONN_CACHESIZE, 20); 378cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_CONN_CTRLUSER, String()); 379cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_CONN_CTRLPWD, String()); 380cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_USECATALOG, sal_False); 381cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_CONN_HOSTNAME, String()); 382cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_CONN_LDAP_BASEDN, String()); 383cdf0e10cSrcweir *pCounter++ = new SfxInt32Item(DSID_CONN_LDAP_PORTNUMBER, 389); 384cdf0e10cSrcweir *pCounter++ = new SfxInt32Item(DSID_CONN_LDAP_ROWCOUNT, 100); 385cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_SQL92CHECK, sal_False); 386cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_AUTOINCREMENTVALUE, String()); 387cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_AUTORETRIEVEVALUE, String()); 388cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_AUTORETRIEVEENABLED, sal_False); 389cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_APPEND_TABLE_ALIAS, sal_False); 390cdf0e10cSrcweir *pCounter++ = new SfxInt32Item(DSID_MYSQL_PORTNUMBER, 3306); 391cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_IGNOREDRIVER_PRIV, sal_True); 392cdf0e10cSrcweir *pCounter++ = new SfxInt32Item(DSID_BOOLEANCOMPARISON, 0); 393cdf0e10cSrcweir *pCounter++ = new SfxInt32Item(DSID_ORACLE_PORTNUMBER, 1521); 394cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_ENABLEOUTERJOIN, sal_True); 395cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_CATALOG, sal_True); 396cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_SCHEMA, sal_True); 397cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_INDEXAPPENDIX, sal_True); 398cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_CONN_LDAP_USESSL, sal_False); 399cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_DOCUMENT_URL, String()); 400cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_DOSLINEENDS, sal_False); 401cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_DATABASENAME, String()); 402cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_AS_BEFORE_CORRNAME, sal_True); 403cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_CHECK_REQUIRED_FIELDS, sal_True); 404cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_IGNORECURRENCY, sal_False); 405cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_CONN_SOCKET, String()); 406cdf0e10cSrcweir *pCounter++ = new SfxBoolItem(DSID_ESCAPE_DATETIME, sal_True); 407cdf0e10cSrcweir *pCounter++ = new SfxStringItem(DSID_NAMED_PIPE, String()); 408cdf0e10cSrcweir *pCounter++ = new OptionalBoolItem( DSID_PRIMARY_KEY_SUPPORT ); 409cdf0e10cSrcweir *pCounter++ = new SfxInt32Item(DSID_MAX_ROW_SCAN, 100); 410cdf0e10cSrcweir *pCounter++ = new SfxBoolItem( DSID_RESPECTRESULTSETTYPE,sal_False ); 411cdf0e10cSrcweir 412cdf0e10cSrcweir // create the pool 413cdf0e10cSrcweir static SfxItemInfo __READONLY_DATA aItemInfos[DSID_LAST_ITEM_ID - DSID_FIRST_ITEM_ID + 1] = 414cdf0e10cSrcweir { 415cdf0e10cSrcweir {0,0}, 416cdf0e10cSrcweir {0,0}, 417cdf0e10cSrcweir {0,0}, 418cdf0e10cSrcweir {0,0}, 419cdf0e10cSrcweir {0,0}, 420cdf0e10cSrcweir {0,0}, 421cdf0e10cSrcweir {0,0}, 422cdf0e10cSrcweir {0,0}, 423cdf0e10cSrcweir {0,0}, 424cdf0e10cSrcweir {0,0}, 425cdf0e10cSrcweir {0,0}, 426cdf0e10cSrcweir {0,0}, 427cdf0e10cSrcweir {0,0}, 428cdf0e10cSrcweir {0,0}, 429cdf0e10cSrcweir {0,0}, 430cdf0e10cSrcweir {0,0}, 431cdf0e10cSrcweir {0,0}, 432cdf0e10cSrcweir {0,0}, 433cdf0e10cSrcweir {0,0}, 434cdf0e10cSrcweir {0,0}, 435cdf0e10cSrcweir {0,0}, 436cdf0e10cSrcweir {0,0}, 437cdf0e10cSrcweir {0,0}, 438cdf0e10cSrcweir {0,0}, 439cdf0e10cSrcweir {0,0}, 440cdf0e10cSrcweir {0,0}, 441cdf0e10cSrcweir {0,0}, 442cdf0e10cSrcweir {0,0}, 443cdf0e10cSrcweir {0,0}, 444cdf0e10cSrcweir {0,0}, 445cdf0e10cSrcweir {0,0}, 446cdf0e10cSrcweir {0,0}, 447cdf0e10cSrcweir {0,0}, 448cdf0e10cSrcweir {0,0}, 449cdf0e10cSrcweir {0,0}, 450cdf0e10cSrcweir {0,0}, 451cdf0e10cSrcweir {0,0}, 452cdf0e10cSrcweir {0,0}, 453cdf0e10cSrcweir {0,0}, 454cdf0e10cSrcweir {0,0}, 455cdf0e10cSrcweir {0,0}, 456cdf0e10cSrcweir {0,0}, 457cdf0e10cSrcweir {0,0}, 458cdf0e10cSrcweir {0,0}, 459cdf0e10cSrcweir {0,0}, 460cdf0e10cSrcweir {0,0}, 461cdf0e10cSrcweir {0,0}, 462cdf0e10cSrcweir {0,0}, 463cdf0e10cSrcweir {0,0}, 464cdf0e10cSrcweir {0,0}, 465cdf0e10cSrcweir {0,0}, 466cdf0e10cSrcweir {0,0}, 467cdf0e10cSrcweir {0,0}, 468cdf0e10cSrcweir {0,0}, 469cdf0e10cSrcweir {0,0}, 470cdf0e10cSrcweir {0,0}, 471cdf0e10cSrcweir {0,0}, 472cdf0e10cSrcweir {0,0}, 473cdf0e10cSrcweir {0,0}, 474cdf0e10cSrcweir {0,0}, 475cdf0e10cSrcweir {0,0} 476cdf0e10cSrcweir }; 477cdf0e10cSrcweir 478cdf0e10cSrcweir OSL_ENSURE(sizeof(aItemInfos)/sizeof(aItemInfos[0]) == DSID_LAST_ITEM_ID,"Invalid Ids!"); 479cdf0e10cSrcweir _rpPool = new SfxItemPool(String::CreateFromAscii("DSAItemPool"), DSID_FIRST_ITEM_ID, DSID_LAST_ITEM_ID, 480cdf0e10cSrcweir aItemInfos, _rppDefaults); 481cdf0e10cSrcweir _rpPool->FreezeIdRanges(); 482cdf0e10cSrcweir 483cdf0e10cSrcweir // and, finally, the set 484cdf0e10cSrcweir _rpSet = new SfxItemSet(*_rpPool, sal_True); 485cdf0e10cSrcweir 486cdf0e10cSrcweir return _rpSet; 487cdf0e10cSrcweir } 488cdf0e10cSrcweir //------------------------------------------------------------------------- 489cdf0e10cSrcweir void ODbAdminDialog::destroyItemSet(SfxItemSet*& _rpSet, SfxItemPool*& _rpPool, SfxPoolItem**& _rppDefaults) 490cdf0e10cSrcweir { 491cdf0e10cSrcweir // _first_ delete the set (refering the pool) 492cdf0e10cSrcweir if (_rpSet) 493cdf0e10cSrcweir { 494cdf0e10cSrcweir delete _rpSet; 495cdf0e10cSrcweir _rpSet = NULL; 496cdf0e10cSrcweir } 497cdf0e10cSrcweir 498cdf0e10cSrcweir // delete the pool 499cdf0e10cSrcweir if (_rpPool) 500cdf0e10cSrcweir { 501cdf0e10cSrcweir _rpPool->ReleaseDefaults(sal_True); 502cdf0e10cSrcweir // the "true" means delete the items, too 503cdf0e10cSrcweir SfxItemPool::Free(_rpPool); 504cdf0e10cSrcweir _rpPool = NULL; 505cdf0e10cSrcweir } 506cdf0e10cSrcweir 507cdf0e10cSrcweir // reset the defaults ptr 508cdf0e10cSrcweir _rppDefaults = NULL; 509cdf0e10cSrcweir // no need to explicitly delete the defaults, this has been done by the ReleaseDefaults 510cdf0e10cSrcweir } 511cdf0e10cSrcweir 512cdf0e10cSrcweir //......................................................................... 513cdf0e10cSrcweir } // namespace dbaui 514cdf0e10cSrcweir //......................................................................... 515cdf0e10cSrcweir 516