1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef EXTENSIONS_ABP_DATASOURCEHANDLING_HXX 25*b1cdbd2cSJim Jagielski #define EXTENSIONS_ABP_DATASOURCEHANDLING_HXX 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include <com/sun/star/uno/Reference.hxx> 28*b1cdbd2cSJim Jagielski #include "abptypes.hxx" 29*b1cdbd2cSJim Jagielski 30*b1cdbd2cSJim Jagielski //======================================================================== 31*b1cdbd2cSJim Jagielski namespace com { namespace sun { namespace star { 32*b1cdbd2cSJim Jagielski namespace lang { 33*b1cdbd2cSJim Jagielski class XMultiServiceFactory; 34*b1cdbd2cSJim Jagielski } 35*b1cdbd2cSJim Jagielski namespace beans { 36*b1cdbd2cSJim Jagielski class XPropertySet; 37*b1cdbd2cSJim Jagielski } 38*b1cdbd2cSJim Jagielski } } } 39*b1cdbd2cSJim Jagielski 40*b1cdbd2cSJim Jagielski class Window; 41*b1cdbd2cSJim Jagielski 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski //......................................................................... 44*b1cdbd2cSJim Jagielski namespace abp 45*b1cdbd2cSJim Jagielski { 46*b1cdbd2cSJim Jagielski //......................................................................... 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski //===================================================================== 49*b1cdbd2cSJim Jagielski //= ODataSourceContext 50*b1cdbd2cSJim Jagielski //===================================================================== 51*b1cdbd2cSJim Jagielski struct ODataSourceContextImpl; 52*b1cdbd2cSJim Jagielski class ODataSource; 53*b1cdbd2cSJim Jagielski /// a non-UNO wrapper for the data source context 54*b1cdbd2cSJim Jagielski class ODataSourceContext 55*b1cdbd2cSJim Jagielski { 56*b1cdbd2cSJim Jagielski private: 57*b1cdbd2cSJim Jagielski ODataSourceContextImpl* m_pImpl; 58*b1cdbd2cSJim Jagielski 59*b1cdbd2cSJim Jagielski public: 60*b1cdbd2cSJim Jagielski ODataSourceContext( 61*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB 62*b1cdbd2cSJim Jagielski ); 63*b1cdbd2cSJim Jagielski 64*b1cdbd2cSJim Jagielski /// retrieves the names of all data sources 65*b1cdbd2cSJim Jagielski void getDataSourceNames( StringBag& _rNames ) const SAL_THROW (( )); 66*b1cdbd2cSJim Jagielski 67*b1cdbd2cSJim Jagielski /// disambiguates the given name by appending auccessive numbers 68*b1cdbd2cSJim Jagielski ::rtl::OUString& disambiguate(::rtl::OUString& _rDataSourceName); 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski /// creates a new MORK data source 71*b1cdbd2cSJim Jagielski ODataSource createNewMORK( const ::rtl::OUString& _rName ) SAL_THROW (( )); 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski /// creates a new Thunderbird data source 74*b1cdbd2cSJim Jagielski ODataSource createNewThunderbird( const ::rtl::OUString& _rName ) SAL_THROW (( )); 75*b1cdbd2cSJim Jagielski 76*b1cdbd2cSJim Jagielski /// creates a new Evolution local data source 77*b1cdbd2cSJim Jagielski ODataSource createNewEvolution( const ::rtl::OUString& _rName ) SAL_THROW (( )); 78*b1cdbd2cSJim Jagielski 79*b1cdbd2cSJim Jagielski /// creates a new Evolution LDAP data source 80*b1cdbd2cSJim Jagielski ODataSource createNewEvolutionLdap( const ::rtl::OUString& _rName ) SAL_THROW (( )); 81*b1cdbd2cSJim Jagielski 82*b1cdbd2cSJim Jagielski /// creates a new Evolution GROUPWISE data source 83*b1cdbd2cSJim Jagielski ODataSource createNewEvolutionGroupwise( const ::rtl::OUString& _rName ) SAL_THROW (( )); 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski /// creates a new KDE address book data source 86*b1cdbd2cSJim Jagielski ODataSource createNewKab( const ::rtl::OUString& _rName ) SAL_THROW (( )); 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski /// creates a new Mac OS X address book data source 89*b1cdbd2cSJim Jagielski ODataSource createNewMacab( const ::rtl::OUString& _rName ) SAL_THROW (( )); 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski /// creates a new LDAP data source 92*b1cdbd2cSJim Jagielski ODataSource createNewLDAP( const ::rtl::OUString& _rName ) SAL_THROW (( )); 93*b1cdbd2cSJim Jagielski 94*b1cdbd2cSJim Jagielski /// creates a new Outlook data source 95*b1cdbd2cSJim Jagielski ODataSource createNewOutlook( const ::rtl::OUString& _rName ) SAL_THROW (( )); 96*b1cdbd2cSJim Jagielski 97*b1cdbd2cSJim Jagielski /// creates a new Outlook express data source 98*b1cdbd2cSJim Jagielski ODataSource createNewOE( const ::rtl::OUString& _rName ) SAL_THROW (( )); 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski /// creates a new dBase data source 101*b1cdbd2cSJim Jagielski ODataSource createNewDBase( const ::rtl::OUString& _rName ) SAL_THROW (( )); 102*b1cdbd2cSJim Jagielski }; 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski //===================================================================== 105*b1cdbd2cSJim Jagielski //= ODataSource 106*b1cdbd2cSJim Jagielski //===================================================================== 107*b1cdbd2cSJim Jagielski struct ODataSourceImpl; 108*b1cdbd2cSJim Jagielski struct PackageAccessControl; 109*b1cdbd2cSJim Jagielski /** a non-UNO wrapper for a data source 110*b1cdbd2cSJim Jagielski <p>This class allows to access data sources without the need to compile the respective file with 111*b1cdbd2cSJim Jagielski exception handling enabled (hopefully :).</p> 112*b1cdbd2cSJim Jagielski <p>In addition to wrapping an UNO data source, an instance of this class can handle at most 113*b1cdbd2cSJim Jagielski one valid connection, as obtained from the data source.</p> 114*b1cdbd2cSJim Jagielski */ 115*b1cdbd2cSJim Jagielski class ODataSource 116*b1cdbd2cSJim Jagielski { 117*b1cdbd2cSJim Jagielski private: 118*b1cdbd2cSJim Jagielski ODataSourceImpl* m_pImpl; 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski public: 121*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------- 122*b1cdbd2cSJim Jagielski // - ctor/dtor/assignment 123*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------- 124*b1cdbd2cSJim Jagielski /// constructs an object which is initially invalid 125*b1cdbd2cSJim Jagielski ODataSource( 126*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB 127*b1cdbd2cSJim Jagielski ); 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski /// copy ctor 130*b1cdbd2cSJim Jagielski ODataSource( const ODataSource& _rSource ); 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski /// dtor 133*b1cdbd2cSJim Jagielski ~ODataSource( ); 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski /// assignment 136*b1cdbd2cSJim Jagielski ODataSource& operator=( const ODataSource& _rSource ); 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------- 139*b1cdbd2cSJim Jagielski /// checks whether or not the object represents a valid data source 140*b1cdbd2cSJim Jagielski sal_Bool isValid() const SAL_THROW (( )); 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------- 143*b1cdbd2cSJim Jagielski /// removes the data source represented by the object from the data source context 144*b1cdbd2cSJim Jagielski void remove() SAL_THROW (( )); 145*b1cdbd2cSJim Jagielski // TODO: put this into the context class 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski /// returns the name of the data source 148*b1cdbd2cSJim Jagielski ::rtl::OUString 149*b1cdbd2cSJim Jagielski getName() const SAL_THROW (( )); 150*b1cdbd2cSJim Jagielski 151*b1cdbd2cSJim Jagielski /// renames the data source 152*b1cdbd2cSJim Jagielski sal_Bool rename( const ::rtl::OUString& _rName ) SAL_THROW (( )); 153*b1cdbd2cSJim Jagielski // TODO: put this into the context class 154*b1cdbd2cSJim Jagielski 155*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------- 156*b1cdbd2cSJim Jagielski // - connection handling 157*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------- 158*b1cdbd2cSJim Jagielski /** connects to the data source represented by this object 159*b1cdbd2cSJim Jagielski @param _pMessageParent 160*b1cdbd2cSJim Jagielski the window to use as parent for any error messages. If this is <NULL/>, no messages are displayed 161*b1cdbd2cSJim Jagielski at all. 162*b1cdbd2cSJim Jagielski @see isConnected 163*b1cdbd2cSJim Jagielski */ 164*b1cdbd2cSJim Jagielski sal_Bool connect( Window* _pMessageParent ) SAL_THROW (( )); 165*b1cdbd2cSJim Jagielski 166*b1cdbd2cSJim Jagielski /// returns <TRUE/> if the object has a valid connection, obtained from it's data source 167*b1cdbd2cSJim Jagielski sal_Bool isConnected( ) const SAL_THROW (( )); 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski /// disconnects from the data source (i.e. disposes the UNO connection hold internally) 170*b1cdbd2cSJim Jagielski void disconnect( ) SAL_THROW (( )); 171*b1cdbd2cSJim Jagielski 172*b1cdbd2cSJim Jagielski /// stores the database file 173*b1cdbd2cSJim Jagielski void store() SAL_THROW (( )); 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielski /// register the data source under the given name in the configuration 176*b1cdbd2cSJim Jagielski void registerDataSource( const ::rtl::OUString& _sRegisteredDataSourceName ) SAL_THROW (( )); 177*b1cdbd2cSJim Jagielski 178*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------- 179*b1cdbd2cSJim Jagielski /** retrieves the tables names from the connection 180*b1cdbd2cSJim Jagielski <p>to be called when <method>isConnection</method> returns <TRUE/> only</p> 181*b1cdbd2cSJim Jagielski */ 182*b1cdbd2cSJim Jagielski const StringBag& getTableNames() const SAL_THROW (( )); 183*b1cdbd2cSJim Jagielski 184*b1cdbd2cSJim Jagielski /** determines whether a given table exists 185*b1cdbd2cSJim Jagielski */ 186*b1cdbd2cSJim Jagielski bool hasTable( const ::rtl::OUString& _rTableName ) const; 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski /// return the intern data source object 189*b1cdbd2cSJim Jagielski ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > getDataSource() const SAL_THROW (( )); 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski 192*b1cdbd2cSJim Jagielski // ---------------------------------------------------------------- 193*b1cdbd2cSJim Jagielski /** set a new data source. 194*b1cdbd2cSJim Jagielski <p>Available to selected clients only</p> 195*b1cdbd2cSJim Jagielski */ 196*b1cdbd2cSJim Jagielski void setDataSource( 197*b1cdbd2cSJim Jagielski const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxDS 198*b1cdbd2cSJim Jagielski ,const ::rtl::OUString& _sName 199*b1cdbd2cSJim Jagielski ,PackageAccessControl 200*b1cdbd2cSJim Jagielski ); 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski private: 203*b1cdbd2cSJim Jagielski ODataSource( ); // never implemented 204*b1cdbd2cSJim Jagielski }; 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski //......................................................................... 207*b1cdbd2cSJim Jagielski } // namespace abp 208*b1cdbd2cSJim Jagielski //......................................................................... 209*b1cdbd2cSJim Jagielski 210*b1cdbd2cSJim Jagielski #endif // EXTENSIONS_ABP_DATASOURCEHANDLING_HXX 211*b1cdbd2cSJim Jagielski 212