From: Roland Häder Date: Thu, 29 Mar 2018 22:05:16 +0000 (+0200) Subject: Continued: X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=b8c23e6043365c703a4c6d9145e8001bfbbe4178;p=jcoreee.git Continued: - added filterByPrice() method for p:dataTable being able to filter on BigDecimal values Signed-off-by: Roland Häder --- diff --git a/src/org/mxchange/jcoreee/bean/faces/BaseFacesBean.java b/src/org/mxchange/jcoreee/bean/faces/BaseFacesBean.java index 16dbefe..93d502c 100644 --- a/src/org/mxchange/jcoreee/bean/faces/BaseFacesBean.java +++ b/src/org/mxchange/jcoreee/bean/faces/BaseFacesBean.java @@ -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 + *

+ * @param value Actual value to check + * @param filter Filter value to check against {@code value} + * @param locale Locale + *

+ * @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) value).compareTo(BigDecimal.valueOf(Double.valueOf(filterText))) > 0; + } + /** * Determines principal's name or returns null if no principal (security) is * set.