/*
* Copyright (c) 2009-2010 Lockheed Martin Corporation
*
* Licensed 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.eurekastreams.server.search.stream;
import java.util.ArrayList;
import java.util.List;
/**
* Page Fetcher that's given all of its IDs.
*/
public class ListWrappingPageFetcher implements PageFetcher<Long>
{
/**
* The wrapped list.
*/
private List<Long> wrappedList;
/**
* Constructor - taking the wrapped list.
*
* @param inWrappedList
* the list to wrap paging around
*/
public ListWrappingPageFetcher(final List<Long> inWrappedList)
{
wrappedList = inWrappedList;
}
/**
* Fetch a page by returning a page from the wrapped list.
*
* @param inStartIndex
* the starting index
* @param inPageSize
* the size of the page to fetch
* @return a sublist starting at inStartIndex, with page size of inPageSize
*/
@Override
public List<Long> fetchPage(final int inStartIndex, final int inPageSize)
{
// note: the toIndex is not included, which is why we don't need a -1
int toIndex = inStartIndex + inPageSize;
if (inStartIndex > wrappedList.size())
{
return new ArrayList<Long>();
}
if (toIndex > wrappedList.size())
{
toIndex = wrappedList.size();
}
return wrappedList.subList(inStartIndex, toIndex);
}
}