Mercurial > lada > lada-server
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 } |