use of org.seasar.doma.jdbc.IterationContext in project doma by domaframework.
the class AbstractIterationHandler method iterate.
protected RESULT iterate(Iterator<TARGET> iterator) {
IterationContext context = new IterationContext();
RESULT candidate = iterationCallback.defaultResult();
while (!context.isExited() && iterator.hasNext()) {
TARGET target = iterator.next();
candidate = iterationCallback.iterate(target, context);
}
return iterationCallback.postIterate(candidate, context);
}
use of org.seasar.doma.jdbc.IterationContext in project doma by domaframework.
the class EntityIterationHandlerTest method testHandle.
@Test
public void testHandle() throws Exception {
MockResultSetMetaData metaData = new MockResultSetMetaData();
metaData.columns.add(new ColumnMetaData("id"));
metaData.columns.add(new ColumnMetaData("name"));
MockResultSet resultSet = new MockResultSet(metaData);
resultSet.rows.add(new RowData(1, "aaa"));
resultSet.rows.add(new RowData(2, "bbb"));
SqlFileSelectQuery query = new SqlFileSelectQuery();
query.setConfig(runtimeConfig);
query.setSqlFilePath(SqlFileUtil.buildPath(getClass().getName(), method.getName()));
query.setCallerClassName("aaa");
query.setCallerMethodName("bbb");
query.setMethod(method);
query.setSqlLogType(SqlLogType.FORMATTED);
query.prepare();
EntityIterationHandler<Emp, Integer> handler = new EntityIterationHandler<>(_Emp.getSingletonInternal(), new IterationCallback<Emp, Integer>() {
private int count;
@Override
public Integer iterate(Emp target, IterationContext iterationContext) {
count++;
return count;
}
});
Integer result = handler.handle(resultSet, query, (i, next) -> {
}).get();
assertEquals(new Integer(2), result);
}
use of org.seasar.doma.jdbc.IterationContext in project doma by domaframework.
the class EntityIterationHandlerTest method testHandle_exits.
@Test
public void testHandle_exits() throws Exception {
MockResultSetMetaData metaData = new MockResultSetMetaData();
metaData.columns.add(new ColumnMetaData("id"));
metaData.columns.add(new ColumnMetaData("name"));
MockResultSet resultSet = new MockResultSet(metaData);
resultSet.rows.add(new RowData(1, "aaa"));
resultSet.rows.add(new RowData(2, "bbb"));
SqlFileSelectQuery query = new SqlFileSelectQuery();
query.setConfig(runtimeConfig);
query.setSqlFilePath(SqlFileUtil.buildPath(getClass().getName(), method.getName()));
query.setCallerClassName("aaa");
query.setCallerMethodName("bbb");
query.setMethod(method);
query.setSqlLogType(SqlLogType.FORMATTED);
query.prepare();
EntityIterationHandler<Emp, Integer> handler = new EntityIterationHandler<>(_Emp.getSingletonInternal(), new IterationCallback<Emp, Integer>() {
private int count;
@Override
public Integer iterate(Emp target, IterationContext iterationContext) {
iterationContext.exit();
count++;
return count;
}
});
Integer result = handler.handle(resultSet, query, (i, next) -> {
}).get();
assertEquals(new Integer(1), result);
}
use of org.seasar.doma.jdbc.IterationContext in project stackoverflow-qa by yukihane.
the class SelectTest method testIterate_post.
public void testIterate_post() throws Exception {
LocalTransaction tx = AppConfig.getLocalTransaction();
try {
tx.begin();
Salary sum = dao.selectByAge(30, new PostIterationCallback<Salary, Employee>() {
private Salary sum = new Salary(0);
@Override
public Salary iterate(Employee target, IterationContext context) {
Salary salary = target.getSalary();
if (salary != null) {
sum = sum.add(salary);
}
return sum;
}
public Salary postIterate(Salary salary, IterationContext context) {
return salary.add(new Salary(10000));
}
});
assertEquals(new Integer(31975), sum.getValue());
tx.commit();
} finally {
tx.rollback();
}
}
use of org.seasar.doma.jdbc.IterationContext in project stackoverflow-qa by yukihane.
the class SelectTest method testIterate_exit.
public void testIterate_exit() throws Exception {
LocalTransaction tx = AppConfig.getLocalTransaction();
try {
tx.begin();
Salary sum = dao.selectByAge(30, new IterationCallback<Salary, Employee>() {
private Salary sum = new Salary(0);
@Override
public Salary iterate(Employee target, IterationContext context) {
Salary salary = target.getSalary();
if (salary != null) {
sum = sum.add(salary);
}
if (sum.getValue() != null && sum.getValue() > 10000) {
context.exit();
}
return sum;
}
});
assertEquals(new Integer(10725), sum.getValue());
tx.commit();
} finally {
tx.rollback();
}
}
Aggregations