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
.CdmApplicationController
;
22 import eu
.etaxonomy
.cdm
.api
.conversation
.IConversationEnabled
;
23 import eu
.etaxonomy
.cdm
.io
.berlinModel
.in
.BerlinModelImportConfigurator
;
24 import eu
.etaxonomy
.cdm
.io
.common
.CdmDefaultImport
;
25 import eu
.etaxonomy
.cdm
.io
.common
.IImportConfigurator
;
26 import eu
.etaxonomy
.cdm
.io
.excel
.taxa
.NormalExplicitImportConfigurator
;
27 import eu
.etaxonomy
.cdm
.io
.jaxb
.JaxbImportConfigurator
;
28 import eu
.etaxonomy
.cdm
.io
.reference
.endnote
.in
.EndnoteImportConfigurator
;
29 import eu
.etaxonomy
.cdm
.io
.sdd
.in
.SDDImportConfigurator
;
30 import eu
.etaxonomy
.cdm
.io
.specimen
.abcd206
.in
.Abcd206ImportConfigurator
;
31 import eu
.etaxonomy
.cdm
.io
.tcsxml
.in
.TcsXmlImportConfigurator
;
32 import eu
.etaxonomy
.taxeditor
.model
.CdmProgressMonitorAdapter
;
33 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
34 import eu
.etaxonomy
.taxeditor
.store
.StoreUtil
;
37 * <p>ImportHandler class.</p>
40 * @created Sep 11, 2009
43 public class ImportManager
extends AbstractIOManager
<IImportConfigurator
> {
46 * @param applicationController
48 private ImportManager(
49 CdmApplicationController applicationController
) {
50 super(applicationController
);
56 * @param applicationController a {@link eu.etaxonomy.cdm.api.application.CdmApplicationController} object.
57 * @return a {@link eu.etaxonomy.taxeditor.io.ImportManager} object.
59 public static ImportManager
NewInstance(CdmApplicationController applicationController
){
60 return new ImportManager(applicationController
);
64 * Use when importing data into the current application context
66 * @param configurator a {@link eu.etaxonomy.cdm.io.common.IImportConfigurator} object.
67 * @return a {@link org.eclipse.core.runtime.jobs.Job} object.
69 protected Job
createIOJob(final IImportConfigurator configurator
){
70 Assert
.isNotNull(configurator
, "Configuration may not be null");
72 final Display display
= Display
.getDefault();
74 Job job
= new Job("Import: " + configurator
.getClass().getSimpleName()){
77 protected IStatus
run(IProgressMonitor monitor
) {
78 monitor
.beginTask("Importing data", 100);
79 configurator
.setProgressMonitor(CdmProgressMonitorAdapter
.CreateSubMonitor(monitor
, 70));
83 // display.asyncExec(new Runnable() {
86 // public void run() {
87 // // terminate any open transactions
88 // IWorkbenchPart activePart = StoreUtil.getActivePage().getActivePart();
90 // if(activePart instanceof IConversationEnabled){
91 // IConversationEnabled conversationEnabled = (IConversationEnabled) activePart;
92 // conversationEnabled.getConversationHolder().commit(false);
98 CdmDefaultImport
<IImportConfigurator
> importer
= new CdmDefaultImport
<IImportConfigurator
>();
99 importer
.setCdmAppController(applicationController
);
103 importer
.invoke(configurator
);
105 }catch(RuntimeException e
){
106 StoreUtil
.errorDialog("Error importing data", this, "An error occured while" +
107 "importing from source '" + configurator
.getSourceNameString() + "'.\n" +
108 "Please check error log for details.", e
);
114 display
.asyncExec(new Runnable() {
118 // // restarting transaction and committing it to trigger change listener
119 // // TODO verify correct behaviour
120 // IWorkbenchPart activePart = StoreUtil.getActivePage().getActivePart();
122 // if(activePart instanceof IConversationEnabled){
123 // IConversationEnabled conversationEnabled = (IConversationEnabled) activePart;
125 // conversationEnabled.getConversationHolder().startTransaction();
126 // conversationEnabled.getConversationHolder().commit();
129 CdmStore
.getContextManager().notifyContextRefresh();
133 return Status
.OK_STATUS
;
141 private IImportConfigurator
getConfigurator(TYPE type
){
142 Assert
.isNotNull(type
, "Type should not be null");
146 return BerlinModelImportConfigurator
.NewInstance(null, null);
148 return JaxbImportConfigurator
.NewInstance(null, null);
150 return TcsXmlImportConfigurator
.NewInstance(null, null);
152 return EndnoteImportConfigurator
.NewInstance(null, null);
154 return NormalExplicitImportConfigurator
.NewInstance(null, null, null);
156 return Abcd206ImportConfigurator
.NewInstance(null, null);
158 return SDDImportConfigurator
.NewInstance(null, null);
160 StoreUtil
.notImplementedMessage(this);
161 throw new IllegalArgumentException("Import not supported yet");
166 * <p>BerlinModelConfigurator</p>
168 * @return a {@link eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator} object.
170 public final BerlinModelImportConfigurator
BerlinModelConfigurator() { return (BerlinModelImportConfigurator
) getConfigurator(TYPE
.BerlinModel
); }
172 * <p>JaxbConfigurator</p>
174 * @return a {@link eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator} object.
176 public final JaxbImportConfigurator
JaxbConfigurator() { return (JaxbImportConfigurator
) getConfigurator(TYPE
.Jaxb
); }
178 * <p>TcsConfigurator</p>
180 * @return a {@link eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator} object.
182 public final TcsXmlImportConfigurator
TcsConfigurator() { return (TcsXmlImportConfigurator
) getConfigurator(TYPE
.Tcs
); }
184 * <p>EndnoteConfigurator</p>
186 * @return a {@link eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator} object.
188 public final EndnoteImportConfigurator
EndnoteConfigurator() { return (EndnoteImportConfigurator
) getConfigurator(TYPE
.Endnote
); }
190 * <p>NormalExplicitConfigurator</p>
192 * @return a {@link eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator} object.
194 public final NormalExplicitImportConfigurator
NormalExplicitConfigurator() { return (NormalExplicitImportConfigurator
) getConfigurator(TYPE
.Excel_Taxa
); }
196 * <p>SddConfigurator</p>
198 * @return a {@link eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator} object.
200 public final SDDImportConfigurator
SddConfigurator() { return (SDDImportConfigurator
) getConfigurator(TYPE
.Sdd
); }
202 * <p>AbcdConfigurator</p>
204 * @return a {@link eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator} object.
206 public final Abcd206ImportConfigurator
AbcdConfigurator() { return (Abcd206ImportConfigurator
) getConfigurator(TYPE
.Abcd
); }