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