1 package eu
.etaxonomy
.cdm
.api
.service
;
3 import java
.util
.ArrayList
;
6 import org
.springframework
.beans
.factory
.annotation
.Autowired
;
7 import org
.springframework
.stereotype
.Service
;
8 import org
.springframework
.transaction
.annotation
.Transactional
;
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
;
19 @Transactional(readOnly
= true)
20 public class IdentificationKeyServiceImpl
implements IIdentificationKeyService
{
22 IIdentificationKeyDao dao
;
25 public void setDao(IIdentificationKeyDao dao
) {
30 public Pager
<IIdentificationKey
> page(Integer pageSize
, Integer pageNumber
, List
<String
> propertyPaths
) {
31 Integer numberOfResults
= dao
.count();
32 List
<IIdentificationKey
> results
= new ArrayList
<IIdentificationKey
>();
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
);
38 return new DefaultPagerImpl
<IIdentificationKey
>(pageNumber
, numberOfResults
, pageSize
, results
);
43 public <T
extends IIdentificationKey
> Pager
<T
> findKeysConvering(TaxonBase taxon
,
44 Class
<T
> type
, Integer pageSize
,
45 Integer pageNumber
, List
<String
> propertyPaths
) {
47 Long numberOfResults
= dao
.countByTaxonomicScope(taxon
, type
);
48 List
<T
> results
= new ArrayList
<T
>();
49 if(AbstractPagerImpl
.hasResultsInRange(numberOfResults
, pageNumber
, pageSize
)){
50 results
= dao
.findByTaxonomicScope(taxon
, type
, pageSize
, pageNumber
, propertyPaths
);
52 return new DefaultPagerImpl
<T
>(pageNumber
, numberOfResults
.intValue(), pageSize
, results
);