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