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]

Reply via email to