Package org.geotools.data.store

Source Code of org.geotools.data.store.NoContentIterator

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2004-2008, Open Source Geospatial Foundation (OSGeo)
*   
*    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;
*    version 2.1 of the License.
*
*    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.
*/
package org.geotools.data.store;

import java.util.Iterator;
import java.util.NoSuchElementException;

import org.opengis.feature.simple.SimpleFeature;

/**
* This iterator is used to indicate that contents could not be aquired.
* <p>
* The normal Collection.iterator() method does not let us return an error
* (we always have to return an iterator). However Iterator.next() can
* be used to return an NoSuchElementException.
* </p>
* <p>
* So we are basically going to lie, we are going to pretend their is content
* *once*, and when they ask for it we are going to hit them with
* a NoSuchElementExcetion. This is a mean trick, but it does convey the idea
* of asking for content that is supposed to be there and failing to aquire it.
* </p>
* @author jgarnett
* @since 2.1.RC0
*
*
* @source $URL$
*/
public class NoContentIterator implements Iterator<SimpleFeature> {
    Throwable origionalProblem;
    public NoContentIterator( Throwable t ){
        origionalProblem = t;
    }
    public boolean hasNext() {
        return origionalProblem != null;
    }
    public SimpleFeature next() {
        if( origionalProblem == null ){
            // you only get the real error on the first offense
            // (after that you are just silly)
            //
            throw new NoSuchElementException();           
        }
        NoSuchElementException cantFind = new NoSuchElementException( "Could not aquire feature:" + origionalProblem );
        cantFind.initCause( origionalProblem );
        origionalProblem = null;
        throw cantFind;
    }

    public void remove() {
        if( origionalProblem == null ){
            // user did not call next first
            throw new UnsupportedOperationException();
        }
        // User did not call next first
        throw new IllegalStateException();       
    }
}
TOP

Related Classes of org.geotools.data.store.NoContentIterator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.