0657e286cadbbf465eb3e60aeabf43dc37e5f78d
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / io / ImportManager.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
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.
9 */
10
11 package eu.etaxonomy.taxeditor.io;
12
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
20 import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
21 import eu.etaxonomy.cdm.api.application.ICdmApplicationDefaultConfiguration;
22 import eu.etaxonomy.cdm.io.common.CdmDefaultImport;
23 import eu.etaxonomy.cdm.io.common.IImportConfigurator;
24 import eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator;
25 import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
26 import eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator;
27 import eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator;
28 import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
29 import eu.etaxonomy.cdm.io.specimen.excel.in.SpecimenCdmExcelImportConfigurator;
30 import eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator;
31 import eu.etaxonomy.taxeditor.model.CdmProgressMonitorAdapter;
32 import eu.etaxonomy.taxeditor.store.CdmStore;
33 import eu.etaxonomy.taxeditor.store.StoreUtil;
34
35 /**
36 * <p>
37 * ImportHandler class.
38 * </p>
39 *
40 * @author n.hoffmann
41 * @created Sep 11, 2009
42 * @version 1.0
43 */
44 public class ImportManager extends AbstractIOManager<IImportConfigurator> {
45
46 /**
47 * @param applicationConfiguration
48 */
49 private ImportManager(ICdmApplicationConfiguration applicationConfiguration) {
50 super(applicationConfiguration);
51 }
52
53 /**
54 * <p>
55 * NewInstance
56 * </p>
57 *
58 * @param applicationConfiguration
59 * a
60 * {@link eu.etaxonomy.cdm.api.application.CdmApplicationController}
61 * object.
62 * @return a {@link eu.etaxonomy.taxeditor.io.ImportManager} object.
63 */
64 public static ImportManager NewInstance(
65 ICdmApplicationConfiguration applicationConfiguration) {
66 return new ImportManager(applicationConfiguration);
67 }
68
69 /**
70 * Use when importing data into the current application context
71 *
72 * @param configurator
73 * a {@link eu.etaxonomy.cdm.io.common.IImportConfigurator}
74 * object.
75 * @return a {@link org.eclipse.core.runtime.jobs.Job} object.
76 */
77 @Override
78 protected Job createIOJob(final IImportConfigurator configurator) {
79 Assert.isNotNull(configurator, "Configuration may not be null");
80
81 final Display display = Display.getDefault();
82
83 Job job = new Job("Import: " + configurator.getClass().getSimpleName()) {
84
85 @Override
86 protected IStatus run(IProgressMonitor monitor) {
87 monitor.beginTask("Importing data", 100);
88 configurator.setProgressMonitor(CdmProgressMonitorAdapter
89 .CreateSubMonitor(monitor, 70));
90
91 monitor.worked(5);
92
93 CdmDefaultImport<IImportConfigurator> importer = new CdmDefaultImport<IImportConfigurator>();
94 importer.setCdmAppController((ICdmApplicationDefaultConfiguration) applicationConfiguration);
95 monitor.worked(5);
96
97 try {
98 importer.invoke(configurator);
99 monitor.worked(80);
100 } catch (RuntimeException e) {
101 StoreUtil.errorDialog(
102 "Error importing data",
103 this,
104 "An error occured while"
105 + "importing from source '"
106 + configurator.getSourceNameString()
107 + "'.\n"
108 + "Please check error log for details.", e);
109 }
110
111 monitor.worked(5);
112 monitor.done();
113
114 display.asyncExec(new Runnable() {
115
116 @Override
117 public void run() {
118 CdmStore.getContextManager().notifyContextRefresh();
119 }
120 });
121
122 return Status.OK_STATUS;
123 }
124 };
125
126 return job;
127
128 }
129
130 private IImportConfigurator getConfigurator(TYPE type) {
131 Assert.isNotNull(type, "Type should not be null");
132
133 switch (type) {
134 case Jaxb:
135 return JaxbImportConfigurator.NewInstance(null, null);
136 case Tcs:
137 return TcsXmlImportConfigurator.NewInstance(null, null);
138 case Endnote:
139 return EndnoteImportConfigurator.NewInstance(null, null);
140 case Excel_Taxa:
141 return NormalExplicitImportConfigurator.NewInstance(null, null,
142 null, null);
143 case Abcd:
144 return Abcd206ImportConfigurator.NewInstance(null, null);
145 case Sdd:
146 return SDDImportConfigurator.NewInstance(null, null);
147 case SpecimenCdmExcel:
148 return SpecimenCdmExcelImportConfigurator.NewInstance(null, null);
149 default:
150 StoreUtil.notImplementedMessage(this);
151 throw new IllegalArgumentException("Import not supported yet");
152 }
153 }
154
155
156 /**
157 * <p>
158 * JaxbConfigurator
159 * </p>
160 *
161 * @return a {@link eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator} object.
162 */
163 public final JaxbImportConfigurator JaxbConfigurator() {
164 return (JaxbImportConfigurator) getConfigurator(TYPE.Jaxb);
165 }
166
167 /**
168 * <p>
169 * TcsConfigurator
170 * </p>
171 *
172 * @return a {@link eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator}
173 * object.
174 */
175 public final TcsXmlImportConfigurator TcsConfigurator() {
176 return (TcsXmlImportConfigurator) getConfigurator(TYPE.Tcs);
177 }
178
179 /**
180 * <p>
181 * EndnoteConfigurator
182 * </p>
183 *
184 * @return a
185 * {@link eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator}
186 * object.
187 */
188 public final EndnoteImportConfigurator EndnoteConfigurator() {
189 return (EndnoteImportConfigurator) getConfigurator(TYPE.Endnote);
190 }
191
192 /**
193 * <p>
194 * NormalExplicitConfigurator
195 * </p>
196 *
197 * @return a
198 * {@link eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator}
199 * object.
200 */
201 public final NormalExplicitImportConfigurator NormalExplicitConfigurator() {
202 return (NormalExplicitImportConfigurator) getConfigurator(TYPE.Excel_Taxa);
203 }
204
205 /**
206 * <p>
207 * SddConfigurator
208 * </p>
209 *
210 * @return a {@link eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator}
211 * object.
212 */
213 public final SDDImportConfigurator SddConfigurator() {
214 return (SDDImportConfigurator) getConfigurator(TYPE.Sdd);
215 }
216
217 /**
218 * <p>
219 * AbcdConfigurator
220 * </p>
221 *
222 * @return a
223 * {@link eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator}
224 * object.
225 */
226 public final Abcd206ImportConfigurator AbcdConfigurator() {
227 return (Abcd206ImportConfigurator) getConfigurator(TYPE.Abcd);
228 }
229
230 public SpecimenCdmExcelImportConfigurator SpecimenCdmExcelImportConfigurator() {
231 return (SpecimenCdmExcelImportConfigurator) getConfigurator(TYPE.SpecimenCdmExcel);
232 }
233
234 }