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

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

Introduction

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

Prototype

String generateRemainingPagesQuery(int pageSize);

Source Link

Document

Generate the query that will provide the first page, limited by the page size.

Usage

From source file:admin.service.JdbcSearchableStepExecutionDao.java

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

    String whereClause;/*from w  ww.  j av  a 2s  .c  o  m*/

    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
public void testQueryFromStart() throws Exception {

    PagingQueryProvider queryProvider = getPagingQueryProvider();

    int total = JdbcTestUtils.countRowsInTable(jdbcTemplate, "T_FOOS");
    assertTrue(total > pageSize);// w  ww . j a v  a 2  s .  c o  m
    int pages = total / pageSize;

    int count = 0;

    List<Map<String, Object>> list = jdbcTemplate.queryForList(queryProvider.generateFirstPageQuery(pageSize));
    logger.debug("First page result: " + list);
    assertEquals(pageSize, list.size());
    count += pageSize;
    Map<String, Object> oldValues = null;

    while (count < pages * pageSize) {
        Map<String, Object> startAfterValues = getStartAfterValues(queryProvider, list);
        assertNotSame(oldValues, startAfterValues);
        list = jdbcTemplate.queryForList(queryProvider.generateRemainingPagesQuery(pageSize),
                getParameterList(null, startAfterValues).toArray());
        assertEquals(pageSize, list.size());
        count += pageSize;
        oldValues = startAfterValues;
    }

    if (count < total) {
        Map<String, Object> startAfterValues = getStartAfterValues(queryProvider, list);
        list = jdbcTemplate.queryForList(queryProvider.generateRemainingPagesQuery(pageSize),
                getParameterList(null, startAfterValues).toArray());
        assertEquals(total - pages * pageSize, list.size());
        count += list.size();
    }

    assertEquals(total, count);
}

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

@Test
@Ignore/*from   w  w  w. ja v  a  2s .  com*/
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);
}