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