This is an automated email from the ASF dual-hosted git repository.
doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git
The following commit(s) were added to refs/heads/master by this push:
new 990d6614 EMPIREDB-431 DBMSHandlerMssql: implement skipRows
990d6614 is described below
commit 990d66140b46d4a9a6e0da5ad4d3bdb45be67e51
Author: Rainer Döbele <[email protected]>
AuthorDate: Thu Jan 16 17:09:53 2025 +0100
EMPIREDB-431
DBMSHandlerMssql: implement skipRows
---
.../jakarta/controls/TextAreaInputControl.java | 7 +++--
.../empire/jsf2/controls/TextAreaInputControl.java | 5 +++-
.../empire/dbms/sqlserver/DBMSHandlerMSSQL.java | 34 ++++++++++++++++++++--
3 files changed, 40 insertions(+), 6 deletions(-)
diff --git
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/TextAreaInputControl.java
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/TextAreaInputControl.java
index fae1f864..6d8aaa8b 100644
---
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/TextAreaInputControl.java
+++
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/TextAreaInputControl.java
@@ -125,9 +125,12 @@ public class TextAreaInputControl extends InputControl
}
@Override
- protected String formatValue(Object value, ValueInfo vi)
+ public String formatValue(Object value, ValueInfo vi, boolean escapeHtml)
{
- String strVal = super.formatValue(value, vi);
+ // escape
+ String strVal = super.formatValue(value, vi, escapeHtml);
+ if (!escapeHtml)
+ return strVal;
// replace CR/LF by <BR/>
if (strVal.indexOf("\r\n")>0)
{ // replace CR with <BR/>
diff --git
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextAreaInputControl.java
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextAreaInputControl.java
index 4c6c762d..d2e3ed0b 100644
---
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextAreaInputControl.java
+++
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextAreaInputControl.java
@@ -127,7 +127,10 @@ public class TextAreaInputControl extends InputControl
@Override
public String formatValue(Object value, ValueInfo vi, boolean escapeHtml)
{
- String strVal = super.formatValue(value, vi, true);
+ // escape
+ String strVal = super.formatValue(value, vi, escapeHtml);
+ if (!escapeHtml)
+ return strVal;
// replace CR/LF by <BR/>
if (strVal.indexOf("\r\n")>0)
{ // replace CR with <BR/>
diff --git
a/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
b/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
index 1235d85f..dd86a5b7 100644
---
a/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
+++
b/empire-db/src/main/java/org/apache/empire/dbms/sqlserver/DBMSHandlerMSSQL.java
@@ -65,6 +65,7 @@ public class DBMSHandlerMSSQL extends DBMSHandlerBase
{
// *Deprecated* private static final long serialVersionUID = 1L;
protected int limit = -1;
+ protected int skipRows = -1;
public DBCommandMSSQL(DBMSHandlerMSSQL dbms, boolean autoPrepareStmt)
{
@@ -77,11 +78,38 @@ public class DBMSHandlerMSSQL extends DBMSHandlerBase
limit = numRows;
return this;
}
-
+
+ @Override
+ public DBCommand skipRows(int skipRows)
+ {
+ this.skipRows = skipRows;
+ return this;
+ }
+
@Override
public void clearLimit()
{
- limit = -1;
+ this.limit = -1;
+ this.skipRows = -1;
+ }
+
+ @Override
+ public void getSelect(DBSQLBuilder sql, int flags)
+ {
+ super.getSelect(sql, flags);
+ // add skip rows
+ if (skipRows>=0 && not(flags, SF_SKIP_LIMIT)) {
+ // OFFSET 50 ROWS FETCH NEXT 25 ROWS ONLY
+ sql.append("\r\nOFFSET ");
+ sql.append(String.valueOf(this.skipRows));
+ sql.append(" ROWS");
+ if (limit>=0)
+ { // Limit
+ sql.append(" FETCH NEXT ");
+ sql.append(String.valueOf(limit));
+ sql.append(" ROWS ONLY");
+ }
+ }
}
@Override
@@ -92,7 +120,7 @@ public class DBMSHandlerMSSQL extends DBMSHandlerBase
if (selectDistinct)
sql.append("DISTINCT ");
// Add limit
- if (limit>=0)
+ if (limit>=0 && skipRows<0)
{ // Limit
sql.append("TOP ");
sql.append(String.valueOf(limit));