|  | /************************************************************** | 
|  | * | 
|  | * Licensed to the Apache Software Foundation (ASF) under one | 
|  | * or more contributor license agreements.  See the NOTICE file | 
|  | * distributed with this work for additional information | 
|  | * regarding copyright ownership.  The ASF licenses this file | 
|  | * to you under the Apache License, Version 2.0 (the | 
|  | * "License"); you may not use this file except in compliance | 
|  | * with the License.  You may obtain a copy of the License at | 
|  | * | 
|  | *   http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, | 
|  | * software distributed under the License is distributed on an | 
|  | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | 
|  | * KIND, either express or implied.  See the License for the | 
|  | * specific language governing permissions and limitations | 
|  | * under the License. | 
|  | * | 
|  | *************************************************************/ | 
|  |  | 
|  |  | 
|  |  | 
|  | // MARKER(update_precomp.py): autogen include statement, do not remove | 
|  | #include "precompiled_dbui.hxx" | 
|  |  | 
|  | #include "adminpages.hxx" | 
|  | #include "DbAdminImpl.hxx" | 
|  | #include "dbu_dlg.hrc" | 
|  | #include "DriverSettings.hxx" | 
|  | #include "dsitems.hxx" | 
|  | #include "propertysetitem.hxx" | 
|  | #include "UITools.hxx" | 
|  | #include "UserAdmin.hxx" | 
|  | #include "UserAdminDlg.hrc" | 
|  | #include "UserAdminDlg.hxx" | 
|  |  | 
|  | #include <comphelper/componentcontext.hxx> | 
|  | #include <connectivity/dbmetadata.hxx> | 
|  | #include <cppuhelper/exc_hlp.hxx> | 
|  | #include <svl/eitem.hxx> | 
|  | #include <svl/intitem.hxx> | 
|  | #include <svl/stritem.hxx> | 
|  | #include <tools/diagnose_ex.h> | 
|  | #include <vcl/msgbox.hxx> | 
|  | #include <vcl/stdtext.hxx> | 
|  |  | 
|  | //......................................................................... | 
|  | namespace dbaui | 
|  | { | 
|  | //......................................................................... | 
|  | using namespace ::com::sun::star::uno; | 
|  | using namespace ::com::sun::star::beans; | 
|  | using namespace ::com::sun::star::lang; | 
|  | using namespace ::com::sun::star::sdbc; | 
|  | using namespace ::com::sun::star::sdbcx; | 
|  |  | 
|  | //======================================================================== | 
|  | //= OUserAdminDlg | 
|  | DBG_NAME(OUserAdminDlg) | 
|  | //======================================================================== | 
|  | OUserAdminDlg::OUserAdminDlg(Window* _pParent | 
|  | , SfxItemSet* _pItems | 
|  | ,const Reference< XMultiServiceFactory >& _rxORB | 
|  | ,const ::com::sun::star::uno::Any& _aDataSourceName | 
|  | ,const Reference< XConnection >& _xConnection) | 
|  | :SfxTabDialog(_pParent, ModuleRes(DLG_DATABASE_USERADMIN), _pItems) | 
|  | ,m_pItemSet(_pItems) | 
|  | ,m_xConnection(_xConnection) | 
|  | ,m_bOwnConnection(!_xConnection.is()) | 
|  | { | 
|  | DBG_CTOR(OUserAdminDlg,NULL); | 
|  |  | 
|  | m_pImpl = ::std::auto_ptr<ODbDataSourceAdministrationHelper>(new ODbDataSourceAdministrationHelper(_rxORB,_pParent,this)); | 
|  | m_pImpl->setDataSourceOrName(_aDataSourceName); | 
|  | Reference< XPropertySet > xDatasource = m_pImpl->getCurrentDataSource(); | 
|  | m_pImpl->translateProperties(xDatasource, *_pItems); | 
|  | SetInputSet(_pItems); | 
|  | // propagate this set as our new input set and reset the example set | 
|  | delete pExampleSet; | 
|  | pExampleSet = new SfxItemSet(*GetInputSetImpl()); | 
|  |  | 
|  | AddTabPage(TAB_PAGE_USERADMIN, String(ModuleRes(STR_PAGETITLE_USERADMIN)), OUserAdmin::Create,0, sal_False, 1); | 
|  |  | 
|  | // remove the reset button - it's meaning is much too ambiguous in this dialog | 
|  | RemoveResetButton(); | 
|  | FreeResource(); | 
|  | } | 
|  |  | 
|  | // ----------------------------------------------------------------------- | 
|  | OUserAdminDlg::~OUserAdminDlg() | 
|  | { | 
|  | if ( m_bOwnConnection ) | 
|  | try | 
|  | { | 
|  | ::comphelper::disposeComponent(m_xConnection); | 
|  | } | 
|  | catch(Exception){} | 
|  |  | 
|  | SetInputSet(NULL); | 
|  | DELETEZ(pExampleSet); | 
|  |  | 
|  | DBG_DTOR(OUserAdminDlg,NULL); | 
|  | } | 
|  | // ----------------------------------------------------------------------- | 
|  | short OUserAdminDlg::Execute() | 
|  | { | 
|  | try | 
|  | { | 
|  | ::dbtools::DatabaseMetaData aMetaData( createConnection().first ); | 
|  | if ( !aMetaData.supportsUserAdministration( ::comphelper::ComponentContext( getORB() ) ) ) | 
|  | { | 
|  | String sError(ModuleRes(STR_USERADMIN_NOT_AVAILABLE)); | 
|  | throw SQLException(sError,NULL,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S1000")) ,0,Any()); | 
|  | } | 
|  | } | 
|  | catch(const SQLException& e) | 
|  | { | 
|  | ::dbaui::showError( ::dbtools::SQLExceptionInfo( ::cppu::getCaughtException() ), GetParent(), getORB() ); | 
|  | return RET_CANCEL; | 
|  | } | 
|  | catch( const Exception& ) | 
|  | { | 
|  | DBG_UNHANDLED_EXCEPTION(); | 
|  | } | 
|  | short nRet = SfxTabDialog::Execute(); | 
|  | if ( nRet == RET_OK ) | 
|  | m_pImpl->saveChanges(*GetOutputItemSet()); | 
|  | return nRet; | 
|  | } | 
|  | //------------------------------------------------------------------------- | 
|  | void OUserAdminDlg::PageCreated(sal_uInt16 _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); | 
|  | } | 
|  | // ----------------------------------------------------------------------------- | 
|  | const SfxItemSet* OUserAdminDlg::getOutputSet() const | 
|  | { | 
|  | return m_pItemSet; | 
|  | } | 
|  | // ----------------------------------------------------------------------------- | 
|  | SfxItemSet* OUserAdminDlg::getWriteOutputSet() | 
|  | { | 
|  | return m_pItemSet; | 
|  | } | 
|  | // ----------------------------------------------------------------------------- | 
|  | ::std::pair< Reference<XConnection>,sal_Bool> OUserAdminDlg::createConnection() | 
|  | { | 
|  | if ( !m_xConnection.is() ) | 
|  | { | 
|  | m_xConnection = m_pImpl->createConnection().first; | 
|  | m_bOwnConnection = m_xConnection.is(); | 
|  | } | 
|  | return ::std::pair< Reference<XConnection>,sal_Bool> (m_xConnection,sal_False); | 
|  | } | 
|  | // ----------------------------------------------------------------------------- | 
|  | Reference< XMultiServiceFactory > OUserAdminDlg::getORB() const | 
|  | { | 
|  | return m_pImpl->getORB(); | 
|  | } | 
|  | // ----------------------------------------------------------------------------- | 
|  | Reference< XDriver > OUserAdminDlg::getDriver() | 
|  | { | 
|  | return m_pImpl->getDriver(); | 
|  | } | 
|  | // ----------------------------------------------------------------------------- | 
|  | ::rtl::OUString	OUserAdminDlg::getDatasourceType(const SfxItemSet& _rSet) const | 
|  | { | 
|  | return m_pImpl->getDatasourceType(_rSet); | 
|  | } | 
|  | // ----------------------------------------------------------------------------- | 
|  | void OUserAdminDlg::clearPassword() | 
|  | { | 
|  | m_pImpl->clearPassword(); | 
|  | } | 
|  | // ----------------------------------------------------------------------------- | 
|  | void OUserAdminDlg::setTitle(const ::rtl::OUString& _sTitle) | 
|  | { | 
|  | SetText(_sTitle); | 
|  | } | 
|  | //------------------------------------------------------------------------- | 
|  | void OUserAdminDlg::enableConfirmSettings( bool _bEnable ) | 
|  | { | 
|  | (void)_bEnable; | 
|  | } | 
|  | //------------------------------------------------------------------------- | 
|  | sal_Bool OUserAdminDlg::saveDatasource() | 
|  | { | 
|  | return PrepareLeaveCurrentPage(); | 
|  | } | 
|  | //......................................................................... | 
|  | }	// namespace dbaui | 
|  | //......................................................................... |