missing changes
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / io / ExportManager.java
index b19810b89d7ee4b1237978fe636194ea7833569e..9afd3ceea5d92e8b84353d98306c24afc790efb1 100644 (file)
@@ -1,15 +1,19 @@
 // $Id$
 /**
  * Copyright (C) 2007 EDIT
- * European Distributed Institute of Taxonomy 
+ * European Distributed Institute of Taxonomy
  * http://www.e-taxonomy.eu
- * 
+ *
  * The contents of this file are subject to the Mozilla Public License Version 1.1
  * See LICENSE.TXT at the top of this package for the full license terms.
  */
 
 package eu.etaxonomy.taxeditor.io;
 
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.List;
+
 import org.eclipse.core.runtime.Assert;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
@@ -18,21 +22,26 @@ import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IWorkbenchPart;
 
+import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
 import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
 import eu.etaxonomy.cdm.io.common.CdmDefaultExport;
+import eu.etaxonomy.cdm.io.common.ExportResult;
 import eu.etaxonomy.cdm.io.common.IExportConfigurator;
 import eu.etaxonomy.cdm.io.common.IIoConfigurator;
 import eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator;
 import eu.etaxonomy.cdm.io.sdd.out.SDDExportConfigurator;
-import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
+import eu.etaxonomy.cdm.io.service.IIOService;
 import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
 import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
 
 /**
  * <p>
  * ExportHandler class.
  * </p>
- * 
+ *
  * @author n.hoffmann
  * @created Sep 11, 2009
  * @version 1.0
@@ -40,7 +49,7 @@ import eu.etaxonomy.taxeditor.store.StoreUtil;
 public class ExportManager extends AbstractIOManager<IExportConfigurator> {
 
        /**
-        * 
+        *
         * @param applicationConfiguration
         */
        private ExportManager(ICdmApplicationConfiguration applicationConfiguration) {
@@ -51,10 +60,10 @@ public class ExportManager extends AbstractIOManager<IExportConfigurator> {
         * <p>
         * NewInstance
         * </p>
-        * 
+        *
         * @param applicationConfiguration
         *            a
-        *            {@link eu.etaxonomy.cdm.remote.api.application.CdmApplicationController}
+        *            {@link eu.etaxonomy.cdm.api.application.CdmApplicationController}
         *            object.
         * @return a {@link eu.etaxonomy.taxeditor.io.ExportManager} object.
         */
@@ -67,7 +76,7 @@ public class ExportManager extends AbstractIOManager<IExportConfigurator> {
         * <p>
         * createIOJob
         * </p>
-        * 
+        *
         * @param configurator
         *            a {@link eu.etaxonomy.cdm.io.common.IExportConfigurator}
         *            object.
@@ -87,18 +96,20 @@ public class ExportManager extends AbstractIOManager<IExportConfigurator> {
                                                "Exporting database. This will take some time.", 100);
                                monitor.worked(10);
 
-                               display.asyncExec(new Runnable() {
-
-                                       @Override
-                                       public void run() {
-                                               // terminate any open transactions
-                                               IConversationEnabled activePart = (IConversationEnabled) StoreUtil
-                                                               .getActivePage().getActivePart();
-                                               activePart.getConversationHolder().commit(false);
-                                       }
-                               });
-
-                               monitor.worked(10);
+                           /** see ticket # 4456 and */
+//                             display.asyncExec(new Runnable() {
+//
+//                                     @Override
+//                                     public void run() {
+//
+//                                         // terminate any open transactions
+//                                             IConversationEnabled activePart = (IConversationEnabled) StoreUtil
+//                                                             .getActivePage().getActivePart();
+//                                             activePart.getConversationHolder().commit(false);
+//                                     }
+//                             });
+
+//                             monitor.worked(10);
 
                                CdmDefaultExport<IExportConfigurator> exporter = new CdmDefaultExport<IExportConfigurator>();
                                configurator.setProgressMonitor(CdmProgressMonitorAdapter
@@ -110,7 +121,7 @@ public class ExportManager extends AbstractIOManager<IExportConfigurator> {
                                        exporter.invoke(configurator);
                                        monitor.worked(60);
                                } catch (RuntimeException e) {
-                                       StoreUtil.errorDialog("Error exporting data", this,
+                                       MessagingUtils.messageDialog("Error exporting data", this,
                                                        "An error occured while"
                                                                        + "exporting to destination '"
                                                                        + configurator.getDestinationNameString()
@@ -131,15 +142,15 @@ public class ExportManager extends AbstractIOManager<IExportConfigurator> {
                                                        // trigger
                                                        // change listener
                                                        // TODO verify correct behaviour
-                                                       
+
                                                        try{
                                                                conversationEnabled.getConversationHolder()
                                                                        .startTransaction();
-                                                       
+
                                                                conversationEnabled.getConversationHolder()
                                                                        .commit();
                                                        }catch(RuntimeException e){
-                                                               StoreUtil.errorDialog("Error starting conversation handling", this, "" +
+                                                               MessagingUtils.messageDialog("Error starting conversation handling", this, "" +
                                                                                "Conversation Error: "+ e);
                                                        }
                                                }
@@ -154,6 +165,42 @@ public class ExportManager extends AbstractIOManager<IExportConfigurator> {
                return job;
        }
 
+       public Job createIOServiceJob(final IExportConfigurator configurator, final File exportFile) {
+           Assert.isNotNull(configurator, "Configuration may not be null");
+
+           final Display display = Display.getCurrent();
+
+           Job job = new Job("Export: " + configurator.getClass().getSimpleName()) {
+               @Override
+               protected IStatus run(IProgressMonitor monitor) {
+                   monitor.beginTask("Exporting database. This will take some time.", IProgressMonitor.UNKNOWN);
+                   try {
+                       IIOService ioService = CdmApplicationState.getIOService();
+
+                       ExportResult result = ioService.export(configurator);
+                       List<byte[]> dataList = result.getExportData();
+                       byte[] exportData = dataList.get(0);
+
+                       FileOutputStream stream = new FileOutputStream(exportFile);
+                       try {
+                           stream.write(exportData);
+                       } finally {
+                           stream.close();
+                       }
+
+                   } catch (Exception e) {
+                       MessagingUtils.errorDialog("Error exporting data",
+                               this,
+                               e.getMessage(),
+                               TaxeditorStorePlugin.PLUGIN_ID,
+                               e,
+                               true);
+                   }
+                   return Status.OK_STATUS;
+               }
+           };
+           return job;
+       }
        /**
         * @param jaxb
         * @return
@@ -167,7 +214,7 @@ public class ExportManager extends AbstractIOManager<IExportConfigurator> {
                case Sdd:
                        return SDDExportConfigurator.NewInstance(null, null, null);
                default:
-                       StoreUtil.notImplementedMessage(this);
+                       MessagingUtils.notImplementedMessage(this);
                        throw new IllegalArgumentException("Export not supported yet");
                }
        }
@@ -176,7 +223,7 @@ public class ExportManager extends AbstractIOManager<IExportConfigurator> {
         * <p>
         * JaxbConfigurator
         * </p>
-        * 
+        *
         * @return a {@link eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator} object.
         */
        public final JaxbExportConfigurator JaxbConfigurator() {
@@ -187,7 +234,7 @@ public class ExportManager extends AbstractIOManager<IExportConfigurator> {
         * <p>
         * SddConfigurator
         * </p>
-        * 
+        *
         * @return a {@link eu.etaxonomy.cdm.io.sdd.out.SDDExportConfigurator}
         *         object.
         */
@@ -195,4 +242,6 @@ public class ExportManager extends AbstractIOManager<IExportConfigurator> {
                return (SDDExportConfigurator) getConfigurator(TYPE.Sdd);
        }
 
+
+
 }