[Fix] Fixed anded searching in REST calls for Users, Sessions and OperationsLog

This commit is contained in:
Robert von Burg 2019-03-05 18:00:28 +01:00
parent 5267ff1e1c
commit 543810c8f9
3 changed files with 23 additions and 18 deletions

View File

@ -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<LogMessage> valueSearch = buildSimpleValueSearch(new ValueSearch<>(), query,
Arrays.asList(LogMessage::getMessage, m -> m.getLocator().toString()));
messages = valueSearch.search(messages).asStream();
}
if (isNotEmpty(fromS) && isNotEmpty(toS)) {

View File

@ -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<UserRep> users = privilegeHandler.getUsers(cert);
SearchResult<UserRep> result = new ValueSearch<UserRep>() //
.where(containsIgnoreCase(UserRep::getUsername, query) //
.or(containsIgnoreCase(UserRep::getFirstname, query)) //
.or(containsIgnoreCase(UserRep::getLastname, query)) //
.or(collectionContains(UserRep::getRoles, query)) //
).search(users);
SearchResult<UserRep> result = buildSimpleValueSearch(new ValueSearch<UserRep>(), 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));

View File

@ -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<UserSession> sessions = sessionHandler.getSessions(cert);
SearchResult<UserSession> result = new ValueSearch<UserSession>() //
.where(containsIgnoreCase(UserSession::getUsername, query) //
.or(containsIgnoreCase(UserSession::getFirstname, query)) //
.or(containsIgnoreCase(UserSession::getLastname, query)) //
.or(collectionContains(UserSession::getUserRoles, query)) //
).search(sessions);
SearchResult<UserSession> result = buildSimpleValueSearch(new ValueSearch<UserSession>(), 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();