Search in sources :

Example 1 with Loop

use of org.nutz.lang.Loop in project nutz by nutzam.

the class PojoEachRecordCallback method invoke.

@SuppressWarnings("unchecked")
public Object invoke(Connection conn, ResultSet rs, Pojo pojo, Statement stmt) throws SQLException {
    // 得到回调
    final Each<Object> each = pojo.getContext().attr(Each.class);
    // 没有回调,什么都不用执行了
    if (null == each)
        return null;
    // 开始执行
    ResultSetLooping ing = new ResultSetLooping() {

        protected boolean createObject(int index, ResultSet rs, SqlContext context, int rowCount) {
            Object obj = Record.create(rs);
            try {
                each.invoke(index, obj, rowCount);
            } catch (LoopException e) {
                throw Lang.wrapThrow(e);
            }
            return false;
        }
    };
    try {
        // 循环开始
        if (each instanceof Loop)
            if (!((Loop<?>) each).begin())
                return 0;
        // 循环中
        ing.doLoop(rs, pojo.getContext());
        // 循环结束
        if (each instanceof Loop)
            ((Loop<?>) each).end();
    } catch (ExitLoop e) {
    } catch (LoopException e) {
        throw new SQLException(e.getCause().getMessage());
    }
    // 返回数量
    return ing.getIndex() + 1;
}
Also used : Loop(org.nutz.lang.Loop) ExitLoop(org.nutz.lang.ExitLoop) SqlContext(org.nutz.dao.sql.SqlContext) LoopException(org.nutz.lang.LoopException) ExitLoop(org.nutz.lang.ExitLoop) ResultSetLooping(org.nutz.dao.pager.ResultSetLooping) SQLException(java.sql.SQLException) ResultSet(java.sql.ResultSet)

Example 2 with Loop

use of org.nutz.lang.Loop in project nutz by nutzam.

the class PojoEachEntityCallback method invoke.

@SuppressWarnings("unchecked")
public Object invoke(Connection conn, ResultSet rs, Pojo pojo, Statement stmt) throws SQLException {
    // 得到回调
    final Each<Object> each = pojo.getContext().attr(Each.class);
    // 没有回调,什么都不用执行了
    if (null == each)
        return null;
    // 开始执行
    final Entity<?> en = pojo.getEntity();
    ResultSetLooping ing = new ResultSetLooping() {

        protected boolean createObject(int index, ResultSet rs, SqlContext context, int rowCount) {
            Object obj = en.getObject(rs, context.getFieldMatcher());
            try {
                each.invoke(index, obj, rowCount);
            } catch (ContinueLoop e) {
            } catch (LoopException e) {
                throw Lang.wrapThrow(e);
            }
            return false;
        }
    };
    try {
        // 循环开始
        if (each instanceof Loop)
            if (!((Loop<?>) each).begin())
                return 0;
        // 循环中
        ing.doLoop(rs, pojo.getContext());
        // 循环结束
        if (each instanceof Loop)
            ((Loop<?>) each).end();
    } catch (ExitLoop e) {
    } catch (LoopException e) {
        SQLException e2 = new SQLException();
        e2.initCause(e.getCause());
        throw e2;
    }
    // 返回数量
    return ing.getIndex() + 1;
}
Also used : Loop(org.nutz.lang.Loop) ExitLoop(org.nutz.lang.ExitLoop) ContinueLoop(org.nutz.lang.ContinueLoop) SqlContext(org.nutz.dao.sql.SqlContext) LoopException(org.nutz.lang.LoopException) ExitLoop(org.nutz.lang.ExitLoop) ResultSetLooping(org.nutz.dao.pager.ResultSetLooping) SQLException(java.sql.SQLException) ContinueLoop(org.nutz.lang.ContinueLoop) ResultSet(java.sql.ResultSet)

Aggregations

ResultSet (java.sql.ResultSet)2 SQLException (java.sql.SQLException)2 ResultSetLooping (org.nutz.dao.pager.ResultSetLooping)2 SqlContext (org.nutz.dao.sql.SqlContext)2 ExitLoop (org.nutz.lang.ExitLoop)2 Loop (org.nutz.lang.Loop)2 LoopException (org.nutz.lang.LoopException)2 ContinueLoop (org.nutz.lang.ContinueLoop)1