1 package org.simantics.diagram.profile.request;
3 import org.simantics.databoard.Bindings;
4 import org.simantics.db.ReadGraph;
5 import org.simantics.db.Resource;
6 import org.simantics.db.common.request.BinaryRead;
7 import org.simantics.db.common.utils.ListUtils;
8 import org.simantics.db.exception.DatabaseException;
9 import org.simantics.diagram.stubs.DiagramResource;
10 import org.simantics.layer0.Layer0;
11 import org.simantics.scenegraph.profile.ProfileUtils;
13 public class PossibleProfilePartName extends BinaryRead<Resource, String, Resource> {
15 public PossibleProfilePartName(Resource profile, String name) {
19 public Resource process(ReadGraph graph, Resource resource) throws DatabaseException {
21 Layer0 L0 = Layer0.getInstance(graph);
22 DiagramResource DIA = DiagramResource.getInstance(graph);
24 if(graph.isInstanceOf(resource, DIA.Profile)) {
26 String name = graph.getPossibleRelatedValue(resource, L0.HasName, Bindings.STRING);
27 if(parameter2.equals(name)) return resource;
29 for(Resource child : ProfileUtils.getProfileChildren(graph, resource)) {
30 Resource result = process(graph, child);
31 if(result != null) return result;
34 } else if(graph.isInstanceOf(resource, DIA.ProfileEntry)) {
36 String name = graph.getPossibleRelatedValue(resource, L0.HasName, Bindings.STRING);
37 if(parameter2.equals(name)) return resource;
46 public Resource perform(ReadGraph graph) throws DatabaseException {
47 return process(graph, parameter);