From 543810c8f95b465e0eaff8a902bbb13e7a453bad Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Tue, 5 Mar 2019 18:00:28 +0100 Subject: [PATCH] [Fix] Fixed anded searching in REST calls for Users, Sessions and OperationsLog --- .../rest/endpoint/OperationsLogResource.java | 8 ++++++-- .../rest/endpoint/PrivilegeUsersService.java | 16 ++++++++-------- .../rest/endpoint/UserSessionsService.java | 17 +++++++++-------- 3 files changed, 23 insertions(+), 18 deletions(-) diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/OperationsLogResource.java b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/OperationsLogResource.java index 46524ba2b..a5ca1c103 100644 --- a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/OperationsLogResource.java +++ b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/OperationsLogResource.java @@ -1,6 +1,7 @@ package li.strolch.rest.endpoint; import static java.util.Comparator.comparing; +import static li.strolch.search.SearchBuilder.buildSimpleValueSearch; import static li.strolch.utils.helper.StringHelper.isNotEmpty; import javax.servlet.http.HttpServletRequest; @@ -11,6 +12,7 @@ import javax.ws.rs.core.Response; import java.time.LocalDate; import java.time.ZoneId; import java.time.ZonedDateTime; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -24,6 +26,7 @@ import li.strolch.rest.RestfulStrolchComponent; import li.strolch.rest.StrolchRestfulConstants; import li.strolch.rest.helper.ResponseUtil; import li.strolch.runtime.privilege.PrivilegeHandler; +import li.strolch.search.ValueSearch; import li.strolch.utils.collections.Paging; @Path("strolch/operations-log") @@ -57,8 +60,9 @@ public class OperationsLogResource { } if (isNotEmpty(query)) { - messages = messages.filter(logMessage -> logMessage.getMessage().toLowerCase().contains(query) // - || logMessage.getLocator().getPathElements().contains(query)); + ValueSearch valueSearch = buildSimpleValueSearch(new ValueSearch<>(), query, + Arrays.asList(LogMessage::getMessage, m -> m.getLocator().toString())); + messages = valueSearch.search(messages).asStream(); } if (isNotEmpty(fromS) && isNotEmpty(toS)) { diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/PrivilegeUsersService.java b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/PrivilegeUsersService.java index cf4d8d5f6..552d45661 100644 --- a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/PrivilegeUsersService.java +++ b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/PrivilegeUsersService.java @@ -16,8 +16,7 @@ package li.strolch.rest.endpoint; import static li.strolch.rest.helper.RestfulHelper.toJson; -import static li.strolch.search.ValueSearchExpressionBuilder.collectionContains; -import static li.strolch.search.ValueSearchExpressionBuilder.containsIgnoreCase; +import static li.strolch.search.SearchBuilder.buildSimpleValueSearch; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.*; @@ -25,6 +24,7 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.text.MessageFormat; +import java.util.Arrays; import java.util.Base64; import java.util.List; import java.util.Locale; @@ -68,12 +68,12 @@ public class PrivilegeUsersService { String query = queryData.getQuery(); List users = privilegeHandler.getUsers(cert); - SearchResult result = new ValueSearch() // - .where(containsIgnoreCase(UserRep::getUsername, query) // - .or(containsIgnoreCase(UserRep::getFirstname, query)) // - .or(containsIgnoreCase(UserRep::getLastname, query)) // - .or(collectionContains(UserRep::getRoles, query)) // - ).search(users); + SearchResult result = buildSimpleValueSearch(new ValueSearch(), query, Arrays.asList( // + UserRep::getUsername, // + UserRep::getFirstname, // + UserRep::getLastname, // + userRep -> userRep.getUserState().name(), // + UserRep::getRoles)).search(users); PrivilegeElementToJsonVisitor visitor = new PrivilegeElementToJsonVisitor(); JsonObject root = toJson(queryData, users.size(), result, t -> t.accept(visitor)); diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/UserSessionsService.java b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/UserSessionsService.java index 83ae61733..49e41a106 100644 --- a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/UserSessionsService.java +++ b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/UserSessionsService.java @@ -16,8 +16,7 @@ package li.strolch.rest.endpoint; import static li.strolch.rest.helper.RestfulHelper.toJson; -import static li.strolch.search.ValueSearchExpressionBuilder.collectionContains; -import static li.strolch.search.ValueSearchExpressionBuilder.containsIgnoreCase; +import static li.strolch.search.SearchBuilder.buildSimpleValueSearch; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.*; @@ -25,6 +24,7 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.text.MessageFormat; +import java.util.Arrays; import java.util.List; import java.util.Locale; @@ -57,12 +57,13 @@ public class UserSessionsService { String query = queryData.getQuery(); List sessions = sessionHandler.getSessions(cert); - SearchResult result = new ValueSearch() // - .where(containsIgnoreCase(UserSession::getUsername, query) // - .or(containsIgnoreCase(UserSession::getFirstname, query)) // - .or(containsIgnoreCase(UserSession::getLastname, query)) // - .or(collectionContains(UserSession::getUserRoles, query)) // - ).search(sessions); + + SearchResult result = buildSimpleValueSearch(new ValueSearch(), query, + Arrays.asList( // + UserSession::getUsername, // + UserSession::getFirstname, // + UserSession::getLastname, // + UserSession::getUserRoles)).search(sessions); JsonObject root = toJson(queryData, sessions.size(), result, UserSession::toJson); Gson gson = new GsonBuilder().setPrettyPrinting().create();