Project

General

Profile

« Previous | Next » 

Revision e14b9808

Added by Andreas Kohlbecker over 3 years ago

ref #9087 typedesignation/{uuid}/annotations returns pager

View differences:

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