Mercurial > lada > lada-server
diff src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java @ 848:c2725534f08b
Services no use the database based query filter.
author | Raimund Renkert <raimund.renkert@intevation.de> |
---|---|
date | Wed, 27 Jan 2016 14:54:28 +0100 |
parents | 670f58112734 |
children | e5a9c27047a4 |
line wrap: on
line diff
--- a/src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java Wed Jan 27 14:52:44 2016 +0100 +++ b/src/main/java/de/intevation/lada/rest/stamm/MessprogrammKategorieService.java Wed Jan 27 14:54:28 2016 +0100 @@ -25,11 +25,13 @@ import javax.ws.rs.core.MultivaluedMap; import javax.ws.rs.core.UriInfo; +import de.intevation.lada.model.stamm.Filter; import de.intevation.lada.model.stamm.MessprogrammKategorie; import de.intevation.lada.util.annotation.AuthorizationConfig; import de.intevation.lada.util.annotation.RepositoryConfig; import de.intevation.lada.util.auth.Authorization; import de.intevation.lada.util.auth.AuthorizationType; +import de.intevation.lada.util.data.QueryBuilder; import de.intevation.lada.util.data.Repository; import de.intevation.lada.util.data.RepositoryType; import de.intevation.lada.util.rest.RequestMethod; @@ -93,8 +95,39 @@ @Context UriInfo info ) { MultivaluedMap<String, String> params = info.getQueryParameters(); - List<MessprogrammKategorie> kategorie = - repository.getAllPlain(MessprogrammKategorie.class, "stamm"); + List<MessprogrammKategorie> kategorie; + if (params.containsKey("qid")) { + Integer id = null; + try { + id = Integer.valueOf(params.getFirst("qid")); + } + catch (NumberFormatException e) { + return new Response(false, 603, "Not a valid filter id"); + } + QueryBuilder<Filter> fBuilder = new QueryBuilder<Filter>( + repository.entityManager("stamm"), + Filter.class + ); + fBuilder.and("query", id); + List<Filter> filters = repository.filterPlain(fBuilder.getQuery(), "stamm"); + QueryBuilder<MessprogrammKategorie> mBuilder = + new QueryBuilder<MessprogrammKategorie>( + repository.entityManager("stamm"), + MessprogrammKategorie.class + ); + for (Filter filter: filters) { + String param = params.get(filter.getDataIndex()).get(0); + if (param == null || param.isEmpty()) { + continue; + } + mBuilder.or(filter.getDataIndex(), param); + } + + kategorie = repository.filterPlain(mBuilder.getQuery(), "stamm"); + } + else { + kategorie = repository.getAllPlain(MessprogrammKategorie.class, "stamm"); + } int size = kategorie.size(); if (params.containsKey("start") && params.containsKey("limit")) { int start = Integer.valueOf(params.getFirst("start"));