Example usage for org.springframework.batch.item.database PagingQueryProvider generateJumpToItemQuery

List of usage examples for org.springframework.batch.item.database PagingQueryProvider generateJumpToItemQuery

Introduction

In this page you can find the example usage for org.springframework.batch.item.database PagingQueryProvider generateJumpToItemQuery.

Prototype

String generateJumpToItemQuery(int itemIndex, int pageSize);

Source Link

Document

Generate the query that will provide the jump to item query.

Usage

From source file:admin.service.JdbcSearchableStepExecutionDao.java

public Collection<StepExecution> findStepExecutions(String jobName, String stepName, int start, int count) {

    String whereClause;/*from  ww  w  .ja  va 2 s  .  com*/

    if (jobName.contains("*")) {
        whereClause = "JOB_NAME like ?";
        jobName = jobName.replace("*", "%");
    } else {
        whereClause = "JOB_NAME = ?";
    }

    if (stepName.contains("*")) {
        whereClause = whereClause + " AND STEP_NAME like ?";
        stepName = stepName.replace("*", "%");
    } else {
        whereClause = whereClause + " AND STEP_NAME = ?";
    }

    PagingQueryProvider queryProvider = getPagingQueryProvider(whereClause);

    List<StepExecution> stepExecutions;
    if (start <= 0) {
        stepExecutions = getJdbcTemplate().query(queryProvider.generateFirstPageQuery(count),
                new StepExecutionRowMapper(), jobName, stepName);
    } else {
        try {
            Long startAfterValue = getJdbcTemplate().queryForObject(
                    queryProvider.generateJumpToItemQuery(start, count), Long.class, jobName, stepName);
            stepExecutions = getJdbcTemplate().query(queryProvider.generateRemainingPagesQuery(count),
                    new StepExecutionRowMapper(), jobName, stepName, startAfterValue);
        } catch (IncorrectResultSizeDataAccessException e) {
            return Collections.emptyList();
        }
    }

    return stepExecutions;

}

From source file:org.springframework.batch.item.database.JdbcPagingQueryIntegrationTests.java

@Test
@Ignore// w ww .  j a v a  2 s . c  o  m
public void testJumpToItem() throws Exception {

    PagingQueryProvider queryProvider = getPagingQueryProvider();

    int minId = jdbcTemplate.queryForObject("SELECT MIN(VALUE) FROM T_FOOS", Integer.class);

    String query = queryProvider.generateJumpToItemQuery(pageSize, pageSize);
    List<Map<String, Object>> list = jdbcTemplate.queryForList(query);
    logger.debug("Jump to page result: " + list);
    assertEquals(1, list.size());
    System.err.println(list);
    String expected = "[{value=" + (minId + pageSize - 1);
    assertEquals(expected, list.toString().toLowerCase().substring(0, expected.length()));
    Object startAfterValue = list.get(0).entrySet().iterator().next().getValue();
    list = jdbcTemplate.queryForList(queryProvider.generateRemainingPagesQuery(pageSize), startAfterValue);
    assertEquals(pageSize, list.size());
    expected = "[{id=" + (minId + pageSize);
}