Revision e14b9808
Added by Andreas Kohlbecker over 3 years ago
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/AbstractController.java | ||
---|---|---|
8 | 8 |
*/ |
9 | 9 |
package eu.etaxonomy.cdm.remote.controller; |
10 | 10 |
|
11 |
import java.io.IOException; |
|
11 | 12 |
import java.io.UnsupportedEncodingException; |
13 |
import java.util.ArrayList; |
|
12 | 14 |
import java.util.Arrays; |
15 |
import java.util.Collection; |
|
13 | 16 |
import java.util.List; |
14 | 17 |
|
15 | 18 |
import javax.servlet.http.HttpServletRequest; |
19 |
import javax.servlet.http.HttpServletResponse; |
|
16 | 20 |
|
17 | 21 |
import org.springframework.beans.factory.annotation.Autowired; |
22 |
import org.springframework.web.bind.annotation.RequestMapping; |
|
18 | 23 |
|
19 | 24 |
import eu.etaxonomy.cdm.api.service.IService; |
25 |
import eu.etaxonomy.cdm.api.service.pager.Pager; |
|
26 |
import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl; |
|
20 | 27 |
import eu.etaxonomy.cdm.api.utility.UserHelper; |
21 | 28 |
import eu.etaxonomy.cdm.model.common.CdmBase; |
22 | 29 |
import eu.etaxonomy.cdm.persistence.dao.hibernate.common.DaoBase; |
... | ... | |
133 | 140 |
return pathParameter; |
134 | 141 |
} |
135 | 142 |
|
143 |
protected <T extends CdmBase> Pager<T> pagerForSubCollectionOf(Collection<T> c, Integer pageNumber, Integer pageSize, HttpServletResponse response) throws IOException { |
|
144 |
PagerParameters pagerParameters = new PagerParameters(pageSize, pageNumber); |
|
145 |
pagerParameters.normalizeAndValidate(response); |
|
146 |
|
|
147 |
int subCollectionStart = pagerParameters.getPageIndex() * pagerParameters.getPageSize(); |
|
148 |
List<T> sub_c = subCollection(c, subCollectionStart, pagerParameters.getPageSize()); |
|
149 |
Pager<T> p = new DefaultPagerImpl<>(pageNumber, c.size(), pagerParameters.getPageSize(), sub_c); |
|
150 |
return p; |
|
151 |
} |
|
152 |
|
|
153 |
protected <E> List<E> subCollection(Collection<? extends E> c, Integer start, Integer length) { |
|
154 |
List<E> sub_c = new ArrayList<E>(length); |
|
155 |
if(c.size() > length){ |
|
156 |
E[] a = (E[]) c.toArray(); |
|
157 |
for(int i = start; i < start + length; i++){ |
|
158 |
sub_c.add(a[i]); |
|
159 |
} |
|
160 |
} else { |
|
161 |
sub_c.addAll(c); |
|
162 |
} |
|
163 |
return sub_c; |
|
164 |
|
|
165 |
} |
|
166 |
|
|
136 | 167 |
} |
Also available in: Unified diff
ref #9087 typedesignation/{uuid}/annotations returns pager