[Major] Replaced queries with searches
This commit is contained in:
parent
3912daeb75
commit
ff3a319787
|
@ -2,4 +2,5 @@
|
||||||
/.settings/
|
/.settings/
|
||||||
/.classpath
|
/.classpath
|
||||||
/.project
|
/.project
|
||||||
*.iml
|
*.iml
|
||||||
|
.idea
|
|
@ -1,180 +1,183 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<Roles>
|
<Roles>
|
||||||
|
|
||||||
<Role name="User">
|
<Role name="User">
|
||||||
<Privilege name="li.strolch.service.api.Service" policy="DefaultPrivilege">
|
|
||||||
<Allow>li.strolch.bookshop.service.CreateBookService</Allow>
|
|
||||||
<Allow>li.strolch.bookshop.service.UpdateBookService</Allow>
|
|
||||||
<Allow>li.strolch.bookshop.service.RemoveBookService</Allow>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="li.strolch.model.query.StrolchQuery" policy="DefaultPrivilege">
|
|
||||||
<Allow>internal</Allow>
|
|
||||||
<Allow>li.strolch.bookshop.query.BooksQuery</Allow>
|
|
||||||
</Privilege>
|
|
||||||
|
|
||||||
<Privilege name="GetResource" policy="ModelPrivilege">
|
<Privilege name="li.strolch.service.api.Service" policy="DefaultPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<Allow>li.strolch.bookshop.service.CreateBookService</Allow>
|
||||||
</Privilege>
|
<Allow>li.strolch.bookshop.service.UpdateBookService</Allow>
|
||||||
<Privilege name="GetOrder" policy="ModelPrivilege">
|
<Allow>li.strolch.bookshop.service.RemoveBookService</Allow>
|
||||||
<AllAllowed>true</AllAllowed>
|
</Privilege>
|
||||||
</Privilege>
|
|
||||||
<Privilege name="GetActivity" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="AddResource" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="AddOrder" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="AddActivity" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="UpdateResource" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="UpdateOrder" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="UpdateActivity" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="RemoveResource" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="RemoveOrder" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="RemoveActivity" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
</Role>
|
|
||||||
|
|
||||||
<Role name="UserPrivileges">
|
<Privilege name="li.strolch.search.StrolchSearch" policy="DefaultPrivilege">
|
||||||
<Privilege name="PrivilegeSetUserLocale" policy="UserAccessPrivilege" />
|
<Allow>internal</Allow>
|
||||||
<Privilege name="PrivilegeSetUserPassword" policy="UserAccessPrivilege" />
|
<Allow>li.strolch.bookshop.search.BookSearch</Allow>
|
||||||
</Role>
|
</Privilege>
|
||||||
|
|
||||||
<!--
|
<Privilege name="GetResource" policy="ModelPrivilege">
|
||||||
Internal
|
<AllAllowed>true</AllAllowed>
|
||||||
-->
|
</Privilege>
|
||||||
<Role name="StrolchAdmin">
|
<Privilege name="GetOrder" policy="ModelPrivilege">
|
||||||
<Privilege name="li.strolch.service.api.Service" policy="DefaultPrivilege">
|
<AllAllowed>true</AllAllowed>
|
||||||
<AllAllowed>true</AllAllowed>
|
</Privilege>
|
||||||
</Privilege>
|
<Privilege name="GetActivity" policy="ModelPrivilege">
|
||||||
<Privilege name="li.strolch.model.query.StrolchQuery" policy="DefaultPrivilege">
|
<AllAllowed>true</AllAllowed>
|
||||||
<AllAllowed>true</AllAllowed>
|
</Privilege>
|
||||||
</Privilege>
|
<Privilege name="AddResource" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="AddOrder" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="AddActivity" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="UpdateResource" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="UpdateOrder" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="UpdateActivity" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="RemoveResource" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="RemoveOrder" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="RemoveActivity" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
</Role>
|
||||||
|
|
||||||
<Privilege name="GetResource" policy="ModelPrivilege">
|
<Role name="UserPrivileges">
|
||||||
<AllAllowed>true</AllAllowed>
|
<Privilege name="PrivilegeSetUserLocale" policy="UserAccessPrivilege"/>
|
||||||
</Privilege>
|
<Privilege name="PrivilegeSetUserPassword" policy="UserAccessPrivilege"/>
|
||||||
<Privilege name="GetOrder" policy="ModelPrivilege">
|
</Role>
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="GetActivity" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="AddResource" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="AddOrder" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="AddActivity" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="UpdateResource" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="UpdateOrder" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="UpdateActivity" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="RemoveResource" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="RemoveOrder" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="RemoveActivity" policy="ModelPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
|
|
||||||
<Privilege name="PrivilegeAddUser" policy="UserAccessPrivilege">
|
<!--
|
||||||
<AllAllowed>true</AllAllowed>
|
Internal
|
||||||
</Privilege>
|
-->
|
||||||
<Privilege name="PrivilegeSetUserPassword" policy="UserAccessPrivilege">
|
<Role name="StrolchAdmin">
|
||||||
<AllAllowed>true</AllAllowed>
|
<Privilege name="li.strolch.service.api.Service" policy="DefaultPrivilege">
|
||||||
</Privilege>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Role>
|
</Privilege>
|
||||||
|
|
||||||
<Role name="agent">
|
<Privilege name="li.strolch.search.StrolchSearch" policy="DefaultPrivilege">
|
||||||
<Privilege name="li.strolch.privilege.handler.SystemAction" policy="DefaultPrivilege">
|
<AllAllowed>true</AllAllowed>
|
||||||
<Allow>li.strolch.runtime.privilege.StrolchSystemAction</Allow>
|
</Privilege>
|
||||||
<Allow>li.strolch.runtime.privilege.StrolchSystemActionWithResult</Allow>
|
|
||||||
<Allow>li.strolch.persistence.postgresql.PostgreSqlSchemaInitializer</Allow>
|
|
||||||
</Privilege>
|
|
||||||
<Privilege name="li.strolch.service.api.Service" policy="DefaultPrivilege">
|
|
||||||
<AllAllowed>true</AllAllowed>
|
|
||||||
</Privilege>
|
|
||||||
|
|
||||||
<Privilege name="GetResource" policy="ModelPrivilege">
|
<Privilege name="GetResource" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="GetOrder" policy="ModelPrivilege">
|
<Privilege name="GetOrder" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="GetActivity" policy="ModelPrivilege">
|
<Privilege name="GetActivity" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="AddResource" policy="ModelPrivilege">
|
<Privilege name="AddResource" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="AddOrder" policy="ModelPrivilege">
|
<Privilege name="AddOrder" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="AddActivity" policy="ModelPrivilege">
|
<Privilege name="AddActivity" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="UpdateResource" policy="ModelPrivilege">
|
<Privilege name="UpdateResource" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="UpdateOrder" policy="ModelPrivilege">
|
<Privilege name="UpdateOrder" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="UpdateActivity" policy="ModelPrivilege">
|
<Privilege name="UpdateActivity" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="RemoveResource" policy="ModelPrivilege">
|
<Privilege name="RemoveResource" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="RemoveOrder" policy="ModelPrivilege">
|
<Privilege name="RemoveOrder" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="RemoveActivity" policy="ModelPrivilege">
|
<Privilege name="RemoveActivity" policy="ModelPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
|
|
||||||
<Privilege name="li.strolch.model.query.StrolchQuery" policy="DefaultPrivilege">
|
<Privilege name="PrivilegeAddUser" policy="UserAccessPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="PrivilegeAction" policy="DefaultPrivilege">
|
<Privilege name="PrivilegeSetUserPassword" policy="UserAccessPrivilege">
|
||||||
<Allow>Persist</Allow>
|
<AllAllowed>true</AllAllowed>
|
||||||
<Allow>PersistSessions</Allow>
|
</Privilege>
|
||||||
<Allow>GetCertificates</Allow>
|
</Role>
|
||||||
</Privilege>
|
|
||||||
<Privilege name="PrivilegeAddUser" policy="UserAccessPrivilege">
|
<Role name="agent">
|
||||||
<AllAllowed>true</AllAllowed>
|
<Privilege name="li.strolch.privilege.handler.SystemAction" policy="DefaultPrivilege">
|
||||||
</Privilege>
|
<Allow>li.strolch.runtime.privilege.StrolchSystemAction</Allow>
|
||||||
<Privilege name="PrivilegeModifyUser" policy="UserAccessPrivilege">
|
<Allow>li.strolch.runtime.privilege.StrolchSystemActionWithResult</Allow>
|
||||||
<AllAllowed>true</AllAllowed>
|
<Allow>li.strolch.persistence.postgresql.PostgreSqlSchemaInitializer</Allow>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
<Privilege name="PrivilegeGetUser" policy="UserAccessPrivilege">
|
<Privilege name="li.strolch.service.api.Service" policy="DefaultPrivilege">
|
||||||
<AllAllowed>true</AllAllowed>
|
<AllAllowed>true</AllAllowed>
|
||||||
</Privilege>
|
</Privilege>
|
||||||
</Role>
|
|
||||||
|
<Privilege name="GetResource" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="GetOrder" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="GetActivity" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="AddResource" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="AddOrder" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="AddActivity" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="UpdateResource" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="UpdateOrder" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="UpdateActivity" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="RemoveResource" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="RemoveOrder" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="RemoveActivity" policy="ModelPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
|
||||||
|
<Privilege name="li.strolch.model.query.StrolchQuery" policy="DefaultPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="PrivilegeAction" policy="DefaultPrivilege">
|
||||||
|
<Allow>Persist</Allow>
|
||||||
|
<Allow>PersistSessions</Allow>
|
||||||
|
<Allow>GetCertificates</Allow>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="PrivilegeAddUser" policy="UserAccessPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="PrivilegeModifyUser" policy="UserAccessPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
<Privilege name="PrivilegeGetUser" policy="UserAccessPrivilege">
|
||||||
|
<AllAllowed>true</AllAllowed>
|
||||||
|
</Privilege>
|
||||||
|
</Role>
|
||||||
|
|
||||||
</Roles>
|
</Roles>
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
package li.strolch.bookshop.query;
|
|
||||||
|
|
||||||
import li.strolch.bookshop.BookShopConstants;
|
|
||||||
import li.strolch.model.query.ResourceQuery;
|
|
||||||
import li.strolch.model.query.StrolchTypeNavigation;
|
|
||||||
|
|
||||||
public class BooksQuery<U> extends ResourceQuery<U> {
|
|
||||||
|
|
||||||
public BooksQuery() {
|
|
||||||
super(new StrolchTypeNavigation(BookShopConstants.TYPE_BOOK));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -6,21 +6,16 @@ import javax.ws.rs.core.Context;
|
||||||
import javax.ws.rs.core.MediaType;
|
import javax.ws.rs.core.MediaType;
|
||||||
import javax.ws.rs.core.Response;
|
import javax.ws.rs.core.Response;
|
||||||
import javax.ws.rs.core.Response.Status;
|
import javax.ws.rs.core.Response.Status;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
import li.strolch.bookshop.BookShopConstants;
|
import li.strolch.bookshop.BookShopConstants;
|
||||||
import li.strolch.bookshop.query.BooksQuery;
|
import li.strolch.bookshop.search.BookSearch;
|
||||||
import li.strolch.bookshop.service.CreateBookService;
|
import li.strolch.bookshop.service.CreateBookService;
|
||||||
import li.strolch.bookshop.service.RemoveBookService;
|
import li.strolch.bookshop.service.RemoveBookService;
|
||||||
import li.strolch.bookshop.service.UpdateBookService;
|
import li.strolch.bookshop.service.UpdateBookService;
|
||||||
import li.strolch.model.Resource;
|
import li.strolch.model.Resource;
|
||||||
import li.strolch.model.json.StrolchRootElementToJsonVisitor;
|
import li.strolch.model.json.StrolchRootElementToJsonVisitor;
|
||||||
import li.strolch.model.query.NameSelection;
|
|
||||||
import li.strolch.model.query.OrSelection;
|
|
||||||
import li.strolch.model.query.ParameterSelection;
|
|
||||||
import li.strolch.model.query.ResourceQuery;
|
|
||||||
import li.strolch.model.visitor.ResourceVisitor;
|
import li.strolch.model.visitor.ResourceVisitor;
|
||||||
import li.strolch.persistence.api.StrolchTransaction;
|
import li.strolch.persistence.api.StrolchTransaction;
|
||||||
import li.strolch.privilege.model.Certificate;
|
import li.strolch.privilege.model.Certificate;
|
||||||
|
@ -32,7 +27,6 @@ import li.strolch.service.JsonServiceResult;
|
||||||
import li.strolch.service.StringServiceArgument;
|
import li.strolch.service.StringServiceArgument;
|
||||||
import li.strolch.service.api.ServiceHandler;
|
import li.strolch.service.api.ServiceHandler;
|
||||||
import li.strolch.service.api.ServiceResult;
|
import li.strolch.service.api.ServiceResult;
|
||||||
import li.strolch.utils.StringMatchMode;
|
|
||||||
import li.strolch.utils.collections.Paging;
|
import li.strolch.utils.collections.Paging;
|
||||||
import li.strolch.utils.helper.StringHelper;
|
import li.strolch.utils.helper.StringHelper;
|
||||||
|
|
||||||
|
@ -51,36 +45,19 @@ public class BooksResource {
|
||||||
int limit = StringHelper.isNotEmpty(limitS) ? Integer.valueOf(limitS) : 20;
|
int limit = StringHelper.isNotEmpty(limitS) ? Integer.valueOf(limitS) : 20;
|
||||||
|
|
||||||
// open the TX with the certificate, using this class as context
|
// open the TX with the certificate, using this class as context
|
||||||
|
Paging<Resource> paging;
|
||||||
try (StrolchTransaction tx = RestfulStrolchComponent.getInstance().openTx(cert, getClass())) {
|
try (StrolchTransaction tx = RestfulStrolchComponent.getInstance().openTx(cert, getClass())) {
|
||||||
|
|
||||||
// prepare the query
|
// perform a book search
|
||||||
ResourceQuery<Resource> query = new BooksQuery<>();
|
paging = new BookSearch() //
|
||||||
|
.stringQuery(queryS) //
|
||||||
// prepare selections
|
.search(tx) //
|
||||||
if (StringHelper.isEmpty(queryS)) {
|
.orderByName(false) //
|
||||||
query.withAny();
|
.toPaging(offset, limit);
|
||||||
} else {
|
|
||||||
OrSelection or = new OrSelection();
|
|
||||||
or.with(ParameterSelection
|
|
||||||
.stringSelection(BookShopConstants.BAG_PARAMETERS, BookShopConstants.PARAM_DESCRIPTION, queryS,
|
|
||||||
StringMatchMode.ci()));
|
|
||||||
or.with(new NameSelection(queryS, StringMatchMode.ci()));
|
|
||||||
|
|
||||||
// add selections
|
|
||||||
query.with(or);
|
|
||||||
}
|
|
||||||
|
|
||||||
// perform the query
|
|
||||||
List<Resource> books = tx.doQuery(query);
|
|
||||||
|
|
||||||
// perform paging
|
|
||||||
Paging<Resource> paging = Paging.asPage(books, offset, limit);
|
|
||||||
List<Resource> page = paging.getPage();
|
|
||||||
|
|
||||||
// return result, transforming to JSON
|
|
||||||
ResourceVisitor<JsonObject> visitor = new StrolchRootElementToJsonVisitor().flat().asResourceVisitor();
|
|
||||||
return ResponseUtil.listToResponse(StrolchRestfulConstants.DATA, page, a -> a.accept(visitor));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ResourceVisitor<JsonObject> visitor = new StrolchRootElementToJsonVisitor().flat().asResourceVisitor();
|
||||||
|
return ResponseUtil.toResponse(paging, e -> e.accept(visitor));
|
||||||
}
|
}
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
package li.strolch.bookshop.search;
|
||||||
|
|
||||||
|
import static li.strolch.bookshop.BookShopConstants.*;
|
||||||
|
import static li.strolch.utils.helper.StringHelper.isEmpty;
|
||||||
|
|
||||||
|
import li.strolch.search.ResourceSearch;
|
||||||
|
|
||||||
|
public class BookSearch extends ResourceSearch {
|
||||||
|
|
||||||
|
public BookSearch() {
|
||||||
|
types(TYPE_BOOK);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BookSearch stringQuery(String value) {
|
||||||
|
if (isEmpty(value))
|
||||||
|
return this;
|
||||||
|
|
||||||
|
// split by spaces
|
||||||
|
value = value.trim();
|
||||||
|
String[] values = value.split(" ");
|
||||||
|
|
||||||
|
// add where clauses for id, name and description
|
||||||
|
where(id().containsIgnoreCase(values) //
|
||||||
|
.or(name().containsIgnoreCase(values)) //
|
||||||
|
.or(param(BAG_PARAMETERS, PARAM_DESCRIPTION).containsIgnoreCase(values)));
|
||||||
|
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,56 +1,57 @@
|
||||||
package li.strolch.bookshop.web;
|
package li.strolch.bookshop.web;
|
||||||
|
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
import javax.servlet.ServletContextEvent;
|
import javax.servlet.ServletContextEvent;
|
||||||
import javax.servlet.ServletContextListener;
|
import javax.servlet.ServletContextListener;
|
||||||
import javax.servlet.annotation.WebListener;
|
import javax.servlet.annotation.WebListener;
|
||||||
|
import java.io.InputStream;
|
||||||
import org.slf4j.Logger;
|
|
||||||
import org.slf4j.LoggerFactory;
|
|
||||||
|
|
||||||
import li.strolch.agent.api.StrolchAgent;
|
import li.strolch.agent.api.StrolchAgent;
|
||||||
import li.strolch.agent.api.StrolchBootstrapper;
|
import li.strolch.agent.api.StrolchBootstrapper;
|
||||||
import li.strolch.utils.helper.StringHelper;
|
import li.strolch.utils.helper.StringHelper;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@WebListener
|
@WebListener
|
||||||
public class StartupListener implements ServletContextListener {
|
public class StartupListener implements ServletContextListener {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(StartupListener.class);
|
private static final Logger logger = LoggerFactory.getLogger(StartupListener.class);
|
||||||
|
private static final String APP_NAME = "Bookshop";
|
||||||
|
|
||||||
private StrolchAgent agent;
|
private StrolchAgent agent;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void contextInitialized(ServletContextEvent sce) {
|
public void contextInitialized(ServletContextEvent sce) {
|
||||||
|
|
||||||
logger.info("Starting Bookshop...");
|
logger.info("Starting " + APP_NAME + "...");
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
try {
|
try {
|
||||||
// we load the configuration by reading the boot strap file:
|
|
||||||
String boostrapFileName = "/WEB-INF/" + StrolchBootstrapper.FILE_BOOTSTRAP;
|
String boostrapFileName = "/WEB-INF/" + StrolchBootstrapper.FILE_BOOTSTRAP;
|
||||||
InputStream bootstrapFile = sce.getServletContext().getResourceAsStream(boostrapFileName);
|
InputStream bootstrapFile = sce.getServletContext().getResourceAsStream(boostrapFileName);
|
||||||
StrolchBootstrapper bootstrapper = new StrolchBootstrapper(StartupListener.class);
|
StrolchBootstrapper bootstrapper = new StrolchBootstrapper(StartupListener.class);
|
||||||
|
|
||||||
// now setup, initialize and start Strolch:
|
|
||||||
this.agent = bootstrapper.setupByBoostrapFile(StartupListener.class, bootstrapFile);
|
this.agent = bootstrapper.setupByBoostrapFile(StartupListener.class, bootstrapFile);
|
||||||
this.agent.initialize();
|
this.agent.initialize();
|
||||||
this.agent.start();
|
this.agent.start();
|
||||||
|
} catch (Throwable e) {
|
||||||
} catch (Exception e) {
|
logger.error("Failed to start " + APP_NAME + " due to: " + e.getMessage(), e);
|
||||||
logger.error("Failed to start Bookshop due to: " + e.getMessage(), e);
|
|
||||||
throw e;
|
throw e;
|
||||||
}
|
}
|
||||||
|
|
||||||
long took = System.currentTimeMillis() - start;
|
long took = System.currentTimeMillis() - start;
|
||||||
logger.info("Started Bookshop in " + (StringHelper.formatMillisecondsDuration(took)));
|
logger.info("Started " + APP_NAME + " in " + (StringHelper.formatMillisecondsDuration(took)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void contextDestroyed(ServletContextEvent sce) {
|
public void contextDestroyed(ServletContextEvent sce) {
|
||||||
if (this.agent != null) {
|
if (this.agent != null) {
|
||||||
this.agent.stop();
|
logger.info("Destroying " + APP_NAME + "...");
|
||||||
this.agent.destroy();
|
try {
|
||||||
|
this.agent.stop();
|
||||||
|
this.agent.destroy();
|
||||||
|
} catch (Throwable e) {
|
||||||
|
logger.error("Failed to stop " + APP_NAME + " due to: " + e.getMessage(), e);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
logger.info("Destroyed Bookshop.");
|
logger.info("Destroyed " + APP_NAME);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,5 @@
|
||||||
<root>/home/eitch/src/git/strolch-bookshop/runtime</root>
|
<root>/home/eitch/src/git/strolch-bookshop/runtime</root>
|
||||||
<environment>dev</environment>
|
<environment>dev</environment>
|
||||||
</env>
|
</env>
|
||||||
<env id="dev.eitchmac" default="true">
|
|
||||||
<root>/Users/eitch/src/git/strolch-bookshop/runtime</root>
|
|
||||||
<environment>dev</environment>
|
|
||||||
</env>
|
|
||||||
|
|
||||||
</StrolchBootstrap>
|
</StrolchBootstrap>
|
Loading…
Reference in New Issue