Project

General

Profile

Download (6.47 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.api.application.ICdmApplicationConfiguration;
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.model.MessagingUtils;
33
import eu.etaxonomy.taxeditor.store.CdmStore;
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((ICdmApplicationConfiguration) applicationConfiguration);
95
				monitor.worked(5);
96

    
97
				try {
98
					importer.invoke(configurator);
99
					monitor.worked(80);
100
				} catch (RuntimeException e) {
101
					MessagingUtils.messageDialog(
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
			MessagingUtils.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
}
(3-3/3)