From 1bdd16984bf417be14e17b3043a44bd54be8e455 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Thu, 24 Feb 2022 15:31:50 +0100 Subject: [PATCH] [New] Properly format Report to json, forwarding params to caller --- .../strolch/rest/endpoint/ReportResource.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 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 53f7497cf..e5ed14e16 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 @@ -2,6 +2,7 @@ package li.strolch.rest.endpoint; import static java.util.Comparator.comparing; import static li.strolch.model.StrolchModelConstants.BAG_PARAMETERS; +import static li.strolch.model.StrolchModelConstants.TYPE_PARAMETERS; import static li.strolch.report.ReportConstants.*; import static li.strolch.rest.StrolchRestfulConstants.PARAM_DATE_RANGE_SEL; import static li.strolch.rest.StrolchRestfulConstants.*; @@ -33,6 +34,7 @@ import li.strolch.model.Resource; import li.strolch.model.StrolchElement; import li.strolch.model.StrolchRootElement; import li.strolch.model.Tags; +import li.strolch.model.json.StrolchRootElementToJsonVisitor; import li.strolch.model.parameter.StringParameter; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.privilege.model.Certificate; @@ -73,19 +75,17 @@ public class ReportResource { realm = RestfulStrolchComponent.getInstance().getContainer().getRealm(cert).getRealm(); try (StrolchTransaction tx = RestfulStrolchComponent.getInstance().openTx(cert, realm, getContext())) { - List reports = new ReportSearch(tx).search(tx).orderByName(false).toList(); - // create final array - JsonArray array = new JsonArray(); - reports.forEach(res -> { - JsonObject o = new JsonObject(); - o.addProperty(Tags.Json.ID, res.getId()); - o.addProperty(Tags.Json.NAME, res.getName()); - o.addProperty(PARAM_DATE_RANGE, res.hasParameter(BAG_PARAMETERS, PARAM_DATE_RANGE_SEL)); - array.add(o); - }); + StrolchRootElementToJsonVisitor visitor = new StrolchRootElementToJsonVisitor().flat().withoutVersion() + .withoutObjectType().withoutPolicies().withoutStateVariables() + .ignoreBags(BAG_JOINS, BAG_COLUMNS, BAG_ORDERING).ignoreBagByType(TYPE_FILTER).resourceHook( + (reportRes, reportJ) -> reportJ.addProperty(PARAM_DATE_RANGE, + reportRes.hasParameter(BAG_PARAMETERS, PARAM_DATE_RANGE_SEL))); + JsonArray result = new ReportSearch(tx).search(tx).orderByName(false) + .map(resource -> resource.accept(visitor)).asStream() + .collect(JsonArray::new, JsonArray::add, JsonArray::addAll); - return ResponseUtil.toResponse(DATA, array); + return ResponseUtil.toResponse(DATA, result); } }