You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2024/04/26 13:31:11 UTC

(empire-db) branch master updated: EMPIREDB-422 ListPageElement sortColumn change action

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 2bafd59f EMPIREDB-422 ListPageElement sortColumn change action
2bafd59f is described below

commit 2bafd59fb034658907e334a6aad2a6220a054fea
Author: Rainer Döbele <do...@apache.org>
AuthorDate: Fri Apr 26 15:31:07 2024 +0200

    EMPIREDB-422
    ListPageElement sortColumn change action
---
 .../jsf2/pageelements/BeanListPageElement.java     |  4 +--
 .../empire/jsf2/pageelements/ListPageElement.java  | 29 +++++++++++++++++++++-
 2 files changed, 30 insertions(+), 3 deletions(-)

diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java
index 7581a88b..84bc49a1 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/BeanListPageElement.java
@@ -36,8 +36,8 @@ import org.apache.empire.db.DBReader;
 import org.apache.empire.db.DBRecordData;
 import org.apache.empire.db.DBRowSet;
 import org.apache.empire.db.expr.order.DBOrderByExpr;
-import org.apache.empire.dbms.DBMSHandler;
 import org.apache.empire.dbms.DBMSFeature;
+import org.apache.empire.dbms.DBMSHandler;
 import org.apache.empire.exceptions.InternalException;
 import org.apache.empire.exceptions.InvalidArgumentException;
 import org.apache.empire.exceptions.InvalidOperationException;
@@ -433,7 +433,7 @@ public class BeanListPageElement<T> extends ListPageElement<T> implements ListIt
     {
         cmd.clearOrderBy();
         String sortColumnName = getTableInfo().getSortColumnName();
-        boolean sortAscending = getTableInfo().getSortAscending();
+        boolean sortAscending = getTableInfo().isSortAscending();
 
         // Find Column
         DBColumnExpr sortColumn = rowset.getColumn(sortColumnName);
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/ListPageElement.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/ListPageElement.java
index 28505ed5..3cdc86d0 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/ListPageElement.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/pageelements/ListPageElement.java
@@ -25,8 +25,11 @@ import java.util.List;
 import javax.faces.event.ActionEvent;
 
 import org.apache.empire.commons.ObjectUtils;
+import org.apache.empire.commons.StringUtils;
+import org.apache.empire.data.Column;
 import org.apache.empire.exceptions.NotSupportedException;
 import org.apache.empire.exceptions.ObjectNotValidException;
+import org.apache.empire.jsf2.app.FacesUtils;
 import org.apache.empire.jsf2.pages.Page;
 import org.apache.empire.jsf2.pages.PageElement;
 import org.slf4j.Logger;
@@ -256,7 +259,7 @@ public abstract class ListPageElement<T> extends PageElement
             this.sortOrderChanged = true;
         }
 
-        public boolean getSortAscending()
+        public boolean isSortAscending()
         {
             return this.sortAscending;
         }
@@ -282,6 +285,30 @@ public abstract class ListPageElement<T> extends PageElement
         {
             this.sortOrderChanged = sortOrderChanged;
         }
+        
+        public void setSortColumn(ActionEvent ae)
+        {
+            // Get column
+            Object column = FacesUtils.getActionEventAttribute(ae, "item", Object.class);
+            if (column==null) {
+                log.warn("Unable to set sort column: Attribute \"item\" missing on command link component!");
+                return;
+            }
+            // Get columnName
+            String columnName;
+            if (column instanceof Column) {
+                columnName = ((Column)column).getName();
+            } else {
+                columnName = column.toString();
+            }
+            // Change Column or Sort Order
+            if (StringUtils.compareEqual(columnName, getSortColumnName(), true)) {
+                // change order only
+                setSortAscending(!isSortAscending());
+            } else {
+                setSortColumnName(columnName);
+            }
+        }
 
         /* pagination */