From 670da7360596d63ac008e69a932840ab15a50ab1 Mon Sep 17 00:00:00 2001 From: MarkvdVorst Date: Tue, 9 Apr 2024 16:47:28 +0200 Subject: [PATCH 1/6] updated metadataApi so that multiple filters can now be used instead of only one. this is necessary for issue 290 of the ladybug-frontend project --- .../nl/nn/testtool/web/api/MetadataApi.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java index 9d0c8da6..30684f55 100644 --- a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java +++ b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java @@ -52,9 +52,9 @@ public class MetadataApi extends ApiBase { * @param storageName Name of the storage to search. * @param metadataNames The metadata names to return. * @param limit Maximum number of results to return. - * @param filterHeader The header on which we filter. + * @param filterHeaders The header on which we filter. * @param uriInfo Query parameters for search. - * @param filterParam The regex on which the report names will be filtered + * @param filterParams The regex on which the report names will be filtered * @return Response containing fields [List[String]] and values [List[List[Object]]]. * @throws ApiException If an exception occurs during metadata search in storage. */ @@ -64,16 +64,18 @@ public class MetadataApi extends ApiBase { public Response getMetadataList(@PathParam("storage") String storageName, @QueryParam("metadataNames") List metadataNames, @DefaultValue("-1") @QueryParam("limit") int limit, - @DefaultValue("") @QueryParam("filterHeader") String filterHeader, - @DefaultValue("(.*)") @QueryParam("filter") String filterParam , + @DefaultValue("") @QueryParam("filterHeader") List filterHeaders, + @DefaultValue("(.*)") @QueryParam("filter") List filterParams , @Context UriInfo uriInfo) { List searchValues = new ArrayList<>(); for(String field : metadataNames) { - if (filterHeader.equals(field)) { - searchValues.add(filterParam); - } else { - searchValues.add(null); + for (int filterHeaderIndex = 0; filterHeaderIndex < filterHeaders.size(); filterHeaderIndex++) { + if (filterHeaders.get(filterHeaderIndex).equals(field)) { + searchValues.add(filterParams.get(filterHeaderIndex)); + } else { + searchValues.add(null); + } } } try { @@ -97,7 +99,7 @@ public Response getMetadataList(@PathParam("storage") String storageName, return Response.ok().entity(metadata).build(); } catch (Exception e) { - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Could not find metadata with limit [" + limit + "] and filter [" + filterParam + "] - detailed error message - " + e + Arrays.toString(e.getStackTrace())).build(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Could not find metadata with limit [" + limit + "] and filter [" + filterParams + "] - detailed error message - " + e + Arrays.toString(e.getStackTrace())).build(); } } From a794082dbe1f72c4d8d625ecbc429492a60e91cf Mon Sep 17 00:00:00 2001 From: MarkvdVorst Date: Tue, 23 Apr 2024 15:06:52 +0200 Subject: [PATCH 2/6] Fixed small oversight that would cause a filter to be overwritten with null if it wasn't the last in the queue and would duplicate searchvalues --- src/main/java/nl/nn/testtool/web/api/MetadataApi.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java index 30684f55..ef016e0a 100644 --- a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java +++ b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java @@ -70,13 +70,16 @@ public Response getMetadataList(@PathParam("storage") String storageName, List searchValues = new ArrayList<>(); for(String field : metadataNames) { + boolean changed = false; for (int filterHeaderIndex = 0; filterHeaderIndex < filterHeaders.size(); filterHeaderIndex++) { if (filterHeaders.get(filterHeaderIndex).equals(field)) { searchValues.add(filterParams.get(filterHeaderIndex)); - } else { - searchValues.add(null); + changed = true; } } + if(!changed) { + searchValues.add(null); + } } try { From 3b38e1cac4789ea2f033f0d4b3d0977e9fd69c10 Mon Sep 17 00:00:00 2001 From: MarkvdVorst Date: Tue, 23 Apr 2024 15:08:52 +0200 Subject: [PATCH 3/6] should be plural now for being able to use multiple filters --- src/main/java/nl/nn/testtool/web/api/MetadataApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java index ef016e0a..c455fc52 100644 --- a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java +++ b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java @@ -52,7 +52,7 @@ public class MetadataApi extends ApiBase { * @param storageName Name of the storage to search. * @param metadataNames The metadata names to return. * @param limit Maximum number of results to return. - * @param filterHeaders The header on which we filter. + * @param filterHeaders The headers on which we filter. * @param uriInfo Query parameters for search. * @param filterParams The regex on which the report names will be filtered * @return Response containing fields [List[String]] and values [List[List[Object]]]. From 51256b9843c69fe0f96727707aa5ad9740b2c62d Mon Sep 17 00:00:00 2001 From: MarkvdVorst Date: Sat, 27 Apr 2024 18:02:12 +0200 Subject: [PATCH 4/6] removed the defaultValue of filterHeaders and filterParams as it was no longer necessary --- src/main/java/nl/nn/testtool/web/api/MetadataApi.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java index c455fc52..7ceeff77 100644 --- a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java +++ b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java @@ -64,10 +64,9 @@ public class MetadataApi extends ApiBase { public Response getMetadataList(@PathParam("storage") String storageName, @QueryParam("metadataNames") List metadataNames, @DefaultValue("-1") @QueryParam("limit") int limit, - @DefaultValue("") @QueryParam("filterHeader") List filterHeaders, - @DefaultValue("(.*)") @QueryParam("filter") List filterParams , + @QueryParam("filterHeader") List filterHeaders, + @QueryParam("filter") List filterParams , @Context UriInfo uriInfo) { - List searchValues = new ArrayList<>(); for(String field : metadataNames) { boolean changed = false; From b438802c1391afbff5bb06e659d2f5a693abfb3a Mon Sep 17 00:00:00 2001 From: MarkvdVorst Date: Mon, 29 Apr 2024 11:16:41 +0200 Subject: [PATCH 5/6] changed for counter loop to a foreach loop --- src/main/java/nl/nn/testtool/web/api/MetadataApi.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java index 7ceeff77..52f0bd33 100644 --- a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java +++ b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java @@ -70,9 +70,9 @@ public Response getMetadataList(@PathParam("storage") String storageName, List searchValues = new ArrayList<>(); for(String field : metadataNames) { boolean changed = false; - for (int filterHeaderIndex = 0; filterHeaderIndex < filterHeaders.size(); filterHeaderIndex++) { - if (filterHeaders.get(filterHeaderIndex).equals(field)) { - searchValues.add(filterParams.get(filterHeaderIndex)); + for (String filterHeader : filterHeaders) { + if (filterHeader.equals(field)) { + searchValues.add(filterParams.get(filterHeaders.indexOf(filterHeader))); changed = true; } } From 3c2071aa3159cdb08a13a4f53f586bdc95286dec Mon Sep 17 00:00:00 2001 From: MarkvdVorst Date: Mon, 29 Apr 2024 11:31:19 +0200 Subject: [PATCH 6/6] changed for counter loop to a foreach loop --- src/main/java/nl/nn/testtool/web/api/MetadataApi.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java index 52f0bd33..9781380f 100644 --- a/src/main/java/nl/nn/testtool/web/api/MetadataApi.java +++ b/src/main/java/nl/nn/testtool/web/api/MetadataApi.java @@ -70,9 +70,9 @@ public Response getMetadataList(@PathParam("storage") String storageName, List searchValues = new ArrayList<>(); for(String field : metadataNames) { boolean changed = false; - for (String filterHeader : filterHeaders) { - if (filterHeader.equals(field)) { - searchValues.add(filterParams.get(filterHeaders.indexOf(filterHeader))); + for (int filterHeaderIndex = 0; filterHeaderIndex < filterHeaders.size(); filterHeaderIndex++) { + if (filterHeaders.get(filterHeaderIndex).equals(field)) { + searchValues.add(filterParams.get(filterHeaderIndex)); changed = true; } } @@ -101,7 +101,7 @@ public Response getMetadataList(@PathParam("storage") String storageName, return Response.ok().entity(metadata).build(); } catch (Exception e) { - return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Could not find metadata with limit [" + limit + "] and filter [" + filterParams + "] - detailed error message - " + e + Arrays.toString(e.getStackTrace())).build(); + return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("Could not find metadata with limit " + limit + " and filter [" + filterParams + "] - detailed error message - " + e + Arrays.toString(e.getStackTrace())).build(); } }