Project

General

Profile

« Previous | Next » 

Revision 3faf7d1d

Added by Andreas Müller over 2 years ago

ref #9918 finetuning for caryophyllaceae import

View differences:

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