Search in sources :

Example 1 with IterationContext

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);
}
Also used : IterationContext(org.seasar.doma.jdbc.IterationContext)

Example 2 with IterationContext

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);
}
Also used : SqlFileUtil(org.seasar.doma.internal.jdbc.util.SqlFileUtil) BeforeEach(org.junit.jupiter.api.BeforeEach) RowData(org.seasar.doma.internal.jdbc.mock.RowData) SqlFileSelectQuery(org.seasar.doma.jdbc.query.SqlFileSelectQuery) Emp(example.entity.Emp) IterationCallback(org.seasar.doma.jdbc.IterationCallback) MockResultSetMetaData(org.seasar.doma.internal.jdbc.mock.MockResultSetMetaData) IterationContext(org.seasar.doma.jdbc.IterationContext) TestInfo(org.junit.jupiter.api.TestInfo) Test(org.junit.jupiter.api.Test) SqlLogType(org.seasar.doma.jdbc.SqlLogType) MockResultSet(org.seasar.doma.internal.jdbc.mock.MockResultSet) example.entity._Emp(example.entity._Emp) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) MockConfig(org.seasar.doma.internal.jdbc.mock.MockConfig) Method(java.lang.reflect.Method) ColumnMetaData(org.seasar.doma.internal.jdbc.mock.ColumnMetaData) SqlFileSelectQuery(org.seasar.doma.jdbc.query.SqlFileSelectQuery) MockResultSetMetaData(org.seasar.doma.internal.jdbc.mock.MockResultSetMetaData) Emp(example.entity.Emp) example.entity._Emp(example.entity._Emp) MockResultSet(org.seasar.doma.internal.jdbc.mock.MockResultSet) RowData(org.seasar.doma.internal.jdbc.mock.RowData) IterationContext(org.seasar.doma.jdbc.IterationContext) ColumnMetaData(org.seasar.doma.internal.jdbc.mock.ColumnMetaData) Test(org.junit.jupiter.api.Test)

Example 3 with IterationContext

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);
}
Also used : SqlFileUtil(org.seasar.doma.internal.jdbc.util.SqlFileUtil) BeforeEach(org.junit.jupiter.api.BeforeEach) RowData(org.seasar.doma.internal.jdbc.mock.RowData) SqlFileSelectQuery(org.seasar.doma.jdbc.query.SqlFileSelectQuery) Emp(example.entity.Emp) IterationCallback(org.seasar.doma.jdbc.IterationCallback) MockResultSetMetaData(org.seasar.doma.internal.jdbc.mock.MockResultSetMetaData) IterationContext(org.seasar.doma.jdbc.IterationContext) TestInfo(org.junit.jupiter.api.TestInfo) Test(org.junit.jupiter.api.Test) SqlLogType(org.seasar.doma.jdbc.SqlLogType) MockResultSet(org.seasar.doma.internal.jdbc.mock.MockResultSet) example.entity._Emp(example.entity._Emp) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) MockConfig(org.seasar.doma.internal.jdbc.mock.MockConfig) Method(java.lang.reflect.Method) ColumnMetaData(org.seasar.doma.internal.jdbc.mock.ColumnMetaData) SqlFileSelectQuery(org.seasar.doma.jdbc.query.SqlFileSelectQuery) MockResultSetMetaData(org.seasar.doma.internal.jdbc.mock.MockResultSetMetaData) Emp(example.entity.Emp) example.entity._Emp(example.entity._Emp) MockResultSet(org.seasar.doma.internal.jdbc.mock.MockResultSet) RowData(org.seasar.doma.internal.jdbc.mock.RowData) IterationContext(org.seasar.doma.jdbc.IterationContext) ColumnMetaData(org.seasar.doma.internal.jdbc.mock.ColumnMetaData) Test(org.junit.jupiter.api.Test)

Example 4 with IterationContext

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();
    }
}
Also used : Salary(tutorial.domain.Salary) Employee(tutorial.entity.Employee) LocalTransaction(org.seasar.doma.jdbc.tx.LocalTransaction) IterationContext(org.seasar.doma.jdbc.IterationContext)

Example 5 with IterationContext

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();
    }
}
Also used : Salary(tutorial.domain.Salary) Employee(tutorial.entity.Employee) LocalTransaction(org.seasar.doma.jdbc.tx.LocalTransaction) IterationContext(org.seasar.doma.jdbc.IterationContext)

Aggregations

IterationContext (org.seasar.doma.jdbc.IterationContext)6 LocalTransaction (org.seasar.doma.jdbc.tx.LocalTransaction)3 Salary (tutorial.domain.Salary)3 Employee (tutorial.entity.Employee)3 Emp (example.entity.Emp)2 example.entity._Emp (example.entity._Emp)2 Method (java.lang.reflect.Method)2 Assertions.assertEquals (org.junit.jupiter.api.Assertions.assertEquals)2 BeforeEach (org.junit.jupiter.api.BeforeEach)2 Test (org.junit.jupiter.api.Test)2 TestInfo (org.junit.jupiter.api.TestInfo)2 ColumnMetaData (org.seasar.doma.internal.jdbc.mock.ColumnMetaData)2 MockConfig (org.seasar.doma.internal.jdbc.mock.MockConfig)2 MockResultSet (org.seasar.doma.internal.jdbc.mock.MockResultSet)2 MockResultSetMetaData (org.seasar.doma.internal.jdbc.mock.MockResultSetMetaData)2 RowData (org.seasar.doma.internal.jdbc.mock.RowData)2 SqlFileUtil (org.seasar.doma.internal.jdbc.util.SqlFileUtil)2 IterationCallback (org.seasar.doma.jdbc.IterationCallback)2 SqlLogType (org.seasar.doma.jdbc.SqlLogType)2 SqlFileSelectQuery (org.seasar.doma.jdbc.query.SqlFileSelectQuery)2