Mercurial > lada > lada-server
changeset 223:d9d1a46af55d
Moved isReadOnly for LProbe from authentication to service.
author | Raimund Renkert <rrenkert@intevation.de> |
---|---|
date | Thu, 04 Jul 2013 14:50:05 +0200 |
parents | f0482fa04e2b |
children | c9a1da2e159d |
files | src/main/java/de/intevation/lada/authentication/Authentication.java src/main/java/de/intevation/lada/authentication/LdapAuthentication.java src/main/java/de/intevation/lada/rest/LProbeService.java |
diffstat | 3 files changed, 33 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/de/intevation/lada/authentication/Authentication.java Thu Jul 04 13:45:40 2013 +0200 +++ b/src/main/java/de/intevation/lada/authentication/Authentication.java Thu Jul 04 14:50:05 2013 +0200 @@ -15,7 +15,4 @@ public boolean hasAccess(HttpHeaders headers, String probeId) throws AuthenticationException; - - public boolean isReadOnly(HttpHeaders headers, String probeId) - throws AuthenticationException; }
--- a/src/main/java/de/intevation/lada/authentication/LdapAuthentication.java Thu Jul 04 13:45:40 2013 +0200 +++ b/src/main/java/de/intevation/lada/authentication/LdapAuthentication.java Thu Jul 04 14:50:05 2013 +0200 @@ -17,8 +17,11 @@ import javax.persistence.criteria.Root; import javax.ws.rs.core.HttpHeaders; +import org.omg.PortableServer.LifespanPolicyOperations; + import de.intevation.lada.data.QueryBuilder; import de.intevation.lada.model.Auth; +import de.intevation.lada.model.LMessung; import de.intevation.lada.model.LProbe; import de.intevation.lada.model.LProbeInfo; @@ -107,16 +110,6 @@ return false; } - /** - * Determine if the LProbe identified by probeId is writeable for the user. - * - * @param headers The HTTP header containing LDAP user information. - * @param probeId The probe id. - */ - public boolean isReadOnly(HttpHeaders headers, String probeId) { - //TODO: test if probe has messung with status 'fertig'. - return false; - } /** * Get the user from HTTP header.
--- a/src/main/java/de/intevation/lada/rest/LProbeService.java Thu Jul 04 13:45:40 2013 +0200 +++ b/src/main/java/de/intevation/lada/rest/LProbeService.java Thu Jul 04 14:50:05 2013 +0200 @@ -25,6 +25,7 @@ import de.intevation.lada.authentication.AuthenticationResponse; import de.intevation.lada.data.QueryBuilder; import de.intevation.lada.data.Repository; +import de.intevation.lada.model.LMessung; import de.intevation.lada.model.LProbe; import de.intevation.lada.model.LProbeInfo; @@ -45,6 +46,10 @@ @Named("lproberepository") private Repository repository; + @Inject + @Named("lmessungrepository") + private Repository messungRepository; + /** * The authorization module. */ @@ -85,7 +90,7 @@ String mstId = probe.get(0).getMstId(); if (auth.getNetzbetreiber().contains(nbId)) { if (auth.getMst().contains(mstId)) { - //TODO: Test if probe has a messung that has status 'ready'. + response.setReadonly(isReadOnly(id)); return response; } response.setReadonly(true); @@ -208,4 +213,28 @@ return new Response(false, 699, new ArrayList<LProbeInfo>()); } } + + /** + * Determine if the LProbe identified by probeId is writeable for the user. + * + * @param probeId The probe id. + */ + public boolean isReadOnly(String probeId) { + QueryBuilder<LMessung> builder = + new QueryBuilder<LMessung>( + repository.getEntityManager(), + LMessung.class); + builder.and("probeId", probeId); + Response response = messungRepository.filter(builder.getQuery()); + List<LMessung> messungen = (List<LMessung>) response.getData(); + if (messungen.isEmpty()) { + return false; + } + for(LMessung messung : messungen) { + if (messung.isFertig()) { + return true; + } + } + return false; + } }