# HG changeset patch # User Raimund Renkert # Date 1460136966 -7200 # Node ID d53261aa38eb6449b2988c16df33dc158d5a8e3a # Parent fffa587904a8b148a213befebc4afc9acad36d48 Fixed NPE for messungen without status. diff -r fffa587904a8 -r d53261aa38eb src/main/java/de/intevation/lada/util/auth/MessungAuthorizer.java --- a/src/main/java/de/intevation/lada/util/auth/MessungAuthorizer.java Fri Apr 08 19:35:49 2016 +0200 +++ b/src/main/java/de/intevation/lada/util/auth/MessungAuthorizer.java Fri Apr 08 19:36:06 2016 +0200 @@ -93,51 +93,52 @@ else { messung.setOwner(false); } - LStatusProtokoll status = repository.getByIdPlain( - LStatusProtokoll.class, - messung.getStatus(), - "land"); if (messung.getStatus() == null) { messung.setReadonly(false); + messung.setStatusEdit(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 lstFilter = new QueryBuilder( - repository.entityManager("stamm"), - AuthLstUmw.class); - lstFilter.or("lstId", userInfo.getMessstellen()); - List lsts = - repository.filterPlain(lstFilter.getQuery(), "stamm"); - for (int i = 0; i < lsts.size(); i++) { - if (lsts.get(i).getUmwId().equals(probe.getUmwId()) - && status.getStatusStufe() == 2 - && status.getStatusWert() != 4 - || status.getStatusStufe() == 3 - ) { - statusEdit = true; + boolean statusEdit = false; + if (userInfo.getFunktionen().contains(3)) { + QueryBuilder lstFilter = new QueryBuilder( + repository.entityManager("stamm"), + AuthLstUmw.class); + lstFilter.or("lstId", userInfo.getMessstellen()); + List lsts = + repository.filterPlain(lstFilter.getQuery(), "stamm"); + for (int i = 0; i < lsts.size(); i++) { + if (lsts.get(i).getUmwId().equals(probe.getUmwId()) + && status.getStatusStufe() == 2 + && status.getStatusWert() != 4 + || status.getStatusStufe() == 3 + ) { + statusEdit = true; + } } } - } - else if (userInfo.getFunktionen().contains(2) && - userInfo.getNetzbetreiber().contains(probe.getNetzbetreiberId()) && - (status.getStatusStufe() == 1 || status.getStatusStufe() == 2) && - status.getStatusWert() >= 1 - ) { - statusEdit = true; + else if (userInfo.getFunktionen().contains(2) && + userInfo.getNetzbetreiber().contains(probe.getNetzbetreiberId()) && + (status.getStatusStufe() == 1 || status.getStatusStufe() == 2) && + status.getStatusWert() >= 1 + ) { + statusEdit = true; + } + else if (userInfo.getFunktionen().contains(1) && + userInfo.belongsTo(probe.getMstId(), probe.getLaborMstId()) && + (status.getStatusStufe() <= 1 || status.getStatusWert() == 4) + ) { + statusEdit = true; + } + messung.setStatusEdit(statusEdit); + } - else if (userInfo.getFunktionen().contains(1) && - userInfo.belongsTo(probe.getMstId(), probe.getLaborMstId()) && - (status.getStatusStufe() <= 1 || status.getStatusWert() == 4) - ) { - statusEdit = true; - } - messung.setStatusEdit(statusEdit); - return messung; }