Project

General

Profile

Download (6.9 KB) Statistics
| Branch: | Tag: | Revision:
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
import eu.etaxonomy.taxeditor.store.singlesource.widget.DisplayProxy;
35

    
36
/**
37
 * <p>
38
 * ImportHandler class.
39
 * </p>
40
 * 
41
 * @author n.hoffmann
42
 * @created Sep 11, 2009
43
 * @version 1.0
44
 */
45
public class ImportManager extends AbstractIOManager<IImportConfigurator> {
46

    
47
	/**
48
	 * @param applicationConfiguration
49
	 */
50
	private ImportManager(ICdmApplicationConfiguration applicationConfiguration) {
51
		super(applicationConfiguration);
52
	}
53

    
54
	/**
55
	 * <p>
56
	 * NewInstance
57
	 * </p>
58
	 * 
59
	 * @param applicationConfiguration
60
	 *            a
61
	 *            {@link eu.etaxonomy.cdm.api.application.CdmApplicationController}
62
	 *            object.
63
	 * @return a {@link eu.etaxonomy.taxeditor.io.ImportManager} object.
64
	 */
65
	public static ImportManager NewInstance(
66
			ICdmApplicationConfiguration applicationConfiguration) {
67
		return new ImportManager(applicationConfiguration);
68
	}
69

    
70
	/**
71
	 * Use when importing data into the current application context
72
	 * 
73
	 * @param configurator
74
	 *            a {@link eu.etaxonomy.cdm.io.common.IImportConfigurator}
75
	 *            object.
76
	 * @return a {@link org.eclipse.core.runtime.jobs.Job} object.
77
	 */
78
	@Override
79
	protected Job createIOJob(final IImportConfigurator configurator) {
80
		Assert.isNotNull(configurator, "Configuration may not be null");
81

    
82
		final Display display = DisplayProxy.getDefault();
83

    
84
		Job job = new Job("Import: " + configurator.getClass().getSimpleName()) {
85

    
86
			@Override
87
			protected IStatus run(IProgressMonitor monitor) {
88
				monitor.beginTask("Importing data", 100);
89
				configurator.setProgressMonitor(CdmProgressMonitorAdapter
90
						.CreateSubMonitor(monitor, 70));
91

    
92
				monitor.worked(10);
93

    
94
				CdmDefaultImport<IImportConfigurator> importer = new CdmDefaultImport<IImportConfigurator>();
95
				importer.setCdmAppController(applicationConfiguration);
96
				monitor.worked(10);
97

    
98
				try {
99
					importer.invoke(configurator);
100
					monitor.worked(60);
101
				} catch (RuntimeException e) {
102
					StoreUtil.errorDialog(
103
							"Error importing data",
104
							this,
105
							"An error occured while"
106
									+ "importing from source '"
107
									+ configurator.getSourceNameString()
108
									+ "'.\n"
109
									+ "Please check error log for details.", e);
110
				}
111

    
112
				monitor.worked(10);
113
				monitor.done();
114

    
115
				display.asyncExec(new Runnable() {
116

    
117
					@Override
118
					public void run() {
119
						CdmStore.getContextManager().notifyContextRefresh();
120
					}
121
				});
122

    
123
				return Status.OK_STATUS;
124
			}
125
		};
126

    
127
		return job;
128

    
129
	}
130

    
131
	private IImportConfigurator getConfigurator(TYPE type) {
132
		Assert.isNotNull(type, "Type should not be null");
133

    
134
		switch (type) {
135
		case BerlinModel:
136
			return BerlinModelImportConfigurator.NewInstance(null, null);
137
		case Jaxb:
138
			return JaxbImportConfigurator.NewInstance(null, null);
139
		case Tcs:
140
			return TcsXmlImportConfigurator.NewInstance(null, null);
141
		case Endnote:
142
			return EndnoteImportConfigurator.NewInstance(null, null);
143
		case Excel_Taxa:
144
			return NormalExplicitImportConfigurator.NewInstance(null, null,
145
					null);
146
		case Abcd:
147
			return Abcd206ImportConfigurator.NewInstance(null, null);
148
		case Sdd:
149
			return SDDImportConfigurator.NewInstance(null, null);
150
		case SpecimenCdmExcel:
151
			return SpecimenCdmExcelImportConfigurator.NewInstance(null, null);
152
		default:
153
			StoreUtil.notImplementedMessage(this);
154
			throw new IllegalArgumentException("Import not supported yet");
155
		}
156
	}
157

    
158
	/**
159
	 * <p>
160
	 * BerlinModelConfigurator
161
	 * </p>
162
	 * 
163
	 * @return a
164
	 *         {@link eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator}
165
	 *         object.
166
	 */
167
	public final BerlinModelImportConfigurator BerlinModelConfigurator() {
168
		return (BerlinModelImportConfigurator) getConfigurator(TYPE.BerlinModel);
169
	}
170

    
171
	/**
172
	 * <p>
173
	 * JaxbConfigurator
174
	 * </p>
175
	 * 
176
	 * @return a {@link eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator} object.
177
	 */
178
	public final JaxbImportConfigurator JaxbConfigurator() {
179
		return (JaxbImportConfigurator) getConfigurator(TYPE.Jaxb);
180
	}
181

    
182
	/**
183
	 * <p>
184
	 * TcsConfigurator
185
	 * </p>
186
	 * 
187
	 * @return a {@link eu.etaxonomy.cdm.io.tcsxml.in.TcsXmlImportConfigurator}
188
	 *         object.
189
	 */
190
	public final TcsXmlImportConfigurator TcsConfigurator() {
191
		return (TcsXmlImportConfigurator) getConfigurator(TYPE.Tcs);
192
	}
193

    
194
	/**
195
	 * <p>
196
	 * EndnoteConfigurator
197
	 * </p>
198
	 * 
199
	 * @return a
200
	 *         {@link eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator}
201
	 *         object.
202
	 */
203
	public final EndnoteImportConfigurator EndnoteConfigurator() {
204
		return (EndnoteImportConfigurator) getConfigurator(TYPE.Endnote);
205
	}
206

    
207
	/**
208
	 * <p>
209
	 * NormalExplicitConfigurator
210
	 * </p>
211
	 * 
212
	 * @return a
213
	 *         {@link eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator}
214
	 *         object.
215
	 */
216
	public final NormalExplicitImportConfigurator NormalExplicitConfigurator() {
217
		return (NormalExplicitImportConfigurator) getConfigurator(TYPE.Excel_Taxa);
218
	}
219

    
220
	/**
221
	 * <p>
222
	 * SddConfigurator
223
	 * </p>
224
	 * 
225
	 * @return a {@link eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator}
226
	 *         object.
227
	 */
228
	public final SDDImportConfigurator SddConfigurator() {
229
		return (SDDImportConfigurator) getConfigurator(TYPE.Sdd);
230
	}
231

    
232
	/**
233
	 * <p>
234
	 * AbcdConfigurator
235
	 * </p>
236
	 * 
237
	 * @return a
238
	 *         {@link eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator}
239
	 *         object.
240
	 */
241
	public final Abcd206ImportConfigurator AbcdConfigurator() {
242
		return (Abcd206ImportConfigurator) getConfigurator(TYPE.Abcd);
243
	}
244

    
245
	public SpecimenCdmExcelImportConfigurator SpecimenCdmExcelImportConfigurator() {
246
		return (SpecimenCdmExcelImportConfigurator) getConfigurator(TYPE.SpecimenCdmExcel);
247
	}
248

    
249
}
(3-3/3)