[Lada-commits] [PATCH] Merged branches
Wald Commits
scm-commit at wald.intevation.org
Thu Jan 21 09:01:54 CET 2016
# HG changeset patch
# User Raimund Renkert <raimund.renkert at intevation.de>
# Date 1453363317 -3600
# Node ID 2fe625c91ab3ffee85955c0bc53c95e6f9b08cc7
# Parent 9dd9a3de7a6178d9cc5c022bb5b7f0e2a0ab43ba
# Parent 2203e5d76071eff40e210c9310ffe13aaf2ee12d
Merged branches.
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 .hgignore
--- a/.hgignore Fri Jan 08 12:20:31 2016 +0100
+++ b/.hgignore Thu Jan 21 09:01:57 2016 +0100
@@ -8,6 +8,8 @@
.factorypath
.gitignore
.project
+*.swp
+*.swo
*~
# intellij support - ignore *.iml, .idea
@@ -18,4 +20,3 @@
syntax: regexp
^target/
^.settings
-
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 src/main/java/de/intevation/lada/rest/KommentarMService.java
--- a/src/main/java/de/intevation/lada/rest/KommentarMService.java Fri Jan 08 12:20:31 2016 +0100
+++ b/src/main/java/de/intevation/lada/rest/KommentarMService.java Thu Jan 21 09:01:57 2016 +0100
@@ -87,12 +87,14 @@
/**
* Get all KommentarM objects.
* <p>
- * The requested objects can be filtered using a URL parameter named
+ * The requested objects have to be filtered using an URL parameter named
* messungsId.
* <p>
* Example: http://example.com/mkommentar?messungsId=[ID]
*
- * @return Response object containing all (filtered) KommentarM objects.
+ * @return Response object containing filtered KommentarM objects.
+ * Status-Code 699 if parameter is missing or requested objects are
+ * not authorized.
*/
@GET
@Path("/")
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 src/main/java/de/intevation/lada/rest/MessprogrammService.java
--- a/src/main/java/de/intevation/lada/rest/MessprogrammService.java Fri Jan 08 12:20:31 2016 +0100
+++ b/src/main/java/de/intevation/lada/rest/MessprogrammService.java Thu Jan 21 09:01:57 2016 +0100
@@ -326,7 +326,9 @@
return new Response(false, 699, null);
}
messprogramm.setLetzteAenderung(new Timestamp(new Date().getTime()));
- messprogramm = factory.findUmweltId(messprogramm);
+ if (messprogramm.getUmwId() == null || messprogramm.getUmwId().equals("")) {
+ messprogramm = factory.findUmweltId(messprogramm);
+ }
Response response = defaultRepo.update(messprogramm, "land");
Response updated = defaultRepo.getById(
Messprogramm.class,
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 src/main/java/de/intevation/lada/rest/MesswertService.java
--- a/src/main/java/de/intevation/lada/rest/MesswertService.java Fri Jan 08 12:20:31 2016 +0100
+++ b/src/main/java/de/intevation/lada/rest/MesswertService.java Thu Jan 21 09:01:57 2016 +0100
@@ -122,12 +122,14 @@
/**
* Get all Messwert objects.
* <p>
- * The requested objects can be filtered using a URL parameter named
- * probeId.
+ * The requested objects have to be filtered using an URL parameter named
+ * messungsId.
* <p>
* Example: http://example.com/messwert?messungsId=[ID]
*
- * @return Response object containing all Messwert objects.
+ * @return Response object containing filtered Messwert objects.
+ * Status-Code 699 if parameter is missing or requested objects are
+ * not authorized.
*/
@GET
@Path("/")
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 src/main/java/de/intevation/lada/rest/ProbeService.java
--- a/src/main/java/de/intevation/lada/rest/ProbeService.java Fri Jan 08 12:20:31 2016 +0100
+++ b/src/main/java/de/intevation/lada/rest/ProbeService.java Thu Jan 21 09:01:57 2016 +0100
@@ -450,7 +450,9 @@
if (lock.isLocked(probe)) {
return new Response(false, 697, null);
}
- probe = factory.findMediaDesk(probe);
+ if (probe.getMediaDesk() == null || probe.getMediaDesk() == "") {
+ probe = factory.findMediaDesk(probe);
+ }
Violation violation = validator.validate(probe);
if (violation.hasErrors()) {
Response response = new Response(false, 604, null);
@@ -458,7 +460,9 @@
response.setWarnings(violation.getWarnings());
return response;
}
- factory.findUmweltId(probe);
+ if (probe.getUmwId() == null || probe.getUmwId() == "") {
+ factory.findUmweltId(probe);
+ }
probe.setLetzteAenderung(new Timestamp(new Date().getTime()));
Response response = defaultRepo.update(probe, "land");
Response updated = defaultRepo.getById(
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 src/main/java/de/intevation/lada/rest/StatusService.java
--- a/src/main/java/de/intevation/lada/rest/StatusService.java Fri Jan 08 12:20:31 2016 +0100
+++ b/src/main/java/de/intevation/lada/rest/StatusService.java Thu Jan 21 09:01:57 2016 +0100
@@ -7,6 +7,8 @@
*/
package de.intevation.lada.rest;
+import java.sql.Timestamp;
+import java.util.Date;
import java.util.List;
import javax.enterprise.context.RequestScoped;
@@ -31,6 +33,7 @@
import de.intevation.lada.lock.LockType;
import de.intevation.lada.lock.ObjectLocker;
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.util.annotation.AuthorizationConfig;
import de.intevation.lada.util.annotation.RepositoryConfig;
@@ -115,12 +118,14 @@
/**
* Get all Status objects.
* <p>
- * The requested objects can be filtered using a URL parameter named
+ * The requested objects have to be filtered using an URL parameter named
* messungsId.
* <p>
* Example: http://example.com/status?messungsId=[ID]
*
- * @return Response object containing all Status objects.
+ * @return Response object containing filtered Status objects.
+ * Status-Code 699 if parameter is missing or requested objects are
+ * not authorized.
*/
@GET
@Path("/")
@@ -240,27 +245,71 @@
else {
LStatusProtokoll currentStatus = defaultRepo.getByIdPlain(
LStatusProtokoll.class, messung.getStatus(), "land");
- for (int i = 0; i < userInfo.getFunktionen().size(); i++) {
- if (userInfo.getFunktionen().get(i) > currentStatus.getStatusStufe()) {
- next = true;
- change = false;
- break;
+
+ if (currentStatus.getStatusWert() == 4) {
+ LProbe probe = defaultRepo.getByIdPlain(
+ LProbe.class,
+ messung.getProbeId(),
+ "land");
+ if (userInfo.getFunktionenForMst(probe.getMstId()).contains(1) &&
+ probe.getMstId().equals(status.getErzeuger())
+ ) {
+ status.setStatusStufe(1);
}
- else if (userInfo.getFunktionen().get(i) == currentStatus.getStatusStufe()) {
- change = true;
+ else {
+ return new Response(false, 699, null);
}
}
- if ((change || next) && status.getStatusWert() == 4) {
- status.setStatusStufe(1);
- }
- else if (change) {
- status.setStatusStufe(currentStatus.getStatusStufe());
- }
- else if (next) {
- status.setStatusStufe(currentStatus.getStatusStufe() + 1);
- }
else {
- return new Response(false, 699, null);
+ for (int i = 0;
+ i < userInfo.getFunktionenForMst(status.getErzeuger()).size();
+ i++
+ ) {
+ if (userInfo.getFunktionenForMst(
+ status.getErzeuger()).get(i) >
+ currentStatus.getStatusStufe() &&
+ currentStatus.getStatusWert() != 0
+ ) {
+ next = true;
+ }
+ else if (userInfo.getFunktionenForMst(
+ status.getErzeuger()).get(i) ==
+ currentStatus.getStatusStufe()
+ ) {
+ change = true;
+ }
+ }
+ if (change &&
+ status.getStatusWert() == 4 &&
+ status.getStatusStufe() > 1
+ ) {
+ status.setStatusStufe(currentStatus.getStatusStufe());
+ messung.setFertig(false);
+ }
+ else if (change && status.getStatusWert() == 8) {
+ return authorization.filter(
+ request,
+ resetStatus(status, currentStatus, messung),
+ LStatusProtokoll.class);
+ }
+ else if (change && status.getStatusWert() != 0) {
+ status.setStatusStufe(currentStatus.getStatusStufe());
+ if (status.getStatusStufe() == 1) {
+ messung.setFertig(true);
+ }
+ }
+ else if (next &&
+ (status.getStatusWert() > 0 &&
+ status.getStatusWert() <= 4 ||
+ status.getStatusWert() == 7)) {
+ status.setStatusStufe(currentStatus.getStatusStufe() + 1);
+ if (status.getStatusWert() == 4) {
+ messung.setFertig(false);
+ }
+ }
+ else {
+ return new Response(false, 699, null);
+ }
}
}
Violation violation = validator.validate(status);
@@ -311,55 +360,7 @@
@Context HttpServletRequest request,
LStatusProtokoll status
) {
- if (lock.isLocked(status)) {
- return new Response(false, 697, null);
- }
-
- UserInfo userInfo = authorization.getInfo(request);
- if (!userInfo.getMessstellen().contains(status.getErzeuger())) {
- return new Response(false, 699, null);
- }
- LMessung messung = defaultRepo.getByIdPlain(
- LMessung.class, status.getMessungsId(), "land");
- LStatusProtokoll statusNew = new LStatusProtokoll();
- statusNew.setDatum(status.getDatum());
- statusNew.setErzeuger(status.getErzeuger());
- statusNew.setMessungsId(status.getMessungsId());
- statusNew.setStatusStufe(status.getStatusStufe());
- statusNew.setStatusWert(status.getStatusWert());
- statusNew.setText(status.getText());
- Violation violation = validator.validate(statusNew);
- if (violation.hasErrors()) {
- Response response = new Response(false, 604, statusNew);
- response.setErrors(violation.getErrors());
- response.setWarnings(violation.getWarnings());
- return response;
- }
-
- Response response = defaultRepo.create(statusNew, "land");
- LStatusProtokoll created = (LStatusProtokoll)response.getData();
- if (status.getStatusWert() == 0) {
- QueryBuilder<LStatusProtokoll> lastFilter =
- new QueryBuilder<LStatusProtokoll>(
- defaultRepo.entityManager("land"),
- LStatusProtokoll.class);
-
- lastFilter.and("messungsId", status.getMessungsId());
- lastFilter.orderBy("datum", false);
- List<LStatusProtokoll> protos =
- defaultRepo.filterPlain(lastFilter.getQuery(), "land");
- messung.setStatus(protos.get(protos.size() - 3).getId());
- }
- else {
- messung.setStatus(created.getId());
- }
-
- defaultRepo.update(messung, "land");
-
- return authorization.filter(
- request,
- response,
- LStatusProtokoll.class);
+ return new Response(false, 699, null);
}
/**
@@ -397,4 +398,59 @@
/* Delete the object*/
return defaultRepo.delete(obj, "land");
}
+
+ private Response resetStatus(
+ LStatusProtokoll status,
+ LStatusProtokoll currentStatus,
+ LMessung messung
+ ) {
+ // Create a new Status with value = 8.
+ LStatusProtokoll statusNew = new LStatusProtokoll();
+ statusNew.setDatum(new Timestamp(new Date().getTime()));
+ statusNew.setErzeuger(status.getErzeuger());
+ statusNew.setMessungsId(status.getMessungsId());
+ statusNew.setStatusStufe(status.getStatusStufe());
+ statusNew.setStatusWert(8);
+ statusNew.setText("Reset");
+
+ defaultRepo.create(statusNew, "land");
+
+ Response retValue;
+ if (currentStatus.getStatusStufe() == 1) {
+ LStatusProtokoll nV = new LStatusProtokoll();
+ nV.setDatum(new Timestamp(new Date().getTime()));
+ nV.setErzeuger(status.getErzeuger());
+ nV.setMessungsId(status.getMessungsId());
+ nV.setStatusStufe(1);
+ nV.setStatusWert(0);
+ nV.setText("");
+ retValue = defaultRepo.create(nV, "land");
+ messung.setStatus(((LStatusProtokoll)retValue.getData()).getId());
+ messung.setFertig(false);
+ }
+ else {
+ QueryBuilder<LStatusProtokoll> lastFilter =
+ new QueryBuilder<LStatusProtokoll>(
+ defaultRepo.entityManager("land"),
+ LStatusProtokoll.class);
+ lastFilter.and("messungsId", status.getMessungsId());
+ lastFilter.and("statusStufe", status.getStatusStufe() - 1);
+ lastFilter.orderBy("datum", true);
+ List<LStatusProtokoll> proto =
+ defaultRepo.filterPlain(lastFilter.getQuery(), "land");
+ LStatusProtokoll copy = new LStatusProtokoll();
+ LStatusProtokoll orig = proto.get(proto.size() - 1);
+ copy.setDatum(new Timestamp(new Date().getTime()));
+ copy.setErzeuger(orig.getErzeuger());
+ copy.setMessungsId(orig.getMessungsId());
+ copy.setStatusStufe(orig.getStatusStufe());
+ copy.setStatusWert(orig.getStatusWert());
+ copy.setText(orig.getText());
+ retValue = defaultRepo.create(copy, "land");
+ LStatusProtokoll createdCopy = (LStatusProtokoll)retValue.getData();
+ messung.setStatus(createdCopy.getId());
+ }
+ defaultRepo.update(messung, "land");
+ return retValue;
+ }
}
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 src/main/java/de/intevation/lada/util/auth/BaseAuthorizer.java
--- a/src/main/java/de/intevation/lada/util/auth/BaseAuthorizer.java Fri Jan 08 12:20:31 2016 +0100
+++ b/src/main/java/de/intevation/lada/util/auth/BaseAuthorizer.java Thu Jan 21 09:01:57 2016 +0100
@@ -56,7 +56,7 @@
List<LMessung> messungen = (List<LMessung>) response.getData();
for (int i = 0; i < messungen.size(); i++) {
if (messungen.get(i).getStatus() == null) {
- return false;
+ continue;
}
LStatusProtokoll status = repository.getByIdPlain(
LStatusProtokoll.class, messungen.get(i).getStatus(), "land");
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java
--- a/src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java Fri Jan 08 12:20:31 2016 +0100
+++ b/src/main/java/de/intevation/lada/util/auth/HeaderAuthorization.java Thu Jan 21 09:01:57 2016 +0100
@@ -92,9 +92,7 @@
HttpServletRequest request = (HttpServletRequest)source;
String roleString =
request.getAttribute("lada.user.roles").toString();
- String[] roles = roleString.split(",");
UserInfo info = getGroupsFromDB(roleString);
- info.setRoles(new ArrayList<String>(Arrays.asList(roles)));
info.setName(request.getAttribute("lada.user.name").toString());
return info;
}
@@ -170,27 +168,8 @@
Response response = repository.filter(builder.getQuery(), "stamm");
@SuppressWarnings("unchecked")
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.getNetzbetreiberId() != null) {
- netzbetreiber.add(a.getNetzbetreiberId());
- }
- 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);
+ userInfo.setAuth(auth);
return userInfo;
}
@@ -213,7 +192,7 @@
List<LMessung> messungen = (List<LMessung>) response.getData();
for (int i = 0; i < messungen.size(); i++) {
if (messungen.get(i).getStatus() == null) {
- return false;
+ continue;
}
LStatusProtokoll status = repository.getByIdPlain(
LStatusProtokoll.class, messungen.get(i).getStatus(), "land");
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 src/main/java/de/intevation/lada/util/auth/ProbeAuthorizer.java
--- a/src/main/java/de/intevation/lada/util/auth/ProbeAuthorizer.java Fri Jan 08 12:20:31 2016 +0100
+++ b/src/main/java/de/intevation/lada/util/auth/ProbeAuthorizer.java Thu Jan 21 09:01:57 2016 +0100
@@ -17,14 +17,11 @@
Class<T> clazz
) {
LProbe probe = (LProbe)data;
- if (method == RequestMethod.POST) {
- return getAuthorization(userInfo, probe);
- }
- else if (method == RequestMethod.PUT ||
- method == RequestMethod.DELETE) {
+ if (method == RequestMethod.PUT ||
+ method == RequestMethod.DELETE) {
return !isProbeReadOnly(probe.getId());
}
- return false;
+ return getAuthorization(userInfo, probe);
}
@SuppressWarnings("unchecked")
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 src/main/java/de/intevation/lada/util/auth/TestAuthorization.java
--- a/src/main/java/de/intevation/lada/util/auth/TestAuthorization.java Fri Jan 08 12:20:31 2016 +0100
+++ b/src/main/java/de/intevation/lada/util/auth/TestAuthorization.java Thu Jan 21 09:01:57 2016 +0100
@@ -10,6 +10,7 @@
import java.util.ArrayList;
import java.util.List;
+import de.intevation.lada.model.stamm.Auth;
import de.intevation.lada.util.annotation.AuthorizationConfig;
import de.intevation.lada.util.rest.RequestMethod;
import de.intevation.lada.util.rest.Response;
@@ -21,19 +22,28 @@
public UserInfo getInfo(Object source) {
UserInfo info = new UserInfo();
info.setName("testeins");
+ List<Auth> auth = new ArrayList<Auth>();
+ Auth a1 = new Auth();
+ a1.setFunktionId(0);
+ a1.setLdapGroup("mst_06010");
+ a1.setMstId("06010");
+ a1.setNetzbetreiberId("06");
+ auth.add(a1);
+ Auth a2 = new Auth();
+ a2.setFunktionId(0);
+ a2.setLdapGroup("mst_11010");
+ a2.setNetzbetreiberId("11");
+ a2.setMstId("11010");
+ auth.add(a2);
+ Auth a3 = new Auth();
+ a3.setLdapGroup("Imis_world");
+ a3.setFunktionId(0);
+ auth.add(a3);
List<String> roles = new ArrayList<String>();
roles.add("mst_06010");
roles.add("mst_11010");
roles.add("ImisWorld");
- info.setRoles(roles);
- List<String> netz = new ArrayList<String>();
- netz.add("06");
- netz.add("11");
- info.setNetzbetreiber(netz);
- List<String> mess = new ArrayList<String>();
- mess.add("06010");
- mess.add("11010");
- info.setMessstellen(mess);
+ info.setAuth(auth);
return info;
}
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 src/main/java/de/intevation/lada/util/auth/UserInfo.java
--- a/src/main/java/de/intevation/lada/util/auth/UserInfo.java Fri Jan 08 12:20:31 2016 +0100
+++ b/src/main/java/de/intevation/lada/util/auth/UserInfo.java Thu Jan 21 09:01:57 2016 +0100
@@ -10,6 +10,8 @@
import java.util.ArrayList;
import java.util.List;
+import de.intevation.lada.model.stamm.Auth;
+
/**
* Container for user specific information.
*
@@ -21,6 +23,7 @@
private List<String> netzbetreiber;
private List<String> roles;
private List<Integer> funktionen;
+ private List<Auth> auth;
private Integer statusRole;
public UserInfo() {
@@ -46,49 +49,63 @@
* @return the messstellen
*/
public List<String> getMessstellen() {
- return messstellen;
- }
-
- /**
- * @param messstellen the messstellen to set
- */
- public void setMessstellen(List<String> messstellen) {
- this.messstellen = messstellen;
+ List<String> ret = new ArrayList<String>();
+ for (Auth a : auth) {
+ if (a.getMstId() != null) {
+ ret.add(a.getMstId());
+ }
+ }
+ return ret;
}
/**
* @return the netzbetreiber
*/
public List<String> getNetzbetreiber() {
- return netzbetreiber;
+ List<String> ret = new ArrayList<String>();
+ for (Auth a : auth) {
+ if (a.getNetzbetreiberId() != null) {
+ ret.add(a.getNetzbetreiberId());
+ }
+ }
+ return ret;
}
- /**
- * @param netzbetreiber the netzbetreiber to set
- */
- public void setNetzbetreiber(List<String> netzbetreiber) {
- this.netzbetreiber = netzbetreiber;
- }
-
- /**
- * @return the roles
- */
- public List<String> getRoles() {
- return roles;
- }
-
- /**
- * @param roles the roles to set
- */
- public void setRoles(List<String> roles) {
- this.roles = roles;
+ public List<Integer> getFunktionen() {
+ List<Integer> ret = new ArrayList<Integer>();
+ for (Auth a : auth) {
+ if (a.getFunktionId() != null) {
+ ret.add(a.getFunktionId());
+ }
+ }
+ return ret;
}
/**
* @return the funktionen
*/
- public List<Integer> getFunktionen() {
- return this.funktionen;
+ public List<Integer> getFunktionenForMst(String mstId) {
+ List<Integer> ret = new ArrayList<Integer>();
+ for (Auth a : auth) {
+ if (a.getMstId() != null && a.getMstId().equals(mstId)) {
+ ret.add(a.getFunktionId());
+ }
+ }
+ return ret;
+ }
+
+ /**
+ * @return the funktionen
+ */
+ public List<Integer> getFunktionenForNetzbetreiber(String nId) {
+ List<Integer> ret = new ArrayList<Integer>();
+ for (Auth a : auth) {
+ if (a.getNetzbetreiberId() != null &&
+ a.getNetzbetreiberId().equals(nId)) {
+ ret.add(a.getFunktionId());
+ }
+ }
+ return ret;
}
/**
@@ -102,11 +119,14 @@
return retVal;
}
- /**
- * @param funktionen the funktionen to set
- */
- public void setFunktionen(List<Integer> funktionen) {
- this.funktionen = funktionen;
+ public List<String> getRoles() {
+ List<String> ret = new ArrayList<String>();
+ for (Auth a : auth) {
+ if (a.getLdapGroup() != null) {
+ ret.add(a.getLdapGroup());
+ }
+ }
+ return ret;
}
/**
@@ -122,4 +142,8 @@
public void setStatusRole(Integer statusRole) {
this.statusRole = statusRole;
}
+
+ public void setAuth(List<Auth> auth) {
+ this.auth = auth;
+ }
}
diff -r 9dd9a3de7a61 -r 2fe625c91ab3 src/test/java/de/intevation/lada/test/ServiceTest.java
--- a/src/test/java/de/intevation/lada/test/ServiceTest.java Fri Jan 08 12:20:31 2016 +0100
+++ b/src/test/java/de/intevation/lada/test/ServiceTest.java Thu Jan 21 09:01:57 2016 +0100
@@ -236,6 +236,7 @@
.header("X-SHIB-roles", BaseTest.TEST_ROLES)
.post(Entity.entity(create.toString(), MediaType.APPLICATION_JSON));
String entity = response.readEntity(String.class);
+ System.out.println(entity);
/* Try to parse the response*/
JsonReader fromServiceReader =
Json.createReader(new StringReader(entity));
More information about the Lada-commits
mailing list