/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2003-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; import java.io.IOException; import org.opengis.feature.type.AttributeDescriptor; /** * The low-level attribute reading API. An AttributeReader is responsible for * reading a finite set of attributes from an underlying storage format. It * provides meta-data regarding the data it can provide, and an iterative, * row-based approach for accessing the data. * * @author Ian Schneider * * @source $URL$ * @version $Id$ * * @see AttributeAcceptor */ public interface AttributeReader { /** * The number of attributes this reader can read, i.e the length of a row. * * @return Number of attribtues this reader can read */ int getAttributeCount(); /** * Retrieve the AttributeType at the given index. * * @return AttributeType at given index */ AttributeDescriptor getAttributeType(int index) throws ArrayIndexOutOfBoundsException; /** * Release any resources associated with this reader */ void close() throws IOException; /** * Does another set of attributes exist in this reader? * * @return <code>true</code> if additional content exists for * AttributeReader */ boolean hasNext() throws IOException; /** * Advance the reader to the next set of attributes. */ void next() throws IOException; /** * Read the attribute at the given index. * * @return Object Attribute at given index */ Object read(int index) throws IOException, ArrayIndexOutOfBoundsException; }