Revision 3faf7d1d
Added by Andreas Müller over 2 years ago
app-import/src/main/java/eu/etaxonomy/cdm/io/caryo/KewExcelTaxonImport.java | ||
---|---|---|
45 | 45 |
import eu.etaxonomy.cdm.model.taxon.SynonymType; |
46 | 46 |
import eu.etaxonomy.cdm.model.taxon.Taxon; |
47 | 47 |
import eu.etaxonomy.cdm.model.taxon.TaxonBase; |
48 |
import eu.etaxonomy.cdm.model.taxon.TaxonNode; |
|
48 | 49 |
import eu.etaxonomy.cdm.strategy.parser.NonViralNameParserImpl; |
49 | 50 |
|
50 | 51 |
/** |
... | ... | |
459 | 460 |
this.classification = null; |
460 | 461 |
this.secReference = null; |
461 | 462 |
this.sourceReference = null; |
463 |
this.orphanedSynonymTaxon = null; |
|
462 | 464 |
TransactionStatus tx = this.startTransaction(); |
463 | 465 |
state.setTransactionStatus(tx); |
464 | 466 |
logger.info(line + "New transaction started."); |
... | ... | |
477 | 479 |
}else if (taxonBase.isInstanceOf(Synonym.class)){ |
478 | 480 |
Taxon taxon = getAcceptedTaxon(record, line, kewId); |
479 | 481 |
if (taxon == null){ |
480 |
logger.warn(kewId + "Accepted taxon not found: " + getValue(record, Kew_Rel_Acc_Name_ID) + line); |
|
481 | 482 |
taxon = getOrphanedSynonymTaxon(state); |
482 |
}else{ |
|
483 |
taxon.addSynonym(CdmBase.deproxy(taxonBase, Synonym.class), SynonymType.SYNONYM_OF()); |
|
483 |
logger.warn(kewId + "Accepted taxon not found. Added synonym to 'orphaned synonym taxon': " + getValue(record, Kew_Rel_Acc_Name_ID) + line); |
|
484 | 484 |
} |
485 |
taxon.addSynonym(CdmBase.deproxy(taxonBase, Synonym.class), SynonymType.SYNONYM_OF()); |
|
485 | 486 |
}else{ |
486 | 487 |
logger.warn("Unhandled"); |
487 | 488 |
} |
... | ... | |
502 | 503 |
|
503 | 504 |
} |
504 | 505 |
|
506 |
Taxon orphanedSynonymTaxon; |
|
505 | 507 |
private Taxon getOrphanedSynonymTaxon(SimpleExcelTaxonImportState<CONFIG> state) { |
506 |
UUID uuid = UUID.fromString(KEW_ORPHANED_PLACEHOLDER_TAXON); |
|
507 |
Taxon placeholderTaxon = CdmBase.deproxy(getTaxonService().find(uuid), Taxon.class); |
|
508 |
if (placeholderTaxon == null){ |
|
508 |
if (orphanedSynonymTaxon != null) { |
|
509 |
return orphanedSynonymTaxon; |
|
510 |
} |
|
511 |
UUID orphanedTaxonUuid = UUID.fromString(KEW_ORPHANED_PLACEHOLDER_TAXON); |
|
512 |
orphanedSynonymTaxon = CdmBase.deproxy(getTaxonService().find(orphanedTaxonUuid), Taxon.class); |
|
513 |
if (orphanedSynonymTaxon == null){ |
|
509 | 514 |
TaxonName placeholderName = TaxonNameFactory.NewBacterialInstance(Rank.SUBFAMILY()); |
510 | 515 |
placeholderName.setTitleCache("Orphaned_Synonyms_KEW", true); |
511 |
placeholderTaxon = Taxon.NewInstance(placeholderName, getSecReference(state, state.getOriginalRecord())); |
|
516 |
orphanedSynonymTaxon = Taxon.NewInstance(placeholderName, getSecReference(state, state.getOriginalRecord())); |
|
517 |
orphanedSynonymTaxon.setUuid(orphanedTaxonUuid); |
|
512 | 518 |
Taxon unplacedTaxon = CdmBase.deproxy(getTaxonService().find(UUID.fromString(KEW_UNPLACED_NODE)), Taxon.class); |
513 |
getClassification(state).addParentChild(unplacedTaxon, placeholderTaxon, null, null); |
|
519 |
TaxonNode orphandNode = getClassification(state).addParentChild(unplacedTaxon, orphanedSynonymTaxon, null, null); |
|
520 |
getTaxonNodeService().save(orphandNode); |
|
514 | 521 |
} |
515 |
return placeholderTaxon;
|
|
522 |
return orphanedSynonymTaxon;
|
|
516 | 523 |
} |
517 | 524 |
|
518 | 525 |
private Classification classification; |
Also available in: Unified diff
ref #9918 finetuning for caryophyllaceae import