Committing large number of changes relating to versioning implementation (#108),...
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / AnnotatableServiceBase.java
1 package eu.etaxonomy.cdm.api.service;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import eu.etaxonomy.cdm.api.service.pager.Pager;
7 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
8 import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
9 import eu.etaxonomy.cdm.model.common.Annotation;
10 import eu.etaxonomy.cdm.model.common.MarkerType;
11 import eu.etaxonomy.cdm.persistence.dao.common.IAnnotatableDao;
12
13 public abstract class AnnotatableServiceBase<T extends AnnotatableEntity,DAO extends IAnnotatableDao<T>> extends VersionableServiceBase<T, DAO>
14 implements IAnnotatableService<T> {
15
16 public Pager<Annotation> getAnnotations(T annotatedObj, MarkerType status, Integer pageSize, Integer pageNumber) {
17 Integer numberOfResults = dao.countAnnotations(annotatedObj, status);
18
19 List<Annotation> results = new ArrayList<Annotation>();
20 if(numberOfResults > 0) { // no point checking again
21 results = dao.getAnnotations(annotatedObj, status, pageSize, pageNumber);
22 }
23
24 return new DefaultPagerImpl<Annotation>(pageNumber, numberOfResults, pageSize, results);
25 }
26 }