package org.simantics.db.layer0.request; import java.util.ArrayList; import java.util.Collection; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.request.ResourceRead2; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.adapter.Instances; import org.simantics.user.UserResource; public class PossibleRoles extends ResourceRead2> { public PossibleRoles(Resource model, Resource user) { super(model, user); } @Override public Collection perform(ReadGraph graph) throws DatabaseException { UserResource USER = UserResource.getInstance(graph); ArrayList result = new ArrayList(); Instances query = graph.adapt(USER.RoleAssignment, Instances.class); for(Resource assignment : query.find(graph, resource)) { if(graph.syncRequest(new IsUserAssigned(assignment, resource2))) { result.addAll(graph.getObjects(assignment, USER.RoleAssignment_HasRole)); } } result.add(USER.DefaultRole); return result; } }