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
;
20 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationController
;
21 import eu
.etaxonomy
.cdm
.api
.conversation
.IConversationEnabled
;
22 import eu
.etaxonomy
.cdm
.io
.common
.CdmDefaultExport
;
23 import eu
.etaxonomy
.cdm
.io
.common
.IExportConfigurator
;
24 import eu
.etaxonomy
.cdm
.io
.common
.IIoConfigurator
;
25 import eu
.etaxonomy
.cdm
.io
.jaxb
.JaxbExportConfigurator
;
26 import eu
.etaxonomy
.cdm
.io
.sdd
.out
.SDDExportConfigurator
;
27 import eu
.etaxonomy
.taxeditor
.model
.CdmProgressMonitorAdapter
;
28 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
31 * <p>ExportHandler class.</p>
34 * @created Sep 11, 2009
37 public class ExportManager
extends AbstractIOManager
<IExportConfigurator
>{
41 * @param applicationController
43 private ExportManager(CdmApplicationController applicationController
){
44 super(applicationController
);
50 * @param applicationController a {@link eu.etaxonomy.cdm.api.application.CdmApplicationController} object.
51 * @return a {@link eu.etaxonomy.taxeditor.io.ExportManager} object.
53 public static ExportManager
NewInstance(CdmApplicationController applicationController
){
54 return new ExportManager(applicationController
);
60 * @param configurator a {@link eu.etaxonomy.cdm.io.common.IExportConfigurator} object.
61 * @return a {@link org.eclipse.core.runtime.jobs.Job} object.
63 protected Job
createIOJob(final IExportConfigurator configurator
){
65 Assert
.isNotNull(configurator
, "Configuration may not be null");
67 final Display display
= Display
.getCurrent();
69 Job job
= new Job("Export: " + configurator
.getClass().getSimpleName()){
71 protected IStatus
run(IProgressMonitor monitor
) {
72 monitor
.beginTask("Exporting database. This will take some time.", 100);
75 display
.asyncExec(new Runnable() {
79 // terminate any open transactions
80 IConversationEnabled activePart
= (IConversationEnabled
) StoreUtil
.getActivePage().getActivePart();
81 activePart
.getConversationHolder().commit(false);
87 CdmDefaultExport
<IExportConfigurator
> exporter
= new CdmDefaultExport
<IExportConfigurator
>();
88 configurator
.setProgressMonitor(CdmProgressMonitorAdapter
.CreateSubMonitor(monitor
, 80));
89 exporter
.setCdmAppController(applicationController
);
93 exporter
.invoke(configurator
);
95 }catch(RuntimeException e
){
96 StoreUtil
.errorDialog("Error exporting data", this, "An error occured while" +
97 "exporting to destination '" + configurator
.getDestinationNameString() + "'.\n" +
98 "Please check error log for details.", e
);
101 display
.asyncExec(new Runnable() {
105 // terminate any open transactions
106 IConversationEnabled activePart
= (IConversationEnabled
) StoreUtil
.getActivePage().getActivePart();
107 // restarting transaction and committing it to trigger change listener
108 // TODO verify correct behaviour
109 activePart
.getConversationHolder().startTransaction();
110 activePart
.getConversationHolder().commit();
115 return Status
.OK_STATUS
;
126 private IIoConfigurator
getConfigurator(TYPE type
) {
127 Assert
.isNotNull(type
, "Type should not be null");
131 return JaxbExportConfigurator
.NewInstance(null, null);
133 return SDDExportConfigurator
.NewInstance(null, null, null);
135 StoreUtil
.notImplementedMessage(this);
136 throw new IllegalArgumentException("Export not supported yet");
141 * <p>JaxbConfigurator</p>
143 * @return a {@link eu.etaxonomy.cdm.io.jaxb.JaxbExportConfigurator} object.
145 public final JaxbExportConfigurator
JaxbConfigurator() { return (JaxbExportConfigurator
) getConfigurator(TYPE
.Jaxb
); }
148 * <p>SddConfigurator</p>
150 * @return a {@link eu.etaxonomy.cdm.io.sdd.out.SDDExportConfigurator} object.
152 public final SDDExportConfigurator
SddConfigurator() { return (SDDExportConfigurator
) getConfigurator(TYPE
.Sdd
); }