javatools.database
Class ResultIterator<T>

java.lang.Object
  extended by javatools.datatypes.PeekIterator<T>
      extended by javatools.database.ResultIterator<T>
All Implemented Interfaces:
java.io.Closeable, java.lang.Iterable<T>, java.util.Iterator<T>

public class ResultIterator<T>
extends PeekIterator<T>

This class is part of the Java Tools (see http://mpii.de/yago-naga/javatools). It is licensed under the Creative Commons Attribution License (see http://creativecommons.org/licenses/by/3.0) by the YAGO-NAGA team (see http://mpii.de/yago-naga). This class wraps a ResultSet into an Iterator over a given Class. It requires a method that can wrap a row of a ResultSet into an object of the given class.
Example:

  // We need this class to define how to construct an Employer from a table row
  public static class EmployerWrapper implements ResultWrapper<Employer> {

     // Wraps the current row in a ResultSet into an Employer
     public Employer wrap(ResultSet r) {  
       return(new Employer(r.getString(1),r.getDouble(2)); 
     }

  }

  Database d=new OracleDatabase("scott","tiger");
  for(Employer e : d.query("SELECT * FROM employers WHERE salary>1000",
                           new EmployerConstructor())) {
     System.out.println(e);
  }
  


Nested Class Summary
static interface ResultIterator.ResultWrapper<T>
          Wraps the current row in a ResultSet into a T
 
Nested classes/interfaces inherited from class javatools.datatypes.PeekIterator
PeekIterator.ElementaryPeekIterator<T>, PeekIterator.SimplePeekIterator<T>
 
Field Summary
static ResultIterator.ResultWrapper<java.lang.Boolean> BooleanWrapper
          ResultWrapper for a single Boolean column
static ResultIterator.ResultWrapper<java.lang.Double[]> DoublesWrapper
          ResultWrapper for several Doubles.
static ResultIterator.ResultWrapper<java.lang.Double> DoubleWrapper
          ResultWrapper for a single Double column.
static ResultIterator.ResultWrapper<java.lang.Integer[]> IntegersWrapper
          ResultWrapper for several Integers.
static ResultIterator.ResultWrapper<java.lang.Integer> IntegerWrapper
          ResultWrapper for a single Integer column
static ResultIterator.ResultWrapper<java.lang.Long> LongWrapper
          ResultWrapper for a single Long column.
static ResultIterator.ResultWrapper<java.lang.String[]> StringsWrapper
          ResultWrapper for String columns
static ResultIterator.ResultWrapper<java.lang.String> StringWrapper
          ResultWrapper for a single String column
 
Fields inherited from class javatools.datatypes.PeekIterator
closed, initialized, next
 
Constructor Summary
ResultIterator(java.sql.ResultSet s, ResultIterator.ResultWrapper<T> cons)
          Creates a ResultIterator for a ResultSet
 
Method Summary
 void close()
          Closes the resultset and the underlying statement
 void finalize()
          Closes the resultset
 T internalNext()
          Returns the next or NULL if no next element is available
 
Methods inherited from class javatools.datatypes.PeekIterator
asList, asList, asSet, asSet, asSet, emptyIterator, hasNext, iterator, list, list, main, next, nextOrNull, numElements, numElements, peek, remove, toString, toString, toString
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

BooleanWrapper

public static final ResultIterator.ResultWrapper<java.lang.Boolean> BooleanWrapper
ResultWrapper for a single Boolean column


StringWrapper

public static final ResultIterator.ResultWrapper<java.lang.String> StringWrapper
ResultWrapper for a single String column


StringsWrapper

public static final ResultIterator.ResultWrapper<java.lang.String[]> StringsWrapper
ResultWrapper for String columns


LongWrapper

public static final ResultIterator.ResultWrapper<java.lang.Long> LongWrapper
ResultWrapper for a single Long column. Returns NULL for NULL


DoubleWrapper

public static final ResultIterator.ResultWrapper<java.lang.Double> DoubleWrapper
ResultWrapper for a single Double column. Returns NULL for NULL


DoublesWrapper

public static final ResultIterator.ResultWrapper<java.lang.Double[]> DoublesWrapper
ResultWrapper for several Doubles. Returns NULL for NULL


IntegerWrapper

public static final ResultIterator.ResultWrapper<java.lang.Integer> IntegerWrapper
ResultWrapper for a single Integer column


IntegersWrapper

public static final ResultIterator.ResultWrapper<java.lang.Integer[]> IntegersWrapper
ResultWrapper for several Integers. Returns NULL for NULL

Constructor Detail

ResultIterator

public ResultIterator(java.sql.ResultSet s,
                      ResultIterator.ResultWrapper<T> cons)
Creates a ResultIterator for a ResultSet

Method Detail

internalNext

public T internalNext()
               throws java.lang.Exception
Description copied from class: PeekIterator
Returns the next or NULL if no next element is available

Throws:
java.lang.Exception

close

public void close()
Closes the resultset and the underlying statement

Specified by:
close in interface java.io.Closeable
Overrides:
close in class PeekIterator<T>

finalize

public void finalize()
Closes the resultset

Overrides:
finalize in class java.lang.Object