Import and Export now have a progress monitor.
authorn.hoffmann <n.hoffmann@localhost>
Thu, 28 Jan 2010 14:21:41 +0000 (14:21 +0000)
committern.hoffmann <n.hoffmann@localhost>
Thu, 28 Jan 2010 14:21:41 +0000 (14:21 +0000)
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/ExportHandler.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/ImportHandler.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/BerlinModelExportWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/BerlinModelImportWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/EndnoteImportWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/ExcelNormalExplicitTaxaImportWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/GenericConfiguratorWizardPage.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/JaxbExportWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/JaxbImportWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/TcsExportWizard.java
taxeditor-store/src/main/java/eu/etaxonomy/taxeditor/io/wizard/TcsImportWizard.java

index 30ebb01c9cab495d39362b23bad783b7a919cd18..a7770fd6a9b60c77747f4344515add2c64373822 100644 (file)
 
 package eu.etaxonomy.taxeditor.io;
 
+import java.lang.reflect.InvocationTargetException;
+
 import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.io.common.CdmDefaultExport;
 import eu.etaxonomy.cdm.io.common.IExportConfigurator;
 import eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator;
-import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
 
 /**
@@ -30,29 +34,78 @@ public class ExportHandler extends AbstractIOHandler{
        private static final Logger logger = Logger
                        .getLogger(ExportHandler.class);
 
+       /**
+        * 
+        * @param applicationController
+        */
        private ExportHandler(CdmApplicationController applicationController){
                super(applicationController);
        }
        
+       /**
+        * 
+        * @param applicationController
+        * @return
+        */
        public static ExportHandler NewInstance(CdmApplicationController applicationController){
                return new ExportHandler(applicationController);
        }
        
-       public void doExport(final IExportConfigurator configurator){
+       /**
+        * Starts the export process
+        * 
+        * @param configurator
+        */
+       public void run(final IExportConfigurator configurator){
+               ProgressMonitorDialog dialog = new ProgressMonitorDialog(StoreUtil.getShell());
+               
+               try {
+                       dialog.run(false, true, new IRunnableWithProgress() {
+
+                               /*
+                                * (non-Javadoc)
+                                * @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor)
+                                */
+                               public void run(IProgressMonitor monitor)
+                                               throws InvocationTargetException, InterruptedException {
+                                       doExport(monitor, configurator);
+                               }
+                       });
+               }catch (InvocationTargetException e) {
+                       logger.error(e);
+                       throw new RuntimeException(e);
+               } catch (InterruptedException e) {
+                       logger.error(e);
+                       throw new RuntimeException(e);
+               }
+                       
+       }
+       
+       /**
+        * 
+        * @param monitor
+        * @param configurator
+        */
+       private void doExport(IProgressMonitor monitor, IExportConfigurator configurator){
+               
                Assert.isNotNull(configurator, "Configuration may not be null");
                
+               monitor.beginTask("Exporting database. This will take some time.", 100);
+               monitor.worked(10);
+               
                // terminate any open transactions
                IConversationEnabled activePart = (IConversationEnabled) StoreUtil.getActivePage().getActivePart();
                activePart.getConversationHolder().commit(false);
-               
+               monitor.worked(10);
                
                CdmDefaultExport<IExportConfigurator> exporter = new CdmDefaultExport<IExportConfigurator>();
-
+       
                exporter.setCdmAppController(applicationController);
-               
+               monitor.worked(10);
                
                try{
                        exporter.invoke(configurator);
+                       monitor.worked(60);
                }catch(RuntimeException e){
                        StoreUtil.errorDialog("Error exporting data", "An error occured while" +
                                        "exporting to destination '" + configurator.getDestinationNameString() + "'.\n" +
@@ -64,6 +117,7 @@ public class ExportHandler extends AbstractIOHandler{
                // TODO verify correct behaviour
                activePart.getConversationHolder().startTransaction();
                activePart.getConversationHolder().commit();
+               monitor.worked(10);
        }
        
        /**
@@ -82,6 +136,10 @@ public class ExportHandler extends AbstractIOHandler{
                }
        }
        
+       /**
+        * 
+        * @return
+        */
        public final JaxbExportConfigurator JaxbConfigurator() { return (JaxbExportConfigurator) getConfigurator(TYPE.Jaxb);    }
 
 
index 624ecf18e1f629c66346950abea92e35a309aaba..96673dda4914927456c8019734e82e9718eda3e4 100644 (file)
 
 package eu.etaxonomy.taxeditor.io;
 
+import java.lang.reflect.InvocationTargetException;
+
 import org.apache.log4j.Logger;
 import org.eclipse.core.runtime.Assert;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jface.dialogs.ProgressMonitorDialog;
+import org.eclipse.jface.operation.IRunnableWithProgress;
 
 import eu.etaxonomy.cdm.api.application.CdmApplicationController;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator;
 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
+import eu.etaxonomy.cdm.io.common.IExportConfigurator;
 import eu.etaxonomy.cdm.io.common.IImportConfigurator;
 import eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator;
 import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
@@ -46,27 +52,60 @@ public class ImportHandler extends AbstractIOHandler {
                return new ImportHandler(applicationController);
        }
        
+       /**
+        * Start the import process
+        * 
+        * @param configurator
+        */
+       public void run(final IImportConfigurator configurator){
+               ProgressMonitorDialog dialog = new ProgressMonitorDialog(StoreUtil.getShell());
+               
+               try {
+                       dialog.run(false, true, new IRunnableWithProgress() {
+
+                               /*
+                                * (non-Javadoc)
+                                * @see org.eclipse.jface.operation.IRunnableWithProgress#run(org.eclipse.core.runtime.IProgressMonitor)
+                                */
+                               public void run(IProgressMonitor monitor)
+                                               throws InvocationTargetException, InterruptedException {
+                                       doImport(monitor, configurator);
+                               }
+                       });
+               }catch (InvocationTargetException e) {
+                       logger.error(e);
+                       throw new RuntimeException(e);
+               } catch (InterruptedException e) {
+                       logger.error(e);
+                       throw new RuntimeException(e);
+               }
+                       
+       }
+       
        /**
         * Use when importing data into the current application context
         * 
         * @param configurator
         * @return
         */
-       public void doImport(final IImportConfigurator configurator){
+       private void doImport(IProgressMonitor monitor, IImportConfigurator configurator){
                Assert.isNotNull(configurator, "Configuration may not be null");
                
+               monitor.beginTask("Importing data. This will take some time.", 100);
+               monitor.worked(10);
+               
                // terminate any open transactions
                IConversationEnabled activePart = (IConversationEnabled) StoreUtil.getActivePage().getActivePart();
                activePart.getConversationHolder().commit(false);
-               
+               monitor.worked(10);
                
                CdmDefaultImport<IImportConfigurator> importer = new CdmDefaultImport<IImportConfigurator>();
-
                importer.setCdmAppController(applicationController);
-               
+               monitor.worked(10);             
                
                try{
                        importer.invoke(configurator);
+                       monitor.worked(60);
                }catch(RuntimeException e){
                        StoreUtil.errorDialog("Error importing data", "An error occured while" +
                                        "importing from source '" + configurator.getSourceNameString() + "'.\n" +
@@ -78,6 +117,7 @@ public class ImportHandler extends AbstractIOHandler {
                // TODO verify correct behaviour
                activePart.getConversationHolder().startTransaction();
                activePart.getConversationHolder().commit();
+               monitor.worked(10);
        }
 
        private IImportConfigurator getConfigurator(TYPE type){
@@ -107,9 +147,9 @@ public class ImportHandler extends AbstractIOHandler {
        /** @return a <code>TcsXmlImportConfigurator</code>*/
        public final TcsXmlImportConfigurator TcsConfigurator() { return (TcsXmlImportConfigurator) getConfigurator(TYPE.Tcs);  }
        /** @return an <code>EndnoteImportConfigurator</code> */
-       public final EndnoteImportConfigurator EndnoteImportConfigurator() { return (EndnoteImportConfigurator) getConfigurator(TYPE.Endnote);   }
+       public final EndnoteImportConfigurator EndnoteConfigurator() { return (EndnoteImportConfigurator) getConfigurator(TYPE.Endnote);   }
        /** @return a <code>NormalExplicitImportConfigurator</code>*/
-       public final NormalExplicitImportConfigurator NormalExplicitImportConfigurator() { return (NormalExplicitImportConfigurator) getConfigurator(TYPE.Excel_Taxa); }
+       public final NormalExplicitImportConfigurator NormalExplicitConfigurator() { return (NormalExplicitImportConfigurator) getConfigurator(TYPE.Excel_Taxa); }
        
        
 }
index 04eb86c8241ee434d6a24bb0ceaddcf77f4280ee..0a02f21652963d56298e75ca32b0f45f14df8fdf 100644 (file)
@@ -73,7 +73,7 @@ public class BerlinModelExportWizard extends AbstractExportWizard<BerlinModelExp
                
                configurator.setDestination(destination);               
                
-               CdmStore.getExportHandler().doExport(configurator);
+               CdmStore.getExportHandler().run(configurator);
                
                return true;
        }
index 71ed52369159d4c6b9011bcee0c7f6fa491bf76b..0600daa5d2d6551932e3fd428707f101a2ad8fb3 100644 (file)
@@ -62,7 +62,7 @@ public class BerlinModelImportWizard extends AbstractImportWizard<BerlinModelImp
                
                configurator.setSource(source);
                
-               CdmStore.getImportHandler().doImport(configurator);
+               CdmStore.getImportHandler().run(configurator);
                
                return true;
        }
index 130d039208deca67ec3ab2dd4899756ef8485cab..53123b8879ec36bb9d7a392293b792c66d89af65 100644 (file)
@@ -47,7 +47,7 @@ public class EndnoteImportWizard extends AbstractImportWizard<EndnoteImportConfi
                
                configurator.setSource(file);
                
-               CdmStore.getImportHandler().doImport(configurator);
+               CdmStore.getImportHandler().run(configurator);
                
                return true;
        }
@@ -67,7 +67,7 @@ public class EndnoteImportWizard extends AbstractImportWizard<EndnoteImportConfi
         * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
         */
        public void init(IWorkbench workbench, IStructuredSelection selection) {
-               configurator =  CdmStore.getImportHandler().EndnoteImportConfigurator();
+               configurator =  CdmStore.getImportHandler().EndnoteConfigurator();
        }
 
        /* (non-Javadoc)
index feac06c0e46eb3548a9bdc6ed7a98a33ec997628..94a302eef355b0823b33ff46ee036cf0cafbebeb 100644 (file)
@@ -56,7 +56,7 @@ public class ExcelNormalExplicitTaxaImportWizard extends AbstractImportWizard<No
                configurator.setSource(file);
                configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
                
-               CdmStore.getImportHandler().doImport(configurator);
+               CdmStore.getImportHandler().run(configurator);
                
                return true;
        }
@@ -65,7 +65,7 @@ public class ExcelNormalExplicitTaxaImportWizard extends AbstractImportWizard<No
         * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
         */
        public void init(IWorkbench workbench, IStructuredSelection selection) {
-               configurator =  CdmStore.getImportHandler().NormalExplicitImportConfigurator();
+               configurator =  CdmStore.getImportHandler().NormalExplicitConfigurator();
        }
 
        /* (non-Javadoc)
index f749c4da74bec49917b706e7918e7e1f10d4a147..f5a36ecbfaa1fef43113fcbe1732bfea59b9863d 100644 (file)
@@ -18,8 +18,10 @@ import org.apache.log4j.Logger;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.custom.ScrolledComposite;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Button;
 import org.eclipse.swt.widgets.Composite;
@@ -66,18 +68,27 @@ public class GenericConfiguratorWizardPage extends WizardPage {
         */
        public void createControl(Composite parent) {
                
+//             ScrolledComposite scrolledComposite = new ScrolledComposite(parent, SWT.H_SCROLL);
+//             scrolledComposite.setLayout(new GridLayout());
+               
+               // TODO wrap this composite in a scrolled composite
                Composite composite = new Composite(parent, SWT.NULL);
+               composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
+               
                GridLayout gridLayout = new GridLayout();
                gridLayout.numColumns = 2;
                composite.setLayout(gridLayout);
                                
+               
                List<Method> methods = getConfiguratorsBooleanSetMethods(configurator);
                
                for(Method method : methods){
                        createCheckbox(composite, method, configurator);
                }
                
-               setControl(composite);
+//             scrolledComposite.setContent(composite);
+               
+               setControl(parent);
        }
        
        private void createCheckbox(Composite parent, Method method, final IIoConfigurator configurator){
index 0314aa60b26814a09a1124c3f8af0029a13fdaf1..6473216563cffee61543bf6d681a2a58e14cedb5 100644 (file)
@@ -50,7 +50,7 @@ public class JaxbExportWizard extends AbstractExportWizard<JaxbExportConfigurato
                
                configurator.setDestination(urlString);
                
-               CdmStore.getExportHandler().doExport(configurator);
+               CdmStore.getExportHandler().run(configurator);
                
                return true;
        }
index f4c758cf8a8b14eb813b667ee1346b6add9adb84..fa7db3282aa055c5f72cf4436106a151bd6061c6 100644 (file)
@@ -12,33 +12,70 @@ package eu.etaxonomy.taxeditor.io.wizard;
 
 import org.apache.log4j.Logger;
 import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.wizard.Wizard;
-import org.eclipse.ui.IImportWizard;
 import org.eclipse.ui.IWorkbench;
 
+import eu.etaxonomy.cdm.database.DbSchemaValidation;
+import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
 /**
  * @author n.hoffmann
  * @created 15.06.2009
  * @version 1.0
  */
-public class JaxbImportWizard extends Wizard implements IImportWizard {
+public class JaxbImportWizard extends AbstractImportWizard<JaxbImportConfigurator> {
        private static final Logger logger = Logger
                        .getLogger(JaxbImportWizard.class);
 
+       private JaxbImportConfigurator configurator;
+       
+       private ImportFromFileDataSourceWizardPage dataSourcePage;
+       
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.io.wizard.AbstractImportWizard#getConfigurator()
+        */
+       @Override
+       public JaxbImportConfigurator getConfigurator() {
+               return configurator;
+       }
+
        /* (non-Javadoc)
         * @see org.eclipse.jface.wizard.Wizard#performFinish()
         */
        @Override
        public boolean performFinish() {
-               // TODO Auto-generated method stub
-               return false;
+               String file = dataSourcePage.getFile();
+               
+               // Imports are expecting a string that can be used to instantiate a URL instance
+               // TODO consolidate import and exports regarding what may be passed in as source
+               // will construct a url string for now
+               
+               file = "file://" + file;
+               
+               configurator.setSource(file);
+               configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
+               
+               CdmStore.getImportHandler().run(configurator);
+               
+               return true;
        }
 
        /* (non-Javadoc)
         * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection)
         */
        public void init(IWorkbench workbench, IStructuredSelection selection) {
-               // TODO Auto-generated method stub
+               configurator =  CdmStore.getImportHandler().JaxbConfigurator();
+       }
 
+       /* (non-Javadoc)
+        * @see eu.etaxonomy.taxeditor.io.wizard.AbstractImportWizard#addPages()
+        */
+       @Override
+       public void addPages() {
+               super.addPages();
+               
+               dataSourcePage = new ImportFromFileDataSourceWizardPage("Choose File", 
+                               "Please choose an XML file in the cdm JAXB format.", new String[]{"*.xml"});
+               addPage(dataSourcePage);
        }
 }
index 7494cd3bc8a6632dfc16b1ddd7e2fdf8b8207681..3b4be52547b8ad995c675b8688a489ac1d27aa30 100644 (file)
@@ -40,7 +40,7 @@ public class TcsExportWizard extends AbstractExportWizard<TcsXmlExportConfigurat
                
                configurator.setDestination(new File(urlString));
                
-               CdmStore.getExportHandler().doExport(configurator);
+               CdmStore.getExportHandler().run(configurator);
                
                return true;
        }
index 66503a09e26e5c5002f3278a0bb6ef2151d6d1fd..6d25c2cf1ad8123fd56ccc0dd6789afe6602fb81 100644 (file)
@@ -47,7 +47,7 @@ public class TcsImportWizard extends AbstractImportWizard<TcsXmlImportConfigurat
                configurator.setSource(file);
                configurator.setDbSchemaValidation(DbSchemaValidation.CREATE);
                
-               CdmStore.getImportHandler().doImport(configurator);
+               CdmStore.getImportHandler().run(configurator);
                
                return true;
        }