diff options
Diffstat (limited to 'dbaccess/source/ui/inc/TokenWriter.hxx')
-rw-r--r-- | dbaccess/source/ui/inc/TokenWriter.hxx | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/dbaccess/source/ui/inc/TokenWriter.hxx b/dbaccess/source/ui/inc/TokenWriter.hxx new file mode 100644 index 000000000000..43952c95fc0d --- /dev/null +++ b/dbaccess/source/ui/inc/TokenWriter.hxx @@ -0,0 +1,259 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef DBAUI_TOKENWRITER_HXX +#define DBAUI_TOKENWRITER_HXX + +#include "DExport.hxx" +#include "moduledbu.hxx" +#include "commontypes.hxx" + +#include <com/sun/star/awt/FontDescriptor.hpp> +#include <com/sun/star/sdbc/XResultSet.hpp> +#include <com/sun/star/sdbc/XResultSetUpdate.hpp> +#include <com/sun/star/sdbc/XRow.hpp> +#include <com/sun/star/lang/XMultiServiceFactory.hpp> +#include <com/sun/star/lang/XEventListener.hpp> +#include <com/sun/star/frame/XModel.hpp> +#include <com/sun/star/beans/PropertyValue.hpp> +#include <com/sun/star/sdb/CommandType.hpp> +#include <com/sun/star/sdbcx/XRowLocate.hpp> + +#include <cppuhelper/implbase1.hxx> +#include <tools/stream.hxx> +#include <svx/dataaccessdescriptor.hxx> + +#include <memory> + +namespace com { namespace sun { namespace star { + namespace sdbc{ + class XRowUpdate; + } +}}} + +namespace dbaui +{ + // ========================================================================= + // ODatabaseImportExport Basisklasse f"ur Import/Export + // ========================================================================= + class ODatabaseExport; + typedef ::cppu::WeakImplHelper1< ::com::sun::star::lang::XEventListener> ODatabaseImportExport_BASE; + class ODatabaseImportExport : public ODatabaseImportExport_BASE + { + private: + void impl_initializeRowMember_throw(); + + protected: + ::com::sun::star::lang::Locale m_aLocale; + ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any> m_aSelection; + sal_Bool m_bBookmarkSelection; + SvStream* m_pStream; + ::com::sun::star::awt::FontDescriptor m_aFont; + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xObject; // table/query + SharedConnection m_xConnection; + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > m_xResultSet; + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRow > m_xRow; + ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XRowLocate > m_xRowLocate; + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > m_xResultSetMetaData; + ::com::sun::star::uno::Reference< ::com::sun::star::container::XIndexAccess > m_xRowSetColumns; + ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter > m_xFormatter; // a number formatter working with the connection's NumberFormatsSupplier + ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory> m_xFactory; + + ::rtl::OUString m_sName; + //dyf add 20070601 + //for transfor the tablename + ::rtl::OUString m_sDefaultTableName; + //dyf add end + ::rtl::OUString m_sDataSourceName; + sal_Int32 m_nCommandType; + bool m_bNeedToReInitialize; + +#if defined UNX + static const char __FAR_DATA sNewLine; +#else + static const char __FAR_DATA sNewLine[]; +#endif + + ODatabaseExport* m_pReader; + sal_Int32* m_pRowMarker; // wenn gesetzt, dann nur diese Rows kopieren + rtl_TextEncoding m_eDestEnc; + sal_Bool m_bInInitialize; + sal_Bool m_bCheckOnly; + + // export data + ODatabaseImportExport( const ::svx::ODataAccessDescriptor& _aDataDescriptor, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM, + const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxNumberF, + const String& rExchange = String()); + + // import data + ODatabaseImportExport( const SharedConnection& _rxConnection, + const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxNumberF, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM); + + virtual ~ODatabaseImportExport(); + + virtual void initialize(); + public: + void setStream(SvStream* _pStream){ m_pStream = _pStream; } + + //dyf add 20070601 + //for set the tablename + void setSTableName(const ::rtl::OUString &_sTableName){ m_sDefaultTableName = _sTableName; } + //dyf add end + + virtual BOOL Write(); // Export + virtual BOOL Read(); // Import + + void initialize(const ::svx::ODataAccessDescriptor& _aDataDescriptor); + void dispose(); + + void enableCheckOnly() { m_bCheckOnly = sal_True; } + sal_Bool isCheckEnabled() const { return m_bCheckOnly; } + + + private: + virtual void SAL_CALL disposing( const ::com::sun::star::lang::EventObject& Source ) throw(::com::sun::star::uno::RuntimeException); + void impl_initFromDescriptor( const ::svx::ODataAccessDescriptor& _aDataDescriptor, bool _bPlusDefaultInit ); + }; + + // ========================================================================= + // RTF Im- und Export + // ========================================================================= + + class ORTFImportExport : public ODatabaseImportExport + { + void appendRow(::rtl::OString* pHorzChar,sal_Int32 _nColumnCount,sal_Int32& k,sal_Int32& kk); + public: + // export data + ORTFImportExport( const ::svx::ODataAccessDescriptor& _aDataDescriptor, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM, + const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxNumberF, + const String& rExchange = String()) + : ODatabaseImportExport(_aDataDescriptor,_rM,_rxNumberF,rExchange) {}; + + // import data + ORTFImportExport( const SharedConnection& _rxConnection, + const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxNumberF, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM) + : ODatabaseImportExport(_rxConnection,_rxNumberF,_rM) + {} + + virtual BOOL Write(); + virtual BOOL Read(); + }; + // ========================================================================= + // HTML Im- und Export + // ========================================================================= + #define SBA_HTML_FONTSIZES 7 + const sal_Int16 nIndentMax = 23; + class OHTMLImportExport : public ODatabaseImportExport + { + // default HtmlFontSz[1-7] + static const sal_Int16 nDefaultFontSize[SBA_HTML_FONTSIZES]; + // HtmlFontSz[1-7] in s*3.ini [user] + static sal_Int16 nFontSize[SBA_HTML_FONTSIZES]; + static const sal_Int16 nCellSpacing; + static const char __FAR_DATA sIndentSource[]; + char sIndent[nIndentMax+1]; + sal_Int16 m_nIndent; + #ifdef DBG_UTIL + BOOL m_bCheckFont; + #endif + + void WriteHeader(); + void WriteBody(); + void WriteTables(); + void WriteCell( sal_Int32 nFormat,sal_Int32 nWidthPixel,sal_Int32 nHeightPixel,const char* pChar,const String& rValue,const char* pHtmlTag); + void IncIndent( sal_Int16 nVal ); + const char* GetIndentStr() { return sIndent; } + void FontOn(); + inline void FontOff(); + + public: + // export data + OHTMLImportExport( const ::svx::ODataAccessDescriptor& _aDataDescriptor, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM, + const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxNumberF, + const String& rExchange = String()); + // import data + OHTMLImportExport( const SharedConnection& _rxConnection, + const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxNumberF, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM) + : ODatabaseImportExport(_rxConnection,_rxNumberF,_rM) + {} + + virtual BOOL Write(); + virtual BOOL Read(); + + }; + // ========================================================================= + // normal RowSet Im- und Export + // ========================================================================= + + class ORowSetImportExport : public ODatabaseImportExport + { + OModuleClient m_aModuleClient; + ::std::vector<sal_Int32> m_aColumnMapping; + ::std::vector<sal_Int32> m_aColumnTypes; + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetUpdate > m_xTargetResultSetUpdate; // + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XRowUpdate > m_xTargetRowUpdate; // + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetMetaData > m_xTargetResultSetMetaData; // + Window* m_pParent; + sal_Bool m_bAlreadyAsked; + + sal_Bool insertNewRow(); + protected: + virtual void initialize(); + + public: + // export data + ORowSetImportExport(Window* _pParent, + const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSetUpdate >& _xResultSetUpdate, + const ::svx::ODataAccessDescriptor& _aDataDescriptor, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM, + const String& rExchange = String()); + + // import data + ORowSetImportExport(const SharedConnection& _rxConnection, + const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM) + : ODatabaseImportExport(_rxConnection,NULL,_rM) + {} + + virtual BOOL Write(); + virtual BOOL Read(); + + private: + using ODatabaseImportExport::initialize; + }; + +} +#endif // DBAUI_TOKENWRITER_HXX + + + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |