19#ifndef INCLUDED_SW_INC_DBMGR_HXX
20#define INCLUDED_SW_INC_DBMGR_HXX
22#include <rtl/ustring.hxx>
26#include <com/sun/star/util/Date.hpp>
29#include <com/sun/star/uno/Reference.h>
30#include <com/sun/star/uno/Sequence.hxx>
31#include <com/sun/star/lang/Locale.hpp>
32#include <com/sun/star/beans/PropertyValue.hpp>
49 class XColumnsSupplier;
52 class XNumberFormatter;
57 namespace embed {
class XStorage; }
58 namespace frame {
class XStorable; }
61 class ODataAccessDescriptor;
67 css::uno::Reference< css::util::XNumberFormatter>
xFormatter;
122 const css::uno::Reference< css::sdbc::XResultSet>& xResSet,
123 const css::uno::Sequence< css::uno::Any >& rSelection) :
268 void SetAsUsed(
const OUString& rName);
274 SAL_DLLPRIVATE
SwDSParam* FindDSConnection(
const OUString& rSource,
bool bCreate);
277 SAL_DLLPRIVATE
void ImportFromConnection(
SwWrtShell* pSh);
280 SAL_DLLPRIVATE
void ImportDBEntry(
SwWrtShell* pSh);
283 SAL_DLLPRIVATE
bool MergeMailFiles(
SwWrtShell* pSh,
286 SAL_DLLPRIVATE
bool ToNextMergeRecord();
287 SAL_DLLPRIVATE
bool IsValidMergeRecord()
const;
288 SAL_DLLPRIVATE
void ImplDestroy();
308 bool IsMergeOk()
const {
return MergeStatus::Ok == m_aMergeStatus; }
309 bool IsMergeError()
const {
return MergeStatus::Error <= m_aMergeStatus; }
311 static std::shared_ptr<SwMailMergeConfigItem> PerformMailMerge(
SwView const * pView);
318 bool GetTableNames(
weld::ComboBox& rBox,
const OUString& rDBName);
322 const OUString& rDBName,
const OUString& rTableName);
324 css::uno::Reference< css::sdbc::XConnection>
const & xConnection,
325 const OUString& rTableName);
328 css::uno::Reference< css::sdbc::XConnection>
const & xConnection,
329 css::uno::Reference< css::beans::XPropertySet>
const & xColumn,
333 sal_uLong GetColumnFormat(
const OUString& rDBName,
334 const OUString& rTableName,
335 const OUString& rColNm,
338 sal_Int32 GetColumnType(
const OUString& rDBName,
339 const OUString& rTableName,
340 const OUString& rColNm );
345 const css::uno::Sequence< css::beans::PropertyValue>& rProperties);
348 const css::uno::Sequence< css::beans::PropertyValue>& rProperties);
351 bool IsDataSourceOpen(
const OUString& rDataSource,
352 const OUString& rTableOrQuery,
bool bMergeShell);
355 bool OpenDataSource(
const OUString& rDataSource,
const OUString& rTableOrQuery);
356 sal_uInt32 GetSelectedRecordId(
const OUString& rDataSource,
const OUString& rTableOrQuery, sal_Int32 nCommandType = -1);
357 bool GetColumnCnt(
const OUString& rSourceName,
const OUString& rTableName,
358 const OUString& rColumnName, sal_uInt32 nAbsRecordId,
LanguageType nLanguage,
359 OUString& rResult,
double* pNumber);
362 css::uno::Reference< css::sdbc::XConnection>
const &
363 RegisterConnection(OUString
const& rSource);
366 { FindDSData(
rData,
true); }
370 void CloseAll(
bool bIncludingMerge =
true);
372 bool GetMergeColumnCnt(
const OUString& rColumnName,
LanguageType nLanguage,
373 OUString &rResult,
double *pNumber);
376 void ToNextRecord(
const OUString& rDataSource,
const OUString& rTableOrQuery);
378 sal_uInt32 GetSelectedRecordId();
379 bool ToRecordId(sal_Int32 nSet);
381 static const SwDBData& GetAddressDBName();
383 static OUString GetDBField(
384 css::uno::Reference< css::beans::XPropertySet >
const & xColumnProp,
386 double *pNumber =
nullptr);
388 static css::uno::Reference< css::sdbc::XConnection>
389 GetConnection(
const OUString& rDataSource,
390 css::uno::Reference< css::sdbc::XDataSource>& rxSource,
393 static css::uno::Reference< css::sdbcx::XColumnsSupplier>
394 GetColumnSupplier(css::uno::Reference< css::sdbc::XConnection>
const & xConnection,
395 const OUString& rTableOrQuery,
398 static css::uno::Sequence<OUString> GetExistingDatabaseNames();
415 static OUString LoadAndRegisterDataSource(std::u16string_view rURI,
const OUString *pDestDir);
418 void LoadAndRegisterEmbeddedDataSource(
const SwDBData& rData,
const SwDocShell& rDocShell);
421 static void RevokeDataSource(
const OUString& rName);
432 static css::uno::Reference< css::sdbc::XDataSource>
433 getDataSourceAsParent(
const css::uno::Reference< css::sdbc::XConnection>& _xConnection,
const OUString& _sDataSourceName);
448 static css::uno::Reference< css::sdbc::XResultSet>
449 createCursor(
const OUString& _sDataSourceName,
450 const OUString& _sCommand,
451 sal_Int32 _nCommandType,
452 const css::uno::Reference< css::sdbc::XConnection>& _xConnection,
455 void setEmbeddedName(
const OUString& rEmbeddedName,
SwDocShell& rDocShell);
456 const OUString& getEmbeddedName()
const;
459 static void StoreEmbeddedDataSource(
const css::uno::Reference<css::frame::XStorable>& xStorable,
460 const css::uno::Reference<css::embed::XStorage>& xStorage,
461 const OUString& rStreamRelPath,
462 const OUString& rOwnURL,
bool bCopyTo =
false);
464 SwDoc* getDoc()
const;
466 void releaseRevokeListener();
469 void RevokeLastRegistrations();
472 void CommitLastRegistrations();
475 void RevokeNotUsedConnections();
std::vector< OUString > m_aNotUsedConnections
Not used connections.
const SwXMailMerge * m_pMergeEvtSrc
!= 0 if mail merge events are to be send
SwDBManager & operator=(SwDBManager const &)=delete
static std::vector< std::pair< SwDocShell *, OUString > > s_aUncommittedRegistrations
Store last registrations to revoke or commit.
bool m_bInMerge
merge process active
void CreateDSData(const SwDBData &rData)
const SwDSParams_t & GetDSParamArray() const
static sal_uLong GetColumnFormat(css::uno::Reference< css::sdbc::XDataSource > const &xSource, css::uno::Reference< css::sdbc::XConnection > const &xConnection, css::uno::Reference< css::beans::XPropertySet > const &xColumn, SvNumberFormatter *pNFormatr, LanguageType nLanguage)
void SetMergeSilent(bool bVal)
const SwXMailMerge * GetMailMergeEvtSrc() const
MailMergeEvent source.
SwDBManager(SwDBManager const &)=delete
bool m_bMergeSilent
suppress display of dialogs/boxes (used when called over API)
static void GetColumnNames(weld::ComboBox &rBox, css::uno::Reference< css::sdbc::XConnection > const &xConnection, const OUString &rTableName)
OUString m_sEmbeddedName
Name of the embedded database that's included in the current document.
bool IsMergeSilent() const
SwDSParams_t m_DataSourceParams
bool IsInitDBFields() const
Initialize data fields that lack name of database.
void SetMailMergeEvtSrc(const SwXMailMerge *pSrc)
SwDoc * m_pDoc
The document that owns this manager.
MergeStatus m_aMergeStatus
current / last merge status
void SetInitDBFields(bool b)
bool IsMergeError() const
std::unique_ptr< SwDBManager_Impl > m_pImpl
Used by the UI to modify the document model.
Gives UNO access to the global mail merge functionality, via the com.sun.star.text....
@ DBMGR_MERGE_EMAIL
Send mail merge as email.
@ DBMGR_MERGE
Data records in fields.
@ DBMGR_MERGE_SHELL
Create merge doc and keep the doc shell.
@ DBMGR_MERGE_PRINTER
Print mail merge.
@ DBMGR_MERGE_FILE
Save mail merge as files.
std::vector< std::unique_ptr< SwDSParam > > SwDSParams_t
css::uno::Sequence< OUString > aBlindCopiesTo
css::uno::Sequence< OUString > aCopiesTo
css::uno::Reference< css::mail::XSmtpService > xSmtpServer
OUString sPrefix
Basename incl.
OUString sDBPasswordColumn
DB column to fetch password.
bool bPrefixIsFilename
Use the sPrefix as the target filename also overwriting an existing target file.
OUString sDBcolumn
DB column to fetch EMail of Filename from.
css::uno::Sequence< css::beans::PropertyValue > aPrintOptions
css::uno::Sequence< css::beans::PropertyValue > aSaveToFilterData
OUString sSaveToFilterOptions
const ContentProperties & rData
class SAL_NO_VTABLE XPropertySet
Dialog to specify the properties of date form field.
DBConnURIType GetDBunoType(const INetURLObject &rURL)
css::uno::Reference< css::util::XNumberFormatter > xFormatter
SwDSParam(const SwDBData &rData)
css::uno::Reference< css::sdbc::XResultSet > xResultSet
css::uno::Reference< css::sdbc::XStatement > xStatement
SwDSParam(const SwDBData &rData, const css::uno::Reference< css::sdbc::XResultSet > &xResSet, const css::uno::Sequence< css::uno::Any > &rSelection)
css::util::Date aNullDate
css::uno::Reference< css::sdbc::XConnection > xConnection
css::uno::Sequence< css::uno::Any > aSelection
bool HasValidRecord() const
tools::Long nSelectionIndex
const svx::ODataAccessDescriptor & rDescriptor
const DBManagerOptions nMergeType
SwMergeDescriptor(const DBManagerOptions nType, SwWrtShell &rShell, const svx::ODataAccessDescriptor &rDesc)
SwMailMergeConfigItem * pMailMergeConfigItem
bool bCreateSingleFile
Create a single or multiple results.