Project

General

Profile

Download (6.49 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.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
}
(3-3/3)