annotate src/main/java/de/intevation/lada/auth/DataAuthorization.java @ 263:2098db2e8fbd M1

Code documentation.
author Raimund Renkert <rrenkert@intevation.de>
date Wed, 17 Jul 2013 09:40:53 +0200
parents 01148d036b9b
children 183f8116d9a6
rev   line source
235
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
1 package de.intevation.lada.auth;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
2
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
3 import java.util.List;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
4
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
5 import javax.enterprise.context.ApplicationScoped;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
6 import javax.inject.Inject;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
7 import javax.inject.Named;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
8
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
9 import de.intevation.lada.data.QueryBuilder;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
10 import de.intevation.lada.data.Repository;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
11 import de.intevation.lada.model.LMessung;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
12 import de.intevation.lada.rest.Response;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
13
263
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 235
diff changeset
14 /**
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 235
diff changeset
15 * This implementation of the authorization interface handles access to data
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 235
diff changeset
16 * objects.
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 235
diff changeset
17 *
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 235
diff changeset
18 * @author <a href="mailto:rrenkert@intevation.de">Raimund Renkert</a>
2098db2e8fbd Code documentation.
Raimund Renkert <rrenkert@intevation.de>
parents: 235
diff changeset
19 */
235
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
20 @ApplicationScoped
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
21 @Named("dataauthorization")
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
22 public class DataAuthorization
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
23 implements Authorization
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
24 {
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
25 @Inject
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
26 @Named("readonlyrepository")
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
27 private Repository repository;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
28
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
29 /**
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
30 * Determine if the LProbe identified by probeId is writable for the user.
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
31 *
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
32 * @param probeId The probe id.
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
33 */
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
34 public boolean isReadOnly(String probeId) {
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
35 QueryBuilder<LMessung> builder =
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
36 new QueryBuilder<LMessung>(
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
37 repository.getEntityManager(),
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
38 LMessung.class);
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
39 builder.and("probeId", probeId);
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
40 Response response = repository.filter(builder.getQuery());
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
41 @SuppressWarnings("unchecked")
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
42 List<LMessung> messungen = (List<LMessung>) response.getData();
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
43 if (messungen.isEmpty()) {
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
44 return false;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
45 }
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
46 for(LMessung messung : messungen) {
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
47 if (messung.isFertig()) {
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
48 return true;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
49 }
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
50 }
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
51 return false;
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
52 }
01148d036b9b Added new module to authorize operations on objects.
Raimund Renkert <rrenkert@intevation.de>
parents:
diff changeset
53 }
This site is hosted by Intevation GmbH (Datenschutzerklärung und Impressum | Privacy Policy and Imprint)