[Lada-commits] [PATCH] StatusWertService: accept comma separated list of Messung IDs
Wald Commits
scm-commit at wald.intevation.org
Fri Oct 28 18:50:33 CEST 2016
# HG changeset patch
# User Tom Gottfried <tom at intevation.de>
# Date 1477673381 -7200
# Node ID 24f374c771b3e789848d4e35acab0d12a0febd7a
# Parent 7061388e0af7a5a255d458f0bd6cbb92559cb646
StatusWertService: accept comma separated list of Messung IDs.
diff -r 7061388e0af7 -r 24f374c771b3 src/main/java/de/intevation/lada/rest/stamm/StatusWertService.java
--- a/src/main/java/de/intevation/lada/rest/stamm/StatusWertService.java Fri Oct 28 16:49:47 2016 +0200
+++ b/src/main/java/de/intevation/lada/rest/stamm/StatusWertService.java Fri Oct 28 18:49:41 2016 +0200
@@ -96,9 +96,17 @@
if (params.isEmpty() || !params.containsKey("messungsId")) {
return defaultRepo.getAll(StatusWert.class, "stamm");
}
- int messungsId = Integer.valueOf(params.getFirst("messungsId"));
+
+ List<Integer> mIds = new ArrayList<Integer>();
+ for (String messId : params.getFirst("messungsId").split(",")) {
+ try {
+ mIds.add(Integer.valueOf(messId));
+ } catch (NumberFormatException nfe) {
+ return new Response(false, 612, null);
+ }
+ }
UserInfo user = authorization.getInfo(request);
- List<StatusWert> werte = getReachable(messungsId, user);
+ List<StatusWert> werte = getReachable(mIds, user);
Response response = new Response(true, 200, werte);
return response;
}
@@ -125,28 +133,43 @@
"stamm");
}
- private List<StatusWert> getReachable(int messungsId, UserInfo user) {
+ /**
+ * Get the list of possible status values following the actual status
+ * values of the Messungen represented by the given IDs.
+ *
+ * @return Disjunction of possible status values for all Messungen
+ */
+ private List<StatusWert> getReachable(
+ List<Integer> messIds,
+ UserInfo user
+ ) {
List<StatusWert> list = new ArrayList<StatusWert>();
- Messung messung =
- defaultRepo.getByIdPlain(Messung.class, messungsId, "land");
- if (messung.getStatus() == null) {
- return defaultRepo.getAllPlain(StatusWert.class, "stamm");
+
+ QueryBuilder<Messung> messungQuery = new QueryBuilder<Messung>(
+ defaultRepo.entityManager("land"),
+ Messung.class);
+ messungQuery.orIn("id", messIds);
+ List<Messung> messungen = defaultRepo.filterPlain(
+ messungQuery.getQuery(), "land");
+
+ List<StatusErreichbar> erreichbare = new ArrayList<StatusErreichbar>();
+ for (Messung messung : messungen) {
+ StatusProtokoll status = defaultRepo.getByIdPlain(
+ StatusProtokoll.class, messung.getStatus(), "land");
+ StatusKombi kombi = defaultRepo.getByIdPlain(
+ StatusKombi.class, status.getStatusKombi(), "stamm");
+
+ QueryBuilder<StatusErreichbar> errFilter =
+ new QueryBuilder<StatusErreichbar>(
+ defaultRepo.entityManager("stamm"),
+ StatusErreichbar.class);
+ errFilter.andIn("stufeId", user.getFunktionen());
+ errFilter.and("curStufe", kombi.getStatusStufe().getId());
+ errFilter.and("curWert", kombi.getStatusWert().getId());
+ erreichbare.addAll(defaultRepo.filterPlain(
+ errFilter.getQuery(), "stamm"));
}
- StatusProtokoll status = defaultRepo.getByIdPlain(
- StatusProtokoll.class,
- messung.getStatus(),
- "land");
- QueryBuilder<StatusErreichbar> errFilter =
- new QueryBuilder<StatusErreichbar>(
- defaultRepo.entityManager("stamm"),
- StatusErreichbar.class);
- StatusKombi kombi = defaultRepo.getByIdPlain(StatusKombi.class, status.getStatusKombi(), "stamm");
- errFilter.andIn("stufeId", user.getFunktionen());
- errFilter.and("curStufe", kombi.getStatusStufe().getId());
- errFilter.and("curWert", kombi.getStatusWert().getId());
- List<StatusErreichbar> erreichbare = defaultRepo.filterPlain(
- errFilter.getQuery(), "stamm");
QueryBuilder<StatusWert> werteFilter =
new QueryBuilder<StatusWert>(
defaultRepo.entityManager("stamm"),
More information about the Lada-commits
mailing list