From c62499029031571432365bdb9b6427c78d53c6ce Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Tue, 28 Jul 2020 13:31:42 +0200 Subject: [PATCH] [New] Added possibility to filter missing values as true, instead of false --- .../main/java/li/strolch/rest/endpoint/ReportResource.java | 4 +++- .../main/java/li/strolch/report/policy/GenericReport.java | 6 ++++-- .../java/li/strolch/report/policy/ReportFilterPolicy.java | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/ReportResource.java b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/ReportResource.java index a5108bfff..61a9ca380 100644 --- a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/ReportResource.java +++ b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/ReportResource.java @@ -281,7 +281,9 @@ public class ReportResource { report.dateRange(dateRange); } - filters.keySet().forEach(f -> report.filter(f, filters.getSet(f))); + + if (!filters.isEmpty()) + filters.keySet().forEach(f -> report.filter(f, filters.getSet(f))); // get rows Stream json = report.doReportAsJson().skip(offset).limit(limit); diff --git a/li.strolch.service/src/main/java/li/strolch/report/policy/GenericReport.java b/li.strolch.service/src/main/java/li/strolch/report/policy/GenericReport.java index 343a4a031..97d32d4ea 100644 --- a/li.strolch.service/src/main/java/li/strolch/report/policy/GenericReport.java +++ b/li.strolch.service/src/main/java/li/strolch/report/policy/GenericReport.java @@ -408,7 +408,7 @@ public class GenericReport extends ReportPolicy { if (value instanceof Date) return ISO8601FormatFactory.getInstance().formatDate((Date) value); if (value instanceof Parameter) - return ((Parameter) value).getValueAsString(); + return ((Parameter) value).getValueAsString(); return value.toString(); })); } @@ -567,6 +567,8 @@ public class GenericReport extends ReportPolicy { Object value1 = evaluateColumnValue(refTuple.getFirst(), row, true); Object value2 = evaluateColumnValue(refTuple.getSecond(), row, true); + if (this.filterMissingValuesAsTrue && (value1 == null || value2 == null)) + continue; if (value1 == null || value2 == null || !filterPolicy.filter(value1, value2)) return false; @@ -670,7 +672,7 @@ public class GenericReport extends ReportPolicy { else columnValue = parameter; } else { - columnValue = lookupParameter(columnDefP, column).orElseGet(StringParameter::new); + columnValue = lookupParameter(columnDefP, column).orElseGet(() -> allowNull ? null : new StringParameter()); } return columnValue; diff --git a/li.strolch.service/src/main/java/li/strolch/report/policy/ReportFilterPolicy.java b/li.strolch.service/src/main/java/li/strolch/report/policy/ReportFilterPolicy.java index 21cd0736c..beb89d28a 100644 --- a/li.strolch.service/src/main/java/li/strolch/report/policy/ReportFilterPolicy.java +++ b/li.strolch.service/src/main/java/li/strolch/report/policy/ReportFilterPolicy.java @@ -56,7 +56,7 @@ public abstract class ReportFilterPolicy extends StrolchPolicy { } else if (value instanceof Parameter) { - Parameter parameter = (Parameter) value; + Parameter parameter = (Parameter) value; if (this.right == null) { StrolchValueType valueType = parameter.getValueType(); if (valueType == StrolchValueType.DATE)