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"));
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)