X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fprofile%2FTopLevelProfiles.java;fp=bundles%2Forg.simantics.diagram%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fprofile%2FTopLevelProfiles.java;h=1f7a7ede74d3934d54582f8ee5beb13f9065be90;hb=957ddea830ceb97eab9f358d99a591cafc518d8a;hp=0000000000000000000000000000000000000000;hpb=fca6027f6beef8081d719b078e80b98fb56f7a8a;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.diagram/src/org/simantics/diagram/profile/TopLevelProfiles.java b/bundles/org.simantics.diagram/src/org/simantics/diagram/profile/TopLevelProfiles.java new file mode 100644 index 000000000..1f7a7ede7 --- /dev/null +++ b/bundles/org.simantics.diagram/src/org/simantics/diagram/profile/TopLevelProfiles.java @@ -0,0 +1,43 @@ +package org.simantics.diagram.profile; + +import java.util.ArrayList; +import java.util.List; + +import org.simantics.databoard.Bindings; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.common.NamedResource; +import org.simantics.db.common.request.ResourceRead; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.adapter.Instances; +import org.simantics.diagram.synchronization.graph.BasicResources; + +/** + * @author Tuukka Lehtonen + * @since 1.32.0 + */ +public class TopLevelProfiles extends ResourceRead> { + + protected TopLevelProfiles(Resource root) { + super(root); + } + + @Override + public List perform(ReadGraph graph) throws DatabaseException { + BasicResources BR = BasicResources.getInstance(graph); + ArrayList result = new ArrayList<>(); + + Instances query = graph.adapt(BR.DIA.Profile, Instances.class); + for (Resource profile : query.find(graph, resource)) { + if (!graph.hasStatement(profile, BR.L0.Abstract)) { + String name = graph.getPossibleRelatedValue(profile, BR.L0.HasName, Bindings.STRING); + if (name != null) { + result.add(new NamedResource(name, profile)); + } + } + } + + return result; + } + +}