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
;
14 import java
.io
.InputStream
;
15 import java
.nio
.file
.Files
;
16 import java
.nio
.file
.Path
;
17 import java
.nio
.file
.Paths
;
19 import org
.apache
.commons
.io
.IOUtils
;
20 import org
.eclipse
.core
.runtime
.Assert
;
21 import org
.eclipse
.core
.runtime
.IProgressMonitor
;
22 import org
.eclipse
.core
.runtime
.IStatus
;
23 import org
.eclipse
.core
.runtime
.Status
;
24 import org
.eclipse
.core
.runtime
.jobs
.Job
;
25 import org
.eclipse
.swt
.widgets
.Display
;
27 import eu
.etaxonomy
.cdm
.api
.application
.CdmApplicationState
;
28 import eu
.etaxonomy
.cdm
.api
.application
.ICdmApplicationConfiguration
;
29 import eu
.etaxonomy
.cdm
.io
.common
.CdmDefaultImport
;
30 import eu
.etaxonomy
.cdm
.io
.common
.IImportConfigurator
;
31 import eu
.etaxonomy
.cdm
.io
.common
.IImportConfigurator
.SOURCE_TYPE
;
32 import eu
.etaxonomy
.cdm
.io
.excel
.taxa
.NormalExplicitImportConfigurator
;
33 import eu
.etaxonomy
.cdm
.io
.jaxb
.JaxbImportConfigurator
;
34 import eu
.etaxonomy
.cdm
.io
.reference
.endnote
.in
.EndnoteImportConfigurator
;
35 import eu
.etaxonomy
.cdm
.io
.sdd
.in
.SDDImportConfigurator
;
36 import eu
.etaxonomy
.cdm
.io
.service
.IIOService
;
37 import eu
.etaxonomy
.cdm
.io
.specimen
.abcd206
.in
.Abcd206ImportConfigurator
;
38 import eu
.etaxonomy
.cdm
.io
.specimen
.excel
.in
.SpecimenCdmExcelImportConfigurator
;
39 import eu
.etaxonomy
.cdm
.io
.tcsxml
.in
.TcsXmlImportConfigurator
;
40 import eu
.etaxonomy
.taxeditor
.model
.CdmProgressMonitorAdapter
;
41 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
42 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
43 import eu
.etaxonomy
.taxeditor
.store
.internal
.TaxeditorStorePlugin
;
47 * ImportHandler class.
51 * @created Sep 11, 2009
54 public class ImportManager
extends AbstractIOManager
<IImportConfigurator
> {
57 * @param applicationConfiguration
59 private ImportManager(ICdmApplicationConfiguration applicationConfiguration
) {
60 super(applicationConfiguration
);
68 * @param applicationConfiguration
70 * {@link eu.etaxonomy.cdm.api.application.CdmApplicationController}
72 * @return a {@link eu.etaxonomy.taxeditor.io.ImportManager} object.
74 public static ImportManager
NewInstance(
75 ICdmApplicationConfiguration applicationConfiguration
) {
76 return new ImportManager(applicationConfiguration
);
80 * Use when importing data into the current application context
83 * a {@link eu.etaxonomy.cdm.io.common.IImportConfigurator}
85 * @return a {@link org.eclipse.core.runtime.jobs.Job} object.
88 protected Job
createIOJob(final IImportConfigurator configurator
) {
89 Assert
.isNotNull(configurator
, "Configuration may not be null");
91 final Display display
= Display
.getDefault();
93 Job job
= new Job("Import: " + configurator
.getClass().getSimpleName()) {
96 protected IStatus
run(IProgressMonitor monitor
) {
97 monitor
.beginTask("Importing data", 100);
98 configurator
.setProgressMonitor(CdmProgressMonitorAdapter
99 .CreateSubMonitor(monitor
, 70));
103 CdmDefaultImport
<IImportConfigurator
> importer
= new CdmDefaultImport
<IImportConfigurator
>();
104 importer
.setCdmAppController(applicationConfiguration
);
108 importer
.invoke(configurator
);
110 } catch (RuntimeException e
) {
111 MessagingUtils
.messageDialog(
112 "Error importing data",
114 "An error occured while"
115 + "importing from source '"
116 + configurator
.getSourceNameString()
118 + "Please check error log for details.", e
);
124 display
.asyncExec(new Runnable() {
128 CdmStore
.getContextManager().notifyContextRefresh();
132 return Status
.OK_STATUS
;
140 public Job
createIOServiceJob(IImportConfigurator configurator
, InputStream is
, SOURCE_TYPE type
) {
143 return createIOServiceJob(configurator
, IOUtils
.toByteArray(is
), type
);
144 } catch (Exception e
) {
145 MessagingUtils
.errorDialog("Error importing input stream",
148 TaxeditorStorePlugin
.PLUGIN_ID
,
155 public Job
createIOServiceJob(IImportConfigurator configurator
, File importFile
, SOURCE_TYPE type
) {
156 Path path
= Paths
.get(importFile
.toURI());
158 return createIOServiceJob(configurator
, Files
.readAllBytes(path
), type
);
159 } catch (Exception e
) {
160 MessagingUtils
.errorDialog("Error importing file",
163 TaxeditorStorePlugin
.PLUGIN_ID
,
170 public Job
createIOServiceJob(final IImportConfigurator configurator
, final byte[] data
, final SOURCE_TYPE type
) {
171 Assert
.isNotNull(configurator
, "Configuration may not be null");
172 final Display display
= Display
.getDefault();
173 Job job
= new Job("Import: " + configurator
.getClass().getSimpleName()) {
176 protected IStatus
run(IProgressMonitor monitor
) {
177 monitor
.beginTask("Importing data", IProgressMonitor
.UNKNOWN
);
178 IIOService ioService
= CdmApplicationState
.getIOService();
180 ioService
.importData(configurator
, data
, type
);
184 display
.asyncExec(new Runnable() {
188 CdmStore
.getContextManager().notifyContextRefresh();
192 return Status
.OK_STATUS
;
200 private IImportConfigurator
getConfigurator(TYPE type
) {
201 Assert
.isNotNull(type
, "Type should not be null");
205 return JaxbImportConfigurator
.NewInstance(null, null);
207 return TcsXmlImportConfigurator
.NewInstance(null, null);
209 return EndnoteImportConfigurator
.NewInstance(null, null);
211 return NormalExplicitImportConfigurator
.NewInstance(null, null,
214 return Abcd206ImportConfigurator
.NewInstance(null, null);
216 return SDDImportConfigurator
.NewInstance(null, null);
217 case SpecimenCdmExcel
:
218 return SpecimenCdmExcelImportConfigurator
.NewInstance(null, null);
220 MessagingUtils
.notImplementedMessage(this);
221 throw new IllegalArgumentException("Import not supported yet");
231 * @return a {@link eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator} object.
233 public final JaxbImportConfigurator
JaxbConfigurator() {
234 return (JaxbImportConfigurator
) getConfigurator(TYPE
.Jaxb
);
242 * @return a {@link eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator}
245 public final TcsXmlImportConfigurator
TcsConfigurator() {
246 return (TcsXmlImportConfigurator
) getConfigurator(TYPE
.Tcs
);
251 * EndnoteConfigurator
255 * {@link eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator}
258 public final EndnoteImportConfigurator
EndnoteConfigurator() {
259 return (EndnoteImportConfigurator
) getConfigurator(TYPE
.Endnote
);
264 * NormalExplicitConfigurator
268 * {@link eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator}
271 public final NormalExplicitImportConfigurator
NormalExplicitConfigurator() {
272 return (NormalExplicitImportConfigurator
) getConfigurator(TYPE
.Excel_Taxa
);
280 * @return a {@link eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator}
283 public final SDDImportConfigurator
SddConfigurator() {
284 return (SDDImportConfigurator
) getConfigurator(TYPE
.Sdd
);
293 * {@link eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator}
296 public final Abcd206ImportConfigurator
AbcdConfigurator() {
297 return (Abcd206ImportConfigurator
) getConfigurator(TYPE
.Abcd
);
300 public SpecimenCdmExcelImportConfigurator
SpecimenCdmExcelImportConfigurator() {
301 return (SpecimenCdmExcelImportConfigurator
) getConfigurator(TYPE
.SpecimenCdmExcel
);