Revision e14b9808
Added by Andreas Kohlbecker over 3 years ago
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/BaseController.java | ||
---|---|---|
42 | 42 |
import eu.etaxonomy.cdm.api.service.IService; |
43 | 43 |
import eu.etaxonomy.cdm.api.service.ITaxonNodeService; |
44 | 44 |
import eu.etaxonomy.cdm.api.service.pager.Pager; |
45 |
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl; |
|
46 | 45 |
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; |
47 | 46 |
import eu.etaxonomy.cdm.model.common.CdmBase; |
48 | 47 |
import eu.etaxonomy.cdm.model.common.IPublishable; |
49 | 48 |
import eu.etaxonomy.cdm.model.reference.INomenclaturalReference; |
50 | 49 |
import eu.etaxonomy.cdm.model.taxon.Classification; |
51 | 50 |
import eu.etaxonomy.cdm.model.taxon.TaxonNode; |
52 |
import eu.etaxonomy.cdm.remote.controller.util.PagerParameters; |
|
53 | 51 |
import eu.etaxonomy.cdm.remote.editor.UUIDPropertyEditor; |
54 | 52 |
|
55 | 53 |
/** |
... | ... | |
199 | 197 |
} else { |
200 | 198 |
//FIXME use real paging mechanism of according service class instead of subCollection() |
201 | 199 |
//FIXME use BaseListController.normalizeAndValidatePagerParameters(pageNumber, pageSize, response); |
202 |
PagerParameters pagerParameters = new PagerParameters(pageSize, pageNumber); |
|
203 |
pagerParameters.normalizeAndValidate(response); |
|
204 |
|
|
205 |
start = pagerParameters.getPageIndex() * pagerParameters.getPageSize(); |
|
206 |
List<? extends CdmBase> sub_c = subCollection(c, start, pagerParameters.getPageSize()); |
|
207 |
Pager<? extends CdmBase> p = new DefaultPagerImpl<>(pageNumber, c.size(), pagerParameters.getPageSize(), sub_c); |
|
200 |
Pager<? extends CdmBase> p = pagerForSubCollectionOf(c, pageNumber, pageSize, response); |
|
208 | 201 |
return p; |
209 | 202 |
} |
210 | 203 |
} |
... | ... | |
396 | 389 |
return result; |
397 | 390 |
} |
398 | 391 |
|
399 |
private <E> List<E> subCollection(Collection<? extends E> c, Integer start, Integer length){ |
|
400 |
List<E> sub_c = new ArrayList<E>(length); |
|
401 |
if(c.size() > length){ |
|
402 |
E[] a = (E[]) c.toArray(); |
|
403 |
for(int i = start; i < start + length; i++){ |
|
404 |
sub_c.add(a[i]); |
|
405 |
} |
|
406 |
} else { |
|
407 |
sub_c.addAll(c); |
|
408 |
} |
|
409 |
return sub_c; |
|
410 |
|
|
411 |
} |
|
412 |
|
|
413 | 392 |
/** |
414 | 393 |
* Checks if an {@link IPublishable} was found and if it is publish. |
415 | 394 |
* If not the according {@link HttpStatusMessage http messages} are added to response. |
Also available in: Unified diff
ref #9087 typedesignation/{uuid}/annotations returns pager