// $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;
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
public class ExportManager extends AbstractIOManager<IExportConfigurator> {
/**
- *
+ *
* @param applicationConfiguration
*/
private ExportManager(ICdmApplicationConfiguration applicationConfiguration) {
* <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.
*/
* <p>
* createIOJob
* </p>
- *
+ *
* @param configurator
* a {@link eu.etaxonomy.cdm.io.common.IExportConfigurator}
* object.
"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
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()
// 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);
}
}
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
case Sdd:
return SDDExportConfigurator.NewInstance(null, null, null);
default:
- StoreUtil.notImplementedMessage(this);
+ MessagingUtils.notImplementedMessage(this);
throw new IllegalArgumentException("Export not supported yet");
}
}
* <p>
* JaxbConfigurator
* </p>
- *
+ *
* @return a {@link eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator} object.
*/
public final JaxbExportConfigurator JaxbConfigurator() {
* <p>
* SddConfigurator
* </p>
- *
+ *
* @return a {@link eu.etaxonomy.cdm.io.sdd.out.SDDExportConfigurator}
* object.
*/
return (SDDExportConfigurator) getConfigurator(TYPE.Sdd);
}
+
+
}