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/AlgaTerraDnaImport.java
27 27
import org.springframework.format.datetime.joda.DateTimeParser;
28 28
import org.springframework.stereotype.Component;
29 29

  
30
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade.DerivedUnitType;
31 30
import eu.etaxonomy.cdm.io.algaterra.validation.AlgaTerraDnaImportValidator;
32 31
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportConfigurator;
33 32
import eu.etaxonomy.cdm.io.berlinModel.in.BerlinModelImportState;
......
37 36
import eu.etaxonomy.cdm.model.common.Annotation;
38 37
import eu.etaxonomy.cdm.model.common.AnnotationType;
39 38
import eu.etaxonomy.cdm.model.common.CdmBase;
39
import eu.etaxonomy.cdm.model.common.DefinedTerm;
40 40
import eu.etaxonomy.cdm.model.common.Language;
41 41
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
42 42
import eu.etaxonomy.cdm.model.description.TaxonDescription;
43 43
import eu.etaxonomy.cdm.model.molecular.DnaSample;
44
import eu.etaxonomy.cdm.model.molecular.GenBankAccession;
45
import eu.etaxonomy.cdm.model.molecular.Locus;
46 44
import eu.etaxonomy.cdm.model.molecular.Sequence;
47 45
import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
48 46
import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
49
import eu.etaxonomy.cdm.model.occurrence.DerivedUnitBase;
50
import eu.etaxonomy.cdm.model.occurrence.FieldObservation;
47
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
48
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
51 49
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
52 50
import eu.etaxonomy.cdm.model.reference.Reference;
53 51
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
......
124 122
		Set<SpecimenOrObservationBase> samplesToSave = new HashSet<SpecimenOrObservationBase>();
125 123
		Set<TaxonBase> taxaToSave = new HashSet<TaxonBase>();
126 124
		
127
		Map<String, FieldObservation> ecoFactFieldObservationMap = (Map<String, FieldObservation>) partitioner.getObjectMap(ECO_FACT_FIELD_OBSERVATION_NAMESPACE);
125
		Map<String, FieldUnit> ecoFactFieldObservationMap = (Map<String, FieldUnit>) partitioner.getObjectMap(ECO_FACT_FIELD_OBSERVATION_NAMESPACE);
128 126
		
129 127
		ResultSet rs = partitioner.getResultSet();
130 128
		
......
165 163
					Sequence sequence = makeSequence(rs, dnaSample, dnaFactId, importDateTime);
166 164
					
167 165
					//locus
168
					Locus locus = Locus.NewInstance(keywordsStr, definitionStr);
166
					//FIXME Deduplicate DnaMarker
167
					DefinedTerm locus = DefinedTerm.NewDnaMarkerInstance(definitionStr, keywordsStr, null);
169 168
					locus.setCreated(importDateTime);
170
					sequence.setLocus(locus);
169
					this.getTermService().save(locus);
170
					
171
					sequence.setDnaMarker(locus);
171 172
					
172 173
					//GenBank Accession
173 174
					makeGenBankAccession(rs, sequence, importDateTime, dnaFactId);
......
198 199
							ref.setTitleCache(referenceStr, true);
199 200
							referenceMap.put(referenceStr, ref);
200 201
						}
201
						sequence.setPublishedIn(ref);
202
						sequence.addCitation(ref);
202 203
					}
203 204
					
204 205
					//save
......
229 230
		Integer ecoFactFk = nullSafeInt(rs, "ecoFactId");
230 231
		if (ecoFactFk != null){
231 232
			
232
			DerivedUnitBase<?> ecoFact = (DerivedUnitBase<?>)state.getRelatedObject(ECO_FACT_DERIVED_UNIT_NAMESPACE, ecoFactFk.toString());
233
			DerivedUnit ecoFact = (DerivedUnit)state.getRelatedObject(ECO_FACT_DERIVED_UNIT_NAMESPACE, ecoFactFk.toString());
233 234
			if (ecoFact == null){
234 235
				logger.warn("EcoFact is null for ecoFactFk: " + ecoFactFk + ", DnaFactId: " + dnaFactId);
235 236
			}else{
......
284 285

  
285 286
	private Sequence makeSequence(ResultSet rs, DnaSample dnaSample, int dnaFactId, DateTime importDateTime) throws SQLException {
286 287
		String sequenceStr = rs.getString("PlainSequence");
287
		Integer originalLen = null;
288 288
		Integer seqLen = nullSafeInt(rs, "SeqLen");
289
		if (seqLen == null){
290
			if (sequenceStr != null){
291
				seqLen = sequenceStr.length();
292
			}
293
		}
294
		
295
		if (sequenceStr != null){
296
			originalLen = sequenceStr.length();
297
			if (originalLen > 255){
298
				logger.warn("Sequence truncated. Id: " + dnaFactId);
299
				sequenceStr = sequenceStr.substring(0, 255);
300
			}
301
		}else{
289

  
290
		if (sequenceStr == null){
302 291
			logger.warn("PlainSequence is null. Id: " + dnaFactId);
303
		}
304
		Sequence sequence = Sequence.NewInstance(sequenceStr);
305
		sequence.setLength(seqLen);
306
		if (! originalLen.equals(seqLen)){
307
			logger.warn("SeqLen (" + seqLen+ ") and OriginalLen ("+originalLen+") differ for dnaFact: "  + dnaFactId);
292
		}else{
293
			if (sequenceStr.length() != seqLen){
294
				logger.warn("SeqLen (" + seqLen+ ") and OriginalLen ("+sequenceStr.length()+") differ for dnaFact: "  + dnaFactId);
295
			}
308 296
		}
309 297
		
298
		Sequence sequence = Sequence.NewInstance(sequenceStr, seqLen);
310 299
		sequence.setCreated(importDateTime);
311
		dnaSample.addSequences(sequence);
300
		dnaSample.addSequence(sequence);
312 301
		return sequence;
313 302
	}
314 303

  
......
343 332
				accessionStr = null;
344 333
			}
345 334
			if (isGenBankAccessionNumber(accessionStr, versionStr, genBankUri, dnaFactId) || genBankUri != null){
346
				GenBankAccession accession = GenBankAccession.NewInstance(accessionStr);
347
				accession.setUri(genBankUri);
348
				accession.setCreated(importDateTime);
349
				sequence.addGenBankAccession(accession);				
335
				sequence.setGeneticAccessionNumber(accessionStr);
350 336
			}
351 337
		}
352 338
	}
......
377 363
		return ECO_FACT_FIELD_OBSERVATION_NAMESPACE;
378 364
	}
379 365

  
380

  
381
	private DerivedUnitType makeDerivedUnitType(String recordBasis) {
382
		DerivedUnitType result = null;
383
		if (StringUtils.isBlank(recordBasis)){
384
			result = DerivedUnitType.DerivedUnit;
385
		} else if (recordBasis.equalsIgnoreCase("FossileSpecimen")){
386
			result = DerivedUnitType.Fossil;
387
		}else if (recordBasis.equalsIgnoreCase("HumanObservation")){
388
			result = DerivedUnitType.Observation;
389
		}else if (recordBasis.equalsIgnoreCase("Literature")){
390
			logger.warn("Literature record basis not yet supported");
391
			result = DerivedUnitType.DerivedUnit;
392
		}else if (recordBasis.equalsIgnoreCase("LivingSpecimen")){
393
			result = DerivedUnitType.LivingBeing;
394
		}else if (recordBasis.equalsIgnoreCase("MachineObservation")){
395
			logger.warn("MachineObservation record basis not yet supported");
396
			result = DerivedUnitType.Observation;
397
		}else if (recordBasis.equalsIgnoreCase("PreservedSpecimen")){
398
			result = DerivedUnitType.Specimen;
399
		}
400
		return result;
401
	}
402

  
403
	/* (non-Javadoc)
404
	 * @see eu.etaxonomy.cdm.io.berlinModel.in.IPartitionedIO#getRelatedObjectsForPartition(java.sql.ResultSet)
405
	 */
366
	@Override
406 367
	public Map<Object, Map<String, ? extends CdmBase>> getRelatedObjectsForPartition(ResultSet rs) {
407 368
		String nameSpace;
408
		Class cdmClass;
369
		Class<?> cdmClass;
409 370
		Set<String> idSet;
410 371
		Map<Object, Map<String, ? extends CdmBase>> result = new HashMap<Object, Map<String, ? extends CdmBase>>();
411 372
		
......
430 391

  
431 392
			//eco fact derived unit map
432 393
			nameSpace = AlgaTerraFactEcologyImport.ECO_FACT_DERIVED_UNIT_NAMESPACE;
433
			cdmClass = DerivedUnitBase.class;
394
			cdmClass = DerivedUnit.class;
434 395
			idSet = ecoFactFkSet;
435
			Map<String, DerivedUnitBase> derivedUnitMap = (Map<String, DerivedUnitBase>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
396
			Map<String, DerivedUnit> derivedUnitMap = (Map<String, DerivedUnit>)getCommonService().getSourcedObjectsByIdInSource(cdmClass, idSet, nameSpace);
436 397
			result.put(nameSpace, derivedUnitMap);
437 398
			
438 399
		} catch (SQLException e) {
......
441 402
		return result;
442 403
	}
443 404

  
444

  
445

  
446
	/* (non-Javadoc)
447
	 * @see eu.etaxonomy.cdm.io.common.CdmIoBase#doCheck(eu.etaxonomy.cdm.io.common.IoStateBase)
448
	 */
449 405
	@Override
450 406
	protected boolean doCheck(BerlinModelImportState state){
451 407
		IOValidator<BerlinModelImportState> validator = new AlgaTerraDnaImportValidator();

Also available in: Unified diff