[Lada-commits] [PATCH 06 of 10] Authorize messungen with status and not the "fertig"-flag
Wald Commits
scm-commit at wald.intevation.org
Thu Nov 12 12:20:14 CET 2015
# HG changeset patch
# User Raimund Renkert <raimund.renkert at intevation.de>
# Date 1447326886 -3600
# Node ID 46e0523bbd80c55e1729cac0b77665a6618db703
# Parent 244c54d1695781a9b1cc06b234155aa69bfa07cc
Authorize messungen with status and not the "fertig"-flag.
diff -r 244c54d16957 -r 46e0523bbd80 src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java
--- a/src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java Thu Nov 12 12:13:39 2015 +0100
+++ b/src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java Thu Nov 12 12:14:46 2015 +0100
@@ -21,7 +21,9 @@
import de.intevation.lada.model.land.LMessung;
import de.intevation.lada.model.land.LProbe;
+import de.intevation.lada.model.land.LStatusProtokoll;
import de.intevation.lada.model.stamm.Auth;
+import de.intevation.lada.model.stamm.AuthLstUmw;
import de.intevation.lada.util.annotation.AuthorizationConfig;
import de.intevation.lada.util.annotation.RepositoryConfig;
import de.intevation.lada.util.data.QueryBuilder;
@@ -236,17 +238,25 @@
List<Auth> auth = (List<Auth>)response.getData();
List<String> netzbetreiber = new ArrayList<String>();
List<String> messstellen = new ArrayList<String>();
+ List<Integer> funktionen = new ArrayList<Integer>();
for (Auth a : auth) {
- if (a.getNetzBetreiber() != null) {
- netzbetreiber.add(a.getNetzBetreiber());
+ if (a.getNetzbetreiberId() != null) {
+ netzbetreiber.add(a.getNetzbetreiberId());
}
- if (a.getMessStelle() != null) {
- messstellen.add(a.getMessStelle());
+ if (a.getMstId() != null) {
+ messstellen.add(a.getMstId());
+ }
+ if (a.getLaborMstId() != null) {
+ messstellen.add(a.getLaborMstId());
+ }
+ if (a.getFunktionId() != null) {
+ funktionen.add(a.getFunktionId());
}
}
UserInfo userInfo = new UserInfo();
userInfo.setNetzbetreiber(netzbetreiber);
userInfo.setMessstellen(messstellen);
+ userInfo.setFunktionen(funktionen);
return userInfo;
}
@@ -509,7 +519,42 @@
else {
messung.setOwner(false);
}
- messung.setReadonly(messung.getFertig());
+ if (messung.getStatus() == null) {
+ messung.setReadonly(false);
+ }
+ else {
+ LStatusProtokoll status = repository.getByIdPlain(
+ LStatusProtokoll.class,
+ messung.getStatus(),
+ "land");
+ messung.setReadonly(
+ status.getStatusWert() != 0 && status.getStatusWert() != 4);
+ }
+
+ boolean statusEdit = false;
+ if (userInfo.getFunktionen().contains(3)) {
+ QueryBuilder<AuthLstUmw> lstFilter = new QueryBuilder<AuthLstUmw>(
+ repository.entityManager("stamm"),
+ AuthLstUmw.class);
+ lstFilter.or("lstId", userInfo.getMessstellen());
+ List<AuthLstUmw> lsts =
+ repository.filterPlain(lstFilter.getQuery(), "stamm");
+ for (int i = 0; i < lsts.size(); i++) {
+ if (lsts.get(i).getUmwId().equals(probe.getUmwId())) {
+ statusEdit = true;
+ }
+ }
+ }
+ else if (userInfo.getFunktionen().contains(2) &&
+ userInfo.getNetzbetreiber().contains(probe.getNetzbetreiberId())) {
+ statusEdit = true;
+ }
+ else if (userInfo.getFunktionen().contains(1) &&
+ userInfo.getMessstellen().contains(probe.getMstId())) {
+ statusEdit = true;
+ }
+ messung.setStatusEdit(statusEdit);
+
return messung;
}
@@ -527,14 +572,20 @@
manager,
LMessung.class);
builder.and("probeId", probeId);
- builder.and("fertig", true);
Response response = repository.filter(builder.getQuery(), "land");
@SuppressWarnings("unchecked")
List<LMessung> messungen = (List<LMessung>) response.getData();
- if (messungen.isEmpty()) {
- return false;
+ for (int i = 0; i < messungen.size(); i++) {
+ if (messungen.get(i).getStatus() == null) {
+ return false;
+ }
+ LStatusProtokoll status = repository.getByIdPlain(
+ LStatusProtokoll.class, messungen.get(i).getStatus(), "land");
+ if (status.getStatusWert() != 0 && status.getStatusWert() != 4) {
+ return true;
+ }
}
- return true;
+ return false;
}
/**
More information about the Lada-commits
mailing list