Class DataReader<T>
java.lang.Object
br.com.intersys.systextil.connection.DataReader<T>
- Type Parameters:
T- o tipo de objeto retornado em cada loop
- All Implemented Interfaces:
Closeable,AutoCloseable,Iterable<T>,Iterator<T>
Um leitor de registros genérico que pode ser usado em loops "for-each".
Para cada registro, retorna um objeto construído com o
Maker
informado. Se tentar ler um registro após o último, fecha o resultset.
A grande utilidade deste objeto é a de poder ler e permitir processar um registro por vez. Outras soluções requerem memorizar todos os registros antes de poder usá-los.
Um exemplo de uso possível deste objeto:
AppConnection cn = new AppConnection(conn, SQL, params);
cn.executeQuery();
for(Tipo t : new DataReader(cn, Tipo.MAKER) {
// Processar t...
}
Em vez disso, a classe do Tipo pode retornar o DataReader
pronto:
public static DataReader<Tipo> readTipos(AppConnection conn, params...) {
AppConnection cn = new AppConnection(conn, SQL, params);
cn.executeQuery();
return new DataReader(cn, MAKER);
}
- Author:
- sergio
-
Constructor Summary
ConstructorsConstructorDescriptionDataReader(AppConnection rs, Maker<T> maker) Constrói um leitor de registros. -
Method Summary
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.lang.Iterable
forEach, spliteratorMethods inherited from interface java.util.Iterator
forEachRemaining
-
Constructor Details
-
DataReader
Constrói um leitor de registros.- Parameters:
rs- o resultset, posicionado antes do registro a lermaker- o construtor de objetos a partir de registros
-
-
Method Details
-
iterator
-
hasNext
public boolean hasNext() -
next
-
remove
public void remove()Não deve ser usado.- Specified by:
removein interfaceIterator<T>- Throws:
UnsupportedOperationException- pois não remove nada.
-
stream
Fornece um Stream. Só pode ser usado uma vez em cada DataReader.- Returns:
- o Stream
-
hasRecordsRead
public boolean hasRecordsRead()Informa se foi lido algum registro.É conveniente ao fim de um loop para informar se o resultset tinha dados. Por exemplo:
DataReader<Tipo> dr = new DataReader(cn, Tipo.MAKER); for(Tipo t : dr) { // Processar t... } if(!dr.hasRecordsRead()) { // Não havia dados... } int qt = dr.recordCount();- Returns:
- se foi lido algum registro
-
recordCount
public int recordCount()Informa quantos registros foram lidos até o momento.- Returns:
- se foi lido algum registro
- See Also:
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable
-
main
- Throws:
Exception
-