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