blob: b0e2a232cafa596ec206999d0b1c3eb462077ca1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
package com.vaadin.data.util.sqlcontainer;
import java.util.List;
import org.junit.Test;
import com.vaadin.data.Container.Filter;
import com.vaadin.data.util.sqlcontainer.AllTests.DB;
import com.vaadin.data.util.sqlcontainer.query.generator.StatementHelper;
import com.vaadin.data.util.sqlcontainer.query.generator.filter.QueryBuilder;
public class FreeformQueryUtil {
@Test
public void testDummy() {
// Added dummy test so JUnit will not complain about
// "No runnable methods".
}
public static StatementHelper getQueryWithFilters(List<Filter> filters,
int offset, int limit) {
StatementHelper sh = new StatementHelper();
if (AllTests.db == DB.MSSQL) {
if (limit > 1) {
offset++;
limit--;
}
StringBuilder query = new StringBuilder();
query.append("SELECT * FROM (SELECT row_number() OVER (");
query.append("ORDER BY \"ID\" ASC");
query.append(") AS rownum, * FROM \"PEOPLE\"");
if (!filters.isEmpty()) {
query.append(QueryBuilder.getWhereStringForFilters(filters, sh));
}
query.append(") AS a WHERE a.rownum BETWEEN ").append(offset)
.append(" AND ").append(Integer.toString(offset + limit));
sh.setQueryString(query.toString());
return sh;
} else if (AllTests.db == DB.ORACLE) {
if (limit > 1) {
offset++;
limit--;
}
StringBuilder query = new StringBuilder();
query.append("SELECT * FROM (SELECT x.*, ROWNUM AS "
+ "\"rownum\" FROM (SELECT * FROM \"PEOPLE\"");
if (!filters.isEmpty()) {
query.append(QueryBuilder.getWhereStringForFilters(filters, sh));
}
query.append(") x) WHERE \"rownum\" BETWEEN ? AND ?");
sh.addParameterValue(offset);
sh.addParameterValue(offset + limit);
sh.setQueryString(query.toString());
return sh;
} else {
StringBuilder query = new StringBuilder("SELECT * FROM people");
if (!filters.isEmpty()) {
query.append(QueryBuilder.getWhereStringForFilters(filters, sh));
}
if (limit != 0 || offset != 0) {
query.append(" LIMIT ? OFFSET ?");
sh.addParameterValue(limit);
sh.addParameterValue(offset);
}
sh.setQueryString(query.toString());
return sh;
}
}
}
|