]> git.mxchange.org Git - jcoreee.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Thu, 29 Mar 2018 22:05:16 +0000 (00:05 +0200)
committerRoland Häder <roland@mxchange.org>
Thu, 29 Mar 2018 22:05:16 +0000 (00:05 +0200)
- added filterByPrice() method for p:dataTable being able to filter on
  BigDecimal values

Signed-off-by: Roland Häder <roland@mxchange.org>
src/org/mxchange/jcoreee/bean/faces/BaseFacesBean.java

index 16dbefe2a7dd60b69a28b23269cb30819ed544f1..93d502c8ca0c34f2b38d613a45c394721414419f 100644 (file)
@@ -17,6 +17,7 @@
 package org.mxchange.jcoreee.bean.faces;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.security.Principal;
 import java.text.MessageFormat;
 import java.util.ArrayList;
@@ -80,6 +81,41 @@ public abstract class BaseFacesBean implements Serializable {
                super();
        }
 
+       /**
+        * A filter for prices
+        * <p>
+        * @param value  Actual value to check
+        * @param filter Filter value to check against {@code value}
+        * @param locale Locale
+        * <p>
+        * @return Whether price ({@code value}) is at least {@code filter}
+        *
+        * @see https://www.primefaces.org/showcase/ui/data/datatable/filter.xhtml
+        */
+       @SuppressWarnings ("unchecked")
+       public boolean filterByPrice (final Object value, final Object filter, final Locale locale) {
+               // Get trimmed string or NULL
+               final String filterText = (filter == null) ? null : filter.toString().trim();
+
+               // Is null or empty?
+               if (filterText == null || filterText.isEmpty()) {
+                       // Then return TRUE
+                       return true;
+               }
+
+               // Is value NULL or not castable?
+               if (value == null) {
+                       // Return FALSE
+                       return false;
+               } else if (!(value instanceof Comparable)) {
+                       // Not castable
+                       throw new ClassCastException("value is not instance of Comparable");
+               }
+
+               // Do the cast and compare
+               return ((Comparable<BigDecimal>) value).compareTo(BigDecimal.valueOf(Double.valueOf(filterText))) > 0;
+       }
+
        /**
         * Determines principal's name or returns null if no principal (security) is
         * set.