diff --git a/li.strolch.model/src/main/java/li/strolch/model/query/ActivityQuery.java b/li.strolch.model/src/main/java/li/strolch/model/query/ActivityQuery.java index 42b3d3b96..bd19935d7 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/query/ActivityQuery.java +++ b/li.strolch.model/src/main/java/li/strolch/model/query/ActivityQuery.java @@ -15,12 +15,12 @@ */ package li.strolch.model.query; +import ch.eitchnet.utils.dbc.DBC; import li.strolch.model.ActivityVisitor; import li.strolch.model.activity.Action; import li.strolch.model.activity.Activity; import li.strolch.model.query.ordering.StrolchQueryOrdering; import li.strolch.model.visitor.NoStrategyActivityVisitor; -import ch.eitchnet.utils.dbc.DBC; /** *

@@ -48,6 +48,10 @@ public class ActivityQuery extends StrolchElementQuery protected ActivityVisitor activityVisitor; protected StrolchQueryOrdering ordering; + public ActivityQuery() { + super(); + } + public ActivityQuery(Navigation navigation) { super(navigation); } @@ -102,8 +106,8 @@ public class ActivityQuery extends StrolchElementQuery } public static ActivityQuery query(String type, StrolchQueryOrdering ordering) { - return new ActivityQuery(new StrolchTypeNavigation(type)).setActivityVisitor( - new NoStrategyActivityVisitor()).setOrdering(ordering); + return new ActivityQuery(new StrolchTypeNavigation(type)) + .setActivityVisitor(new NoStrategyActivityVisitor()).setOrdering(ordering); } public static ActivityQuery query(String type, ActivityVisitor activityVisitor) { @@ -112,7 +116,7 @@ public class ActivityQuery extends StrolchElementQuery public static ActivityQuery query(String type, ActivityVisitor activityVisitor, StrolchQueryOrdering ordering) { - return new ActivityQuery(new StrolchTypeNavigation(type)).setActivityVisitor(activityVisitor).setOrdering( - ordering); + return new ActivityQuery(new StrolchTypeNavigation(type)).setActivityVisitor(activityVisitor) + .setOrdering(ordering); } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/query/OrderQuery.java b/li.strolch.model/src/main/java/li/strolch/model/query/OrderQuery.java index 7ea8c78a6..c7400c971 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/query/OrderQuery.java +++ b/li.strolch.model/src/main/java/li/strolch/model/query/OrderQuery.java @@ -15,12 +15,12 @@ */ package li.strolch.model.query; +import ch.eitchnet.utils.dbc.DBC; import li.strolch.model.Order; import li.strolch.model.OrderVisitor; import li.strolch.model.parameter.Parameter; import li.strolch.model.query.ordering.StrolchQueryOrdering; import li.strolch.model.visitor.NoStrategyOrderVisitor; -import ch.eitchnet.utils.dbc.DBC; /** *

@@ -48,6 +48,10 @@ public class OrderQuery extends StrolchElementQuery { protected OrderVisitor orderVisitor; protected StrolchQueryOrdering ordering; + public OrderQuery() { + super(); + } + public OrderQuery(Navigation navigation) { super(navigation); } diff --git a/li.strolch.model/src/main/java/li/strolch/model/query/ResourceQuery.java b/li.strolch.model/src/main/java/li/strolch/model/query/ResourceQuery.java index 63b027e37..c57a9d609 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/query/ResourceQuery.java +++ b/li.strolch.model/src/main/java/li/strolch/model/query/ResourceQuery.java @@ -15,12 +15,12 @@ */ package li.strolch.model.query; +import ch.eitchnet.utils.dbc.DBC; import li.strolch.model.Resource; import li.strolch.model.ResourceVisitor; import li.strolch.model.parameter.Parameter; import li.strolch.model.query.ordering.StrolchQueryOrdering; import li.strolch.model.visitor.NoStrategyResourceVisitor; -import ch.eitchnet.utils.dbc.DBC; /** *

@@ -48,6 +48,10 @@ public class ResourceQuery extends StrolchElementQuery protected ResourceVisitor resourceVisitor; protected StrolchQueryOrdering ordering; + public ResourceQuery() { + super(); + } + public ResourceQuery(Navigation navigation) { super(navigation); } @@ -103,8 +107,8 @@ public class ResourceQuery extends StrolchElementQuery } public static ResourceQuery query(String type, StrolchQueryOrdering ordering) { - return new ResourceQuery(new StrolchTypeNavigation(type)).setResourceVisitor( - new NoStrategyResourceVisitor()).setOrdering(ordering); + return new ResourceQuery(new StrolchTypeNavigation(type)) + .setResourceVisitor(new NoStrategyResourceVisitor()).setOrdering(ordering); } public static ResourceQuery query(String type, ResourceVisitor resourceVisitor) { @@ -113,7 +117,7 @@ public class ResourceQuery extends StrolchElementQuery public static ResourceQuery query(String type, ResourceVisitor resourceVisitor, StrolchQueryOrdering ordering) { - return new ResourceQuery(new StrolchTypeNavigation(type)).setResourceVisitor(resourceVisitor).setOrdering( - ordering); + return new ResourceQuery(new StrolchTypeNavigation(type)).setResourceVisitor(resourceVisitor) + .setOrdering(ordering); } } diff --git a/li.strolch.model/src/main/java/li/strolch/model/query/StrolchElementQuery.java b/li.strolch.model/src/main/java/li/strolch/model/query/StrolchElementQuery.java index cda311f7c..0537d4b93 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/query/StrolchElementQuery.java +++ b/li.strolch.model/src/main/java/li/strolch/model/query/StrolchElementQuery.java @@ -25,14 +25,26 @@ public abstract class StrolchElementQuery implements Str protected Navigation navigation; protected Selection selection; + public StrolchElementQuery() { + // empty + } + public StrolchElementQuery(Navigation navigation) { this.navigation = navigation; } + public void setNavigation(Navigation navigation) { + this.navigation = navigation; + } + public boolean hasNavigation() { return this.navigation != null; } + public Navigation getNavigation() { + return this.navigation; + } + public boolean hasSelection() { return this.selection != null && this.selection.hasSelection(); } diff --git a/li.strolch.persistence.postgresql/src/main/java/li/strolch/persistence/postgresql/PostgreSqlOrderDao.java b/li.strolch.persistence.postgresql/src/main/java/li/strolch/persistence/postgresql/PostgreSqlOrderDao.java index f6a1d11c9..c76a2975c 100644 --- a/li.strolch.persistence.postgresql/src/main/java/li/strolch/persistence/postgresql/PostgreSqlOrderDao.java +++ b/li.strolch.persistence.postgresql/src/main/java/li/strolch/persistence/postgresql/PostgreSqlOrderDao.java @@ -32,6 +32,9 @@ import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import javax.xml.transform.sax.SAXResult; +import org.xml.sax.ContentHandler; +import org.xml.sax.SAXException; + import li.strolch.model.Order; import li.strolch.model.Tags; import li.strolch.model.query.OrderQuery; @@ -41,9 +44,6 @@ import li.strolch.model.xml.XmlModelSaxReader; import li.strolch.persistence.api.OrderDao; import li.strolch.persistence.api.StrolchPersistenceException; -import org.xml.sax.ContentHandler; -import org.xml.sax.SAXException; - @SuppressWarnings("nls") public class PostgreSqlOrderDao extends PostgresqlDao implements OrderDao { diff --git a/li.strolch.planningwebapp/src/main/webapp/css/application.css b/li.strolch.planningwebapp/src/main/webapp/css/application.css index a7fbd9870..c36f28e07 100644 --- a/li.strolch.planningwebapp/src/main/webapp/css/application.css +++ b/li.strolch.planningwebapp/src/main/webapp/css/application.css @@ -5,7 +5,8 @@ /* * Import different parts */ -@import url("utils.css"); -@import url("loader.css"); -@import url("parts/main.css"); -@import url("parts/nav.css"); +@import url('utils.css'); +@import url('loader.css'); +@import url('bootstrap-override.css'); +@import url('parts/main.css'); +@import url('parts/nav.css'); diff --git a/li.strolch.planningwebapp/src/main/webapp/css/bootstrap-override.css b/li.strolch.planningwebapp/src/main/webapp/css/bootstrap-override.css new file mode 100644 index 000000000..722b78bed --- /dev/null +++ b/li.strolch.planningwebapp/src/main/webapp/css/bootstrap-override.css @@ -0,0 +1,4 @@ + +.tab-pane { + margin: 10px; +} \ No newline at end of file diff --git a/li.strolch.planningwebapp/src/main/webapp/js/functions.js b/li.strolch.planningwebapp/src/main/webapp/js/functions.js index 148467c93..06e169ec4 100644 --- a/li.strolch.planningwebapp/src/main/webapp/js/functions.js +++ b/li.strolch.planningwebapp/src/main/webapp/js/functions.js @@ -283,22 +283,26 @@ strolch.fn.initDataTable = function (tableId, columns, url, queryData) { columns: columns, lengthMenu: [[5, 10, 20, -1], [5, 10, 20, 'All']], processing: true, + searching: false, serverSide: true, ajax: function (data, callback, settings) { - queryData.draw = data.draw; - queryData.pageSize = data.length; - queryData.page = data.start / data.length + 1; - queryData.query = data.search.value; - queryData.sortBy = data.columns[data.order[0].column].data; - queryData.ascending = data.order[0].dir == 'asc'; + var payload = { + realmName: queryData.realmName, + draw: data.draw, + pageSize: data.length, + page: data.start / data.length + 1, + query: $('#' + queryData.queryFieldId).val(), + orderBy: data.columns[data.order[0].column].data, + ascending: data.order[0].dir == 'asc' + }; - console.log('Searching for ' + queryData.query); + console.log('Searching for ' + payload.query); $.ajax({ dataType: 'json', url: url, - data: queryData, + data: payload, success: function (data) { data.recordsTotal = data.dataSetSize; data.recordsFiltered = data.nrOfElements; diff --git a/li.strolch.planningwebapp/src/main/webapp/js/parts/model.js b/li.strolch.planningwebapp/src/main/webapp/js/parts/model.js index 3383823cb..e74c202dd 100644 --- a/li.strolch.planningwebapp/src/main/webapp/js/parts/model.js +++ b/li.strolch.planningwebapp/src/main/webapp/js/parts/model.js @@ -38,7 +38,6 @@ strolch.parts.model.hide = function () { strolch.parts.model.prepareResourceTable = function () { // query => the search criteria - // queryBy => the fields to use in searching, default is null/all // sortBy => a single column to sort by // ascending => true|false // pageSize => integer, max number of elements to return per page, @@ -50,10 +49,9 @@ strolch.parts.model.prepareResourceTable = function () { pageSize: 1, page: 0, query: '', - queryBy: 'Id, Name', - types: '', orderBy: '', - ascending: true + ascending: true, + queryFieldId: 'modelResourceTableSearch' }; var url = strolch.fn.url(strolch.const.urls.resources); diff --git a/li.strolch.planningwebapp/src/main/webapp/parts/model.html b/li.strolch.planningwebapp/src/main/webapp/parts/model.html index 335603812..c5e28d25d 100644 --- a/li.strolch.planningwebapp/src/main/webapp/parts/model.html +++ b/li.strolch.planningwebapp/src/main/webapp/parts/model.html @@ -1,28 +1,50 @@ -

- \ No newline at end of file diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/ModelQuery.java b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/ModelQuery.java index 093d6991e..88370a82e 100644 --- a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/ModelQuery.java +++ b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/ModelQuery.java @@ -13,48 +13,50 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import ch.eitchnet.privilege.model.Certificate; -import ch.eitchnet.utils.StringMatchMode; import ch.eitchnet.utils.collections.Paging; import ch.eitchnet.utils.helper.StringHelper; +import li.strolch.agent.api.OrderMap; import li.strolch.agent.api.ResourceMap; +import li.strolch.model.Order; import li.strolch.model.Resource; +import li.strolch.model.StrolchRootElement; +import li.strolch.model.Tags; +import li.strolch.model.json.OrderToJsonVisitor; import li.strolch.model.json.ResourceToJsonVisitor; -import li.strolch.model.parameter.Parameter; -import li.strolch.model.query.IdSelection; -import li.strolch.model.query.NameSelection; -import li.strolch.model.query.OrSelection; -import li.strolch.model.query.ParameterSelection; +import li.strolch.model.query.OrderQuery; import li.strolch.model.query.ResourceQuery; +import li.strolch.model.query.StrolchTypeNavigation; +import li.strolch.model.query.parser.QueryParser; +import li.strolch.model.visitor.StrolchElementVisitor; import li.strolch.persistence.api.StrolchTransaction; import li.strolch.rest.RestfulStrolchComponent; import li.strolch.rest.StrolchRestfulConstants; -import li.strolch.rest.model.StrolchElementOverview; -import li.strolch.rest.model.TypeDetail; import li.strolch.runtime.StrolchConstants; @Path("strolch/model") public class ModelQuery { + private static final Logger logger = LoggerFactory.getLogger(ModelQuery.class); + /** - *

- * Query Resources - *

+ * Query {@link Resource Resources} by parsing the query string in {@link QueryData#getQuery()} using + * {@link QueryParser} * - * @param realm - * the realm for which the resource type overview is to be returned - * @param type + * @param queryData + * the data from the client + * @param request + * the {@link HttpServletRequest} on which to get the {@link Certificate} * - * @return an overview of the {@link Resource Resources} with the given type. This is a list of overviews of the - * resources - * - * @see TypeDetail - * @see StrolchElementOverview + * @return {@link Response} containing the JSONified {@link Resource Resources} queried */ @GET @Produces(MediaType.APPLICATION_JSON) @@ -62,122 +64,219 @@ public class ModelQuery { public Response queryResources(@BeanParam QueryData queryData, @Context HttpServletRequest request) { Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE); - String realmName = queryData.getRealmName(); - if (StringHelper.isEmpty(realmName)) - realmName = StrolchConstants.DEFAULT_REALM; + // see if a special realm was requested + String realmName = getRealmName(queryData); List resources = new ArrayList<>(); - Set queryBy = queryData.getQueryByNames(); - Set queryTypes = queryData.getTypesAsSet(); + // parse the query string + ResourceQuery query = QueryParser.parseToResourceQuery(queryData.getQuery(), true); + // query the data long dataSetSize = 0L; try (StrolchTransaction tx = openTx(cert, realmName)) { ResourceMap resourceMap = tx.getResourceMap(); - if (queryTypes.isEmpty()) { + if (query.hasNavigation()) { + String type = ((StrolchTypeNavigation) query.getNavigation()).getType(); + dataSetSize = resourceMap.querySize(tx, type); + resources.addAll(tx.doQuery(query)); + } else { Set types = resourceMap.getTypes(tx); dataSetSize = resourceMap.querySize(tx); for (String type : types) { - query(queryData, resources, queryBy, tx, type); - } - } else { - for (String type : queryTypes) { - dataSetSize = resourceMap.querySize(tx, type); - query(queryData, resources, queryBy, tx, type); + query.setNavigation(new StrolchTypeNavigation(type)); + resources.addAll(tx.doQuery(query)); } } tx.doNothingOnClose(); } - String orderBy = queryData.getOrderBy(); - boolean asc = queryData.isAscending(); - if (StringHelper.isNotEmpty(orderBy)) { - if (orderBy.equals(QueryData.ID)) { - resources.sort((r1, r2) -> asc ? r1.getId().compareTo(r2.getId()) : r2.getId().compareTo(r1.getId())); - } else if (orderBy.equals(QueryData.NAME)) { - resources.sort( - (r1, r2) -> asc ? r1.getName().compareTo(r2.getName()) : r2.getName().compareTo(r1.getName())); - } else if (orderBy.equals(QueryData.TYPE)) { - resources.sort( - (r1, r2) -> asc ? r1.getType().compareTo(r2.getType()) : r2.getType().compareTo(r1.getType())); - } else { - String[] parts = orderBy.split(":"); - String bagKey = parts[0]; - String paramKey = parts[1]; - resources.sort((r1, r2) -> { - Parameter param1 = r1.getParameter(bagKey, paramKey); - Parameter param2 = r2.getParameter(bagKey, paramKey); - if (asc) - return param1.getValueAsString().compareTo(param2.getValueAsString()); - return param2.getValueAsString().compareTo(param1.getValueAsString()); - }); - } - } - - // paging - Paging paging = Paging.asPage(resources, queryData.getPageSize(), queryData.getPage()); - - // get page - List page = paging.getPage(); + // do ordering + doOrdering(queryData, resources); // build JSON response + ResourceToJsonVisitor toJsonVisitor = new ResourceToJsonVisitor(); + JsonObject root = marshall(queryData, dataSetSize, resources, toJsonVisitor); + + // marshall result + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + String entity = gson.toJson(root); + return Response.ok(entity).build(); + } + + /** + * Query {@link Order Orders} by parsing the query string in {@link QueryData#getQuery()} using {@link QueryParser} + * + * @param queryData + * the data from the client + * @param request + * the {@link HttpServletRequest} on which to get the {@link Certificate} + * + * @return {@link Response} containing the JSONified {@link Order Orders} queried + */ + @GET + @Produces(MediaType.APPLICATION_JSON) + @Path("orders") + public Response queryOrders(@BeanParam QueryData queryData, @Context HttpServletRequest request) { + Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE); + + // see if a special realm was requested + String realmName = getRealmName(queryData); + + List orders = new ArrayList<>(); + + // parse the query string + OrderQuery query = QueryParser.parseToOrderQuery(queryData.getQuery(), true); + + // query the data + long dataSetSize = 0L; + try (StrolchTransaction tx = openTx(cert, realmName)) { + OrderMap orderMap = tx.getOrderMap(); + + if (query.hasNavigation()) { + String type = ((StrolchTypeNavigation) query.getNavigation()).getType(); + dataSetSize = orderMap.querySize(tx, type); + orders.addAll(tx.doQuery(query)); + } else { + Set types = orderMap.getTypes(tx); + dataSetSize = orderMap.querySize(tx); + for (String type : types) { + query.setNavigation(new StrolchTypeNavigation(type)); + orders.addAll(tx.doQuery(query)); + } + } + + tx.doNothingOnClose(); + } + + // do ordering + doOrdering(queryData, orders); + + // build JSON response + OrderToJsonVisitor toJsonVisitor = new OrderToJsonVisitor(); + JsonObject root = marshall(queryData, dataSetSize, orders, toJsonVisitor); + + // marshall result + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + String entity = gson.toJson(root); + return Response.ok(entity).build(); + } + +// /** +// * Query {@link Activity Activities} by parsing the query string in {@link QueryData#getQuery()} using +// * {@link QueryParser} +// * +// * @param queryData +// * the data from the client +// * @param request +// * the {@link HttpServletRequest} on which to get the {@link Certificate} +// * +// * @return {@link Response} containing the JSONified {@link Activity Activities} queried +// */ +// @GET +// @Produces(MediaType.APPLICATION_JSON) +// @Path("orders") +// public Response queryActivities(@BeanParam QueryData queryData, @Context HttpServletRequest request) { +// Certificate cert = (Certificate) request.getAttribute(StrolchRestfulConstants.STROLCH_CERTIFICATE); +// +// // see if a special realm was requested +// String realmName = getRealmName(queryData); +// +// List activities = new ArrayList<>(); +// +// // parse the query string +// ActivityQuery query = QueryParser.parseToActivityQuery(queryData.getQuery(), true); +// +// // query the data +// long dataSetSize = 0L; +// try (StrolchTransaction tx = openTx(cert, realmName)) { +// ActivityMap activityMap = tx.getActivityMap(); +// +// if (query.hasNavigation()) { +// String type = ((StrolchTypeNavigation) query.getNavigation()).getType(); +// dataSetSize = activityMap.querySize(tx, type); +// activities.addAll(tx.doQuery(query)); +// } else { +// Set types = activityMap.getTypes(tx); +// dataSetSize = activityMap.querySize(tx); +// for (String type : types) { +// query.setNavigation(new StrolchTypeNavigation(type)); +// activities.addAll(tx.doQuery(query)); +// } +// } +// +// tx.doNothingOnClose(); +// } +// +// // do ordering +// doOrdering(queryData, activities); +// +// // build JSON response +// ActivityToJsonVisitor toJsonVisitor = new ActivityToJsonVisitor(); +// JsonObject root = marshall(queryData, dataSetSize, activities, toJsonVisitor); +// +// // marshall result +// Gson gson = new GsonBuilder().setPrettyPrinting().create(); +// String entity = gson.toJson(root); +// return Response.ok(entity).build(); +// } + + private JsonObject marshall(QueryData queryData, long dataSetSize, List elements, + StrolchElementVisitor toJsonVisitor) { + + // paging + Paging paging = Paging.asPage(elements, queryData.getPageSize(), queryData.getPage()); + + // get page + List page = paging.getPage(); + JsonObject root = new JsonObject(); root.addProperty("msg", "-"); root.addProperty("draw", queryData.getDraw()); root.addProperty("dataSetSize", dataSetSize); root.addProperty("nrOfElements", paging.getNrOfElements()); - if (StringHelper.isNotEmpty(orderBy)) - root.addProperty("sortBy", orderBy); - root.addProperty("ascending", asc); + if (StringHelper.isNotEmpty(queryData.getOrderBy())) + root.addProperty("sortBy", queryData.getOrderBy()); + root.addProperty("ascending", queryData.isAscending()); root.addProperty("nrOfPages", paging.getNrOfPages()); root.addProperty("pageSize", paging.getPageSize()); root.addProperty("page", paging.getPageToReturn()); // add items JsonArray data = new JsonArray(); - for (Resource resource : page) { - JsonObject element = new ResourceToJsonVisitor().visit(resource); + for (T t : page) { + JsonObject element = toJsonVisitor.visit(t); data.add(element); } root.add("data", data); - - Gson gson = new GsonBuilder().setPrettyPrinting().create(); - String entity = gson.toJson(root); - return Response.ok(entity).build(); + return root; } - private void query(QueryData queryData, List resources, Set queryBy, StrolchTransaction tx, - String type) { - ResourceQuery query = ResourceQuery.query(type); - - OrSelection or = new OrSelection(); - - for (String queryB : queryBy) { - if (queryB.equals(QueryData.TYPE)) - continue; - - if (queryB.equals(QueryData.ID)) { - or.with(new IdSelection(queryData.getQuery(), StringMatchMode.ci())); - } else if (queryB.equals(QueryData.NAME)) { - or.with(new NameSelection(queryData.getQuery(), StringMatchMode.ci())); + private void doOrdering(QueryData queryData, List resources) { + if (StringHelper.isNotEmpty(queryData.getOrderBy())) { + if (queryData.getOrderBy().equals(Tags.ID)) { + resources.sort((r1, r2) -> queryData.isAscending() ? r1.getId().compareTo(r2.getId()) + : r2.getId().compareTo(r1.getId())); + } else if (queryData.getOrderBy().equals(Tags.ID)) { + resources.sort((r1, r2) -> queryData.isAscending() ? r1.getName().compareTo(r2.getName()) + : r2.getName().compareTo(r1.getName())); + } else if (queryData.getOrderBy().equals(Tags.ID)) { + resources.sort((r1, r2) -> queryData.isAscending() ? r1.getType().compareTo(r2.getType()) + : r2.getType().compareTo(r1.getType())); } else { - String[] parts = queryB.split(":"); - String bagKey = parts[0]; - String paramKey = parts[1]; - or.with(ParameterSelection.anyTypeSelection(bagKey, paramKey, queryData.getQuery(), - StringMatchMode.ci())); + logger.warn("Unhandled ordering " + queryData.getOrderBy()); } } + } - if (or.hasSelection()) - query.with(or); - else - query.withAny(); - - resources.addAll(tx.doQuery(query)); + private String getRealmName(QueryData queryData) { + String realmName = queryData.getRealmName(); + if (StringHelper.isEmpty(realmName)) + realmName = StrolchConstants.DEFAULT_REALM; + return realmName; } private StrolchTransaction openTx(Certificate certificate, String realm) { diff --git a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/QueryData.java b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/QueryData.java index 2886c9245..d18b3b219 100644 --- a/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/QueryData.java +++ b/li.strolch.rest/src/main/java/li/strolch/rest/endpoint/QueryData.java @@ -1,20 +1,9 @@ package li.strolch.rest.endpoint; -import java.util.Arrays; -import java.util.Collections; -import java.util.Set; -import java.util.stream.Collectors; - import javax.ws.rs.QueryParam; -import ch.eitchnet.utils.helper.StringHelper; - public class QueryData { - public static final String ID = "Id"; - public static final String NAME = "Name"; - public static final String TYPE = "Type"; - @QueryParam("realmName") private String realmName; @@ -30,12 +19,6 @@ public class QueryData { @QueryParam("query") private String query; - @QueryParam("queryBy") - private String queryBy; - - @QueryParam("types") - private String types; - @QueryParam("orderBy") private String orderBy; @@ -97,38 +80,4 @@ public class QueryData { public void setQuery(String query) { this.query = query; } - - public String getQueryBy() { - return this.queryBy; - } - - public void setQueryBy(String queryBy) { - this.queryBy = queryBy; - } - - public String getTypes() { - return this.types; - } - - public void setTypes(String types) { - this.types = types; - } - - public Set getQueryByNames() { - return toSet(this.queryBy); - } - - public Set getTypesAsSet() { - return toSet(this.types); - } - - private Set toSet(String value) { - if (StringHelper.isEmpty(value)) - return Collections.emptySet(); - - if (!value.contains(",")) - return Collections.singleton(value.trim()); - - return Arrays.stream(value.split(",")).map(s -> s.trim()).collect(Collectors.toSet()); - } }