Mercurial > lada > lada-server
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");