]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/request/PossibleRoles.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / request / PossibleRoles.java
1 package org.simantics.db.layer0.request;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.Collection;\r
5 \r
6 import org.simantics.db.ReadGraph;\r
7 import org.simantics.db.Resource;\r
8 import org.simantics.db.common.request.ResourceRead2;\r
9 import org.simantics.db.exception.DatabaseException;\r
10 import org.simantics.db.layer0.adapter.Instances;\r
11 import org.simantics.user.UserResource;\r
12 \r
13 public class PossibleRoles extends ResourceRead2<Collection<Resource>> {\r
14 \r
15     public PossibleRoles(Resource model, Resource user) {\r
16         super(model, user);\r
17     }\r
18     \r
19     @Override\r
20     public Collection<Resource> perform(ReadGraph graph) throws DatabaseException {\r
21 \r
22         UserResource USER = UserResource.getInstance(graph);\r
23         ArrayList<Resource> result = new ArrayList<Resource>();\r
24         Instances query = graph.adapt(USER.RoleAssignment, Instances.class);\r
25         for(Resource assignment : query.find(graph, resource)) {\r
26             if(graph.syncRequest(new IsUserAssigned(assignment, resource2))) {\r
27                 result.addAll(graph.getObjects(assignment, USER.RoleAssignment_HasRole));\r
28             }\r
29         }\r
30         result.add(USER.DefaultRole);\r
31         return result;\r
32         \r
33     }\r
34     \r
35 }