Project

General

Profile

« Previous | Next » 

Revision 32ba7109

Added by Andreas Kohlbecker almost 8 years ago

refactoring taxonNode controllers - return dtos from the service layer, support for #5887

View differences:

cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/TaxonNodeServiceImpl.java
32 32
import eu.etaxonomy.cdm.api.service.pager.Pager;
33 33
import eu.etaxonomy.cdm.api.service.pager.PagerUtils;
34 34
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
35
import eu.etaxonomy.cdm.hibernate.HHH_9751_Util;
35 36
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
36 37
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
37 38
import eu.etaxonomy.cdm.model.common.DefinedTerm;
......
51 52
import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;
52 53
import eu.etaxonomy.cdm.persistence.dao.initializer.IBeanInitializer;
53 54
import eu.etaxonomy.cdm.persistence.dao.taxon.ITaxonNodeDao;
55
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
54 56

  
55 57
/**
56 58
 * @author n.hoffmann
......
82 84
    @Override
83 85
    public List<TaxonNode> loadChildNodesOfTaxonNode(TaxonNode taxonNode,
84 86
            List<String> propertyPaths, boolean recursive, NodeSortMode sortMode) {
85
        taxonNode = dao.load(taxonNode.getUuid());
87

  
88
        getSession().refresh(taxonNode);
86 89
        List<TaxonNode> childNodes;
87 90
        if (recursive == true){
88 91
        	childNodes  = dao.listChildrenOf(taxonNode, null, null, null, recursive);
89 92
        }else{
90 93
        	childNodes = new ArrayList<TaxonNode>(taxonNode.getChildNodes());
91 94
        }
95

  
96
        HHH_9751_Util.removeAllNull(childNodes);
97

  
92 98
        if (sortMode != null){
93 99
            Comparator<TaxonNode> comparator = sortMode.newComparator();
94 100
        	Collections.sort(childNodes, comparator);
......
97 103
        return childNodes;
98 104
    }
99 105

  
106
    /**
107
     * {@inheritDoc}
108
     */
109
    @Override
110
    public Pager<TaxonNodeDto> pageChildNodesDTOs(UUID taxonNodeUuid, boolean recursive, NodeSortMode sortMode,
111
            Integer pageSize, Integer pageIndex) {
112

  
113

  
114
        List<TaxonNode> childNodes = loadChildNodesOfTaxonNode(dao.load(taxonNodeUuid), null, recursive, sortMode);
115

  
116
        if (sortMode != null){
117
            Comparator<TaxonNode> comparator = sortMode.newComparator();
118
            Collections.sort(childNodes, comparator);
119
        }
120

  
121
        List<TaxonNodeDto> dtos = new ArrayList<>(pageSize);
122
        int start = PagerUtils.startFor(pageSize, pageIndex);
123
        int limit = PagerUtils.limitFor(pageSize);
124
        Long totalCount = Long.valueOf(childNodes.size());
125
        if(PagerUtils.hasResultsInRange(totalCount, pageIndex, pageSize)) {
126
            for(int i = start; i < start + limit; i++) {
127
                dtos.add(new TaxonNodeDto(childNodes.get(i)));
128
            }
129
        }
130

  
131

  
132
        return new DefaultPagerImpl<TaxonNodeDto>(pageIndex, totalCount, pageSize , dtos);
133
    }
134

  
135
    @Override
136
    public TaxonNodeDto parentDto(UUID taxonNodeUuid) {
137
        TaxonNode taxonNode = dao.load(taxonNodeUuid);
138
        if(taxonNode.getParent() != null) {
139
            return new TaxonNodeDto(taxonNode.getParent());
140
        }
141
        return null;
142
    }
143

  
100 144
    @Override
101 145
    @Autowired
102 146
    protected void setDao(ITaxonNodeDao dao) {
......
628 672
        return result;
629 673
    }
630 674

  
675

  
631 676
}

Also available in: Unified diff