Project

General

Profile

« Previous | Next » 

Revision ca169a1e

Added by Andreas Müller over 4 years ago

ref #8509 improve findKingdomIdFromTreeIndex

View differences:

cdm-pesi/src/main/java/eu/etaxonomy/cdm/io/pesi/out/PesiTaxonExport.java
693 693
		return success;
694 694
	}
695 695

  
696
    private Integer findKingdomIdFromTreeIndex(TaxonBase<?> taxon,PesiExportState state) {
697
        if (taxon instanceof Taxon){
698
            Set<TaxonNode> nodes = ((Taxon)taxon).getTaxonNodes();
696
    private Integer findKingdomIdFromTreeIndex(TaxonBase<?> taxonBase,PesiExportState state) {
697
        Taxon taxon;
698
        if (taxonBase instanceof Synonym){
699
            taxon = ((Synonym) taxonBase).getAcceptedTaxon();
700
        }else{
701
            taxon = (Taxon)taxonBase;
702
        }
703
        if (taxon != null){
704
            Set<TaxonNode> nodes = taxon.getTaxonNodes();
705
            if (nodes.size()>1){
706
                logger.warn("The taxon has more then 1 taxon node: " + taxon.getTitleCache() + ". Take arbitrary one.");
707
            }
699 708
            if (!nodes.isEmpty()){
700 709
                String treeIndex = nodes.iterator().next().treeIndex();
701 710

  
702
                Pattern pattern = Pattern.compile("#t[0-9]+#[0-9]+#[0-9]+#");
711
                Pattern pattern = Pattern.compile("#t[0-9]+#([0-9]+#){3}");
703 712
                Matcher matcher = pattern.matcher(treeIndex);
704 713
                Integer kingdomID = null;
705 714
                if(matcher.find()) {
706 715
                    String treeIndexKingdom = matcher.group(0);
707 716
                    kingdomID = state.getTreeIndexKingdomMap().get(treeIndexKingdom);
717
                }else{
718
                    pattern = Pattern.compile("#t[0-9]+#([0-9]+#){2}");
719
                    matcher = pattern.matcher(treeIndex);
720
                    if(matcher.find()) {
721
                        String treeIndexKingdom = matcher.group(0);
722
                        kingdomID = state.getTreeIndexKingdomMap().get(treeIndexKingdom);
723
                    }
724
                }
725
                if(kingdomID == null){
726
                    logger.warn("Kingdom could not be defined for treeindex " + treeIndex);
708 727
                }
709 728
                return kingdomID;
710 729
            } else {
711
                logger.debug("The taxon has no nodes: " + taxon.getTitleCache() + " the kingdom is taken from the nomenclatural code: " + PesiTransformer.nomenclaturalCode2Kingdom(nomenclaturalCode));
730
                logger.warn("The taxon has no nodes: " + taxon.getTitleCache() + ". The kingdom is taken from the nomenclatural code: " + PesiTransformer.nomenclaturalCode2Kingdom(nomenclaturalCode));
712 731
                return PesiTransformer.nomenclaturalCode2Kingdom(nomenclaturalCode);
713
        }} else{
714
           return PesiTransformer.nomenclaturalCode2Kingdom(nomenclaturalCode);
732
            }
733
        } else{
734
            logger.warn("Taxon is synonym with no accepted taxon attached: " + taxonBase.getTitleCache() + ". The kingdom is taken from the nomenclatural code: " + PesiTransformer.nomenclaturalCode2Kingdom(nomenclaturalCode) );
735
            return PesiTransformer.nomenclaturalCode2Kingdom(nomenclaturalCode);
715 736
        }
716 737
    }
717 738

  

Also available in: Unified diff