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