diff src/main/java/de/intevation/lada/rest/StatusService.java @ 1028:1c41c7b8f7c2 schema-update

Updated server application to new database model. THIS IS STILL WIP!!!
author Raimund Renkert <raimund.renkert@intevation.de>
date Fri, 08 Jul 2016 15:32:36 +0200
parents ad69878b7280
children 4d95cc7f0a43
line wrap: on
line diff
--- a/src/main/java/de/intevation/lada/rest/StatusService.java	Mon Jul 04 14:31:18 2016 +0200
+++ b/src/main/java/de/intevation/lada/rest/StatusService.java	Fri Jul 08 15:32:36 2016 +0200
@@ -32,10 +32,12 @@
 import de.intevation.lada.lock.LockConfig;
 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.model.stamm.MessStelle;
+import de.intevation.lada.model.land.Messung;
+import de.intevation.lada.model.land.Probe;
+import de.intevation.lada.model.land.StatusProtokoll;
+import de.intevation.lada.model.stammdaten.MessStelle;
+import de.intevation.lada.model.stammdaten.StatusKombi;
+import de.intevation.lada.model.stammdaten.StatusReihenfolge;
 import de.intevation.lada.util.annotation.AuthorizationConfig;
 import de.intevation.lada.util.annotation.RepositoryConfig;
 import de.intevation.lada.util.auth.Authorization;
@@ -149,15 +151,15 @@
             return new Response(false, 698, null);
         }
 
-        QueryBuilder<LStatusProtokoll> builder =
-            new QueryBuilder<LStatusProtokoll>(
+        QueryBuilder<StatusProtokoll> builder =
+            new QueryBuilder<StatusProtokoll>(
                 defaultRepo.entityManager("land"),
-                LStatusProtokoll.class);
+                StatusProtokoll.class);
         builder.and("messungsId", id);
         return authorization.filter(
             request,
             defaultRepo.filter(builder.getQuery(), "land"),
-            LStatusProtokoll.class);
+            StatusProtokoll.class);
     }
 
     /**
@@ -178,10 +180,10 @@
         @PathParam("id") String id
     ) {
         Response response = defaultRepo.getById(
-            LStatusProtokoll.class,
+            StatusProtokoll.class,
             Integer.valueOf(id),
             "land");
-        LStatusProtokoll status = (LStatusProtokoll)response.getData();
+        StatusProtokoll status = (StatusProtokoll)response.getData();
         Violation violation = validator.validate(status);
         if (violation.hasErrors() || violation.hasWarnings()) {
             response.setErrors(violation.getErrors());
@@ -191,7 +193,7 @@
         return authorization.filter(
             request,
             response,
-            LStatusProtokoll.class);
+            StatusProtokoll.class);
     }
 
     /**
@@ -222,18 +224,17 @@
     public Response create(
         @Context HttpHeaders headers,
         @Context HttpServletRequest request,
-        LStatusProtokoll status
+        StatusProtokoll status
     ) {
         if (status.getMessungsId() == null
-            || status.getErzeuger() == null
-            || status.getStatusWert() == null
+            || status.getMstId() == null
         ) {
             return new Response(false, 631, null);
         }
 
         UserInfo userInfo = authorization.getInfo(request);
-        LMessung messung = defaultRepo.getByIdPlain(
-            LMessung.class, status.getMessungsId(), "land");
+        Messung messung = defaultRepo.getByIdPlain(
+            Messung.class, status.getMessungsId(), "land");
         if (lock.isLocked(messung)) {
             return new Response(false, 697, null);
         }
@@ -242,40 +243,42 @@
         Response r = authorization.filter(
             request,
             new Response(true, 200, messung),
-            LMessung.class);
-        LMessung filteredMessung = (LMessung)r.getData();
+            Messung.class);
+        Messung filteredMessung = (Messung)r.getData();
         if (filteredMessung.getStatusEdit() == false) {
             return new Response(false, 699, null);
         }
 
         if (messung.getStatus() == null) {
-            status.setStatusStufe(1);
+            // set the first status as default
+            status.setStatusKombi(1);
         }
         else {
-            LStatusProtokoll currentStatus = defaultRepo.getByIdPlain(
-                LStatusProtokoll.class, messung.getStatus(), "land");
+            StatusProtokoll currentStatus = defaultRepo.getByIdPlain(
+                StatusProtokoll.class, messung.getStatus(), "land");
 
             String probeMstId = defaultRepo.getByIdPlain(
-                LProbe.class,
+                Probe.class,
                 messung.getProbeId(),
                 "land").getMstId();
 
-            if (currentStatus.getStatusWert() == 4) {
-                if (status.getStatusWert() == 4
-                    && userInfo.getMessstellen().contains(
-                        currentStatus.getErzeuger())
-                    && status.getErzeuger().equals(
-                        currentStatus.getErzeuger())
+            StatusKombi kombiCurrent = defaultRepo.getByIdPlain(StatusKombi.class, currentStatus.getStatusKombi(), "stamm");
+            StatusKombi kombiStatus = defaultRepo.getByIdPlain(StatusKombi.class, status.getStatusKombi(), "stamm");
+            if (kombiCurrent.getStatusWert().getId() == 4) {
+                if (userInfo.getMessstellen().contains(
+                        currentStatus.getMstId())
+                    && status.getMstId().equals(
+                        currentStatus.getMstId())
                 ) {
                     // 'edit' currentStatus
-                    status.setStatusStufe(currentStatus.getStatusStufe());
+                    status.setStatusKombi(kombiCurrent.getId());
                 }
                 else if (
                     userInfo.getFunktionenForMst(probeMstId)
                         .contains(1)
-                    && probeMstId.equals(status.getErzeuger())
+                    && probeMstId.equals(status.getMstId())
                 ) {
-                    status.setStatusStufe(1);
+                    status.setStatusKombi(1);
                 }
                 else {
                     return new Response(false, 699, null);
@@ -296,29 +299,29 @@
                 // XXX: It's assumed here, that an 'Erzeuger' is an instance
                 // of 'Messstelle', but the model does not enforce it!
                 for (Integer function :
-                         userInfo.getFunktionenForMst(status.getErzeuger())
+                         userInfo.getFunktionenForMst(status.getMstId())
                 ) {
-                    if (function.equals(currentStatus.getStatusStufe() + 1)
-                        && currentStatus.getStatusWert() != 0) {
+                    if (function.equals(kombiCurrent.getStatusStufe().getId() + 1)
+                        && kombiCurrent.getStatusWert().getId() != 0) {
                         next = true;
                     }
-                    else if (function == currentStatus.getStatusStufe()) {
-                        if (currentStatus.getStatusStufe() == 1
-                            && !status.getErzeuger().equals(probeMstId)) {
+                    else if (function == kombiCurrent.getStatusStufe().getId()) {
+                        if (kombiCurrent.getStatusStufe().getId() == 1
+                            && !status.getMstId().equals(probeMstId)) {
                             logger.debug(
                                 "Messstelle does not match for change");
                             return new Response(false, 699, null);
                         }
 
                         String pNetzbetreiber = defaultRepo.getByIdPlain(
-                            LProbe.class,
-                            messung.getProbeId(),
+                            MessStelle.class,
+                            probeMstId,
                             "land").getNetzbetreiberId();
                         String sNetzbetreiber = defaultRepo.getByIdPlain(
                             MessStelle.class,
-                            status.getErzeuger(),
+                            status.getMstId(),
                             "stamm").getNetzbetreiberId();
-                        if (currentStatus.getStatusStufe() == 2
+                        if (kombiCurrent.getStatusStufe().getId() == 2
                             && !pNetzbetreiber.equals(sNetzbetreiber)){
                             logger.debug(
                                 "Netzbetreiber does not match for change");
@@ -328,26 +331,35 @@
                     }
                 }
 
+                QueryBuilder<StatusKombi> builder =
+                    new QueryBuilder<StatusKombi>(defaultRepo.entityManager("stamm"), StatusKombi.class);
                 if (change &&
-                    status.getStatusWert() == 4 &&
-                    status.getStatusStufe() > 1
+                    kombiStatus.getStatusWert().getId() == 4 &&
+                    kombiStatus.getStatusStufe().getId() > 1
                 ) {
-                    status.setStatusStufe(currentStatus.getStatusStufe());
+                    builder.and("StatusStufe", kombiCurrent.getStatusStufe())
+                        .and("statusWert", 4);
+                    status.setStatusKombi(defaultRepo.filterPlain(builder.getQuery(),"stamm").get(0).getId());
+                //    status.setStatusStufe(currentStatus.getStatusStufe());
                 }
-                else if (change && status.getStatusWert() == 8) {
+                else if (change && kombiStatus.getStatusWert().getId() == 8) {
                     return authorization.filter(
                         request,
                         resetStatus(status, currentStatus, messung),
-                        LStatusProtokoll.class);
+                        StatusProtokoll.class);
                 }
-                else if (change && status.getStatusWert() != 0) {
-                    status.setStatusStufe(currentStatus.getStatusStufe());
+                else if (change && kombiStatus.getStatusWert().getId() != 0) {
+                    builder.and("StatusStufe", kombiCurrent.getStatusStufe())
+                        .and("statusWert", kombiStatus.getStatusStufe());
+                    status.setStatusKombi(defaultRepo.filterPlain(builder.getQuery(),"stamm").get(0).getId());
                 }
                 else if (next &&
-                    (status.getStatusWert() > 0 &&
-                     status.getStatusWert() <= 4 ||
-                     status.getStatusWert() == 7)) {
-                    status.setStatusStufe(currentStatus.getStatusStufe() + 1);
+                    (kombiStatus.getStatusWert().getId() > 0 &&
+                     kombiStatus.getStatusWert().getId() <= 4 ||
+                     kombiStatus.getStatusWert().getId() == 7)) {
+                    builder.and("StatusStufe", kombiCurrent.getStatusStufe().getId() + 1)
+                        .and("statusWert", kombiStatus.getStatusStufe());
+                    status.setStatusKombi(defaultRepo.filterPlain(builder.getQuery(),"stamm").get(0).getId());
                 }
                 else {
                     return new Response(false, 699, null);
@@ -355,10 +367,10 @@
             }
 
             // auto-set 'fertig'-flag
-            if (status.getStatusStufe() == 1) {
+            if (kombiStatus.getStatusStufe().getId() == 1) {
                 messung.setFertig(true);
             }
-            else if (status.getStatusWert() == 4) {
+            else if (kombiStatus.getStatusWert().getId() == 4) {
                 messung.setFertig(false);
             }
         }
@@ -370,14 +382,14 @@
             return response;
         }
         Response response = defaultRepo.create(status, "land");
-        LStatusProtokoll created = (LStatusProtokoll)response.getData();
+        StatusProtokoll created = (StatusProtokoll)response.getData();
         messung.setStatus(created.getId());
         defaultRepo.update(messung, "land");
         /* Persist the new object*/
         return authorization.filter(
             request,
             response,
-            LStatusProtokoll.class);
+            StatusProtokoll.class);
     }
 
     /**
@@ -408,7 +420,7 @@
     public Response update(
         @Context HttpHeaders headers,
         @Context HttpServletRequest request,
-        LStatusProtokoll status
+        StatusProtokoll status
     ) {
         return new Response(false, 699, null);
     }
@@ -432,13 +444,13 @@
     ) {
         /* Get the object by id*/
         Response object =
-            defaultRepo.getById(LStatusProtokoll.class, Integer.valueOf(id), "land");
-        LStatusProtokoll obj = (LStatusProtokoll)object.getData();
+            defaultRepo.getById(StatusProtokoll.class, Integer.valueOf(id), "land");
+        StatusProtokoll obj = (StatusProtokoll)object.getData();
         if (!authorization.isAuthorized(
                 request,
                 obj,
                 RequestMethod.DELETE,
-                LStatusProtokoll.class)
+                StatusProtokoll.class)
         ) {
             return new Response(false, 699, null);
         }
@@ -450,53 +462,55 @@
     }
 
     private Response resetStatus(
-        LStatusProtokoll status,
-        LStatusProtokoll currentStatus,
-        LMessung messung
+        StatusProtokoll status,
+        StatusProtokoll currentStatus,
+        Messung messung
     ) {
         // Create a new Status with value = 8.
-        LStatusProtokoll statusNew = new LStatusProtokoll();
+        StatusProtokoll statusNew = new StatusProtokoll();
         statusNew.setDatum(new Timestamp(new Date().getTime()));
-        statusNew.setErzeuger(status.getErzeuger());
+        statusNew.setMstId(status.getMstId());
         statusNew.setMessungsId(status.getMessungsId());
-        statusNew.setStatusStufe(currentStatus.getStatusStufe());
-        statusNew.setStatusWert(8);
-        statusNew.setText("Reset");
+//        statusNew.setStatusKombi(currentStatus.getStatusStufe());
+//        statusNew.setStatusWert(8);
+//        statusNew.setText("Reset");
 
         defaultRepo.create(statusNew, "land");
 
         Response retValue;
-        if (currentStatus.getStatusStufe() == 1) {
-            LStatusProtokoll nV = new LStatusProtokoll();
+        StatusKombi kombi = defaultRepo.getByIdPlain(
+            StatusKombi.class,
+            currentStatus.getStatusKombi(),
+            "stamm");
+        if (kombi.getStatusStufe().getId() == 1) {
+            StatusProtokoll nV = new StatusProtokoll();
             nV.setDatum(new Timestamp(new Date().getTime()));
-            nV.setErzeuger(status.getErzeuger());
+            nV.setMstId(status.getMstId());
             nV.setMessungsId(status.getMessungsId());
-            nV.setStatusStufe(1);
-            nV.setStatusWert(0);
+            nV.setStatusKombi(1);
             nV.setText("");
             retValue = defaultRepo.create(nV, "land");
-            messung.setStatus(((LStatusProtokoll)retValue.getData()).getId());
+            messung.setStatus(((StatusProtokoll)retValue.getData()).getId());
         }
         else {
-            QueryBuilder<LStatusProtokoll> lastFilter =
-                new QueryBuilder<LStatusProtokoll>(
+            QueryBuilder<StatusProtokoll> lastFilter =
+                new QueryBuilder<StatusProtokoll>(
                         defaultRepo.entityManager("land"),
-                        LStatusProtokoll.class);
+                        StatusProtokoll.class);
             lastFilter.and("messungsId", status.getMessungsId());
-            lastFilter.and("statusStufe", currentStatus.getStatusStufe() - 1);
+// CHECK THIS!            lastFilter.and("statusKombi", currentStatus.getStatusKombi() - 1);
             lastFilter.orderBy("datum", true);
-            List<LStatusProtokoll> proto =
+            List<StatusProtokoll> proto =
                 defaultRepo.filterPlain(lastFilter.getQuery(), "land");
-            LStatusProtokoll copy = new LStatusProtokoll();
-            LStatusProtokoll orig = proto.get(proto.size() - 1);
+            StatusProtokoll copy = new StatusProtokoll();
+            StatusProtokoll orig = proto.get(proto.size() - 1);
             copy.setDatum(new Timestamp(new Date().getTime()));
-            copy.setErzeuger(orig.getErzeuger());
+            copy.setMstId(orig.getMstId());
             copy.setMessungsId(orig.getMessungsId());
-            copy.setStatusStufe(orig.getStatusStufe());
-            copy.setStatusWert(orig.getStatusWert());
+            copy.setStatusKombi(orig.getStatusKombi());
             copy.setText("");
             retValue = defaultRepo.create(copy, "land");
-            LStatusProtokoll createdCopy = (LStatusProtokoll)retValue.getData();
+            StatusProtokoll createdCopy = (StatusProtokoll)retValue.getData();
             messung.setStatus(createdCopy.getId());
         }
         defaultRepo.update(messung, "land");
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)