Revision e1f5fda9
Added by Andreas Müller over 7 years ago
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ClassificationServiceImpl.java | ||
---|---|---|
30 | 30 |
import eu.etaxonomy.cdm.api.service.config.CreateHierarchyForClassificationConfigurator; |
31 | 31 |
import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandling; |
32 | 32 |
import eu.etaxonomy.cdm.api.service.config.TaxonDeletionConfigurator; |
33 |
import eu.etaxonomy.cdm.api.service.dto.EntityDTO; |
|
33 | 34 |
import eu.etaxonomy.cdm.api.service.dto.GroupedTaxonDTO; |
35 |
import eu.etaxonomy.cdm.api.service.dto.TaxonInContextDTO; |
|
34 | 36 |
import eu.etaxonomy.cdm.api.service.pager.Pager; |
35 | 37 |
import eu.etaxonomy.cdm.api.service.pager.PagerUtils; |
36 | 38 |
import eu.etaxonomy.cdm.api.service.pager.impl.AbstractPagerImpl; |
... | ... | |
49 | 51 |
import eu.etaxonomy.cdm.model.taxon.Classification; |
50 | 52 |
import eu.etaxonomy.cdm.model.taxon.ITaxonNodeComparator; |
51 | 53 |
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode; |
54 |
import eu.etaxonomy.cdm.model.taxon.Synonym; |
|
52 | 55 |
import eu.etaxonomy.cdm.model.taxon.Taxon; |
56 |
import eu.etaxonomy.cdm.model.taxon.TaxonBase; |
|
53 | 57 |
import eu.etaxonomy.cdm.model.taxon.TaxonNode; |
54 | 58 |
import eu.etaxonomy.cdm.persistence.dao.initializer.IBeanInitializer; |
55 | 59 |
import eu.etaxonomy.cdm.persistence.dao.taxon.IClassificationDao; |
56 | 60 |
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonDao; |
57 | 61 |
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonNodeDao; |
58 | 62 |
import eu.etaxonomy.cdm.persistence.dto.ClassificationLookupDTO; |
63 |
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto; |
|
64 |
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto.TaxonStatus; |
|
59 | 65 |
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache; |
60 | 66 |
import eu.etaxonomy.cdm.persistence.query.OrderHint; |
61 | 67 |
import eu.etaxonomy.cdm.strategy.cache.common.IIdentifiableEntityCacheStrategy; |
... | ... | |
77 | 83 |
@Autowired |
78 | 84 |
private ITaxonDao taxonDao; |
79 | 85 |
|
86 |
@Autowired |
|
87 |
private ITaxonNodeService taxonNodeService; |
|
88 |
|
|
80 | 89 |
@Autowired |
81 | 90 |
private IBeanInitializer defaultBeanInitializer; |
82 | 91 |
|
... | ... | |
695 | 704 |
return taxonNodeUuid; |
696 | 705 |
} |
697 | 706 |
|
707 |
/** |
|
708 |
* {@inheritDoc} |
|
709 |
*/ |
|
710 |
@Override |
|
711 |
public TaxonInContextDTO getTaxonInContext(UUID classificationUuid, UUID taxonUuid, |
|
712 |
Boolean doChildren, Boolean doSynonyms, List<UUID> ancestorMarkers, |
|
713 |
NodeSortMode sortMode) { |
|
714 |
TaxonInContextDTO result = new TaxonInContextDTO(); |
|
715 |
TaxonBase<?> taxonBase = taxonDao.load(taxonUuid); |
|
716 |
|
|
717 |
TaxonNameBase<?,?> name = taxonBase.getName(); |
|
718 |
result.setNameUuid(name.getUuid()); |
|
719 |
result.setNameLabel(name.getTitleCache()); |
|
720 |
if (name.isInstanceOf(NonViralName.class)){ |
|
721 |
NonViralName<?> nvn = CdmBase.deproxy(name, NonViralName.class); |
|
722 |
|
|
723 |
result.setNameWithoutAuthor(nvn.getNameCache()); |
|
724 |
result.setGenusOrUninomial(nvn.getGenusOrUninomial()); |
|
725 |
result.setInfraGenericEpithet(nvn.getInfraGenericEpithet()); |
|
726 |
result.setSpeciesEpithet(nvn.getSpecificEpithet()); |
|
727 |
result.setInfraSpecificEpithet(nvn.getInfraSpecificEpithet()); |
|
728 |
|
|
729 |
result.setAuthorship(nvn.getAuthorshipCache()); |
|
730 |
|
|
731 |
Rank rank = name.getRank(); |
|
732 |
if (rank != null){ |
|
733 |
result.setRankUuid(rank.getUuid()); |
|
734 |
result.setRankLabel(rank.getTitleCache()); |
|
735 |
} |
|
736 |
} |
|
737 |
|
|
738 |
UUID taxonNodeUuid = getTaxonNodeUuidByTaxonUuid(classificationUuid, taxonUuid); |
|
739 |
result.setTaxonNodeUuid(taxonNodeUuid); |
|
740 |
|
|
741 |
boolean recursive = false; |
|
742 |
int pageSize = Integer.MAX_VALUE; |
|
743 |
int pageIndex = 0; |
|
744 |
Pager<TaxonNodeDto> children = taxonNodeService.pageChildNodesDTOs(taxonNodeUuid, recursive, doSynonyms, sortMode, pageSize, pageIndex); |
|
745 |
|
|
746 |
//children |
|
747 |
for (TaxonNodeDto childDto : children.getRecords()){ |
|
748 |
if (doChildren && childDto.getStatus().equals(TaxonStatus.Accepted)){ |
|
749 |
EntityDTO<Taxon> child = new EntityDTO<Taxon>(childDto.getTaxonUuid(), childDto.getTitleCache()); |
|
750 |
result.addChild(child); |
|
751 |
}else if (doSynonyms && childDto.getStatus().isSynonym()){ |
|
752 |
EntityDTO<Synonym> child = new EntityDTO<Synonym>(childDto.getTaxonUuid(), childDto.getTitleCache()); |
|
753 |
result.addSynonym(child); |
|
754 |
} |
|
755 |
} |
|
756 |
|
|
757 |
//marked ancestors |
|
758 |
return result; |
|
759 |
} |
|
760 |
|
|
698 | 761 |
} |
Also available in: Unified diff
ref #6065 first implementation of taxonInContext service