Project

General

Profile

Download (2.25 KB) Statistics
| Branch: | Tag: | Revision:
1
package eu.etaxonomy.cdm.api.service;
2

    
3
import java.util.ArrayList;
4
import java.util.List;
5

    
6
import org.springframework.beans.factory.annotation.Autowired;
7
import org.springframework.stereotype.Service;
8
import org.springframework.transaction.annotation.Transactional;
9

    
10
import eu.etaxonomy.cdm.api.service.pager.Pager;
11
import eu.etaxonomy.cdm.api.service.pager.PagerUtils;
12
import eu.etaxonomy.cdm.api.service.pager.impl.AbstractPagerImpl;
13
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
14
import eu.etaxonomy.cdm.model.description.IIdentificationKey;
15
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
16
import eu.etaxonomy.cdm.persistence.dao.description.IIdentificationKeyDao;
17

    
18
@Service
19
@Transactional(readOnly = true)
20
public class IdentificationKeyServiceImpl implements IIdentificationKeyService {
21

    
22
    IIdentificationKeyDao dao;
23

    
24
    @Autowired
25
    public void setDao(IIdentificationKeyDao dao) {
26
        this.dao = dao;
27
    }
28

    
29
    @Override
30
    public Pager<IIdentificationKey> page(Integer pageSize, Integer pageNumber,	List<String> propertyPaths) {
31
        long numberOfResults = dao.count();
32
        List<IIdentificationKey> results = new ArrayList<>();
33
        if(numberOfResults > 0) { // no point checking again //TODO use AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)
34
            Integer limit = PagerUtils.limitFor(pageSize);
35
            Integer start = PagerUtils.startFor(pageSize, pageNumber);
36
            results = dao.list(limit, start, propertyPaths);
37
        }
38
        return new DefaultPagerImpl<>(pageNumber, numberOfResults, pageSize, results);
39
    }
40

    
41

    
42
    @Override
43
    public <T extends IIdentificationKey> Pager<T> findKeysConvering(TaxonBase taxon,
44
            Class<T> type, Integer pageSize,
45
            Integer pageNumber, List<String> propertyPaths) {
46

    
47
        Long numberOfResults = dao.countByTaxonomicScope(taxon.getUuid(), type);
48
        List<T> results = new ArrayList<T>();
49
        if(AbstractPagerImpl.hasResultsInRange(numberOfResults, pageNumber, pageSize)){
50
            results = dao.findByTaxonomicScope(taxon.getUuid(), type, pageSize, pageNumber, propertyPaths);
51
        }
52
        return new DefaultPagerImpl<T>(pageNumber, numberOfResults, pageSize, results);
53
    }
54

    
55
}
(67-67/97)