Project

General

Profile

« Previous | Next » 

Revision e1f5fda9

Added by Andreas Müller over 7 years ago

ref #6065 first implementation of taxonInContext service

View differences:

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