Improved PrintPublisher Wizard; Integrated SpecimenCdmExcel import
[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.io.berlinModel.in.BerlinModelImportConfigurator;
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(10);
92
93 CdmDefaultImport<IImportConfigurator> importer = new CdmDefaultImport<IImportConfigurator>();
94 importer.setCdmAppController(applicationConfiguration);
95 monitor.worked(10);
96
97 try {
98 importer.invoke(configurator);
99 monitor.worked(60);
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(10);
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 BerlinModel:
135 return BerlinModelImportConfigurator.NewInstance(null, null);
136 case Jaxb:
137 return JaxbImportConfigurator.NewInstance(null, null);
138 case Tcs:
139 return TcsXmlImportConfigurator.NewInstance(null, null);
140 case Endnote:
141 return EndnoteImportConfigurator.NewInstance(null, null);
142 case Excel_Taxa:
143 return NormalExplicitImportConfigurator.NewInstance(null, null,
144 null);
145 case Abcd:
146 return Abcd206ImportConfigurator.NewInstance(null, null);
147 case Sdd:
148 return SDDImportConfigurator.NewInstance(null, null);
149 case SpecimenCdmExcel:
150 return SpecimenCdmExcelImportConfigurator.NewInstance(null, null);
151 default:
152 StoreUtil.notImplementedMessage(this);
153 throw new IllegalArgumentException("Import not supported yet");
154 }
155 }
156
157 /**
158 * <p>
159 * BerlinModelConfigurator
160 * </p>
161 *
162 * @return a
163 * {@link eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator}
164 * object.
165 */
166 public final BerlinModelImportConfigurator BerlinModelConfigurator() {
167 return (BerlinModelImportConfigurator) getConfigurator(TYPE.BerlinModel);
168 }
169
170 /**
171 * <p>
172 * JaxbConfigurator
173 * </p>
174 *
175 * @return a {@link eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator} object.
176 */
177 public final JaxbImportConfigurator JaxbConfigurator() {
178 return (JaxbImportConfigurator) getConfigurator(TYPE.Jaxb);
179 }
180
181 /**
182 * <p>
183 * TcsConfigurator
184 * </p>
185 *
186 * @return a {@link eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator}
187 * object.
188 */
189 public final TcsXmlImportConfigurator TcsConfigurator() {
190 return (TcsXmlImportConfigurator) getConfigurator(TYPE.Tcs);
191 }
192
193 /**
194 * <p>
195 * EndnoteConfigurator
196 * </p>
197 *
198 * @return a
199 * {@link eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator}
200 * object.
201 */
202 public final EndnoteImportConfigurator EndnoteConfigurator() {
203 return (EndnoteImportConfigurator) getConfigurator(TYPE.Endnote);
204 }
205
206 /**
207 * <p>
208 * NormalExplicitConfigurator
209 * </p>
210 *
211 * @return a
212 * {@link eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator}
213 * object.
214 */
215 public final NormalExplicitImportConfigurator NormalExplicitConfigurator() {
216 return (NormalExplicitImportConfigurator) getConfigurator(TYPE.Excel_Taxa);
217 }
218
219 /**
220 * <p>
221 * SddConfigurator
222 * </p>
223 *
224 * @return a {@link eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator}
225 * object.
226 */
227 public final SDDImportConfigurator SddConfigurator() {
228 return (SDDImportConfigurator) getConfigurator(TYPE.Sdd);
229 }
230
231 /**
232 * <p>
233 * AbcdConfigurator
234 * </p>
235 *
236 * @return a
237 * {@link eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator}
238 * object.
239 */
240 public final Abcd206ImportConfigurator AbcdConfigurator() {
241 return (Abcd206ImportConfigurator) getConfigurator(TYPE.Abcd);
242 }
243
244 public SpecimenCdmExcelImportConfigurator SpecimenCdmExcelImportConfigurator() {
245 return (SpecimenCdmExcelImportConfigurator) getConfigurator(TYPE.SpecimenCdmExcel);
246 }
247
248 }