Tag: odbmacros_2_5
User: fs      
Date: 2008-02-27 14:42:52+0000
Modified:
   dba/dbaccess/source/ext/macromigration/macromigrationdialog.cxx
   dba/dbaccess/source/ext/macromigration/macromigrationdialog.hxx

Log:
 some logging; proper final summary (provided by the logger)

File Changes:

Directory: /dba/dbaccess/source/ext/macromigration/
===================================================

File [changed]: macromigrationdialog.cxx
Url: 
http://dba.openoffice.org/source/browse/dba/dbaccess/source/ext/macromigration/macromigrationdialog.cxx?r1=1.1.2.8.2.2&r2=1.1.2.8.2.3
Delta lines:  +85 -22
---------------------
--- macromigrationdialog.cxx    2008-02-14 22:25:00+0000        1.1.2.8.2.2
+++ macromigrationdialog.cxx    2008-02-27 14:42:49+0000        1.1.2.8.2.3
@@ -4,9 +4,9 @@
  *
  *  $RCSfile: macromigrationdialog.cxx,v $
  *
- *  $Revision: 1.1.2.8.2.2 $
+ *  $Revision: 1.1.2.8.2.3 $
  *
- *  last change: $Author: fs $ $Date: 2008/02/14 22:25:00 $
+ *  last change: $Author: fs $ $Date: 2008/02/27 14:42:49 $
  *
  *  The Contents of this file are made available subject to
  *  the terms of GNU Lesser General Public License Version 2.1.
@@ -43,6 +43,7 @@
 #include "macromigrationdialog.hxx"
 #include "macromigrationpages.hxx"
 #include "migrationengine.hxx"
+#include "migrationlog.hxx"
 
 /** === begin UNO includes === **/
 #include <com/sun/star/sdb/application/XDatabaseDocumentUI.hpp>
@@ -52,6 +53,7 @@
 /** === end UNO includes === **/
 
 #include <cppuhelper/exc_hlp.hxx>
+#include <svtools/filenotation.hxx>
 #include <tools/diagnose_ex.h>
 
 //........................................................................
@@ -88,14 +90,35 @@
        /** === end UNO using === **/
 
        //====================================================================
+       //= MacroMigrationDialog_Data
+       //====================================================================
+    struct MacroMigrationDialog_Data
+    {
+        ::comphelper::ComponentContext          aContext;
+        MigrationLog                            aLogger;
+        Reference< XOfficeDatabaseDocument >    xDocument;
+        bool                                    bMigrationIsRunning;
+
+        MacroMigrationDialog_Data( 
+                const ::comphelper::ComponentContext& _rContext,
+                const Reference< XOfficeDatabaseDocument >& _rxDocument )
+            :aContext( _rContext )
+            ,aLogger()
+            ,xDocument( _rxDocument )
+            ,bMigrationIsRunning( false )
+        {
+        }
+    };
+
+
+       //====================================================================
        //= MacroMigrationDialog
        //====================================================================
        //--------------------------------------------------------------------
     MacroMigrationDialog::MacroMigrationDialog( Window* _pParent, const 
::comphelper::ComponentContext& _rContext,
         const Reference< XOfficeDatabaseDocument >& _rxDocument )
         :MacroMigrationDialog_Base( _pParent, MacroMigrationResId( 
DLG_MACRO_MIGRATION ) )
-        ,m_aContext( _rContext )
-        ,m_xDocument( _rxDocument )
+        ,m_pData( new MacroMigrationDialog_Data( _rContext, _rxDocument ) )
     {
         String sTitlePrepare( MacroMigrationResId( STR_STATE_CLOSE_SUB_DOCS ) 
);
         String sTitleStoreAs( MacroMigrationResId( STR_STATE_BACKUP_DBDOC ) );
@@ -118,7 +141,7 @@
         enableButtons( WZB_FINISH, true );
         ActivatePage();
 
-        OSL_PRECOND( m_xDocument.is(), 
"MacroMigrationDialog::MacroMigrationDialog: illegal document!" );
+        OSL_PRECOND( m_pData->xDocument.is(), 
"MacroMigrationDialog::MacroMigrationDialog: illegal document!" );
     }
 
        //--------------------------------------------------------------------
@@ -127,6 +150,26 @@
     }
 
        //--------------------------------------------------------------------
+    const ::comphelper::ComponentContext& 
MacroMigrationDialog::getComponentContext() const
+    {
+        return m_pData->aContext;
+    }
+
+       //--------------------------------------------------------------------
+    const Reference< XOfficeDatabaseDocument >& 
MacroMigrationDialog::getDocument() const
+    {
+        return m_pData->xDocument;
+    }
+
+       //--------------------------------------------------------------------
+    BOOL MacroMigrationDialog::Close()
+    {
+        if ( m_pData->bMigrationIsRunning )
+            return FALSE;
+        return MacroMigrationDialog_Base::Close();
+    }
+
+       //--------------------------------------------------------------------
     void MacroMigrationDialog::enterState( WizardState _nState )
     {
         MacroMigrationDialog_Base::enterState( _nState );
@@ -156,15 +199,18 @@
 
             enableButtons( WZB_FINISH | WZB_CANCEL | WZB_PREVIOUS | WZB_NEXT, 
false );
 
-            bool bSuccess = impl_autoStartMigration();
-
-            enableButtons( ( bSuccess ? WZB_FINISH | WZB_NEXT : 0 ), true );
-            enableState( STATE_SUMMARY, bSuccess );
-            updateTravelUI();
+            // prevent closing
+            m_pData->bMigrationIsRunning = true;
+            // start the migration asynchronously
+            PostUserEvent( LINK( this, MacroMigrationDialog, OnStartMigration 
) );
         }
         break;
 
         case STATE_SUMMARY:
+            // enable the previous step - we can't return to the actual 
migration, it already happened (or failed)
+            enableState( STATE_MIGRATE, false );
+            updateTravelUI();
+            dynamic_cast< ResultPage& >( *GetPage( STATE_SUMMARY ) 
).displaySummary( m_pData->aLogger.getCompleteLog() );
             break;
 
         default:
@@ -218,14 +264,25 @@
     }
 
        //--------------------------------------------------------------------
-    bool MacroMigrationDialog::impl_autoStartMigration() const
+    IMPL_LINK( MacroMigrationDialog, OnStartMigration, void*, 
/*_pNotInterestedIn*/ )
     {
+        // initialize migration engine and progress
         ProgressPage& rProgressPage( dynamic_cast< ProgressPage& >( *GetPage( 
STATE_MIGRATE ) ) );
-        MigrationEngine aEngine( m_aContext, m_xDocument, rProgressPage );
-
+        MigrationEngine aEngine( m_pData->aContext, m_pData->xDocument, 
rProgressPage, m_pData->aLogger );
         rProgressPage.setDocumentCounts( aEngine.getFormCount(), 
aEngine.getReportCount() );
 
-        return aEngine.migrateAll();
+        // do the migration
+        bool bSuccess = aEngine.migrateAll();
+
+        // re-enable the UI
+        enableButtons( ( bSuccess ? WZB_FINISH | WZB_NEXT : 0 ), true );
+        enableState( STATE_SUMMARY, bSuccess );
+        updateTravelUI();
+
+        m_pData->bMigrationIsRunning = false;
+
+        // outta here
+        return 0L;
     }
 
        //--------------------------------------------------------------------
@@ -240,8 +297,8 @@
        //--------------------------------------------------------------------
     bool MacroMigrationDialog::impl_closeSubDocs_nothrow()
     {
-        OSL_PRECOND( m_xDocument.is(), 
"MacroMigrationDialog::impl_closeSubDocs_nothrow: no document!" );
-        if ( !m_xDocument.is() )
+        OSL_PRECOND( m_pData->xDocument.is(), 
"MacroMigrationDialog::impl_closeSubDocs_nothrow: no document!" );
+        if ( !m_pData->xDocument.is() )
             return false;
 
         impl_showCloseDocsError( false );
@@ -252,7 +309,7 @@
             ::std::vector< Reference< XController > > aControllers;
 
             // collect all controllers of our document
-            Reference< XModel2 > xDocument( m_xDocument, UNO_QUERY_THROW );
+            Reference< XModel2 > xDocument( m_pData->xDocument, 
UNO_QUERY_THROW );
             Reference< XEnumeration > xControllerEnum( 
xDocument->getControllers(), UNO_SET_THROW );
             while ( xControllerEnum->hasMoreElements() )
                 aControllers.push_back( Reference< XController >( 
xControllerEnum->nextElement(), UNO_QUERY_THROW ) );
@@ -286,24 +343,30 @@
        //--------------------------------------------------------------------
     bool MacroMigrationDialog::impl_backupDocument_nothrow() const
     {
+        const SaveDBDocPage& rBackupPage = dynamic_cast< const SaveDBDocPage& 
>( *GetPage( STATE_BACKUP_DBDOC ) );
+        ::rtl::OUString sBackupLocation( rBackupPage.getBackupLocation() );
+
         Any aError;
         try
         {
-            const SaveDBDocPage& rBackupPage = dynamic_cast< const 
SaveDBDocPage& >( *GetPage( STATE_BACKUP_DBDOC ) );
-            ::rtl::OUString sLocation( rBackupPage.getBackupLocation() );
-
             const Reference< XStorable > xDocument( getDocument(), 
UNO_QUERY_THROW );
-            xDocument->storeToURL( sLocation, Sequence< PropertyValue >() );
+            xDocument->storeToURL( sBackupLocation, Sequence< PropertyValue 
>() );
         }
         catch( const Exception& )
         {
             aError = ::cppu::getCaughtException();
         }
         if ( !aError.hasValue() )
+        {
+            ::svt::OFileNotation aFileNotation( sBackupLocation );
+            m_pData->aLogger.backedUpDocument( aFileNotation.get( 
::svt::OFileNotation::N_SYSTEM ) );
             return true;
+        }
 
         // display the error to the user
-        DocumentErrorHandling::reportError( m_aContext, m_xDocument, aError );
+        DocumentErrorHandling::reportError( m_pData->aContext, 
m_pData->xDocument, aError );
+
+        // TODO: log the error
 
         return false;
     }

File [changed]: macromigrationdialog.hxx
Url: 
http://dba.openoffice.org/source/browse/dba/dbaccess/source/ext/macromigration/macromigrationdialog.hxx?r1=1.1.2.4.2.1&r2=1.1.2.4.2.2
Delta lines:  +16 -10
---------------------
--- macromigrationdialog.hxx    2008-02-14 22:25:00+0000        1.1.2.4.2.1
+++ macromigrationdialog.hxx    2008-02-27 14:42:50+0000        1.1.2.4.2.2
@@ -4,9 +4,9 @@
  *
  *  $RCSfile: macromigrationdialog.hxx,v $
  *
- *  $Revision: 1.1.2.4.2.1 $
+ *  $Revision: 1.1.2.4.2.2 $
  *
- *  last change: $Author: fs $ $Date: 2008/02/14 22:25:00 $
+ *  last change: $Author: fs $ $Date: 2008/02/27 14:42:50 $
  *
  *  The Contents of this file are made available subject to
  *  the terms of GNU Lesser General Public License Version 2.1.
@@ -43,6 +43,8 @@
 #include <comphelper/componentcontext.hxx>
 #include <svtools/roadmapwizard.hxx>
 
+#include <memory>
+
 //........................................................................
 namespace dbmm
 {
@@ -51,6 +53,7 @@
     //====================================================================
     //= MacroMigrationDialog
     //====================================================================
+    struct MacroMigrationDialog_Data;
     typedef ::svt::RoadmapWizard    MacroMigrationDialog_Base;
     class MacroMigrationDialog : public MacroMigrationDialog_Base
     {
@@ -62,10 +65,10 @@
         );
         virtual ~MacroMigrationDialog();
 
-        inline const ::comphelper::ComponentContext& 
-                getComponentContext() const { return m_aContext; }
-        inline const ::com::sun::star::uno::Reference< 
::com::sun::star::sdb::XOfficeDatabaseDocument >&
-                getDocument() const { return m_xDocument; }
+        const ::comphelper::ComponentContext&
+                getComponentContext() const;
+        const ::com::sun::star::uno::Reference< 
::com::sun::star::sdb::XOfficeDatabaseDocument >&
+                getDocument() const;
 
     protected:
         // OWizardMachine overridables
@@ -75,16 +78,19 @@
         virtual WizardState     determineNextState( WizardState _nCurrentState 
) const;
         virtual sal_Bool        onFinish( sal_Int32 _nResult );
 
+        // Dialog overridables
+        virtual BOOL    Close();
+
     private:
         void    impl_showCloseDocsError( bool _bShow );
         bool    impl_closeSubDocs_nothrow();
         bool    impl_backupDocument_nothrow() const;
-        bool    impl_autoStartMigration() const;
 
     private:
-        ::comphelper::ComponentContext  m_aContext;
-        ::com::sun::star::uno::Reference< 
::com::sun::star::sdb::XOfficeDatabaseDocument >
-                                        m_xDocument;
+        DECL_LINK( OnStartMigration, void* );
+
+    private:
+        ::std::auto_ptr< MacroMigrationDialog_Data >    m_pData;
     };
 
 //........................................................................




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to