| /******************************************************************************* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| *******************************************************************************/ |
| package org.apache.ofbiz.base.util.collections; |
| |
| import java.util.Collections; |
| import java.util.Iterator; |
| import java.util.List; |
| |
| /** |
| * Stores the result of a subset of data items from a source (such |
| * as EntityListIterator). |
| */ |
| public class PagedList<E> implements Iterable<E> { |
| |
| protected int startIndex; |
| protected int endIndex; |
| protected int size; |
| protected int viewIndex; |
| protected int viewSize; |
| protected List<E> data; |
| |
| /** |
| * Default constructor - populates all fields in this class |
| * @param startIndex |
| * @param endIndex |
| * @param size |
| * @param viewIndex |
| * @param viewSize |
| * @param data |
| */ |
| public PagedList(int startIndex, int endIndex, int size, int viewIndex, int viewSize, List<E> data) { |
| this.startIndex = startIndex; |
| this.endIndex = endIndex; |
| this.size = size; |
| this.viewIndex = viewIndex; |
| this.viewSize = viewSize; |
| this.data = data; |
| } |
| |
| /** |
| * @param viewIndex |
| * @param viewSize |
| * @return an empty PagedList object |
| */ |
| public static <E> PagedList<E> empty(int viewIndex, int viewSize) { |
| List<E> emptyList = Collections.emptyList(); |
| return new PagedList<E>(0, 0, 0, viewIndex, viewSize, emptyList); |
| } |
| |
| /** |
| * @return the start index (for paginator) or known as low index |
| */ |
| public int getStartIndex() { |
| return startIndex; |
| } |
| |
| /** |
| * @return the end index (for paginator) or known as high index |
| */ |
| public int getEndIndex() { |
| return endIndex; |
| } |
| |
| /** |
| * @return the size of the full list, this can be the |
| * result of <code>EntityListIterator.getResultsSizeAfterPartialList()</code> |
| */ |
| public int getSize() { |
| return size; |
| } |
| |
| /** |
| * @return the paged data. Eg - the result from <code>EntityListIterator.getPartialList()</code> |
| */ |
| public List<E> getData() { |
| return data; |
| } |
| |
| /** |
| * @return the view index supplied by client |
| */ |
| public int getViewIndex() { |
| return viewIndex; |
| } |
| |
| /** |
| * @return the view size supplied by client |
| */ |
| public int getViewSize() { |
| return viewSize; |
| } |
| |
| /** |
| * @return an interator object over the data returned in getData() method |
| * of this class |
| */ |
| @Override |
| public Iterator<E> iterator() { |
| return this.data.iterator(); |
| } |
| |
| } |