Project

General

Profile

« Previous | Next » 

Revision 8ef74e91

Added by Andreas Müller over 5 years ago

ref #7346 use E+M area vocabulary for common names

View differences:

app-import/src/main/java/eu/etaxonomy/cdm/io/berlinModel/in/BerlinModelOccurrenceImport.java
9 9

  
10 10
package eu.etaxonomy.cdm.io.berlinModel.in;
11 11

  
12
import java.net.URI;
13 12
import java.sql.ResultSet;
14 13
import java.sql.SQLException;
15 14
import java.util.ArrayList;
......
18 17
import java.util.List;
19 18
import java.util.Map;
20 19
import java.util.Set;
21
import java.util.UUID;
22 20

  
23 21
import org.apache.commons.lang.StringUtils;
24 22
import org.apache.log4j.Logger;
25 23
import org.springframework.stereotype.Component;
26
import org.springframework.transaction.TransactionStatus;
27 24

  
28 25
import eu.etaxonomy.cdm.common.CdmUtils;
29 26
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
30 27
import eu.etaxonomy.cdm.io.berlinModel.BerlinModelTransformer;
31 28
import eu.etaxonomy.cdm.io.berlinModel.in.validation.BerlinModelOccurrenceImportValidator;
32
import eu.etaxonomy.cdm.io.common.CdmImportBase;
33 29
import eu.etaxonomy.cdm.io.common.IOValidator;
34 30
import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
35
import eu.etaxonomy.cdm.io.common.Source;
36 31
import eu.etaxonomy.cdm.io.common.TdwgAreaProvider;
37 32
import eu.etaxonomy.cdm.model.common.Annotation;
38 33
import eu.etaxonomy.cdm.model.common.AnnotationType;
39 34
import eu.etaxonomy.cdm.model.common.CdmBase;
40
import eu.etaxonomy.cdm.model.common.ExtensionType;
35
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
41 36
import eu.etaxonomy.cdm.model.common.Language;
42 37
import eu.etaxonomy.cdm.model.common.Marker;
43 38
import eu.etaxonomy.cdm.model.common.MarkerType;
44 39
import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
45
import eu.etaxonomy.cdm.model.common.OriginalSourceType;
46
import eu.etaxonomy.cdm.model.common.TermType;
47
import eu.etaxonomy.cdm.model.common.TermVocabulary;
48 40
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
49 41
import eu.etaxonomy.cdm.model.description.Distribution;
50 42
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
51 43
import eu.etaxonomy.cdm.model.description.TaxonDescription;
52 44
import eu.etaxonomy.cdm.model.location.NamedArea;
53
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
54
import eu.etaxonomy.cdm.model.location.NamedAreaType;
55 45
import eu.etaxonomy.cdm.model.reference.Reference;
56 46
import eu.etaxonomy.cdm.model.taxon.Taxon;
57 47
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
......
64 54
 */
65 55
@Component
66 56
public class BerlinModelOccurrenceImport  extends BerlinModelImportBase {
67
	private static final Logger logger = Logger.getLogger(BerlinModelOccurrenceImport.class);
57

  
58
    private static final long serialVersionUID = -7918122767284077183L;
59

  
60
    private static final Logger logger = Logger.getLogger(BerlinModelOccurrenceImport.class);
68 61

  
69 62
	public static final String NAMESPACE = "Occurrence";
70 63
	private static final String EM_AREA_NAMESPACE = "emArea";
......
104 97
		return strQuery;
105 98
	}
106 99

  
107
	private Map<Integer, NamedArea> euroMedAreas = new HashMap<Integer, NamedArea>();
100
//	private Map<Integer, NamedArea> euroMedAreas = new HashMap<>();
108 101

  
109 102

  
110 103
	@Override
111 104
	public void doInvoke(BerlinModelImportState state) {
112
		if (state.getConfig().isUseEmAreaVocabulary()){
113
			try {
114
				createEuroMedAreas(state);
115
			} catch (Exception e) {
116
				logger.error("Exception occurred when trying to create euroMed Areas");
117
				e.printStackTrace();
118
				state.setSuccess(false);
119
			}
120
		}
105
//		if (state.getConfig().isUseEmAreaVocabulary()){
106
//			try {
107
//				createEuroMedAreas(state);
108
//			} catch (Exception e) {
109
//				logger.error("Exception occurred when trying to create euroMed Areas");
110
//				e.printStackTrace();
111
//				state.setSuccess(false);
112
//			}
113
//		}
121 114
		super.doInvoke(state);
122 115
		//reset
123
		euroMedAreas = new HashMap<Integer, NamedArea>();
116
//		euroMedAreas = new HashMap<>();
124 117
	}
125 118

  
126
	private TermVocabulary<NamedArea> createEuroMedAreas(BerlinModelImportState state) throws SQLException {
127
		logger.warn("Start creating E+M areas");
128
		Source source = state.getConfig().getSource();
129
		Reference sourceReference = state.getConfig().getSourceReference();
130

  
131
		TransactionStatus txStatus = this.startTransaction();
132

  
133
		sourceReference = getSourceReference(sourceReference);
134

  
135
		TermVocabulary<NamedArea> euroMedAreas = makeEmptyEuroMedVocabulary();
136

  
137
		MarkerType eurMarkerType = getMarkerType(state, BerlinModelTransformer.uuidEurArea, "eur", "eur Area", "eur", getEuroMedMarkerTypeVoc());
138
		MarkerType euroMedAreaMarkerType = getMarkerType(state, BerlinModelTransformer.uuidEurMedArea, "EuroMedArea", "EuroMedArea", "EuroMedArea", getEuroMedMarkerTypeVoc());
139
		ExtensionType isoCodeExtType = getExtensionType(state, BerlinModelTransformer.uuidIsoCode, "IsoCode", "IsoCode", "iso");
140
		ExtensionType tdwgCodeExtType = getExtensionType(state, BerlinModelTransformer.uuidTdwgAreaCode, "TDWG code", "TDWG Area code", "tdwg");
141
		ExtensionType mclCodeExtType = getExtensionType(state, BerlinModelTransformer.uuidMclCode, "MCL code", "MedCheckList code", "mcl");
142
		NamedAreaLevel areaLevelTop = getNamedAreaLevel(state, BerlinModelTransformer.uuidEuroMedAreaLevelTop, "Euro+Med top area level", "Euro+Med top area level. This level is only to be used for the area representing the complete Euro+Med area", "e+m top", null);
143
		NamedAreaLevel areaLevelEm1 = getNamedAreaLevel(state, BerlinModelTransformer.uuidEuroMedAreaLevelFirst, "Euro+Med 1. area level", "Euro+Med 1. area level", "e+m 1.", null);
144
		NamedAreaLevel areaLevelEm2 = getNamedAreaLevel(state, BerlinModelTransformer.uuidEuroMedAreaLevelSecond, "Euro+Med 2. area level", "Euro+Med 2. area level", "Euro+Med 1. area level", null);
145

  
146

  
147
		String sql = "SELECT * , CASE WHEN EMCode = 'EM' THEN 'a' ELSE 'b' END as isEM " +
148
				" FROM emArea " +
149
				" ORDER BY isEM, EMCode";
150
		ResultSet rs = source.getResultSet(sql);
151

  
152
		NamedArea euroMedArea = null;
153
		NamedArea lastLevel1Area = null;
154

  
155
		//euroMedArea (EMCode = 'EM')
156
		rs.next();
157
		euroMedArea = makeSingleEuroMedArea(rs, eurMarkerType, euroMedAreaMarkerType, isoCodeExtType, tdwgCodeExtType, mclCodeExtType,
158
				areaLevelTop, areaLevelEm1 , areaLevelEm2, sourceReference, euroMedArea, lastLevel1Area);
159
		euroMedAreas.addTerm(euroMedArea);
160

  
161
		//all other areas
162
		while (rs.next()){
163
			NamedArea newArea = makeSingleEuroMedArea(rs, eurMarkerType, euroMedAreaMarkerType,
164
					isoCodeExtType, tdwgCodeExtType, mclCodeExtType,
165
					areaLevelTop, areaLevelEm1 , areaLevelEm2, sourceReference, euroMedArea, lastLevel1Area);
166
			if (newArea != null){
167
    			euroMedAreas.addTerm(newArea);
168
    			if (newArea.getPartOf().equals(euroMedArea)){
169
    				lastLevel1Area = newArea;
170
    			}
171
			}
172
		}
173
		emAreaFinetuning(euroMedAreas, areaLevelEm2);
174

  
175
		markAreasAsHidden(state, euroMedAreas);
176

  
177
	    getVocabularyService().saveOrUpdate(euroMedAreas);
178

  
179
		try {
180
            commitTransaction(txStatus);
181
        } catch (Exception e) {
182
             e.printStackTrace();
183
             logger.error("An exception occurred when trying to commit E+M Areas");
184
        }
185
		logger.warn("Created E+M areas");
186

  
187
		return euroMedAreas;
188
	}
189

  
190
	/**
191
     * @param areaLevelEm2
192
	 * @param euroMedAreas2
119
    /**
120
     * @param emCode
121
     * @return
193 122
     */
194
    private void emAreaFinetuning(TermVocabulary<NamedArea> euroMedAreas, NamedAreaLevel areaLevelEm2) {
195
        //CZ
196
        NamedArea oldArea = euroMedAreas.getTermByIdInvocabulary("Cz");
197
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("Cs"), areaLevelEm2);
198
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("Sk"), areaLevelEm2);
199

  
200
        //Ju
201
        oldArea = euroMedAreas.getTermByIdInvocabulary("Ju");
202
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("BH"), areaLevelEm2);
203
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("Cg"), areaLevelEm2);
204
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("Ct"), areaLevelEm2);
205
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("Mk"), areaLevelEm2);
206
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("Sl"), areaLevelEm2);
207
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("Sr"), areaLevelEm2);
208

  
209
        //IJ
210
        oldArea = euroMedAreas.getTermByIdInvocabulary("IJ");
211
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("Ir"), areaLevelEm2);
212
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("Jo"), areaLevelEm2);
213

  
214
        //LS
215
        oldArea = euroMedAreas.getTermByIdInvocabulary("LS");
216
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("Le"), areaLevelEm2);
217
        makeSubterm(oldArea, euroMedAreas.getTermByIdInvocabulary("Sy"), areaLevelEm2);
218

  
219
    }
220

  
221
    //5.Mark areas to be hidden #3979 .5
222
    private void markAreasAsHidden(BerlinModelImportState state, TermVocabulary<NamedArea> euroMedAreasVoc) {
223

  
224
        try {
225

  
226
            @SuppressWarnings("unchecked")
227
            TermVocabulary<MarkerType> vocUserDefinedMarkerTypes = getVocabularyService().find(CdmImportBase.uuidUserDefinedMarkerTypeVocabulary);
228
            if (vocUserDefinedMarkerTypes == null){
229
                String message = "Marker type vocabulary could not be found. Hidden areas not added.";
230
                logger.error(message);
231
                System.out.println(message);
123
    private NamedArea getAreaByAreaId(int areaId) {
124
        NamedArea result = null;
125
        String areaIdStr = String.valueOf(areaId);
126
        OrderedTermVocabulary<NamedArea> voc = getAreaVoc();
127
        for (NamedArea area : voc.getTerms()){
128
            for (IdentifiableSource source : area.getSources()){
129
                if (areaIdStr.equals(source.getIdInSource()) && BerlinModelAreaImport.NAMESPACE.equals(source.getIdNamespace())){
130
                    if (result != null){
131
                        logger.warn("Result for areaId already exists. areaId: " + areaId);
132
                    }
133
                    result = area;
134
                }
232 135
            }
233
            MarkerType hiddenAreaMarkerType = getMarkerType(state, BerlinModelTransformer.uuidHiddenArea,
234
                    "Hidden Area","Used to hide distributions for the named areas in publications", null, getEuroMedMarkerTypeVoc());
235

  
236
            //Add hidden area marker to Rs(C) and Rs(N)
237
            hideArea(euroMedAreasVoc, hiddenAreaMarkerType, BerlinModelTransformer.uuidRs);
238
            hideArea(euroMedAreasVoc, hiddenAreaMarkerType, BerlinModelTransformer.uuidRs_B);
239
            hideArea(euroMedAreasVoc, hiddenAreaMarkerType, BerlinModelTransformer.uuidRs_C);
240
            hideArea(euroMedAreasVoc, hiddenAreaMarkerType, BerlinModelTransformer.uuidRs_E);
241
            hideArea(euroMedAreasVoc, hiddenAreaMarkerType, BerlinModelTransformer.uuidRs_N);
242
            hideArea(euroMedAreasVoc, hiddenAreaMarkerType, BerlinModelTransformer.uuidRs_K);
243
            hideArea(euroMedAreasVoc, hiddenAreaMarkerType, BerlinModelTransformer.uuidRs_W);
244
        } catch (Exception e) {
245
            e.printStackTrace();
246
            logger.error("Exception in markAreasAsHidden: " + e.getMessage());
247 136
        }
248

  
137
        return result;
249 138
    }
250 139

  
251
    private void hideArea(TermVocabulary<NamedArea> euroMedAreasVoc, MarkerType hiddenAreaMarkerType, UUID areaUuid) {
252
        for (NamedArea namedArea : euroMedAreasVoc){
253
            if (namedArea.getUuid().equals(areaUuid)){
254
                namedArea.addMarker(Marker.NewInstance(hiddenAreaMarkerType, true));
255
                return;
256
            }
140
    private OrderedTermVocabulary<NamedArea> areaVoc;
141
    @SuppressWarnings("unchecked")
142
    private OrderedTermVocabulary<NamedArea> getAreaVoc(){
143
        if (areaVoc == null){
144
            areaVoc = (OrderedTermVocabulary<NamedArea>)getVocabularyService().find(BerlinModelTransformer.uuidVocEuroMedAreas);
257 145
        }
146
        return areaVoc;
258 147
    }
259 148

  
260
    /**
261
     * @param oldArea
262
     * @param namedArea
263
     * @param areaLevelEm2
264
     */
265
    private void makeSubterm(NamedArea oldArea, NamedArea namedArea, NamedAreaLevel areaLevelEm2) {
266
        namedArea.setLevel(areaLevelEm2);
267
        namedArea.setPartOf(oldArea);
268
    }
269

  
270
    /**
271
	 * @param sourceReference
272
	 * @return
273
	 */
274
	private Reference getSourceReference(Reference sourceReference) {
275
		Reference persistentSourceReference = getReferenceService().find(sourceReference.getUuid());  //just to be sure
276
		if (persistentSourceReference != null){
277
			sourceReference = persistentSourceReference;
278
		}
279
		return sourceReference;
280
	}
281

  
282
	/**
283
	 * @param eurMarkerType
284
	 * @param euroMedAreaMarkerType
285
	 * @param isoCodeExtType
286
	 * @param tdwgCodeExtType
287
	 * @param mclCodeExtType
288
	 * @param rs
289
	 * @param areaLevelEm2
290
	 * @param areaLevelEm1
291
	 * @param areaLevelTop
292
	 * @throws SQLException
293
	 */
294
	private NamedArea makeSingleEuroMedArea(ResultSet rs, MarkerType eurMarkerType,
295
			MarkerType euroMedAreaMarkerType, ExtensionType isoCodeExtType,
296
			ExtensionType tdwgCodeExtType, ExtensionType mclCodeExtType,
297
			NamedAreaLevel areaLevelTop, NamedAreaLevel areaLevelEm1, NamedAreaLevel areaLevelEm2,
298
			Reference sourceReference, NamedArea euroMedArea, NamedArea level1Area) throws SQLException {
299
		Integer areaId = rs.getInt("AreaId");
300
		String emCode = nullSafeTrim(rs.getString("EMCode"));
301
		String isoCode = nullSafeTrim(rs.getString("ISOCode"));
302
		String tdwgCode = nullSafeTrim(rs.getString("TDWGCode"));
303
		String unit = nullSafeTrim(rs.getString("Unit"));
304
//				      ,[Status]
305
//				      ,[OutputOrder]
306
		boolean eurMarker = rs.getBoolean("eur");
307
		boolean euroMedAreaMarker = rs.getBoolean("EuroMedArea");
308
		String notes = nullSafeTrim(rs.getString("Notes"));
309
		String mclCode = nullSafeTrim(rs.getString("MCLCode"));
310
		String geoSearch = nullSafeTrim(rs.getString("NameForGeoSearch"));
311

  
312

  
313

  
314
		if (isBlank(emCode)){
315
			emCode = unit;
316
		}
317

  
318
		//uuid
319
		UUID uuid = BerlinModelTransformer.getEMAreaUuid(emCode);
320
		NamedArea area = (NamedArea)getTermService().find(uuid);
321
		if (area == null){
322
			//label
323
			area = NamedArea.NewInstance(geoSearch, unit, emCode);
324
			if (uuid != null){
325
				area.setUuid(uuid);
326
			}else{
327
			    if (areaId == 211 || areaId == 213){  //Additional Azores and Canary Is. area are merged into primary area, see also area.addSource part below
328
			        return null;
329
			    }
330
				logger.warn("Uuid for emCode could not be defined: " + emCode);
331
			}
332
		}
333

  
334

  
335
		//code
336
		area.setIdInVocabulary(emCode);
337
		//notes
338
		if (StringUtils.isNotEmpty(notes)){
339
			area.addAnnotation(Annotation.NewInstance(notes, AnnotationType.EDITORIAL(), Language.DEFAULT()));
340
		}
341
		//markers
342
		area.addMarker(Marker.NewInstance(eurMarkerType, eurMarker));
343
		area.addMarker(Marker.NewInstance(euroMedAreaMarkerType, euroMedAreaMarker));
344

  
345
		//extensions
346
		if (isNotBlank(isoCode)){
347
			area.addExtension(isoCode, isoCodeExtType);
348
		}
349
		if (isNotBlank(tdwgCode)){
350
			area.addExtension(tdwgCode, tdwgCodeExtType);
351
		}
352
		if (isNotBlank(mclCode)){
353
			area.addExtension(mclCode, mclCodeExtType);
354
		}
355

  
356
		//type
357
		area.setType(NamedAreaType.ADMINISTRATION_AREA());
358

  
359
		//source
360
		area.addSource(OriginalSourceType.Import, String.valueOf(areaId), EM_AREA_NAMESPACE, sourceReference, null);
361
		//add duplicate area ids for canary
362
		if (areaId == 624){ //Canary Is.
363
		    area.addSource(OriginalSourceType.Import, String.valueOf(213), EM_AREA_NAMESPACE, sourceReference, null);
364
		}
365
		if (areaId == 210){//Azores
366
            area.addSource(OriginalSourceType.Import, String.valueOf(211), EM_AREA_NAMESPACE, sourceReference, null);
367
        }
368

  
369
		//parent
370
		if (euroMedArea != null){
371
			if (emCode.contains("(")){
372
				area.setPartOf(level1Area);
373
				area.setLevel(areaLevelEm2);
374
			}else{
375
				area.setPartOf(euroMedArea);
376
				area.setLevel(areaLevelEm1);
377
			}
378
		}else{
379
			area.setLevel(areaLevelTop);
380
		}
381
		this.euroMedAreas.put(areaId, area);
382

  
383
		//save
384
		getTermService().saveOrUpdate(area);
385

  
386
		return area;
387
	}
388 149

  
389 150
	private String nullSafeTrim(String string) {
390 151
		if (string == null){
......
394 155
		}
395 156
	}
396 157

  
397
	/**
398
	 *
399
	 */
400
	private TermVocabulary<NamedArea> makeEmptyEuroMedVocabulary() {
401
		TermType type = TermType.NamedArea;
402
		String description = "Euro+Med area vocabulary";
403
		String label = "E+M areas";
404
		String abbrev = null;
405
		URI termSourceUri = null;
406
		OrderedTermVocabulary<NamedArea> result = OrderedTermVocabulary.NewInstance(type, description, label, abbrev, termSourceUri);
407

  
408
		result.setUuid(BerlinModelTransformer.uuidVocEuroMedAreas);
409
		getVocabularyService().save(result);
410
		return result;
411
	}
412

  
413 158
	@Override
414 159
	public boolean doPartition(ResultSetPartitioner partitioner, BerlinModelImportState state) {
415 160
		boolean success = true;
416
		Set<TaxonBase> taxaToSave = new HashSet<TaxonBase>();
161
		Set<TaxonBase> taxaToSave = new HashSet<>();
417 162

  
418 163
		Map<String, TaxonBase<?>> taxonMap = partitioner.getObjectMap(BerlinModelTaxonImport.NAMESPACE);
419 164

  
......
422 167
		try {
423 168
			//map to store the mapping of duplicate berlin model occurrences to their real distributions
424 169
			//duplicated may occur due to area mappings from BM areas to TDWG areas
425
			Map<Integer, String> duplicateMap = new HashMap<Integer, String>();
170
			Map<Integer, String> duplicateMap = new HashMap<>();
426 171
			int oldTaxonId = -1;
427 172
			TaxonDescription oldDescription = null;
428 173
			int i = 0;
......
453 198

  
454 199
					Reference sourceRef = state.getTransactionalSourceReference();
455 200

  
456
					List<NamedArea> areas = makeAreaList(state, rs,	occurrenceId);
201
					List<NamedArea> areas = makeAreaList(state, partitioner, rs, occurrenceId);
457 202

  
458 203
                    //create description(elements)
459 204
                    TaxonDescription taxonDescription = getTaxonDescription(newTaxonId, oldTaxonId, oldDescription, taxonMap, occurrenceId, sourceRef);
......
513 258

  
514 259
	/**
515 260
	 * @param state
261
	 * @param partitioner
516 262
	 * @param rs
517 263
	 * @param occurrenceId
518 264
	 * @param tdwgCodeString
......
521 267
	 * @throws SQLException
522 268
	 */
523 269
	//Create area list
524
	private List<NamedArea> makeAreaList(BerlinModelImportState state, ResultSet rs, int occurrenceId) throws SQLException {
525
		List<NamedArea> areas = new ArrayList<NamedArea>();
270
	private List<NamedArea> makeAreaList(BerlinModelImportState state, ResultSetPartitioner partitioner, ResultSet rs, int occurrenceId) throws SQLException {
271

  
272
	    List<NamedArea> areas = new ArrayList<>();
526 273

  
527 274
		if (state.getConfig().isUseEmAreaVocabulary()){
528
			Integer areaId = rs.getInt("AreaId");
529
	        NamedArea area = this.euroMedAreas.get(areaId);
275
		    Integer areaId = rs.getInt("AreaId");
276
			NamedArea area = getAreaByAreaId(areaId);
277
			if (area == null){
278
			    logger.warn("Area for areaId " + areaId + " not found.");
279
			}
530 280
			areas.add(area);
531 281
		}else{
532 282
	        String tdwgCodeString = rs.getString("TDWGCode");
......
566 316

  
567 317
	@Override
568 318
	public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs, BerlinModelImportState state) {
569
		String nameSpace;
570
		Class<?> cdmClass;
571
		Set<String> idSet;
572
		Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
573 319

  
574 320
		try{
321

  
322
		    Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<>();
575 323
			Set<String> taxonIdSet = new HashSet<String>();
576 324
			while (rs.next()){
577 325
				handleForeignKey(rs, taxonIdSet, "taxonId");
578 326
			}
579 327

  
580 328
			//taxon map
581
			nameSpace = BerlinModelTaxonImport.NAMESPACE;
582
			cdmClass = TaxonBase.class;
583
			idSet = taxonIdSet;
584
			Map<String, TaxonBase> objectMap = (Map<String, TaxonBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
329
			String nameSpace = BerlinModelTaxonImport.NAMESPACE;
330
			Class<?> cdmClass = TaxonBase.class;
331
			Set<String> idSet = taxonIdSet;
332
			Map<String, ? extends CdmBase> objectMap = (Map<String, TaxonBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
585 333
			result.put(nameSpace, objectMap);
586 334

  
335
			return result;
587 336
		} catch (SQLException e) {
588 337
			throw new RuntimeException(e);
589 338
		}
590
		return result;
591 339
	}
592 340

  
593 341

  
594

  
595 342
	/**
596 343
     * Tests if a distribution with the same tdwgArea and the same status already exists in the description.
597 344
     * If so the old distribution is returned

Also available in: Unified diff