xref: /AOO42X/main/dbaccess/source/ui/dlg/UserAdminDlg.cxx (revision b1c5455db1639c48e26c568e4fa7ee78ca5d60ee)
196de5490SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
396de5490SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
496de5490SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
596de5490SAndrew Rist  * distributed with this work for additional information
696de5490SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
796de5490SAndrew Rist  * to you under the Apache License, Version 2.0 (the
896de5490SAndrew Rist  * "License"); you may not use this file except in compliance
996de5490SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
1196de5490SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
1396de5490SAndrew Rist  * Unless required by applicable law or agreed to in writing,
1496de5490SAndrew Rist  * software distributed under the License is distributed on an
1596de5490SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
1696de5490SAndrew Rist  * KIND, either express or implied.  See the License for the
1796de5490SAndrew Rist  * specific language governing permissions and limitations
1896de5490SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
2096de5490SAndrew Rist  *************************************************************/
2196de5490SAndrew Rist 
2296de5490SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25*b63233d8Sdamjan #include "precompiled_dbui.hxx"
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include "adminpages.hxx"
28cdf0e10cSrcweir #include "DbAdminImpl.hxx"
29cdf0e10cSrcweir #include "dbu_dlg.hrc"
30cdf0e10cSrcweir #include "DriverSettings.hxx"
31cdf0e10cSrcweir #include "dsitems.hxx"
32cdf0e10cSrcweir #include "propertysetitem.hxx"
33cdf0e10cSrcweir #include "UITools.hxx"
34cdf0e10cSrcweir #include "UserAdmin.hxx"
35cdf0e10cSrcweir #include "UserAdminDlg.hrc"
36cdf0e10cSrcweir #include "UserAdminDlg.hxx"
37cdf0e10cSrcweir 
38cdf0e10cSrcweir #include <comphelper/componentcontext.hxx>
39cdf0e10cSrcweir #include <connectivity/dbmetadata.hxx>
40cdf0e10cSrcweir #include <cppuhelper/exc_hlp.hxx>
41cdf0e10cSrcweir #include <svl/eitem.hxx>
42cdf0e10cSrcweir #include <svl/intitem.hxx>
43cdf0e10cSrcweir #include <svl/stritem.hxx>
44cdf0e10cSrcweir #include <tools/diagnose_ex.h>
45cdf0e10cSrcweir #include <vcl/msgbox.hxx>
46cdf0e10cSrcweir #include <vcl/stdtext.hxx>
47cdf0e10cSrcweir 
48cdf0e10cSrcweir //.........................................................................
49cdf0e10cSrcweir namespace dbaui
50cdf0e10cSrcweir {
51cdf0e10cSrcweir //.........................................................................
52cdf0e10cSrcweir     using namespace ::com::sun::star::uno;
53cdf0e10cSrcweir     using namespace ::com::sun::star::beans;
54cdf0e10cSrcweir     using namespace ::com::sun::star::lang;
55cdf0e10cSrcweir     using namespace ::com::sun::star::sdbc;
56cdf0e10cSrcweir     using namespace ::com::sun::star::sdbcx;
57cdf0e10cSrcweir 
58cdf0e10cSrcweir     //========================================================================
59cdf0e10cSrcweir     //= OUserAdminDlg
DBG_NAME(OUserAdminDlg)60cdf0e10cSrcweir DBG_NAME(OUserAdminDlg)
61cdf0e10cSrcweir //========================================================================
62cdf0e10cSrcweir     OUserAdminDlg::OUserAdminDlg(Window* _pParent
63cdf0e10cSrcweir                                             , SfxItemSet* _pItems
64cdf0e10cSrcweir                                             ,const Reference< XMultiServiceFactory >& _rxORB
65cdf0e10cSrcweir                                             ,const ::com::sun::star::uno::Any& _aDataSourceName
66cdf0e10cSrcweir                                             ,const Reference< XConnection >& _xConnection)
67cdf0e10cSrcweir         :SfxTabDialog(_pParent, ModuleRes(DLG_DATABASE_USERADMIN), _pItems)
68cdf0e10cSrcweir         ,m_pItemSet(_pItems)
69cdf0e10cSrcweir         ,m_xConnection(_xConnection)
70cdf0e10cSrcweir         ,m_bOwnConnection(!_xConnection.is())
71cdf0e10cSrcweir     {
72cdf0e10cSrcweir         DBG_CTOR(OUserAdminDlg,NULL);
73cdf0e10cSrcweir 
74cdf0e10cSrcweir         m_pImpl = ::std::auto_ptr<ODbDataSourceAdministrationHelper>(new ODbDataSourceAdministrationHelper(_rxORB,_pParent,this));
75cdf0e10cSrcweir         m_pImpl->setDataSourceOrName(_aDataSourceName);
76cdf0e10cSrcweir         Reference< XPropertySet > xDatasource = m_pImpl->getCurrentDataSource();
77cdf0e10cSrcweir         m_pImpl->translateProperties(xDatasource, *_pItems);
78cdf0e10cSrcweir         SetInputSet(_pItems);
79cdf0e10cSrcweir         // propagate this set as our new input set and reset the example set
80cdf0e10cSrcweir         delete pExampleSet;
81cdf0e10cSrcweir         pExampleSet = new SfxItemSet(*GetInputSetImpl());
82cdf0e10cSrcweir 
83cdf0e10cSrcweir         AddTabPage(TAB_PAGE_USERADMIN, String(ModuleRes(STR_PAGETITLE_USERADMIN)), OUserAdmin::Create,0, sal_False, 1);
84cdf0e10cSrcweir 
85cdf0e10cSrcweir         // remove the reset button - it's meaning is much too ambiguous in this dialog
86cdf0e10cSrcweir         RemoveResetButton();
87cdf0e10cSrcweir         FreeResource();
88cdf0e10cSrcweir     }
89cdf0e10cSrcweir 
90cdf0e10cSrcweir     // -----------------------------------------------------------------------
~OUserAdminDlg()91cdf0e10cSrcweir     OUserAdminDlg::~OUserAdminDlg()
92cdf0e10cSrcweir     {
93cdf0e10cSrcweir         if ( m_bOwnConnection )
94cdf0e10cSrcweir             try
95cdf0e10cSrcweir             {
96cdf0e10cSrcweir                 ::comphelper::disposeComponent(m_xConnection);
97cdf0e10cSrcweir             }
98cdf0e10cSrcweir             catch(Exception){}
99cdf0e10cSrcweir 
100cdf0e10cSrcweir         SetInputSet(NULL);
101cdf0e10cSrcweir         DELETEZ(pExampleSet);
102cdf0e10cSrcweir 
103cdf0e10cSrcweir         DBG_DTOR(OUserAdminDlg,NULL);
104cdf0e10cSrcweir     }
105cdf0e10cSrcweir     // -----------------------------------------------------------------------
Execute()106cdf0e10cSrcweir     short OUserAdminDlg::Execute()
107cdf0e10cSrcweir     {
108cdf0e10cSrcweir         try
109cdf0e10cSrcweir         {
110cdf0e10cSrcweir             ::dbtools::DatabaseMetaData aMetaData( createConnection().first );
111cdf0e10cSrcweir             if ( !aMetaData.supportsUserAdministration( ::comphelper::ComponentContext( getORB() ) ) )
112cdf0e10cSrcweir             {
113cdf0e10cSrcweir                 String sError(ModuleRes(STR_USERADMIN_NOT_AVAILABLE));
114cdf0e10cSrcweir                 throw SQLException(sError,NULL,::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("S1000")) ,0,Any());
115cdf0e10cSrcweir             }
116cdf0e10cSrcweir         }
117cdf0e10cSrcweir         catch(const SQLException& e)
118cdf0e10cSrcweir         {
119cdf0e10cSrcweir             ::dbaui::showError( ::dbtools::SQLExceptionInfo( ::cppu::getCaughtException() ), GetParent(), getORB() );
120cdf0e10cSrcweir             return RET_CANCEL;
121cdf0e10cSrcweir         }
122cdf0e10cSrcweir         catch( const Exception& )
123cdf0e10cSrcweir         {
124cdf0e10cSrcweir             DBG_UNHANDLED_EXCEPTION();
125cdf0e10cSrcweir         }
126cdf0e10cSrcweir         short nRet = SfxTabDialog::Execute();
127cdf0e10cSrcweir         if ( nRet == RET_OK )
128cdf0e10cSrcweir             m_pImpl->saveChanges(*GetOutputItemSet());
129cdf0e10cSrcweir         return nRet;
130cdf0e10cSrcweir     }
131cdf0e10cSrcweir     //-------------------------------------------------------------------------
PageCreated(sal_uInt16 _nId,SfxTabPage & _rPage)132cdf0e10cSrcweir     void OUserAdminDlg::PageCreated(sal_uInt16 _nId, SfxTabPage& _rPage)
133cdf0e10cSrcweir     {
134cdf0e10cSrcweir         // register ourself as modified listener
135cdf0e10cSrcweir         static_cast<OGenericAdministrationPage&>(_rPage).SetServiceFactory(m_pImpl->getORB());
136cdf0e10cSrcweir         static_cast<OGenericAdministrationPage&>(_rPage).SetAdminDialog(this,this);
137cdf0e10cSrcweir 
138cdf0e10cSrcweir         AdjustLayout();
139cdf0e10cSrcweir         Window *pWin = GetViewWindow();
140cdf0e10cSrcweir         if(pWin)
141cdf0e10cSrcweir             pWin->Invalidate();
142cdf0e10cSrcweir 
143cdf0e10cSrcweir         SfxTabDialog::PageCreated(_nId, _rPage);
144cdf0e10cSrcweir     }
145cdf0e10cSrcweir     // -----------------------------------------------------------------------------
getOutputSet() const146cdf0e10cSrcweir     const SfxItemSet* OUserAdminDlg::getOutputSet() const
147cdf0e10cSrcweir     {
148cdf0e10cSrcweir         return m_pItemSet;
149cdf0e10cSrcweir     }
150cdf0e10cSrcweir     // -----------------------------------------------------------------------------
getWriteOutputSet()151cdf0e10cSrcweir     SfxItemSet* OUserAdminDlg::getWriteOutputSet()
152cdf0e10cSrcweir     {
153cdf0e10cSrcweir         return m_pItemSet;
154cdf0e10cSrcweir     }
155cdf0e10cSrcweir     // -----------------------------------------------------------------------------
createConnection()156cdf0e10cSrcweir     ::std::pair< Reference<XConnection>,sal_Bool> OUserAdminDlg::createConnection()
157cdf0e10cSrcweir     {
158cdf0e10cSrcweir         if ( !m_xConnection.is() )
159cdf0e10cSrcweir         {
160cdf0e10cSrcweir             m_xConnection = m_pImpl->createConnection().first;
161cdf0e10cSrcweir             m_bOwnConnection = m_xConnection.is();
162cdf0e10cSrcweir         }
163cdf0e10cSrcweir         return ::std::pair< Reference<XConnection>,sal_Bool> (m_xConnection,sal_False);
164cdf0e10cSrcweir     }
165cdf0e10cSrcweir     // -----------------------------------------------------------------------------
getORB() const166cdf0e10cSrcweir     Reference< XMultiServiceFactory > OUserAdminDlg::getORB() const
167cdf0e10cSrcweir     {
168cdf0e10cSrcweir         return m_pImpl->getORB();
169cdf0e10cSrcweir     }
170cdf0e10cSrcweir     // -----------------------------------------------------------------------------
getDriver()171cdf0e10cSrcweir     Reference< XDriver > OUserAdminDlg::getDriver()
172cdf0e10cSrcweir     {
173cdf0e10cSrcweir         return m_pImpl->getDriver();
174cdf0e10cSrcweir     }
175cdf0e10cSrcweir     // -----------------------------------------------------------------------------
getDatasourceType(const SfxItemSet & _rSet) const176cdf0e10cSrcweir     ::rtl::OUString OUserAdminDlg::getDatasourceType(const SfxItemSet& _rSet) const
177cdf0e10cSrcweir     {
178cdf0e10cSrcweir         return m_pImpl->getDatasourceType(_rSet);
179cdf0e10cSrcweir     }
180cdf0e10cSrcweir     // -----------------------------------------------------------------------------
clearPassword()181cdf0e10cSrcweir     void OUserAdminDlg::clearPassword()
182cdf0e10cSrcweir     {
183cdf0e10cSrcweir         m_pImpl->clearPassword();
184cdf0e10cSrcweir     }
185cdf0e10cSrcweir     // -----------------------------------------------------------------------------
setTitle(const::rtl::OUString & _sTitle)186cdf0e10cSrcweir     void OUserAdminDlg::setTitle(const ::rtl::OUString& _sTitle)
187cdf0e10cSrcweir     {
188cdf0e10cSrcweir         SetText(_sTitle);
189cdf0e10cSrcweir     }
190cdf0e10cSrcweir     //-------------------------------------------------------------------------
enableConfirmSettings(bool _bEnable)191cdf0e10cSrcweir     void OUserAdminDlg::enableConfirmSettings( bool _bEnable )
192cdf0e10cSrcweir     {
193cdf0e10cSrcweir         (void)_bEnable;
194cdf0e10cSrcweir     }
195cdf0e10cSrcweir     //-------------------------------------------------------------------------
saveDatasource()196cdf0e10cSrcweir     sal_Bool OUserAdminDlg::saveDatasource()
197cdf0e10cSrcweir     {
198cdf0e10cSrcweir         return PrepareLeaveCurrentPage();
199cdf0e10cSrcweir     }
200cdf0e10cSrcweir //.........................................................................
201cdf0e10cSrcweir }   // namespace dbaui
202cdf0e10cSrcweir //.........................................................................
203