Project

General

Profile

« Previous | Next » 

Revision bb38665e

Added by Andreas Müller over 10 years ago

reintegrate cdmlib-app-3.3 branch into trunk

View differences:

app-import/src/main/java/eu/etaxonomy/cdm/io/algaterra/AlgaTerraSpecimenImportBase.java
24 24
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportBase;
25 25
import eu.etaxonomy.cdm.io.common.ResultSetPartitioner;
26 26
import eu.etaxonomy.cdm.io.common.Source;
27
import eu.etaxonomy.cdm.io.common.TdwgAreaProvider;
27 28
import eu.etaxonomy.cdm.model.agent.Team;
28 29
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
29 30
import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
31
import eu.etaxonomy.cdm.model.common.TermType;
30 32
import eu.etaxonomy.cdm.model.common.TimePeriod;
31 33
import eu.etaxonomy.cdm.model.description.DescriptionBase;
32 34
import eu.etaxonomy.cdm.model.description.Feature;
......
36 38
import eu.etaxonomy.cdm.model.location.NamedArea;
37 39
import eu.etaxonomy.cdm.model.location.Point;
38 40
import eu.etaxonomy.cdm.model.location.ReferenceSystem;
39
import eu.etaxonomy.cdm.model.location.TdwgArea;
40
import eu.etaxonomy.cdm.model.location.WaterbodyOrCountry;
41
import eu.etaxonomy.cdm.model.location.Country;
41 42
import eu.etaxonomy.cdm.model.occurrence.Collection;
43
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
42 44
import eu.etaxonomy.cdm.model.reference.Reference;
43 45
import eu.etaxonomy.cdm.model.taxon.Taxon;
44 46

  
......
98 100
			TransactionStatus txStatus = this.startTransaction();
99 101
		
100 102
			boolean isOrdered = true;
101
			OrderedTermVocabulary<State> climateVoc = (OrderedTermVocabulary)getVocabulary(uuidVocAlgaTerraClimate, "Climate", "Climate", abbrevLabel, uri, isOrdered, null);
102
			OrderedTermVocabulary<State> habitatVoc = (OrderedTermVocabulary)getVocabulary(uuidVocAlgaTerraHabitat, "Habitat", "Habitat", abbrevLabel, uri, isOrdered, null);
103
			OrderedTermVocabulary<State> lifeformVoc = (OrderedTermVocabulary)getVocabulary(uuidVocAlgaTerraLifeForm, "Lifeform", "Lifeform", abbrevLabel, uri, isOrdered, null);
103
			OrderedTermVocabulary<State> climateVoc = (OrderedTermVocabulary)getVocabulary(TermType.State, uuidVocAlgaTerraClimate, "Climate", "Climate", abbrevLabel, uri, isOrdered, null);
104
			OrderedTermVocabulary<State> habitatVoc = (OrderedTermVocabulary)getVocabulary(TermType.State, uuidVocAlgaTerraHabitat, "Habitat", "Habitat", abbrevLabel, uri, isOrdered, null);
105
			OrderedTermVocabulary<State> lifeformVoc = (OrderedTermVocabulary)getVocabulary(TermType.State, uuidVocAlgaTerraLifeForm, "Lifeform", "Lifeform", abbrevLabel, uri, isOrdered, null);
104 106
			
105 107
			
106 108
			Feature feature = getFeature(state, uuidFeatureAlgaTerraClimate, "Climate","Climate", null, null);
......
174 176
			String geoCodeMethod = rs.getString("GeoCodeMethod");
175 177
			
176 178
			Integer altitude = nullSafeInt(rs, "Altitude");
177
			Integer lowerAltitude = nullSafeInt(rs,"AltitudeLowerValue");
179
			Integer lowerAltitude = nullSafeInt(rs, "AltitudeLowerValue");
178 180
			String altitudeUnit = rs.getString("AltitudeUnit");
179 181
			Double depth = nullSafeDouble(rs, "Depth");
180 182
			Double depthLow = nullSafeDouble(rs, "DepthLow");
......
201 203
				if (lowerAltitude == null){
202 204
					facade.setAbsoluteElevation(altitude);
203 205
				}else{
204
			   		if (! facade.isEvenDistance(lowerAltitude, altitude)){
205
			   			//FIXME there is a ticket for this
206
			   			altitude = altitude + 1;
207
			   			logger.info("Current implementation of altitude does not allow uneven distances");
208
			   		}
209 206
					facade.setAbsoluteElevationRange(lowerAltitude,altitude);
210 207
			   	}
211 208
			}
212 209
			if ( depth != null){
213
				//FIXME needs model change to accept double #3072
214
				Integer intDepth = depth.intValue();
215 210
				if (depthLow == null){
216
					facade.setDistanceToWaterSurface(intDepth);
211
					facade.setDistanceToWaterSurface(depth);
217 212
				}else{
218
					//FIXME range not yet in model #3074
219
			   		facade.setDistanceToWaterSurface(intDepth);
213
					//TODO which direction is correct?
214
					facade.setDistanceToWaterSurfaceRange(depth, depthLow);
220 215
			   	}
221 216
			}
222 217
			
......
234 229
			
235 230
			//id, created, updated, notes
236 231
			if (unitId != null){
237
				this.doIdCreatedUpdatedNotes(state, facade.innerFieldObservation(), rs, unitId, getFieldObservationNameSpace());
232
				this.doIdCreatedUpdatedNotes(state, facade.innerFieldUnit(), rs, unitId, getFieldObservationNameSpace());
238 233
			}else{
239
				logger.warn("FieldObservation has no unitId: " +  facade.innerFieldObservation() + ": " + getFieldObservationNameSpace());
234
				logger.warn("FieldObservation has no unitId: " +  facade.innerFieldUnit() + ": " + getFieldObservationNameSpace());
240 235
			}
241 236
		} catch (Exception e) {
242 237
			throw new RuntimeException(e);
......
276 271
	
277 272

  
278 273
	protected DescriptionBase getFieldObservationDescription(DerivedUnitFacade facade) {
279
		Set<DescriptionBase> descriptions = facade.innerFieldObservation().getDescriptions();
274
		Set<DescriptionBase> descriptions = facade.innerFieldUnit().getDescriptions();
280 275
		for (DescriptionBase desc : descriptions){
281 276
			if (desc.isImageGallery() == false){
282 277
				return desc;
283 278
			}
284 279
		}
285
		SpecimenDescription specDesc = SpecimenDescription.NewInstance(facade.innerFieldObservation());
280
		SpecimenDescription specDesc = SpecimenDescription.NewInstance(facade.innerFieldUnit());
286 281
		descriptions.add(specDesc);
287 282
		return specDesc;
288 283
	}
......
295 290
	   		NamedArea tdwgArea;
296 291
	   		String tdwg4 = rs.getString("L4Code");
297 292
	   		if (isNotBlank(tdwg4)){
298
	   			tdwgArea = TdwgArea.getAreaByTdwgAbbreviation(tdwg4);
293
	   			tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation(tdwg4);
299 294
	   		}else{
300 295
	   			String tdwg3 = rs.getString("L3Code");
301 296
	   			if (isNotBlank(tdwg3)){
302
	   				tdwgArea = TdwgArea.getAreaByTdwgAbbreviation(tdwg3);
297
	   				tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation(tdwg3);
303 298
	   			}else{
304 299
	   				Integer tdwg2 = rs.getInt("L2Code");   				
305
	   				tdwgArea = TdwgArea.getAreaByTdwgAbbreviation(String.valueOf(tdwg2));
300
	   				tdwgArea = TdwgAreaProvider.getAreaByTdwgAbbreviation(String.valueOf(tdwg2));
306 301
		   		}
307 302
	   		}
308 303
	   		if (tdwgArea == null){
......
312 307
	   		}
313 308
	   		
314 309
	   		//Countries
315
	   		WaterbodyOrCountry country = null;
310
	   		Country country = null;
316 311
	   		String isoCountry = rs.getString("ISOCountry");
317 312
	   		String countryStr = rs.getString("Country");
318 313
	   		if (isNotBlank(isoCountry)){
319
		   		country = WaterbodyOrCountry.getWaterbodyOrCountryByIso3166A2(isoCountry);
314
		   		country = Country.getCountryByIso3166A2(isoCountry);
320 315
	   		}else if (isNotBlank(countryStr)){
321 316
	   			logger.warn("Country exists but no ISO code");
322 317
	   		}
......
329 324
	   	}
330 325
	    
331 326
	   	//Waterbody
332
	   	WaterbodyOrCountry waterbody = null;
327
	   	NamedArea waterbody = null;
333 328
	   	String waterbodyStr = rs.getString("WaterBody");
334 329
	   	if (isNotBlank(waterbodyStr)){
335 330
	   		if (waterbodyStr.equals("Atlantic Ocean")){
336
	   			waterbody = WaterbodyOrCountry.ATLANTICOCEAN();
331
	   			waterbody = NamedArea.ATLANTICOCEAN();
337 332
	   		}else{
338 333
	   			logger.warn("Waterbody not recognized: " + waterbody);
339 334
	   		}
......
348 343
	}
349 344

  
350 345

  
351
	
346
	protected SpecimenOrObservationType makeDerivedUnitType(String recordBasis) {
347
		SpecimenOrObservationType result = null;
348
		if (StringUtils.isBlank(recordBasis)){
349
			result = SpecimenOrObservationType.DerivedUnit;
350
		} else if (recordBasis.equalsIgnoreCase("FossileSpecimen")){
351
			result = SpecimenOrObservationType.Fossil;
352
		}else if (recordBasis.equalsIgnoreCase("HumanObservation")){
353
			result = SpecimenOrObservationType.HumanObservation;
354
		}else if (recordBasis.equalsIgnoreCase("Literature")){
355
			//FIXME
356
			logger.warn("Literature record basis not yet supported");
357
			result = SpecimenOrObservationType.DerivedUnit;
358
		}else if (recordBasis.equalsIgnoreCase("LivingSpecimen")){
359
			result = SpecimenOrObservationType.LivingSpecimen;
360
		}else if (recordBasis.equalsIgnoreCase("MachineObservation")){
361
			result = SpecimenOrObservationType.MachineObservation;
362
		}else if (recordBasis.equalsIgnoreCase("Observation")){
363
			result = SpecimenOrObservationType.Observation;
364
		}else if (recordBasis.equalsIgnoreCase("LivingCulture")){
365
			//FIXME
366
			logger.warn("LivingCulture record basis not yet supported");
367
			result = SpecimenOrObservationType.DerivedUnit;
368
		}else if (recordBasis.equalsIgnoreCase("PreservedSpecimen")){
369
			result = SpecimenOrObservationType.PreservedSpecimen;
370
		}
371
		return result;
372
	}
352 373

  
374

  
375
	protected Feature makeFeature(SpecimenOrObservationType type) {
376
		if (type.equals(SpecimenOrObservationType.DerivedUnit)){
377
			return Feature.INDIVIDUALS_ASSOCIATION();
378
		}else if (type.isFeatureObservation()){
379
			return Feature.OBSERVATION();
380
		}else if (type.isPreservedSpecimen()){
381
			return Feature.SPECIMEN();
382
		}
383
		logger.warn("No feature defined for derived unit type: " + type);
384
		return null;
385
	}
386
	
353 387
	private ReferenceSystem makeRefrenceSystem(String geoCodeMethod, AlgaTerraImportState state) {
354 388
		if (StringUtils.isBlank(geoCodeMethod)){
355 389
			return null;

Also available in: Unified diff