3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
11 package eu
.etaxonomy
.taxeditor
.io
;
13 import org
.eclipse
.core
.runtime
.Assert
;
14 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
15 import org
.eclipse
.core
.runtime
.IStatus
;
16 import org
.eclipse
.core
.runtime
.Status
;
17 import org
.eclipse
.core
.runtime
.jobs
.Job
;
18 import org
.eclipse
.swt
.widgets
.Display
;
19 import org
.eclipse
.ui
.IWorkbenchPart
;
21 import eu
.etaxonomy
.cdm
.api
.application
.ICdmApplicationConfiguration
;
22 import eu
.etaxonomy
.cdm
.api
.application
.ICdmApplicationConfiguration
;
23 import eu
.etaxonomy
.cdm
.api
.conversation
.IConversationEnabled
;
24 import eu
.etaxonomy
.cdm
.io
.common
.CdmDefaultExport
;
25 import eu
.etaxonomy
.cdm
.io
.common
.IExportConfigurator
;
26 import eu
.etaxonomy
.cdm
.io
.common
.IIoConfigurator
;
27 import eu
.etaxonomy
.cdm
.io
.jaxb
.JaxbExportConfigurator
;
28 import eu
.etaxonomy
.cdm
.io
.sdd
.out
.SDDExportConfigurator
;
29 import eu
.etaxonomy
.taxeditor
.model
.CdmProgressMonitorAdapter
;
30 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
31 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
35 * ExportHandler class.
39 * @created Sep 11, 2009
42 public class ExportManager
extends AbstractIOManager
<IExportConfigurator
> {
46 * @param applicationConfiguration
48 private ExportManager(ICdmApplicationConfiguration applicationConfiguration
) {
49 super(applicationConfiguration
);
57 * @param applicationConfiguration
59 * {@link eu.etaxonomy.cdm.api.application.CdmApplicationController}
61 * @return a {@link eu.etaxonomy.taxeditor.io.ExportManager} object.
63 public static ExportManager
NewInstance(
64 ICdmApplicationConfiguration applicationConfiguration
) {
65 return new ExportManager(applicationConfiguration
);
74 * a {@link eu.etaxonomy.cdm.io.common.IExportConfigurator}
76 * @return a {@link org.eclipse.core.runtime.jobs.Job} object.
79 protected Job
createIOJob(final IExportConfigurator configurator
) {
81 Assert
.isNotNull(configurator
, "Configuration may not be null");
83 final Display display
= Display
.getCurrent();
85 Job job
= new Job("Export: " + configurator
.getClass().getSimpleName()) {
87 protected IStatus
run(IProgressMonitor monitor
) {
89 "Exporting database. This will take some time.", 100);
92 display
.asyncExec(new Runnable() {
96 // terminate any open transactions
97 IConversationEnabled activePart
= (IConversationEnabled
) StoreUtil
98 .getActivePage().getActivePart();
99 activePart
.getConversationHolder().commit(false);
105 CdmDefaultExport
<IExportConfigurator
> exporter
= new CdmDefaultExport
<IExportConfigurator
>();
106 configurator
.setProgressMonitor(CdmProgressMonitorAdapter
107 .CreateSubMonitor(monitor
, 80));
108 exporter
.setCdmAppController((ICdmApplicationConfiguration
) applicationConfiguration
);
112 exporter
.invoke(configurator
);
114 } catch (RuntimeException e
) {
115 MessagingUtils
.messageDialog("Error exporting data", this,
116 "An error occured while"
117 + "exporting to destination '"
118 + configurator
.getDestinationNameString()
120 + "Please check error log for details.", e
);
123 display
.asyncExec(new Runnable() {
127 IWorkbenchPart activePart
= StoreUtil
.getActivePage()
129 if (activePart
instanceof IConversationEnabled
) {
130 // terminate any open transactions
131 IConversationEnabled conversationEnabled
= (IConversationEnabled
) activePart
;
132 // restarting transaction and committing it to
135 // TODO verify correct behaviour
138 conversationEnabled
.getConversationHolder()
141 conversationEnabled
.getConversationHolder()
143 }catch(RuntimeException e
){
144 MessagingUtils
.messageDialog("Error starting conversation handling", this, "" +
145 "Conversation Error: "+ e
);
152 return Status
.OK_STATUS
;
163 private IIoConfigurator
getConfigurator(TYPE type
) {
164 Assert
.isNotNull(type
, "Type should not be null");
168 return JaxbExportConfigurator
.NewInstance(null, null);
170 return SDDExportConfigurator
.NewInstance(null, null, null);
172 MessagingUtils
.notImplementedMessage(this);
173 throw new IllegalArgumentException("Export not supported yet");
182 * @return a {@link eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator} object.
184 public final JaxbExportConfigurator
JaxbConfigurator() {
185 return (JaxbExportConfigurator
) getConfigurator(TYPE
.Jaxb
);
193 * @return a {@link eu.etaxonomy.cdm.io.sdd.out.SDDExportConfigurator}
196 public final SDDExportConfigurator
SddConfigurator() {
197 return (SDDExportConfigurator
) getConfigurator(TYPE
.Sdd
);