Revision ca169a1e
Added by Andreas Müller over 4 years ago
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
ref #8509 improve findKingdomIdFromTreeIndex