All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opencms.cmis.CmsObjectListLimiter Maven / Gradle / Ivy

Go to download

OpenCms is an enterprise-ready, easy to use website content management system based on Java and XML technology. Offering a complete set of features, OpenCms helps content managers worldwide to create and maintain beautiful websites fast and efficiently.

There is a newer version: 18.0
Show newest version
/*
 * This library is part of OpenCms -
 * the Open Source Content Management System
 *
 * Copyright (C) Alkacon Software (http://www.alkacon.com)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * For further information about Alkacon Software, please see the
 * company website: http://www.alkacon.com
 *
 * For further information about OpenCms, please see the
 * project website: http://www.opencms.org
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package org.opencms.cmis;

import java.math.BigInteger;
import java.util.Iterator;
import java.util.List;

/**
 * Helper class to ease implementation of CMIS service methods which support paging.

* * This class works as an iterator for a given list, and limits the number of iterations based on skip/max parameters * which are usually passed to the service methods.

* * @param the content type of the list */ public class CmsObjectListLimiter implements Iterable, Iterator { /** The list for which this object acts as an iterator. */ private List m_baseList; /** The maximum number of objects which can still be returned. */ private int m_max; /** The index of the next object to return. */ private int m_next; /** * Creates a new instance.

* * @param baseList the list over which we want to iterate * @param maxItems the maximum number of items * @param skipCount the number of items to skip */ public CmsObjectListLimiter(List baseList, BigInteger maxItems, BigInteger skipCount) { // skip and max m_baseList = baseList; m_next = (skipCount == null ? 0 : skipCount.intValue()); if (m_next < 0) { m_next = 0; } m_max = (maxItems == null ? Integer.MAX_VALUE : maxItems.intValue()); if (m_max < 0) { m_max = Integer.MAX_VALUE; } } /** * Checks if there are more items left in the base list which were not returned.

* * @return true if there are more items left in the base list which were not returned */ public boolean hasMore() { return m_next < m_baseList.size(); } /** * @see java.util.Iterator#hasNext() */ public boolean hasNext() { return (m_next < m_baseList.size()) && (m_max > 0); } /** * @see java.lang.Iterable#iterator() */ public Iterator iterator() { return this; } /** * @see java.util.Iterator#next() */ public A next() { A result = m_baseList.get(m_next); m_next += 1; m_max -= 1; return result; } /** * @see java.util.Iterator#remove() */ public void remove() { throw new UnsupportedOperationException(); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy