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 28*cdf0e10cSrcweir #ifndef DBAUI_WIZ_COPYTABLEDIALOG_HXX 29*cdf0e10cSrcweir #define DBAUI_WIZ_COPYTABLEDIALOG_HXX 30*cdf0e10cSrcweir 31*cdf0e10cSrcweir #include <com/sun/star/container/XNameAccess.hpp> 32*cdf0e10cSrcweir #include <com/sun/star/sdbc/XConnection.hpp> 33*cdf0e10cSrcweir #include <com/sun/star/sdbc/XResultSet.hpp> 34*cdf0e10cSrcweir #include <com/sun/star/sdbc/XResultSetMetaData.hpp> 35*cdf0e10cSrcweir #include <com/sun/star/sdbc/XDatabaseMetaData.hpp> 36*cdf0e10cSrcweir #include <com/sun/star/beans/XPropertySet.hpp> 37*cdf0e10cSrcweir #include <comphelper/stl_types.hxx> 38*cdf0e10cSrcweir #include "TypeInfo.hxx" 39*cdf0e10cSrcweir #include <vcl/button.hxx> 40*cdf0e10cSrcweir #include <svtools/wizdlg.hxx> 41*cdf0e10cSrcweir #include "DExport.hxx" 42*cdf0e10cSrcweir #include "WTabPage.hxx" 43*cdf0e10cSrcweir #include "FieldDescriptions.hxx" 44*cdf0e10cSrcweir #include <com/sun/star/sdbcx/XColumnsSupplier.hpp> 45*cdf0e10cSrcweir #include <com/sun/star/sdbcx/XKeysSupplier.hpp> 46*cdf0e10cSrcweir #include <com/sun/star/task/XInteractionHandler.hpp> 47*cdf0e10cSrcweir #include <vcl/lstbox.hxx> 48*cdf0e10cSrcweir #include <functional> 49*cdf0e10cSrcweir 50*cdf0e10cSrcweir namespace dbaui 51*cdf0e10cSrcweir { 52*cdf0e10cSrcweir 53*cdf0e10cSrcweir typedef ::std::unary_function< ::rtl::OUString,bool> TColumnFindFunctorType; 54*cdf0e10cSrcweir class TColumnFindFunctor : public TColumnFindFunctorType 55*cdf0e10cSrcweir { 56*cdf0e10cSrcweir public: 57*cdf0e10cSrcweir virtual bool operator()(const ::rtl::OUString& _sColumnName) const = 0; 58*cdf0e10cSrcweir }; 59*cdf0e10cSrcweir 60*cdf0e10cSrcweir class TExportColumnFindFunctor : public TColumnFindFunctor 61*cdf0e10cSrcweir { 62*cdf0e10cSrcweir ODatabaseExport::TColumns* m_pColumns; 63*cdf0e10cSrcweir public: 64*cdf0e10cSrcweir TExportColumnFindFunctor(ODatabaseExport::TColumns* _pColumns) 65*cdf0e10cSrcweir { 66*cdf0e10cSrcweir m_pColumns = _pColumns; 67*cdf0e10cSrcweir } 68*cdf0e10cSrcweir inline bool operator()(const ::rtl::OUString& _sColumnName) const 69*cdf0e10cSrcweir { 70*cdf0e10cSrcweir return m_pColumns->find(_sColumnName) != m_pColumns->end(); 71*cdf0e10cSrcweir } 72*cdf0e10cSrcweir }; 73*cdf0e10cSrcweir 74*cdf0e10cSrcweir class TMultiListBoxEntryFindFunctor : public TColumnFindFunctor 75*cdf0e10cSrcweir { 76*cdf0e10cSrcweir ::comphelper::TStringMixEqualFunctor m_aCase; 77*cdf0e10cSrcweir ::std::vector< ::rtl::OUString>* m_pVector; 78*cdf0e10cSrcweir public: 79*cdf0e10cSrcweir TMultiListBoxEntryFindFunctor(::std::vector< ::rtl::OUString>* _pVector, 80*cdf0e10cSrcweir const ::comphelper::TStringMixEqualFunctor& _aCase) 81*cdf0e10cSrcweir :m_aCase(_aCase) 82*cdf0e10cSrcweir ,m_pVector(_pVector) 83*cdf0e10cSrcweir { 84*cdf0e10cSrcweir } 85*cdf0e10cSrcweir inline bool operator()(const ::rtl::OUString& _sColumnName) const 86*cdf0e10cSrcweir { 87*cdf0e10cSrcweir return ::std::find_if(m_pVector->begin(),m_pVector->end(), 88*cdf0e10cSrcweir ::std::bind2nd(m_aCase, _sColumnName)) != m_pVector->end(); 89*cdf0e10cSrcweir } 90*cdf0e10cSrcweir }; 91*cdf0e10cSrcweir 92*cdf0e10cSrcweir // ======================================================== 93*cdf0e10cSrcweir // ICopyTableSourceObject 94*cdf0e10cSrcweir // ======================================================== 95*cdf0e10cSrcweir /** interface to an object to copy to another DB, using the OCopyTableWizard 96*cdf0e10cSrcweir 97*cdf0e10cSrcweir when the wizard is used to copy an object to another DB, it usually requires 98*cdf0e10cSrcweir a sdbcx-level or sdb-level object (a css.sdbcx.Table or css.sdb.Query, that is). 99*cdf0e10cSrcweir 100*cdf0e10cSrcweir However, to also support copying tables from sdbc-level connections, we allow to 101*cdf0e10cSrcweir work with the object name only. This implies some less features (like copying the 102*cdf0e10cSrcweir UI settings of a table is not done), but still allows to copy definition and data. 103*cdf0e10cSrcweir */ 104*cdf0e10cSrcweir class ICopyTableSourceObject 105*cdf0e10cSrcweir { 106*cdf0e10cSrcweir public: 107*cdf0e10cSrcweir /// retrieves the fully qualified name of the object to copy 108*cdf0e10cSrcweir virtual ::rtl::OUString getQualifiedObjectName() const = 0; 109*cdf0e10cSrcweir /// determines whether the object is a view 110*cdf0e10cSrcweir virtual bool isView() const = 0; 111*cdf0e10cSrcweir /** copies the UI settings of the object to the given target object. Might be 112*cdf0e10cSrcweir ignored by implementations which do not have Ui settings. 113*cdf0e10cSrcweir */ 114*cdf0e10cSrcweir virtual void copyUISettingsTo( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ) const = 0; 115*cdf0e10cSrcweir /// retrieves the column names of the to-be-copied object 116*cdf0e10cSrcweir virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > 117*cdf0e10cSrcweir getColumnNames() const = 0; 118*cdf0e10cSrcweir /// retrieves the names of the primary keys of the to-be-copied object 119*cdf0e10cSrcweir virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > 120*cdf0e10cSrcweir getPrimaryKeyColumnNames() const = 0; 121*cdf0e10cSrcweir /// creates a OFieldDescription for the given column of the to-be-copied object 122*cdf0e10cSrcweir virtual OFieldDescription* createFieldDescription( const ::rtl::OUString& _rColumnName ) const = 0; 123*cdf0e10cSrcweir /// returns the SELECT statement which can be used to retrieve the data of the to-be-copied object 124*cdf0e10cSrcweir virtual ::rtl::OUString getSelectStatement() const = 0; 125*cdf0e10cSrcweir 126*cdf0e10cSrcweir /** copies the filter and sorting 127*cdf0e10cSrcweir * 128*cdf0e10cSrcweir * \return 129*cdf0e10cSrcweir */ 130*cdf0e10cSrcweir virtual void copyFilterAndSortingTo(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xConnection,const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ) const = 0; 131*cdf0e10cSrcweir 132*cdf0e10cSrcweir /** returns the prepared statement which can be used to retrieve the data of the to-be-copied object 133*cdf0e10cSrcweir 134*cdf0e10cSrcweir The default implementation of this method will simply prepare a statement with the return value 135*cdf0e10cSrcweir of ->getSelectStatement. 136*cdf0e10cSrcweir */ 137*cdf0e10cSrcweir virtual ::utl::SharedUNOComponent< ::com::sun::star::sdbc::XPreparedStatement > 138*cdf0e10cSrcweir getPreparedSelectStatement() const = 0; 139*cdf0e10cSrcweir 140*cdf0e10cSrcweir virtual ~ICopyTableSourceObject(); 141*cdf0e10cSrcweir }; 142*cdf0e10cSrcweir 143*cdf0e10cSrcweir // ======================================================== 144*cdf0e10cSrcweir // ObjectCopySource 145*cdf0e10cSrcweir // ======================================================== 146*cdf0e10cSrcweir class ObjectCopySource : public ICopyTableSourceObject 147*cdf0e10cSrcweir { 148*cdf0e10cSrcweir private: 149*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xConnection; 150*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData; 151*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xObject; 152*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > m_xObjectPSI; 153*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xObjectColumns; 154*cdf0e10cSrcweir 155*cdf0e10cSrcweir public: 156*cdf0e10cSrcweir ObjectCopySource( 157*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection, 158*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject 159*cdf0e10cSrcweir ); 160*cdf0e10cSrcweir 161*cdf0e10cSrcweir // ICopyTableSourceObject overridables 162*cdf0e10cSrcweir virtual ::rtl::OUString getQualifiedObjectName() const; 163*cdf0e10cSrcweir virtual bool isView() const; 164*cdf0e10cSrcweir virtual void copyUISettingsTo( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ) const; 165*cdf0e10cSrcweir virtual void copyFilterAndSortingTo(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xConnection, const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ) const; 166*cdf0e10cSrcweir virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > 167*cdf0e10cSrcweir getColumnNames() const; 168*cdf0e10cSrcweir virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > 169*cdf0e10cSrcweir getPrimaryKeyColumnNames() const; 170*cdf0e10cSrcweir virtual OFieldDescription* createFieldDescription( const ::rtl::OUString& _rColumnName ) const; 171*cdf0e10cSrcweir virtual ::rtl::OUString getSelectStatement() const; 172*cdf0e10cSrcweir virtual ::utl::SharedUNOComponent< ::com::sun::star::sdbc::XPreparedStatement > 173*cdf0e10cSrcweir getPreparedSelectStatement() const; 174*cdf0e10cSrcweir }; 175*cdf0e10cSrcweir 176*cdf0e10cSrcweir // ======================================================== 177*cdf0e10cSrcweir // NamedTableCopySource 178*cdf0e10cSrcweir // ======================================================== 179*cdf0e10cSrcweir class NamedTableCopySource : public ICopyTableSourceObject 180*cdf0e10cSrcweir { 181*cdf0e10cSrcweir private: 182*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xConnection; 183*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData; 184*cdf0e10cSrcweir ::rtl::OUString m_sTableName; 185*cdf0e10cSrcweir ::rtl::OUString m_sTableCatalog; 186*cdf0e10cSrcweir ::rtl::OUString m_sTableSchema; 187*cdf0e10cSrcweir ::rtl::OUString m_sTableBareName; 188*cdf0e10cSrcweir ::std::vector< OFieldDescription > m_aColumnInfo; 189*cdf0e10cSrcweir ::utl::SharedUNOComponent< ::com::sun::star::sdbc::XPreparedStatement > m_xStatement; 190*cdf0e10cSrcweir 191*cdf0e10cSrcweir public: 192*cdf0e10cSrcweir NamedTableCopySource( 193*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection, 194*cdf0e10cSrcweir const ::rtl::OUString& _rTableName 195*cdf0e10cSrcweir ); 196*cdf0e10cSrcweir 197*cdf0e10cSrcweir // ICopyTableSourceObject overridables 198*cdf0e10cSrcweir virtual ::rtl::OUString getQualifiedObjectName() const; 199*cdf0e10cSrcweir virtual bool isView() const; 200*cdf0e10cSrcweir virtual void copyUISettingsTo( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ) const; 201*cdf0e10cSrcweir virtual void copyFilterAndSortingTo(const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xConnection,const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ) const; 202*cdf0e10cSrcweir virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > 203*cdf0e10cSrcweir getColumnNames() const; 204*cdf0e10cSrcweir virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > 205*cdf0e10cSrcweir getPrimaryKeyColumnNames() const; 206*cdf0e10cSrcweir virtual OFieldDescription* createFieldDescription( const ::rtl::OUString& _rColumnName ) const; 207*cdf0e10cSrcweir virtual ::rtl::OUString getSelectStatement() const; 208*cdf0e10cSrcweir virtual ::utl::SharedUNOComponent< ::com::sun::star::sdbc::XPreparedStatement > 209*cdf0e10cSrcweir getPreparedSelectStatement() const; 210*cdf0e10cSrcweir 211*cdf0e10cSrcweir private: 212*cdf0e10cSrcweir void impl_ensureColumnInfo_throw(); 213*cdf0e10cSrcweir ::utl::SharedUNOComponent< ::com::sun::star::sdbc::XPreparedStatement > 214*cdf0e10cSrcweir impl_ensureStatement_throw(); 215*cdf0e10cSrcweir }; 216*cdf0e10cSrcweir 217*cdf0e10cSrcweir // ======================================================== 218*cdf0e10cSrcweir // Wizard Dialog 219*cdf0e10cSrcweir // ======================================================== 220*cdf0e10cSrcweir class OCopyTableWizard : public WizardDialog 221*cdf0e10cSrcweir { 222*cdf0e10cSrcweir friend class OWizColumnSelect; 223*cdf0e10cSrcweir friend class OWizTypeSelect; 224*cdf0e10cSrcweir friend class OWizTypeSelectControl; 225*cdf0e10cSrcweir friend class OCopyTable; 226*cdf0e10cSrcweir friend class OWizNameMatching; 227*cdf0e10cSrcweir 228*cdf0e10cSrcweir public: 229*cdf0e10cSrcweir DECLARE_STL_MAP(::rtl::OUString,::rtl::OUString,::comphelper::UStringMixLess,TNameMapping); 230*cdf0e10cSrcweir 231*cdf0e10cSrcweir enum Wizard_Button_Style 232*cdf0e10cSrcweir { 233*cdf0e10cSrcweir WIZARD_NEXT, 234*cdf0e10cSrcweir WIZARD_PREV, 235*cdf0e10cSrcweir WIZARD_FINISH, 236*cdf0e10cSrcweir 237*cdf0e10cSrcweir WIZARD_NONE 238*cdf0e10cSrcweir }; 239*cdf0e10cSrcweir 240*cdf0e10cSrcweir private: 241*cdf0e10cSrcweir ODatabaseExport::TColumns m_vDestColumns; // contains the columns 242*cdf0e10cSrcweir ODatabaseExport::TColumnVector m_aDestVec; // the order to insert the columns 243*cdf0e10cSrcweir ODatabaseExport::TColumns m_vSourceColumns; 244*cdf0e10cSrcweir ODatabaseExport::TColumnVector m_vSourceVec; 245*cdf0e10cSrcweir 246*cdf0e10cSrcweir HelpButton m_pbHelp; 247*cdf0e10cSrcweir CancelButton m_pbCancel; 248*cdf0e10cSrcweir PushButton m_pbPrev; 249*cdf0e10cSrcweir PushButton m_pbNext; 250*cdf0e10cSrcweir OKButton m_pbFinish; 251*cdf0e10cSrcweir 252*cdf0e10cSrcweir OTypeInfoMap m_aTypeInfo; 253*cdf0e10cSrcweir ::std::vector<OTypeInfoMap::iterator> m_aTypeInfoIndex; 254*cdf0e10cSrcweir OTypeInfoMap m_aDestTypeInfo; 255*cdf0e10cSrcweir ::std::vector<OTypeInfoMap::iterator> m_aDestTypeInfoIndex; 256*cdf0e10cSrcweir TNameMapping m_mNameMapping; 257*cdf0e10cSrcweir 258*cdf0e10cSrcweir ODatabaseExport::TPositions m_vColumnPos; 259*cdf0e10cSrcweir ::std::vector<sal_Int32> m_vColumnTypes; 260*cdf0e10cSrcweir 261*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xDestConnection; 262*cdf0e10cSrcweir 263*cdf0e10cSrcweir const ICopyTableSourceObject& m_rSourceObject; 264*cdf0e10cSrcweir 265*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter > m_xFormatter; 266*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory> m_xFactory; 267*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler> m_xInteractionHandler; 268*cdf0e10cSrcweir 269*cdf0e10cSrcweir String m_sTypeNames; // these type names are the ones out of the resource file 270*cdf0e10cSrcweir sal_uInt32 m_nPageCount; 271*cdf0e10cSrcweir sal_Bool m_bDeleteSourceColumns; 272*cdf0e10cSrcweir bool m_bInterConnectionCopy; // are we copying between different connections? 273*cdf0e10cSrcweir 274*cdf0e10cSrcweir ::com::sun::star::lang::Locale m_aLocale; 275*cdf0e10cSrcweir ::rtl::OUString m_sName; // for a table the name is composed 276*cdf0e10cSrcweir ::rtl::OUString m_sSourceName; 277*cdf0e10cSrcweir ::rtl::OUString m_aKeyName; 278*cdf0e10cSrcweir TOTypeInfoSP m_pTypeInfo; // default type 279*cdf0e10cSrcweir sal_Bool m_bAddPKFirstTime; 280*cdf0e10cSrcweir sal_Int16 m_nOperation; 281*cdf0e10cSrcweir Wizard_Button_Style m_ePressed; 282*cdf0e10cSrcweir sal_Bool m_bCreatePrimaryKeyColumn; 283*cdf0e10cSrcweir sal_Bool m_bUseHeaderLine; 284*cdf0e10cSrcweir 285*cdf0e10cSrcweir private: 286*cdf0e10cSrcweir DECL_LINK( ImplPrevHdl , PushButton* ); 287*cdf0e10cSrcweir DECL_LINK( ImplNextHdl , PushButton* ); 288*cdf0e10cSrcweir DECL_LINK( ImplOKHdl , OKButton* ); 289*cdf0e10cSrcweir DECL_LINK( ImplActivateHdl, WizardDialog* ); 290*cdf0e10cSrcweir sal_Bool CheckColumns(sal_Int32& _rnBreakPos); 291*cdf0e10cSrcweir void loadData( const ICopyTableSourceObject& _rSourceObject, 292*cdf0e10cSrcweir ODatabaseExport::TColumns& _rColumns, 293*cdf0e10cSrcweir ODatabaseExport::TColumnVector& _rColVector ); 294*cdf0e10cSrcweir void construct(); 295*cdf0e10cSrcweir // need for table creation 296*cdf0e10cSrcweir void appendColumns( ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier>& _rxColSup, const ODatabaseExport::TColumnVector* _pVec, sal_Bool _bKeyColumns = sal_False ) const; 297*cdf0e10cSrcweir void appendKey(::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XKeysSupplier>& _rxSup,const ODatabaseExport::TColumnVector* _pVec) const; 298*cdf0e10cSrcweir // checks if the type is supported in the destination database 299*cdf0e10cSrcweir sal_Bool supportsType(sal_Int32 _nDataType,sal_Int32& _rNewDataType); 300*cdf0e10cSrcweir 301*cdf0e10cSrcweir void impl_loadSourceData(); 302*cdf0e10cSrcweir 303*cdf0e10cSrcweir public: 304*cdf0e10cSrcweir // used for copy tables or queries 305*cdf0e10cSrcweir OCopyTableWizard( 306*cdf0e10cSrcweir Window * pParent, 307*cdf0e10cSrcweir const ::rtl::OUString& _rDefaultName, 308*cdf0e10cSrcweir sal_Int16 _nOperation, 309*cdf0e10cSrcweir const ICopyTableSourceObject& _rSourceObject, 310*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xSourceConnection, 311*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xConnection, 312*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB, 313*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::task::XInteractionHandler>& _xInteractionHandler 314*cdf0e10cSrcweir ); 315*cdf0e10cSrcweir 316*cdf0e10cSrcweir // used for importing rtf/html sources 317*cdf0e10cSrcweir OCopyTableWizard( 318*cdf0e10cSrcweir Window* pParent, 319*cdf0e10cSrcweir const ::rtl::OUString& _rDefaultName, 320*cdf0e10cSrcweir sal_Int16 _nOperation, 321*cdf0e10cSrcweir const ODatabaseExport::TColumns& _rDestColumns, 322*cdf0e10cSrcweir const ODatabaseExport::TColumnVector& _rSourceColVec, 323*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xConnection, 324*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter >& _xFormatter, 325*cdf0e10cSrcweir TypeSelectionPageFactory _pTypeSelectionPageFactory, 326*cdf0e10cSrcweir SvStream& _rTypeSelectionPageArg, 327*cdf0e10cSrcweir const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rM 328*cdf0e10cSrcweir ); 329*cdf0e10cSrcweir 330*cdf0e10cSrcweir virtual ~OCopyTableWizard(); 331*cdf0e10cSrcweir 332*cdf0e10cSrcweir virtual long DeactivatePage(); 333*cdf0e10cSrcweir OKButton& GetOKButton() { return m_pbFinish; } 334*cdf0e10cSrcweir Wizard_Button_Style GetPressedButton() const { return m_ePressed; } 335*cdf0e10cSrcweir void EnableButton(Wizard_Button_Style eStyle,sal_Bool bEnable); 336*cdf0e10cSrcweir void AddWizardPage(OWizardPage* pPage); // Page wird von OCopyTableWizard gel�scht 337*cdf0e10cSrcweir void RemoveWizardPage(OWizardPage* pPage); // Page goes again to user 338*cdf0e10cSrcweir void CheckButtons(); // checks which button can be disabled, enabled 339*cdf0e10cSrcweir 340*cdf0e10cSrcweir // returns a vector where the position of a column and if the column is in the selection 341*cdf0e10cSrcweir // when not the value is COLUMN_POSITION_NOT_FOUND == (sal_uInt32)-1 342*cdf0e10cSrcweir ODatabaseExport::TPositions GetColumnPositions() const { return m_vColumnPos; } 343*cdf0e10cSrcweir ::std::vector<sal_Int32> GetColumnTypes() const { return m_vColumnTypes; } 344*cdf0e10cSrcweir sal_Bool UseHeaderLine() const { return m_bUseHeaderLine; } 345*cdf0e10cSrcweir void setUseHeaderLine(sal_Bool _bUseHeaderLine) { m_bUseHeaderLine = _bUseHeaderLine; } 346*cdf0e10cSrcweir 347*cdf0e10cSrcweir void insertColumn(sal_Int32 _nPos,OFieldDescription* _pField); 348*cdf0e10cSrcweir 349*cdf0e10cSrcweir /** replaces a field description with another one. The name must not be known so far. 350*cdf0e10cSrcweir @param _nPos 351*cdf0e10cSrcweir The pos inside the vector, 0 based. 352*cdf0e10cSrcweir @param _pField 353*cdf0e10cSrcweir The field to set. 354*cdf0e10cSrcweir @param _sOldName 355*cdf0e10cSrcweir The name of column to be replaced. 356*cdf0e10cSrcweir */ 357*cdf0e10cSrcweir void replaceColumn(sal_Int32 _nPos,OFieldDescription* _pField,const ::rtl::OUString& _sOldName); 358*cdf0e10cSrcweir 359*cdf0e10cSrcweir /** returns whether a primary key should be created in the target database 360*cdf0e10cSrcweir */ 361*cdf0e10cSrcweir sal_Bool shouldCreatePrimaryKey() const; 362*cdf0e10cSrcweir void setCreatePrimaryKey( bool _bDoCreate, const ::rtl::OUString& _rSuggestedName ); 363*cdf0e10cSrcweir 364*cdf0e10cSrcweir static bool supportsPrimaryKey( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection ); 365*cdf0e10cSrcweir bool supportsPrimaryKey() const { return supportsPrimaryKey( m_xDestConnection ); } 366*cdf0e10cSrcweir 367*cdf0e10cSrcweir static bool supportsViews( const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection ); 368*cdf0e10cSrcweir bool supportsViews() const { return supportsViews( m_xDestConnection ); } 369*cdf0e10cSrcweir 370*cdf0e10cSrcweir /** returns the name of the primary key 371*cdf0e10cSrcweir @return 372*cdf0e10cSrcweir The name of the primary key. 373*cdf0e10cSrcweir */ 374*cdf0e10cSrcweir ::rtl::OUString getPrimaryKeyName() const { return m_aKeyName; } 375*cdf0e10cSrcweir 376*cdf0e10cSrcweir TOTypeInfoSP getTypeInfo(sal_Int32 _nPos) const { return m_aTypeInfoIndex[_nPos]->second; } 377*cdf0e10cSrcweir const OTypeInfoMap* getTypeInfo() const { return &m_aTypeInfo; } 378*cdf0e10cSrcweir 379*cdf0e10cSrcweir TOTypeInfoSP getDestTypeInfo(sal_Int32 _nPos) const { return m_aDestTypeInfoIndex[_nPos]->second; } 380*cdf0e10cSrcweir const OTypeInfoMap* getDestTypeInfo() const { return &m_aDestTypeInfo; } 381*cdf0e10cSrcweir 382*cdf0e10cSrcweir ::com::sun::star::lang::Locale GetLocale() const { return m_aLocale; } 383*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter > GetFormatter() const { return m_xFormatter; } 384*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory> GetFactory() const { return m_xFactory; } 385*cdf0e10cSrcweir 386*cdf0e10cSrcweir const ODatabaseExport::TColumns* getSourceColumns() const{ return &m_vSourceColumns; } 387*cdf0e10cSrcweir const ODatabaseExport::TColumnVector* getSrcVector() const { return &m_vSourceVec; } 388*cdf0e10cSrcweir ODatabaseExport::TColumns* getDestColumns() { return &m_vDestColumns; } 389*cdf0e10cSrcweir const ODatabaseExport::TColumnVector* getDestVector() const { return &m_aDestVec; } 390*cdf0e10cSrcweir ::rtl::OUString getName() const { return m_sName; } 391*cdf0e10cSrcweir 392*cdf0e10cSrcweir /** clears the dest vectors 393*cdf0e10cSrcweir */ 394*cdf0e10cSrcweir void clearDestColumns(); 395*cdf0e10cSrcweir 396*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createTable(); 397*cdf0e10cSrcweir ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > createView() const; 398*cdf0e10cSrcweir sal_Int32 getMaxColumnNameLength() const; 399*cdf0e10cSrcweir 400*cdf0e10cSrcweir void setOperation( const sal_Int16 _nOperation ); 401*cdf0e10cSrcweir sal_Int16 getOperation() const; 402*cdf0e10cSrcweir 403*cdf0e10cSrcweir ::rtl::OUString convertColumnName( const TColumnFindFunctor& _rCmpFunctor, 404*cdf0e10cSrcweir const ::rtl::OUString& _sColumnName, 405*cdf0e10cSrcweir const ::rtl::OUString& _sExtraChars, 406*cdf0e10cSrcweir sal_Int32 _nMaxNameLen); 407*cdf0e10cSrcweir TOTypeInfoSP convertType(const TOTypeInfoSP&_pType,sal_Bool& _bNotConvert); 408*cdf0e10cSrcweir 409*cdf0e10cSrcweir ::rtl::OUString createUniqueName(const ::rtl::OUString& _sName); 410*cdf0e10cSrcweir 411*cdf0e10cSrcweir // displays a error message that a column type is not supported 412*cdf0e10cSrcweir void showColumnTypeNotSupported(const ::rtl::OUString& _rColumnName); 413*cdf0e10cSrcweir 414*cdf0e10cSrcweir void removeColumnNameFromNameMap(const ::rtl::OUString& _sName); 415*cdf0e10cSrcweir void showError(const ::rtl::OUString& _sErrorMesage); 416*cdf0e10cSrcweir void showError(const ::com::sun::star::uno::Any& _aError); 417*cdf0e10cSrcweir }; 418*cdf0e10cSrcweir } 419*cdf0e10cSrcweir 420*cdf0e10cSrcweir #endif // DBAUI_WIZ_COPYTABLEDIALOG_HXX 421