Refactor internals DefaultRelationalQueryEngine remove unnecessary method

- Remove findEach() method that took RowReader<T> and Consumer<T>
- Use findEachRow() instead
This commit is contained in:
rbygrave
2021-06-09 15:19:35 +12:00
parent 3add4472ef
commit 1df2ccb1c6
3 changed files with 23 additions and 46 deletions
@@ -22,16 +22,21 @@ public interface RelationalQueryEngine {
*/
<T> List<T> findList(RelationalQueryRequest request, RowReader<T> reader);
/**
* Find each query using relational query.
*/
<T> void findEach(RelationalQueryRequest request, RowReader<T> reader, Consumer<T> consumer);
/**
* Find each while query using relational query.
*/
<T> void findEach(RelationalQueryRequest request, RowReader<T> reader, Predicate<T> consumer);
/**
* Find each via raw consumer.
*/
void findEachRow(RelationalQueryRequest request, RowConsumer mapper);
/**
* Find one via mapper.
*/
<T> T findOneMapper(RelationalQueryRequest request, RowMapper<T> mapper);
/**
* Find single attribute.
*/
@@ -42,16 +47,6 @@ public interface RelationalQueryEngine {
*/
<T> List<T> findSingleAttributeList(RelationalQueryRequest request, Class<T> cls);
/**
* Find one via mapper.
*/
<T> T findOneMapper(RelationalQueryRequest request, RowMapper<T> mapper);
/**
* Find each via raw consumer.
*/
void findEachRow(RelationalQueryRequest request, RowConsumer mapper);
/**
* Collect SQL query execution statistics.
*/
@@ -79,7 +79,7 @@ public final class RelationalQueryRequest extends AbstractSqlQueryRequest {
public void findEach(Consumer<SqlRow> consumer) {
flushJdbcBatchOnQuery();
queryEngine.findEach(this, this::createNewRow, consumer);
queryEngine.findEachRow(this, (resultSet, rowNum) -> consumer.accept(createNewRow()));
}
public void findEachWhile(Predicate<SqlRow> consumer) {
@@ -17,7 +17,6 @@ import io.ebeaninternal.server.persist.Binder;
import javax.persistence.PersistenceException;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Predicate;
/**
@@ -60,14 +59,10 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine {
}
@Override
public <T> void findEach(RelationalQueryRequest request, RowReader<T> reader, Predicate<T> consumer) {
public void findEachRow(RelationalQueryRequest request, RowConsumer consumer) {
try {
request.executeSql(binder, SpiQuery.Type.ITERATE);
while (request.next()) {
if (!consumer.test(reader.read())) {
break;
}
}
request.mapEach(consumer);
request.logSummary();
} catch (Exception e) {
@@ -79,11 +74,13 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine {
}
@Override
public <T> void findEach(RelationalQueryRequest request, RowReader<T> reader, Consumer<T> consumer) {
public <T> void findEach(RelationalQueryRequest request, RowReader<T> reader, Predicate<T> consumer) {
try {
request.executeSql(binder, SpiQuery.Type.ITERATE);
while (request.next()) {
consumer.accept(reader.read());
if (!consumer.test(reader.read())) {
break;
}
}
request.logSummary();
@@ -112,12 +109,15 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine {
}
@Override
public void findEachRow(RelationalQueryRequest request, RowConsumer consumer) {
public <T> List<T> findList(RelationalQueryRequest request, RowReader<T> reader) {
try {
request.executeSql(binder, SpiQuery.Type.LIST);
request.mapEach(consumer);
List<T> rows = new ArrayList<>();
while (request.next()) {
rows.add(reader.read());
}
request.logSummary();
return rows;
} catch (Exception e) {
throw new PersistenceException(errMsg(e.getMessage(), request.getSql()), e);
@@ -170,22 +170,4 @@ public class DefaultRelationalQueryEngine implements RelationalQueryEngine {
}
}
@Override
public <T> List<T> findList(RelationalQueryRequest request, RowReader<T> reader) {
try {
request.executeSql(binder, SpiQuery.Type.LIST);
List<T> rows = new ArrayList<>();
while (request.next()) {
rows.add(reader.read());
}
request.logSummary();
return rows;
} catch (Exception e) {
throw new PersistenceException(errMsg(e.getMessage(), request.getSql()), e);
} finally {
request.close();
}
}
}