1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.springframework.batch.item.database.support;
18
19 import org.springframework.util.StringUtils;
20
21
22
23
24
25
26
27
28 public class HsqlPagingQueryProvider extends AbstractSqlPagingQueryProvider {
29
30 @Override
31 public String generateFirstPageQuery(int pageSize) {
32 return SqlPagingQueryUtils.generateTopSqlQuery(this, false, buildTopClause(pageSize));
33 }
34
35 @Override
36 public String generateRemainingPagesQuery(int pageSize) {
37 if(StringUtils.hasText(getGroupClause())) {
38 return SqlPagingQueryUtils.generateGroupedTopSqlQuery(this, true, buildTopClause(pageSize));
39 }
40 else {
41 return SqlPagingQueryUtils.generateTopSqlQuery(this, true, buildTopClause(pageSize));
42 }
43 }
44
45 private String buildTopClause(int pageSize) {
46 return new StringBuilder().append("TOP ").append(pageSize).toString();
47 }
48
49 @Override
50 public String generateJumpToItemQuery(int itemIndex, int pageSize) {
51 int page = itemIndex / pageSize;
52 int offset = (page * pageSize) - 1;
53 offset = offset<0 ? 0 : offset;
54
55 String topClause = new StringBuilder().append("LIMIT ").append(offset).append(" 1").toString();
56 return SqlPagingQueryUtils.generateTopJumpToQuery(this, topClause);
57 }
58
59 }