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 DBAUI_DATABASEEXPORT_HXX 28*cdf0e10cSrcweir #define DBAUI_DATABASEEXPORT_HXX 29*cdf0e10cSrcweir 30*cdf0e10cSrcweir #include <com/sun/star/sdbc/XResultSet.hpp> 31*cdf0e10cSrcweir #include <com/sun/star/sdbc/XResultSetMetaData.hpp> 32*cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp> 33*cdf0e10cSrcweir #include <com/sun/star/util/XNumberFormatter.hpp> 34*cdf0e10cSrcweir #include <com/sun/star/container/XNameAccess.hpp> 35*cdf0e10cSrcweir #include <com/sun/star/container/XIndexAccess.hpp> 36*cdf0e10cSrcweir #include <com/sun/star/lang/Locale.hpp> 37*cdf0e10cSrcweir #include <com/sun/star/lang/XMultiServiceFactory.hpp> 38*cdf0e10cSrcweir #include <com/sun/star/util/Date.hpp> 39*cdf0e10cSrcweir #include <vector> 40*cdf0e10cSrcweir #include <tools/string.hxx> 41*cdf0e10cSrcweir #include <comphelper/stl_types.hxx> 42*cdf0e10cSrcweir #include "TypeInfo.hxx" 43*cdf0e10cSrcweir #include "WTypeSelect.hxx" 44*cdf0e10cSrcweir #include "commontypes.hxx" 45*cdf0e10cSrcweir #include "IUpdateHelper.hxx" 46*cdf0e10cSrcweir #include "WTypeSelect.hxx" 47*cdf0e10cSrcweir 48*cdf0e10cSrcweir namespace com { namespace sun { namespace star { 49*cdf0e10cSrcweir namespace awt{ 50*cdf0e10cSrcweir struct FontDescriptor; 51*cdf0e10cSrcweir } 52*cdf0e10cSrcweir namespace sdbc{ 53*cdf0e10cSrcweir class XPreparedStatement; 54*cdf0e10cSrcweir class XDatabaseMetaData; 55*cdf0e10cSrcweir } 56*cdf0e10cSrcweir }}} 57*cdf0e10cSrcweir 58*cdf0e10cSrcweir #define COLUMN_POSITION_NOT_FOUND ((sal_Int32)-1) 59*cdf0e10cSrcweir 60*cdf0e10cSrcweir class Window; 61*cdf0e10cSrcweir class SvNumberFormatter; 62*cdf0e10cSrcweir namespace dbaui 63*cdf0e10cSrcweir { 64*cdf0e10cSrcweir class OFieldDescription; 65*cdf0e10cSrcweir class OTypeInfo; 66*cdf0e10cSrcweir class OWizTypeSelect; 67*cdf0e10cSrcweir class ODatabaseExport 68*cdf0e10cSrcweir { 69*cdf0e10cSrcweir public: 70*cdf0e10cSrcweir DECLARE_STL_MAP(::rtl::OUString,OFieldDescription*,::comphelper::UStringMixLess,TColumns); 71*cdf0e10cSrcweir typedef ::std::vector<TColumns::const_iterator> TColumnVector; 72*cdf0e10cSrcweir typedef ::std::vector< ::std::pair<sal_Int32,sal_Int32> > TPositions; 73*cdf0e10cSrcweir 74*cdf0e10cSrcweir protected: 75*cdf0e10cSrcweir TPositions m_vColumns; // Welche Spalten "ubernommen werden sollen 76*cdf0e10cSrcweir ::std::vector<sal_Int32> m_vColumnTypes; // FeldTypen f"ur schnelleren Zugriff 77*cdf0e10cSrcweir ::std::vector<sal_Int32> m_vColumnSize; 78*cdf0e10cSrcweir ::std::vector<sal_Int16> m_vNumberFormat; 79*cdf0e10cSrcweir ::com::sun::star::lang::Locale m_aLocale; 80*cdf0e10cSrcweir 81*cdf0e10cSrcweir TColumns m_aDestColumns; // container for new created columns 82*cdf0e10cSrcweir TColumnVector m_vDestVector; 83*cdf0e10cSrcweir 84*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xTable; // dest table 85*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess> m_xTables; // container 86*cdf0e10cSrcweir SharedConnection m_xConnection; // dest conn 87*cdf0e10cSrcweir 88*cdf0e10cSrcweir ::boost::shared_ptr<IUpdateHelper> m_pUpdateHelper; 89*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XResultSet > m_xResultSet; // 90*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter > m_xFormatter; // a number formatter working with the connection's NumberFormatsSupplier 91*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory> m_xFactory; 92*cdf0e10cSrcweir ::com::sun::star::util::Date m_aNullDate; 93*cdf0e10cSrcweir 94*cdf0e10cSrcweir SvNumberFormatter* m_pFormatter; 95*cdf0e10cSrcweir SvStream& m_rInputStream; 96*cdf0e10cSrcweir //dyf add 2006/06/01 97*cdf0e10cSrcweir //for save the selected tablename 98*cdf0e10cSrcweir ::rtl::OUString m_sDefaultTableName; 99*cdf0e10cSrcweir //dyf add end 100*cdf0e10cSrcweir String m_sTextToken; // Zellen Inhalt 101*cdf0e10cSrcweir String m_sNumToken; /// SDNUM value 102*cdf0e10cSrcweir String m_sValToken; /// SDVAL value 103*cdf0e10cSrcweir TOTypeInfoSP m_pTypeInfo; // contains the default type 104*cdf0e10cSrcweir const TColumnVector* m_pColumnList; 105*cdf0e10cSrcweir const OTypeInfoMap* m_pInfoMap; 106*cdf0e10cSrcweir sal_Int32 m_nColumnPos; // aktuelle Spaltenposition 107*cdf0e10cSrcweir sal_Int32 m_nRows; // Anzahl der Zeilen die durchsucht werden sollen 108*cdf0e10cSrcweir sal_Int32 m_nRowCount; // current count of rows 109*cdf0e10cSrcweir rtl_TextEncoding m_nDefToken; // Sprache 110*cdf0e10cSrcweir sal_Bool m_bError; // Fehler und Abbruchstatus 111*cdf0e10cSrcweir sal_Bool m_bInTbl; // Ist gesetzt, wenn der Parser sich in der RTF Tabelle befindet 112*cdf0e10cSrcweir sal_Bool m_bHead; // ist true, wenn die Kopfzeile noch nicht gelesen wurde 113*cdf0e10cSrcweir sal_Bool m_bDontAskAgain;// Falls beim Einf"ugen ein Fehler auftritt, soll die Fehlermeldung nicht 114*cdf0e10cSrcweir sal_Bool m_bIsAutoIncrement; // if PKey is set by user 115*cdf0e10cSrcweir sal_Bool m_bFoundTable; // set to true when a table was found 116*cdf0e10cSrcweir sal_Bool m_bCheckOnly; 117*cdf0e10cSrcweir bool m_bAppendFirstLine; 118*cdf0e10cSrcweir 119*cdf0e10cSrcweir 120*cdf0e10cSrcweir virtual sal_Bool CreateTable(int nToken) = 0; 121*cdf0e10cSrcweir virtual TypeSelectionPageFactory 122*cdf0e10cSrcweir getTypeSelectionPageFactory() = 0; 123*cdf0e10cSrcweir 124*cdf0e10cSrcweir void CreateDefaultColumn(const ::rtl::OUString& _rColumnName); 125*cdf0e10cSrcweir sal_Int16 CheckString(const String& aToken, sal_Int16 _nOldNumberFormat); 126*cdf0e10cSrcweir void adjustFormat(); 127*cdf0e10cSrcweir void eraseTokens(); 128*cdf0e10cSrcweir void insertValueIntoColumn(); 129*cdf0e10cSrcweir sal_Bool createRowSet(); 130*cdf0e10cSrcweir void showErrorDialog(const ::com::sun::star::sdbc::SQLException& e); 131*cdf0e10cSrcweir void ensureFormatter(); 132*cdf0e10cSrcweir 133*cdf0e10cSrcweir /** executeWizard calls a wizard to create/append data 134*cdf0e10cSrcweir @param _sTableName the tablename 135*cdf0e10cSrcweir @param _aTextColor the text color of the new created table 136*cdf0e10cSrcweir @param _rFont the font of the new table 137*cdf0e10cSrcweir 138*cdf0e10cSrcweir @return true when an error occurs 139*cdf0e10cSrcweir */ 140*cdf0e10cSrcweir sal_Bool executeWizard( const ::rtl::OUString& _sTableName, 141*cdf0e10cSrcweir const ::com::sun::star::uno::Any& _aTextColor, 142*cdf0e10cSrcweir const ::com::sun::star::awt::FontDescriptor& _rFont); 143*cdf0e10cSrcweir 144*cdf0e10cSrcweir virtual ~ODatabaseExport(); 145*cdf0e10cSrcweir public: 146*cdf0e10cSrcweir ODatabaseExport( 147*cdf0e10cSrcweir const SharedConnection& _rxConnection, 148*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxNumberF, 149*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM, 150*cdf0e10cSrcweir const TColumnVector* rList, 151*cdf0e10cSrcweir const OTypeInfoMap* _pInfoMap, 152*cdf0e10cSrcweir SvStream& _rInputStream 153*cdf0e10cSrcweir ); 154*cdf0e10cSrcweir 155*cdf0e10cSrcweir // wird f"ur auto. Typ-Erkennung gebraucht 156*cdf0e10cSrcweir ODatabaseExport( 157*cdf0e10cSrcweir sal_Int32 nRows, 158*cdf0e10cSrcweir const TPositions& _rColumnPositions, 159*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _rxNumberF, 160*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM, 161*cdf0e10cSrcweir const TColumnVector* rList, 162*cdf0e10cSrcweir const OTypeInfoMap* _pInfoMap, 163*cdf0e10cSrcweir sal_Bool _bAutoIncrementEnabled, 164*cdf0e10cSrcweir SvStream& _rInputStream 165*cdf0e10cSrcweir ); 166*cdf0e10cSrcweir 167*cdf0e10cSrcweir void SetColumnTypes(const TColumnVector* rList,const OTypeInfoMap* _pInfoMap); 168*cdf0e10cSrcweir 169*cdf0e10cSrcweir //dyf add 20070601 170*cdf0e10cSrcweir inline void SetTableName(const ::rtl::OUString &_sTableName){ m_sDefaultTableName = _sTableName ; } 171*cdf0e10cSrcweir //dyf add end 172*cdf0e10cSrcweir 173*cdf0e10cSrcweir virtual void release() = 0; 174*cdf0e10cSrcweir 175*cdf0e10cSrcweir void enableCheckOnly() { m_bCheckOnly = sal_True; } 176*cdf0e10cSrcweir sal_Bool isCheckEnabled() const { return m_bCheckOnly; } 177*cdf0e10cSrcweir 178*cdf0e10cSrcweir static ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XPreparedStatement > createPreparedStatment( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData>& _xMetaData 179*cdf0e10cSrcweir ,const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet>& _xDestTable 180*cdf0e10cSrcweir ,const TPositions& _rvColumns); 181*cdf0e10cSrcweir }; 182*cdf0e10cSrcweir } 183*cdf0e10cSrcweir 184*cdf0e10cSrcweir #endif // DBAUI_DATABASEEXPORT_HXX 185*cdf0e10cSrcweir 186*cdf0e10cSrcweir 187*cdf0e10cSrcweir 188*cdf0e10cSrcweir 189*cdf0e10cSrcweir 190