Tag: cws_src680_dba24d User: fs Date: 2007-11-15 10:04:53+0000 Modified: dba/dbaccess/source/ui/inc/WCopyTable.hxx
Log: #i81658# removed m_xSourceObject, hide it behind some ICopyTableSourceObject, to allow copying tables at SDBC level where we cannot describe the source as object, but as table name only File Changes: Directory: /dba/dbaccess/source/ui/inc/ ======================================= File [changed]: WCopyTable.hxx Url: http://dba.openoffice.org/source/browse/dba/dbaccess/source/ui/inc/WCopyTable.hxx?r1=1.22.28.1&r2=1.22.28.2 Delta lines: +96 -11 --------------------- --- WCopyTable.hxx 2007-11-08 14:21:04+0000 1.22.28.1 +++ WCopyTable.hxx 2007-11-15 10:04:51+0000 1.22.28.2 @@ -4,9 +4,9 @@ * * $RCSfile: WCopyTable.hxx,v $ * - * $Revision: 1.22.28.1 $ + * $Revision: 1.22.28.2 $ * - * last change: $Author: fs $ $Date: 2007/11/08 14:21:04 $ + * last change: $Author: fs $ $Date: 2007/11/15 10:04:51 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -130,6 +130,92 @@ }; // ======================================================== + // ICopyTableSourceObject + // ======================================================== + /** interface to an object to copy to another DB, using the OCopyTableWizard + + when the wizard is used to copy an object to another DB, it usually requires + a sdbcx-level or sdb-level object (a css.sdbcx.Table or css.sdb.Query, that is). + + However, to also support copying tables from sdbc-level connections, we allow to + work with the object name only. This implies some less features (like copying the + UI settings of a table is not done), but still allows to copy definition and data. + */ + class ICopyTableSourceObject + { + public: + virtual ::rtl::OUString getQualifiedObjectName() const = 0; + virtual bool isView() const = 0; + virtual void copyUISettingsTo( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ) const = 0; + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > + getColumnNames() const = 0; + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > + getPrimaryKeyColumnNames() const = 0; + virtual OFieldDescription* createFieldDescription( const ::rtl::OUString& _rColumnName ) const = 0; + virtual ::rtl::OUString getSelectStatement() const = 0; + + virtual ~ICopyTableSourceObject(); + }; + + // ======================================================== + // ObjectCopySource + // ======================================================== + class ObjectCopySource : public ICopyTableSourceObject + { + private: + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xConnection; + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData; + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xObject; + ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySetInfo > m_xObjectPSI; + ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess > m_xObjectColumns; + + public: + ObjectCopySource( + const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection, + const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject + ); + + // ICopyTableSourceObject overridables + virtual ::rtl::OUString getQualifiedObjectName() const; + virtual bool isView() const; + virtual void copyUISettingsTo( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ) const; + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > + getColumnNames() const; + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > + getPrimaryKeyColumnNames() const; + virtual OFieldDescription* createFieldDescription( const ::rtl::OUString& _rColumnName ) const; + virtual ::rtl::OUString getSelectStatement() const; + }; + + // ======================================================== + // NamedTableCopySource + // ======================================================== + class NamedTableCopySource : public ICopyTableSourceObject + { + private: + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xConnection; + ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XDatabaseMetaData > m_xMetaData; + ::rtl::OUString m_sTableName; + + public: + NamedTableCopySource( + const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _rxConnection, + const ::rtl::OUString& _rTableName + ); + + // ICopyTableSourceObject overridables + virtual ::rtl::OUString getQualifiedObjectName() const; + virtual bool isView() const; + virtual void copyUISettingsTo( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _rxObject ) const; + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > + getColumnNames() const; + virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > + getPrimaryKeyColumnNames() const; + virtual OFieldDescription* createFieldDescription( const ::rtl::OUString& _rColumnName ) const; + virtual ::rtl::OUString getSelectStatement() const; + }; + + // ======================================================== // Wizard Dialog // ======================================================== class OCopyTableWizard : public WizardDialog @@ -175,10 +261,9 @@ ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xDestConnection; - ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > m_xSourceObject; + const ICopyTableSourceObject& m_rSourceObject; ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection > m_xSourceConnection; - ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess> m_xSourceColumns; // container ::com::sun::star::uno::Reference< ::com::sun::star::util::XNumberFormatter > m_xFormatter; ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory> m_xFactory; @@ -203,17 +288,17 @@ DECL_LINK( ImplOKHdl , OKButton* ); DECL_LINK( ImplActivateHdl, WizardDialog* ); sal_Bool CheckColumns(sal_Int32& _rnBreakPos); - void loadData( const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _xTable, + void loadData( const ICopyTableSourceObject& _rSourceObject, ODatabaseExport::TColumns& _rColumns, - ODatabaseExport::TColumnVector& _rColVector); + ODatabaseExport::TColumnVector& _rColVector ); void construct(); - ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess> getKeyColumns(const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _xTable) const; // need for table creation void appendColumns( ::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XColumnsSupplier>& _rxColSup, const ODatabaseExport::TColumnVector* _pVec, sal_Bool _bKeyColumns = sal_False ) const; void appendKey(::com::sun::star::uno::Reference< ::com::sun::star::sdbcx::XKeysSupplier>& _rxSup,const ODatabaseExport::TColumnVector* _pVec) const; // checks if the type is supported in the destination database sal_Bool supportsType(sal_Int32 _nDataType,sal_Int32& _rNewDataType); + void impl_loadSourceData(); void impl_fillTypeInfo(); public: @@ -222,7 +307,7 @@ Window * pParent, const ::rtl::OUString& _rDefaultName, sal_Int16 _nOperation, - const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& _xSourceObject, + const ICopyTableSourceObject& _rSourceObject, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xSourceConnection, const ::com::sun::star::uno::Reference< ::com::sun::star::sdbc::XConnection >& _xConnection, const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory >& _rxORB --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
