Project

General

Profile

Download (8.51 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
 * Copyright (C) 2009 EDIT
3
 * European Distributed Institute of Taxonomy
4
 * http://www.e-taxonomy.eu
5
 *
6
 * The contents of this file are subject to the Mozilla Public License Version 1.1
7
 * See LICENSE.TXT at the top of this package for the full license terms.
8
 */
9

    
10
package eu.etaxonomy.cdm.io.markup;
11

    
12
import java.net.MalformedURLException;
13
import java.util.UUID;
14

    
15
import javax.xml.stream.FactoryConfigurationError;
16
import javax.xml.stream.XMLEventReader;
17
import javax.xml.stream.XMLStreamException;
18
import javax.xml.stream.events.XMLEvent;
19

    
20
import org.apache.log4j.Logger;
21
import org.springframework.beans.factory.annotation.Autowired;
22
import org.springframework.stereotype.Component;
23
import org.springframework.transaction.TransactionStatus;
24

    
25
import eu.etaxonomy.cdm.ext.geo.IEditGeoService;
26
import eu.etaxonomy.cdm.io.common.ICdmIO;
27
import eu.etaxonomy.cdm.io.common.XmlImportBase;
28
import eu.etaxonomy.cdm.model.common.AnnotationType;
29
import eu.etaxonomy.cdm.model.common.DefinedTerm;
30
import eu.etaxonomy.cdm.model.common.ExtensionType;
31
import eu.etaxonomy.cdm.model.common.Language;
32
import eu.etaxonomy.cdm.model.common.MarkerType;
33
import eu.etaxonomy.cdm.model.common.TermVocabulary;
34
import eu.etaxonomy.cdm.model.description.DescriptionBase;
35
import eu.etaxonomy.cdm.model.description.Feature;
36
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
37
import eu.etaxonomy.cdm.model.description.TextData;
38
import eu.etaxonomy.cdm.model.location.NamedArea;
39
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
40
import eu.etaxonomy.cdm.model.location.NamedAreaType;
41
import eu.etaxonomy.cdm.model.media.Media;
42
import eu.etaxonomy.cdm.model.reference.Reference;
43
import eu.etaxonomy.cdm.model.taxon.Taxon;
44

    
45
/**
46
 * @author a.mueller
47
 *
48
 */
49
@Component
50
public class MarkupDocumentImport
51
        extends XmlImportBase<MarkupImportConfigurator, MarkupImportState>
52
        implements ICdmIO<MarkupImportState> {
53

    
54
    private static final long serialVersionUID = -961438861319456892L;
55
    @SuppressWarnings("unused")
56
	private static final Logger logger = Logger.getLogger(MarkupDocumentImport.class);
57

    
58

    
59
	// TODO make part of state, but state is renewed when invoking the import a
60
	// second time
61
	private UnmatchedLeads unmatchedLeads;
62

    
63

    
64
	@Autowired
65
	private IEditGeoService editGeoService;
66

    
67
	public MarkupDocumentImport() {
68
		super();
69
	}
70

    
71
	@Override
72
	public boolean doCheck(MarkupImportState state) {
73
		state.setCheck(true);
74
		doInvoke(state);
75
		state.setCheck(false);
76
		return state.isSuccess();
77
	}
78

    
79
	@Override
80
	public void doInvoke(MarkupImportState state) {
81
		fireProgressEvent("Start import markup document", "Before start of document");
82

    
83
		TransactionStatus tx = startTransaction();
84
		// FIXME reset state
85
		doAllTheOldOtherStuff(state);
86

    
87
		// START
88
		try {
89
			// StAX
90
			XMLEventReader reader = getStaxReader(state);
91
			state.setReader(reader);
92

    
93
			// start document
94
			if (!validateStartOfDocument(reader)) {
95
				state.setUnsuccessfull();
96
				return;
97
			}
98

    
99
			MarkupDocumentImportNoComponent x = new MarkupDocumentImportNoComponent(this);
100
			x.doInvoke(state);
101

    
102
			commitTransaction(tx);
103

    
104
			// //SAX
105
			// ImportHandlerBase handler= new PublicationHandler(this);
106
			// parseSAX(state, handler);
107

    
108
		} catch (FactoryConfigurationError e1) {
109
			fireWarningEvent("Some error occurred while setting up xml factory. Data can't be imported", "Start", 16);
110
			state.setUnsuccessfull();
111
		} catch (XMLStreamException e1) {
112
			fireWarningEvent("An XMLStreamException occurred while parsing. Data can't be imported", "Start", 16);
113
			state.setUnsuccessfull();
114
		}
115

    
116
		return;
117

    
118
	}
119

    
120

    
121
	/**
122
	 * This comes from the old version, needs to be checked on need
123
	 *
124
	 * @param state
125
	 */
126
	private void doAllTheOldOtherStuff(MarkupImportState state) {
127
		state.putTree(null, null);
128
		if (unmatchedLeads == null) {
129
			unmatchedLeads = UnmatchedLeads.NewInstance();
130
		}
131
		state.setUnmatchedLeads(unmatchedLeads);
132

    
133
		// TransactionStatus tx = startTransaction();
134
		unmatchedLeads.saveToSession(getPolytomousKeyNodeService());
135

    
136
		// TODO generally do not store the reference object in the config
137
		Reference sourceReference = state.getConfig().getSourceReference();
138
		getReferenceService().saveOrUpdate(sourceReference);
139
	}
140

    
141
	/*
142
	 * (non-Javadoc)
143
	 *
144
	 * @see
145
	 * eu.etaxonomy.cdm.io.common.CdmIoBase#isIgnore(eu.etaxonomy.cdm.io.common
146
	 * .IImportConfigurator)
147
	 */
148
	@Override
149
    protected boolean isIgnore(MarkupImportState state) {
150
		return !state.getConfig().isDoTaxa();
151
	}
152

    
153

    
154
// ************************* OPEN AFTER REFACTORING ****************************************/
155

    
156

    
157
	/* (non-Javadoc)
158
	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#fireWarningEvent(java.lang.String, java.lang.String, java.lang.Integer)
159
	 */
160
	@Override
161
    public void fireWarningEvent(String message, String dataLocation, Integer severity) {
162
		super.fireWarningEvent(message, dataLocation, severity, 1);
163
	}
164

    
165
	@Override
166
    public void fireWarningEvent(String message, String dataLocation, Integer severity, int stackDepth) {
167
		super.fireWarningEvent(message, dataLocation, severity, stackDepth + 1);
168
	}
169

    
170
	@Override
171
    public void fireSchemaConflictEventExpectedStartTag(String elName, XMLEventReader reader) throws XMLStreamException {
172
		super.fireSchemaConflictEventExpectedStartTag(elName, reader);
173
	}
174

    
175
// ************************* END Events ************************************************************
176

    
177

    
178
	@Override
179
    public boolean isStartingElement(XMLEvent event, String elName) throws XMLStreamException {
180
		return super.isStartingElement(event, elName);
181
	}
182

    
183
	@Override
184
    public boolean isEndingElement(XMLEvent event, String elName) throws XMLStreamException {
185
		return super.isEndingElement(event, elName);
186
	}
187

    
188
	@Override
189
    public void fillMissingEpithetsForTaxa(Taxon parentTaxon, Taxon childTaxon) {
190
		super.fillMissingEpithetsForTaxa(parentTaxon, childTaxon);
191
	}
192

    
193
    @Override
194
    public Feature getFeature(MarkupImportState state, UUID uuid, String label, String text, String labelAbbrev, TermVocabulary<Feature> voc){
195
		return super.getFeature(state, uuid, label, text, labelAbbrev, voc);
196
	}
197

    
198
    @Override
199
    public PresenceAbsenceTerm getPresenceTerm(MarkupImportState state, UUID uuid, String label, String text, String labelAbbrev, boolean isAbsenceTerm, TermVocabulary<PresenceAbsenceTerm> voc){
200
        return super.getPresenceTerm(state, uuid, label, text, labelAbbrev, isAbsenceTerm, voc);
201
    }
202

    
203
	@Override
204
    public ExtensionType getExtensionType(MarkupImportState state, UUID uuid, String label, String text, String labelAbbrev){
205
		return super.getExtensionType(state, uuid, label, text, labelAbbrev);
206
	}
207

    
208
	public DefinedTerm getIdentifierType(MarkupImportState state, UUID uuid, String label, String text, String labelAbbrev, TermVocabulary<DefinedTerm> voc){
209
		return super.getIdentiferType(state, uuid, label, text, labelAbbrev, voc);
210
	}
211

    
212
	@Override
213
    public AnnotationType getAnnotationType(MarkupImportState state, UUID uuid, String label, String text, String labelAbbrev, TermVocabulary<AnnotationType> voc){
214
		return super.getAnnotationType(state, uuid, label, text, labelAbbrev, voc);
215
	}
216

    
217
	@Override
218
    public MarkerType getMarkerType(MarkupImportState state, UUID uuid, String label, String text, String labelAbbrev, TermVocabulary<MarkerType> voc){
219
		return super.getMarkerType(state, uuid, label, text, labelAbbrev, voc);
220
	}
221

    
222
	@Override
223
    public TextData getFeaturePlaceholder(MarkupImportState state, DescriptionBase<?> description, Feature feature, boolean createIfNotExists) {
224
		return super.getFeaturePlaceholder(state, description, feature, createIfNotExists);
225
	}
226

    
227
	@Override
228
    public NamedAreaLevel getNamedAreaLevel(MarkupImportState state, UUID uuid, String label, String text, String labelAbbrev, TermVocabulary<NamedAreaLevel> voc){
229
		return super.getNamedAreaLevel(state, uuid, label, text, labelAbbrev, voc);
230
	}
231

    
232
	@Override
233
    public NamedArea getNamedArea(MarkupImportState state, UUID uuid, String label, String text, String labelAbbrev, NamedAreaType areaType, NamedAreaLevel level, TermVocabulary voc, TermMatchMode matchMode){
234
		return super.getNamedArea(state, uuid, label, text, labelAbbrev, areaType, level, voc, matchMode);
235
	}
236

    
237
	@Override
238
    public Language getLanguage(MarkupImportState state, UUID uuid, String label, String text, String labelAbbrev, TermVocabulary voc){
239
		return super.getLanguage(state, uuid, label, text, labelAbbrev, voc);
240
	}
241

    
242
	public boolean getReadMediaData(){
243
		return this.READ_MEDIA_DATA;
244
	}
245

    
246
	@Override
247
    public Media getImageMedia(String uriString, boolean readMediaData) throws MalformedURLException {
248
		return super.getImageMedia(uriString, readMediaData);
249
	}
250

    
251
	public IEditGeoService getEditGeoService() {
252
		return editGeoService;
253
	}
254

    
255

    
256

    
257

    
258
}
(6-6/19)