xref: /aoo42x/main/sw/inc/dbmgr.hxx (revision cdf0e10c)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir #ifndef _SWDBMGR_HXX
28*cdf0e10cSrcweir #define _SWDBMGR_HXX
29*cdf0e10cSrcweir 
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #include <tools/string.hxx>
32*cdf0e10cSrcweir #include <tools/link.hxx>
33*cdf0e10cSrcweir #include <svl/svarray.hxx>
34*cdf0e10cSrcweir #include <com/sun/star/util/Date.hpp>
35*cdf0e10cSrcweir #include "swdllapi.h"
36*cdf0e10cSrcweir #include <swdbdata.hxx>
37*cdf0e10cSrcweir #include <com/sun/star/uno/Reference.h>
38*cdf0e10cSrcweir #include <com/sun/star/uno/Sequence.hxx>
39*cdf0e10cSrcweir #include <com/sun/star/lang/Locale.hpp>
40*cdf0e10cSrcweir #include <com/sun/star/beans/PropertyValue.hpp>
41*cdf0e10cSrcweir namespace com{namespace sun{namespace star{
42*cdf0e10cSrcweir 	namespace sdbc{
43*cdf0e10cSrcweir 		class XConnection;
44*cdf0e10cSrcweir 		class XStatement;
45*cdf0e10cSrcweir 		class XDataSource;
46*cdf0e10cSrcweir 		class XResultSet;
47*cdf0e10cSrcweir 	}
48*cdf0e10cSrcweir 	namespace beans{
49*cdf0e10cSrcweir 
50*cdf0e10cSrcweir 		class XPropertySet;
51*cdf0e10cSrcweir 		struct PropertyValue;
52*cdf0e10cSrcweir 	}
53*cdf0e10cSrcweir 	namespace sdbcx{
54*cdf0e10cSrcweir 		class XColumnsSupplier;
55*cdf0e10cSrcweir 	}
56*cdf0e10cSrcweir 	namespace util{
57*cdf0e10cSrcweir 		class XNumberFormatter;
58*cdf0e10cSrcweir 	}
59*cdf0e10cSrcweir     namespace mail{
60*cdf0e10cSrcweir         class XSmtpService;
61*cdf0e10cSrcweir     }
62*cdf0e10cSrcweir }}}
63*cdf0e10cSrcweir namespace svx {
64*cdf0e10cSrcweir 	class ODataAccessDescriptor;
65*cdf0e10cSrcweir }
66*cdf0e10cSrcweir 
67*cdf0e10cSrcweir struct SwDBFormatData
68*cdf0e10cSrcweir {
69*cdf0e10cSrcweir 	com::sun::star::util::Date aNullDate;
70*cdf0e10cSrcweir 	com::sun::star::uno::Reference< com::sun::star::util::XNumberFormatter> xFormatter;
71*cdf0e10cSrcweir 	com::sun::star::lang::Locale aLocale;
72*cdf0e10cSrcweir };
73*cdf0e10cSrcweir 
74*cdf0e10cSrcweir class SwView;
75*cdf0e10cSrcweir class SwWrtShell;
76*cdf0e10cSrcweir class SfxProgress;
77*cdf0e10cSrcweir class ListBox;
78*cdf0e10cSrcweir class Button;
79*cdf0e10cSrcweir class SvNumberFormatter;
80*cdf0e10cSrcweir class SwDbtoolsClient;
81*cdf0e10cSrcweir class SwXMailMerge;
82*cdf0e10cSrcweir class SwMailMergeConfigItem;
83*cdf0e10cSrcweir 
84*cdf0e10cSrcweir // -----------------------------------------------------------------------
85*cdf0e10cSrcweir 
86*cdf0e10cSrcweir enum DBMgrOptions
87*cdf0e10cSrcweir {
88*cdf0e10cSrcweir 	DBMGR_MERGE,			// Datensaetze in Felder
89*cdf0e10cSrcweir 	DBMGR_INSERT,			// Datensaetze in Text
90*cdf0e10cSrcweir 	DBMGR_MERGE_MAILMERGE,	// Serienbriefe drucken
91*cdf0e10cSrcweir 	DBMGR_MERGE_MAILING,	// Serienbriefe als email versenden
92*cdf0e10cSrcweir     DBMGR_MERGE_MAILFILES,  // Serienbriefe als Datei(en) speichern
93*cdf0e10cSrcweir     DBMGR_MERGE_DOCUMENTS,   // Print merged documents
94*cdf0e10cSrcweir     DBMGR_MERGE_SINGLE_FILE  // save merge as single file
95*cdf0e10cSrcweir };
96*cdf0e10cSrcweir 
97*cdf0e10cSrcweir // -----------------------------------------------------------------------
98*cdf0e10cSrcweir 
99*cdf0e10cSrcweir /*--------------------------------------------------------------------
100*cdf0e10cSrcweir 	 Beschreibung: (neue) Logische Datenbanken verwalten
101*cdf0e10cSrcweir  --------------------------------------------------------------------*/
102*cdf0e10cSrcweir #define SW_DB_SELECT_UNKNOWN 	0
103*cdf0e10cSrcweir #define SW_DB_SELECT_TABLE		1
104*cdf0e10cSrcweir #define SW_DB_SELECT_QUERY      2
105*cdf0e10cSrcweir 
106*cdf0e10cSrcweir struct SwDSParam : public SwDBData
107*cdf0e10cSrcweir {
108*cdf0e10cSrcweir 	com::sun::star::util::Date 	aNullDate;
109*cdf0e10cSrcweir 
110*cdf0e10cSrcweir 	::com::sun::star::uno::Reference<com::sun::star::util::XNumberFormatter> 	xFormatter;
111*cdf0e10cSrcweir 	::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> 		xConnection;
112*cdf0e10cSrcweir 	::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XStatement>		xStatement;
113*cdf0e10cSrcweir 	::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>   	xResultSet;
114*cdf0e10cSrcweir 	::com::sun::star::uno::Sequence<  ::com::sun::star::uno::Any > 				aSelection;
115*cdf0e10cSrcweir 	sal_Bool bScrollable;
116*cdf0e10cSrcweir 	sal_Bool bEndOfDB;
117*cdf0e10cSrcweir 	sal_Bool bAfterSelection;
118*cdf0e10cSrcweir 	long nSelectionIndex;
119*cdf0e10cSrcweir 
120*cdf0e10cSrcweir     SwDSParam(const SwDBData& rData) :
121*cdf0e10cSrcweir         SwDBData(rData),
122*cdf0e10cSrcweir         bScrollable(sal_False),
123*cdf0e10cSrcweir 		bEndOfDB(sal_False),
124*cdf0e10cSrcweir 		bAfterSelection(sal_False),
125*cdf0e10cSrcweir 		nSelectionIndex(0)
126*cdf0e10cSrcweir 		{}
127*cdf0e10cSrcweir 
128*cdf0e10cSrcweir     SwDSParam(const SwDBData& rData,
129*cdf0e10cSrcweir 		const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>&   	xResSet,
130*cdf0e10cSrcweir 		const ::com::sun::star::uno::Sequence<  ::com::sun::star::uno::Any >& 	rSelection) :
131*cdf0e10cSrcweir         SwDBData(rData),
132*cdf0e10cSrcweir 		xResultSet(xResSet),
133*cdf0e10cSrcweir 		aSelection(rSelection),
134*cdf0e10cSrcweir 		bScrollable(sal_True),
135*cdf0e10cSrcweir 		bEndOfDB(sal_False),
136*cdf0e10cSrcweir 		bAfterSelection(sal_False),
137*cdf0e10cSrcweir 		nSelectionIndex(0)
138*cdf0e10cSrcweir 		{}
139*cdf0e10cSrcweir 
140*cdf0e10cSrcweir 		void CheckEndOfDB()
141*cdf0e10cSrcweir 		{
142*cdf0e10cSrcweir 			if(bEndOfDB)
143*cdf0e10cSrcweir 				bAfterSelection = sal_True;
144*cdf0e10cSrcweir 		}
145*cdf0e10cSrcweir };
146*cdf0e10cSrcweir typedef SwDSParam* SwDSParamPtr;
147*cdf0e10cSrcweir SV_DECL_PTRARR_DEL(SwDSParamArr, SwDSParamPtr, 0, 5)
148*cdf0e10cSrcweir 
149*cdf0e10cSrcweir struct SwMergeDescriptor
150*cdf0e10cSrcweir {
151*cdf0e10cSrcweir     sal_uInt16                                              nMergeType;
152*cdf0e10cSrcweir     SwWrtShell&                                         rSh;
153*cdf0e10cSrcweir     const ::svx::ODataAccessDescriptor&                 rDescriptor;
154*cdf0e10cSrcweir     String                                              sSaveToFilter; //export filter to save resulting files
155*cdf0e10cSrcweir     String                                              sSaveToFilterOptions; //
156*cdf0e10cSrcweir     com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aSaveToFilterData;
157*cdf0e10cSrcweir 
158*cdf0e10cSrcweir     String                                              sSubject;
159*cdf0e10cSrcweir     String                                              sAddressFromColumn;
160*cdf0e10cSrcweir     String                                              sMailBody;
161*cdf0e10cSrcweir     String                                              sAttachmentName;
162*cdf0e10cSrcweir     ::com::sun::star::uno::Sequence< ::rtl::OUString >  aCopiesTo;
163*cdf0e10cSrcweir     ::com::sun::star::uno::Sequence< ::rtl::OUString >  aBlindCopiesTo;
164*cdf0e10cSrcweir 
165*cdf0e10cSrcweir     ::com::sun::star::uno::Reference< com::sun::star::mail::XSmtpService > xSmtpServer;
166*cdf0e10cSrcweir 
167*cdf0e10cSrcweir     sal_Bool                                            bSendAsHTML;
168*cdf0e10cSrcweir     sal_Bool                                            bSendAsAttachment;
169*cdf0e10cSrcweir 
170*cdf0e10cSrcweir     sal_Bool                                            bPrintAsync;
171*cdf0e10cSrcweir     sal_Bool                                            bCreateSingleFile;
172*cdf0e10cSrcweir 
173*cdf0e10cSrcweir     SwMailMergeConfigItem*                              pMailMergeConfigItem;
174*cdf0e10cSrcweir 
175*cdf0e10cSrcweir     ::com::sun::star::uno::Sequence<  ::com::sun::star::beans::PropertyValue >  aPrintOptions;
176*cdf0e10cSrcweir 
177*cdf0e10cSrcweir     SwMergeDescriptor( sal_uInt16 nType, SwWrtShell& rShell, ::svx::ODataAccessDescriptor& rDesc ) :
178*cdf0e10cSrcweir         nMergeType(nType),
179*cdf0e10cSrcweir         rSh(rShell),
180*cdf0e10cSrcweir         rDescriptor(rDesc),
181*cdf0e10cSrcweir         bSendAsHTML( sal_True ),
182*cdf0e10cSrcweir         bSendAsAttachment( sal_False ),
183*cdf0e10cSrcweir         bPrintAsync( sal_False ),
184*cdf0e10cSrcweir         bCreateSingleFile( sal_False ),
185*cdf0e10cSrcweir         pMailMergeConfigItem(0)
186*cdf0e10cSrcweir         {}
187*cdf0e10cSrcweir 
188*cdf0e10cSrcweir };
189*cdf0e10cSrcweir 
190*cdf0e10cSrcweir struct SwNewDBMgr_Impl;
191*cdf0e10cSrcweir class SwConnectionDisposedListener_Impl;
192*cdf0e10cSrcweir class AbstractMailMergeDlg;
193*cdf0e10cSrcweir 
194*cdf0e10cSrcweir class SW_DLLPUBLIC SwNewDBMgr
195*cdf0e10cSrcweir {
196*cdf0e10cSrcweir friend class SwConnectionDisposedListener_Impl;
197*cdf0e10cSrcweir 
198*cdf0e10cSrcweir     static SwDbtoolsClient* pDbtoolsClient;
199*cdf0e10cSrcweir 
200*cdf0e10cSrcweir     String              sEMailAddrFld;  // Mailing: Spaltenname der E-Mail Adresse
201*cdf0e10cSrcweir 	String				sSubject;		// Mailing: Subject
202*cdf0e10cSrcweir 	String				sAttached;		// Mailing: Attachte Files
203*cdf0e10cSrcweir 	sal_uInt16				nMergeType;
204*cdf0e10cSrcweir 	sal_Bool				bInitDBFields : 1;	// sal_True: Datenbank an Feldern beim Mergen
205*cdf0e10cSrcweir     sal_Bool                bSingleJobs : 1;    // Einzelne Druckjobs bei Aufruf aus Basic
206*cdf0e10cSrcweir 	sal_Bool				bCancel : 1;		// Serienbrief-Save abgebrochen
207*cdf0e10cSrcweir 
208*cdf0e10cSrcweir 	sal_Bool 				bInMerge	: 1;	//merge process active
209*cdf0e10cSrcweir     sal_Bool                bMergeSilent : 1;   // suppress display of dialogs/boxes (used when called over API)
210*cdf0e10cSrcweir     sal_Bool                bMergeLock : 1;     // prevent update of database fields while document is
211*cdf0e10cSrcweir                                             // actually printed at the ViewShell
212*cdf0e10cSrcweir 	SwDSParamArr		aDataSourceParams;
213*cdf0e10cSrcweir     SwNewDBMgr_Impl*    pImpl;
214*cdf0e10cSrcweir     const SwXMailMerge* pMergeEvtSrc;   // != 0 if mail merge events are to be send
215*cdf0e10cSrcweir 
216*cdf0e10cSrcweir     SW_DLLPRIVATE SwDSParam*          FindDSData(const SwDBData& rData, sal_Bool bCreate);
217*cdf0e10cSrcweir     SW_DLLPRIVATE SwDSParam*          FindDSConnection(const ::rtl::OUString& rSource, sal_Bool bCreate);
218*cdf0e10cSrcweir 
219*cdf0e10cSrcweir 
220*cdf0e10cSrcweir 	SW_DLLPRIVATE DECL_LINK( PrtCancelHdl, Button * );
221*cdf0e10cSrcweir 
222*cdf0e10cSrcweir 	// Datensaetze als Text ins Dokument einfuegen
223*cdf0e10cSrcweir 	SW_DLLPRIVATE void ImportFromConnection( SwWrtShell* pSh);
224*cdf0e10cSrcweir 
225*cdf0e10cSrcweir 	// Einzelnen Datensatz als Text ins Dokument einfuegen
226*cdf0e10cSrcweir 	SW_DLLPRIVATE void ImportDBEntry(SwWrtShell* pSh);
227*cdf0e10cSrcweir 
228*cdf0e10cSrcweir     // merge to file _and_ merge to e-Mail
229*cdf0e10cSrcweir     SW_DLLPRIVATE sal_Bool          MergeMailFiles(SwWrtShell* pSh,
230*cdf0e10cSrcweir                                         const SwMergeDescriptor& rMergeDescriptor );
231*cdf0e10cSrcweir     SW_DLLPRIVATE sal_Bool          ToNextRecord(SwDSParam* pParam);
232*cdf0e10cSrcweir 
233*cdf0e10cSrcweir public:
234*cdf0e10cSrcweir 	SwNewDBMgr();
235*cdf0e10cSrcweir 	~SwNewDBMgr();
236*cdf0e10cSrcweir 
237*cdf0e10cSrcweir 	// Art des aktellen Mergens. Siehe DBMgrOptions-enum
238*cdf0e10cSrcweir 	inline sal_uInt16	GetMergeType() const			{ return nMergeType; }
239*cdf0e10cSrcweir 	inline void 	SetMergeType( sal_uInt16 nTyp ) 	{ nMergeType = nTyp; }
240*cdf0e10cSrcweir 
241*cdf0e10cSrcweir     // MailMergeEvent source
242*cdf0e10cSrcweir     const SwXMailMerge *    GetMailMergeEvtSrc() const  { return pMergeEvtSrc; }
243*cdf0e10cSrcweir     void SetMailMergeEvtSrc( const SwXMailMerge *pSrc ) { pMergeEvtSrc = pSrc; }
244*cdf0e10cSrcweir 
245*cdf0e10cSrcweir     inline sal_Bool     IsMergeSilent() const           { return bMergeSilent != 0; }
246*cdf0e10cSrcweir     inline void     SetMergeSilent( sal_Bool bVal )     { bMergeSilent = bVal; }
247*cdf0e10cSrcweir 
248*cdf0e10cSrcweir 	// Mischen von Datensaetzen in Felder
249*cdf0e10cSrcweir     sal_Bool            MergeNew( const SwMergeDescriptor& rMergeDesc );
250*cdf0e10cSrcweir     sal_Bool            Merge(SwWrtShell* pSh);
251*cdf0e10cSrcweir 
252*cdf0e10cSrcweir     // Datenbankfelder mit fehlendem Datenbankname initialisieren
253*cdf0e10cSrcweir 	inline sal_Bool 	IsInitDBFields() const 	{ return bInitDBFields;	}
254*cdf0e10cSrcweir 	inline void 	SetInitDBFields(sal_Bool b)	{ bInitDBFields = b;	}
255*cdf0e10cSrcweir 
256*cdf0e10cSrcweir 	// Serienbriefe einzelnd oder alle zusammen drucken/speichern
257*cdf0e10cSrcweir     inline sal_Bool     IsSingleJobs() const    { return bSingleJobs;   }
258*cdf0e10cSrcweir     inline void     SetSingleJobs(sal_Bool b)   { bSingleJobs = b;  }
259*cdf0e10cSrcweir 
260*cdf0e10cSrcweir 	// Mailing
261*cdf0e10cSrcweir 	// email-Daten setzen
262*cdf0e10cSrcweir 	inline void		SetEMailColumn(const String& sColName) { sEMailAddrFld = sColName; }
263*cdf0e10cSrcweir 	inline void		SetSubject(const String& sSbj) { sSubject = sSbj; }
264*cdf0e10cSrcweir 	inline void		SetAttachment(const String& sAtt) { sAttached = sAtt; }
265*cdf0e10cSrcweir 
266*cdf0e10cSrcweir 
267*cdf0e10cSrcweir 	// Listbox mit allen Tabellennamen einer Datenbank fuellen
268*cdf0e10cSrcweir 	sal_Bool			GetTableNames(ListBox* pListBox, const String& rDBName );
269*cdf0e10cSrcweir 
270*cdf0e10cSrcweir 	// Listbox mit allen Spaltennamen einer Datenbanktabelle fuellen
271*cdf0e10cSrcweir 	sal_Bool			GetColumnNames(ListBox* pListBox,
272*cdf0e10cSrcweir 						const String& rDBName, const String& rTableName, sal_Bool bAppend = sal_False);
273*cdf0e10cSrcweir     sal_Bool            GetColumnNames(ListBox* pListBox,
274*cdf0e10cSrcweir                         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> xConnection,
275*cdf0e10cSrcweir                         const String& rTableName, sal_Bool bAppend = sal_False);
276*cdf0e10cSrcweir 
277*cdf0e10cSrcweir     sal_uLong GetColumnFmt( ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource> xSource,
278*cdf0e10cSrcweir                         ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection> xConnection,
279*cdf0e10cSrcweir                         ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet> xColumn,
280*cdf0e10cSrcweir 						SvNumberFormatter* pNFmtr,
281*cdf0e10cSrcweir 						long nLanguage );
282*cdf0e10cSrcweir 
283*cdf0e10cSrcweir     sal_uLong GetColumnFmt( const String& rDBName,
284*cdf0e10cSrcweir 						const String& rTableName,
285*cdf0e10cSrcweir 						const String& rColNm,
286*cdf0e10cSrcweir 						SvNumberFormatter* pNFmtr,
287*cdf0e10cSrcweir 						long nLanguage );
288*cdf0e10cSrcweir 	sal_Int32 GetColumnType( const String& rDBName,
289*cdf0e10cSrcweir 						  const String& rTableName,
290*cdf0e10cSrcweir 						  const String& rColNm );
291*cdf0e10cSrcweir 
292*cdf0e10cSrcweir 	inline sal_Bool		IsInMerge() const	{ return bInMerge; }
293*cdf0e10cSrcweir 	void			EndMerge();
294*cdf0e10cSrcweir 
295*cdf0e10cSrcweir 	void 			ExecuteFormLetter(SwWrtShell& rSh,
296*cdf0e10cSrcweir                         const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& rProperties,
297*cdf0e10cSrcweir                         sal_Bool bWithDataSourceBrowser = sal_False);
298*cdf0e10cSrcweir 
299*cdf0e10cSrcweir 	void 			InsertText(SwWrtShell& rSh,
300*cdf0e10cSrcweir 						const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue>& rProperties);
301*cdf0e10cSrcweir 
302*cdf0e10cSrcweir     // check if a data source is open
303*cdf0e10cSrcweir     sal_Bool            IsDataSourceOpen(const String& rDataSource,
304*cdf0e10cSrcweir                                     const String& rTableOrQuery, sal_Bool bMergeOnly);
305*cdf0e10cSrcweir 
306*cdf0e10cSrcweir 	// open the source while fields are updated - for the calculator only!
307*cdf0e10cSrcweir     sal_Bool            OpenDataSource(const String& rDataSource, const String& rTableOrQuery,
308*cdf0e10cSrcweir                         sal_Int32 nCommandType = -1, bool bCreate = false);
309*cdf0e10cSrcweir     sal_uInt32      GetSelectedRecordId(const String& rDataSource, const String& rTableOrQuery, sal_Int32 nCommandType = -1);
310*cdf0e10cSrcweir 	sal_Bool			GetColumnCnt(const String& rSourceName, const String& rTableName,
311*cdf0e10cSrcweir 							const String& rColumnName, sal_uInt32 nAbsRecordId, long nLanguage,
312*cdf0e10cSrcweir 							String& rResult, double* pNumber);
313*cdf0e10cSrcweir     //create and store or find an already stored connection to a data source for use
314*cdf0e10cSrcweir     //in SwFldMgr and SwDBTreeList
315*cdf0e10cSrcweir     ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>
316*cdf0e10cSrcweir                     RegisterConnection(::rtl::OUString& rSource);
317*cdf0e10cSrcweir 
318*cdf0e10cSrcweir     const SwDSParam* CreateDSData(const SwDBData& rData)
319*cdf0e10cSrcweir                         {return FindDSData(rData, sal_True);}
320*cdf0e10cSrcweir 	const SwDSParamArr& GetDSParamArray() const {return aDataSourceParams;}
321*cdf0e10cSrcweir 
322*cdf0e10cSrcweir 
323*cdf0e10cSrcweir 	//close all data sources - after fields were updated
324*cdf0e10cSrcweir 	void			CloseAll(sal_Bool bIncludingMerge = sal_True);
325*cdf0e10cSrcweir 
326*cdf0e10cSrcweir 	sal_Bool			GetMergeColumnCnt(const String& rColumnName, sal_uInt16 nLanguage,
327*cdf0e10cSrcweir 								String &rResult, double *pNumber, sal_uInt32 *pFormat);
328*cdf0e10cSrcweir 	sal_Bool			ToNextMergeRecord();
329*cdf0e10cSrcweir     sal_Bool            ToNextRecord(const String& rDataSource, const String& rTableOrQuery, sal_Int32 nCommandType = -1);
330*cdf0e10cSrcweir 
331*cdf0e10cSrcweir 	sal_Bool			ExistsNextRecord()const;
332*cdf0e10cSrcweir 	sal_uInt32 		GetSelectedRecordId();
333*cdf0e10cSrcweir 	sal_Bool 		ToRecordId(sal_Int32 nSet);
334*cdf0e10cSrcweir 
335*cdf0e10cSrcweir 	const SwDBData&	GetAddressDBName();
336*cdf0e10cSrcweir 
337*cdf0e10cSrcweir 	static String GetDBField(
338*cdf0e10cSrcweir 					::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > xColumnProp,
339*cdf0e10cSrcweir 					const SwDBFormatData& rDBFormatData,
340*cdf0e10cSrcweir 					double *pNumber = NULL);
341*cdf0e10cSrcweir 
342*cdf0e10cSrcweir 	static ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>
343*cdf0e10cSrcweir 			GetConnection(const String& rDataSource,
344*cdf0e10cSrcweir 				::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource>& rxSource);
345*cdf0e10cSrcweir 
346*cdf0e10cSrcweir 	static ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier>
347*cdf0e10cSrcweir 			GetColumnSupplier(::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>,
348*cdf0e10cSrcweir 									const String& rTableOrQuery,
349*cdf0e10cSrcweir 									sal_uInt8	eTableOrQuery = SW_DB_SELECT_UNKNOWN);
350*cdf0e10cSrcweir 
351*cdf0e10cSrcweir 	static ::com::sun::star::uno::Sequence<rtl::OUString> GetExistingDatabaseNames();
352*cdf0e10cSrcweir 
353*cdf0e10cSrcweir     /**
354*cdf0e10cSrcweir      Loads a data source from file and registers it. Returns the registered name.
355*cdf0e10cSrcweir      */
356*cdf0e10cSrcweir     static String               LoadAndRegisterDataSource();
357*cdf0e10cSrcweir 
358*cdf0e10cSrcweir     static SwDbtoolsClient&    GetDbtoolsClient();
359*cdf0e10cSrcweir     // has to be called from _FinitUI()
360*cdf0e10cSrcweir     static void                RemoveDbtoolsClient();
361*cdf0e10cSrcweir 
362*cdf0e10cSrcweir 	/** try to get the data source from the given connection through the XChild interface.
363*cdf0e10cSrcweir 		If this is not possible, the data source will be created through its name.
364*cdf0e10cSrcweir 		@param _xConnection
365*cdf0e10cSrcweir 			The connection which should support the XChild interface. (not a must)
366*cdf0e10cSrcweir 		@param _sDataSourceName
367*cdf0e10cSrcweir 			The data source name will be used to create the data source when the connection can not be used for it.
368*cdf0e10cSrcweir 		@return
369*cdf0e10cSrcweir 			The data source.
370*cdf0e10cSrcweir 	*/
371*cdf0e10cSrcweir 	static ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDataSource>
372*cdf0e10cSrcweir 			getDataSourceAsParent(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection,const ::rtl::OUString& _sDataSourceName);
373*cdf0e10cSrcweir 
374*cdf0e10cSrcweir 	/** creates a RowSet, which must be disposed after use.
375*cdf0e10cSrcweir 		@param	_sDataSourceName
376*cdf0e10cSrcweir 			The data source name
377*cdf0e10cSrcweir 		@param	_sCommand
378*cdf0e10cSrcweir 			The command.
379*cdf0e10cSrcweir 		@param	_nCommandType
380*cdf0e10cSrcweir 			The type of the command.
381*cdf0e10cSrcweir 		@param	_xConnection
382*cdf0e10cSrcweir 			The active connection which may be <NULL/>.
383*cdf0e10cSrcweir 		@return
384*cdf0e10cSrcweir 			The new created RowSet.
385*cdf0e10cSrcweir 
386*cdf0e10cSrcweir 	*/
387*cdf0e10cSrcweir 	static ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet>
388*cdf0e10cSrcweir 			createCursor(	const ::rtl::OUString& _sDataSourceName,
389*cdf0e10cSrcweir 							const ::rtl::OUString& _sCommand,
390*cdf0e10cSrcweir 							sal_Int32 _nCommandType,
391*cdf0e10cSrcweir 							const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection>& _xConnection
392*cdf0e10cSrcweir 							);
393*cdf0e10cSrcweir     //merge into one document - returns the number of merged docs
394*cdf0e10cSrcweir     sal_Int32 MergeDocuments( SwMailMergeConfigItem& rMMConfig, SwView& rSourceView );
395*cdf0e10cSrcweir };
396*cdf0e10cSrcweir 
397*cdf0e10cSrcweir #endif
398*cdf0e10cSrcweir 
399