Refactor to use an inner class, as per the standard Java SDK Iterator implementations.
This commit is contained in:
parent
b92bb993af
commit
958a45af69
|
@ -24,6 +24,7 @@ import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
|
import java.util.NoSuchElementException;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
|
|
||||||
|
|
||||||
|
@ -315,7 +316,7 @@ public class PaginatedList implements List {
|
||||||
}
|
}
|
||||||
|
|
||||||
public Iterator iterator() {
|
public Iterator iterator() {
|
||||||
return new PaginatedListIterator(this);
|
return new PaginatedListIterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -474,4 +475,57 @@ public class PaginatedList implements List {
|
||||||
|
|
||||||
return list.toArray(arg0);
|
return list.toArray(arg0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//~ Inner Classes ==========================================================
|
||||||
|
|
||||||
|
private class PaginatedListIterator implements Iterator {
|
||||||
|
private Iterator iterator;
|
||||||
|
private int i = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see java.util.Iterator#hasNext()
|
||||||
|
*/
|
||||||
|
public boolean hasNext() {
|
||||||
|
return i < size();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method follows the rules of Iterator.next() except that it
|
||||||
|
* returns null when requesting an element that it's not in the
|
||||||
|
* current page.
|
||||||
|
*
|
||||||
|
* @see java.util.Iterator#next()
|
||||||
|
*/
|
||||||
|
public Object next() {
|
||||||
|
if (i == getFirstElement()) {
|
||||||
|
iterator = getList().iterator();
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((i >= getFirstElement())
|
||||||
|
&& (i < (getFirstElement() + getMaxElements()))) {
|
||||||
|
i++;
|
||||||
|
|
||||||
|
return iterator.next();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (hasNext()) {
|
||||||
|
i++;
|
||||||
|
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
throw new NoSuchElementException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unsupported operation
|
||||||
|
*
|
||||||
|
* @throws UnsupportedOperationException
|
||||||
|
*
|
||||||
|
* @see java.util.Iterator#remove()
|
||||||
|
*/
|
||||||
|
public void remove() {
|
||||||
|
throw new UnsupportedOperationException();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,92 +0,0 @@
|
||||||
/* Copyright 2004, 2005 Acegi Technology Pty Limited
|
|
||||||
*
|
|
||||||
* 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 net.sf.acegisecurity.domain.dao;
|
|
||||||
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.NoSuchElementException;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* An iterator of the <code>PaginatedList</code>.
|
|
||||||
*
|
|
||||||
* @author Carlos Sanchez
|
|
||||||
* @version $Id$
|
|
||||||
*/
|
|
||||||
public class PaginatedListIterator implements Iterator {
|
|
||||||
//~ Instance fields ========================================================
|
|
||||||
|
|
||||||
private Iterator iterator;
|
|
||||||
private PaginatedList list;
|
|
||||||
private int i = 0;
|
|
||||||
|
|
||||||
//~ Constructors ===========================================================
|
|
||||||
|
|
||||||
/**
|
|
||||||
* DOCUMENT ME!
|
|
||||||
*
|
|
||||||
* @param list
|
|
||||||
*/
|
|
||||||
public PaginatedListIterator(PaginatedList list) {
|
|
||||||
this.list = list;
|
|
||||||
}
|
|
||||||
|
|
||||||
//~ Methods ================================================================
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @see java.util.Iterator#hasNext()
|
|
||||||
*/
|
|
||||||
public boolean hasNext() {
|
|
||||||
return i < list.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method follows the rules of Iterator.next() except that it returns
|
|
||||||
* null when requesting an element that it's not in the current page.
|
|
||||||
*
|
|
||||||
* @see java.util.Iterator#next()
|
|
||||||
*/
|
|
||||||
public Object next() {
|
|
||||||
if (i == list.getFirstElement()) {
|
|
||||||
iterator = list.getList().iterator();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ((i >= list.getFirstElement())
|
|
||||||
&& (i < (list.getFirstElement() + list.getMaxElements()))) {
|
|
||||||
i++;
|
|
||||||
|
|
||||||
return iterator.next();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hasNext()) {
|
|
||||||
i++;
|
|
||||||
|
|
||||||
return null;
|
|
||||||
} else {
|
|
||||||
throw new NoSuchElementException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unsupported operation
|
|
||||||
*
|
|
||||||
* @throws UnsupportedOperationException
|
|
||||||
*
|
|
||||||
* @see java.util.Iterator#remove()
|
|
||||||
*/
|
|
||||||
public void remove() {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue