X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=sidebyside;f=org.simantics.district.network%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fvisualisations%2FDynamicVisualisationsContributions.java;fp=org.simantics.district.network%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fvisualisations%2FDynamicVisualisationsContributions.java;h=3fd5a25f341a444a7e188f9eea60ab5e941adaee;hb=3730466cd1e90c50c988292e107639952448d6a6;hp=1a16ee55389214e4cb39f7862cb06e5a6231235a;hpb=e6b35994e05232dd536af4da224a342c1bd090af;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network/src/org/simantics/district/network/visualisations/DynamicVisualisationsContributions.java b/org.simantics.district.network/src/org/simantics/district/network/visualisations/DynamicVisualisationsContributions.java index 1a16ee55..3fd5a25f 100644 --- a/org.simantics.district.network/src/org/simantics/district/network/visualisations/DynamicVisualisationsContributions.java +++ b/org.simantics.district.network/src/org/simantics/district/network/visualisations/DynamicVisualisationsContributions.java @@ -5,6 +5,7 @@ import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -22,6 +23,8 @@ import org.simantics.district.network.visualisations.model.DynamicColorContribut import org.simantics.district.network.visualisations.model.DynamicColorMap; import org.simantics.district.network.visualisations.model.DynamicSizeContribution; import org.simantics.district.network.visualisations.model.DynamicSizeMap; +import org.simantics.district.network.visualisations.model.DynamicSymbolContribution; +import org.simantics.district.network.visualisations.model.StaticInformationContribution; import org.simantics.layer0.Layer0; import org.simantics.scl.compiler.top.ValueNotFound; import org.simantics.scl.osgi.SCLOsgi; @@ -43,6 +46,8 @@ public class DynamicVisualisationsContributions { private static final String COLOR_CONTRIBUTION = "colorContribution"; private static final String SIZE_CONTRIBUTION = "sizeContribution"; private static final String ARROW_CONTRIBUTION = "arrowContribution"; + private static final String STATIC_INFORMATION_CONTRIBUTION = "staticInformationContribution"; + private static final String DYNAMIC_SYMBOL_CONTRIBUTION = "symbolContribution"; public static Map dynamicColorMaps(ReadGraph graph) throws DatabaseException { List sharedOntologies = Simantics.applySCL("Simantics/SharedOntologies", "getSharedOntologies", graph, Tuple0.INSTANCE); @@ -204,7 +209,64 @@ public class DynamicVisualisationsContributions { } }; } + + public static Collection staticInformationContributionObjects(ReadGraph graph) throws DatabaseException { + + List sharedOntologies = Simantics.applySCL("Simantics/SharedOntologies", "getSharedOntologies", graph, Tuple0.INSTANCE); + + List results = new ArrayList<>(); + + for (Resource sharedOntology : sharedOntologies) { + Collection findByType = graph.syncRequest(new ObjectsWithSupertype(sharedOntology, Layer0.getInstance(graph).ConsistsOf, StructuralResource2.getInstance(graph).Component)); + //Collection findByType = QueryIndexUtils.searchByType(graph, sharedOntology, ); + for (Resource find : findByType) { + NamedResource moduleType = new NamedResource(NameLabelUtil.modalName(graph, find), find); + StaticInformationContributionObject staticInformationContributionObject = staticInformationContributionObject(graph, moduleType); + if (staticInformationContributionObject != null) + results.add(staticInformationContributionObject); + } + } + return results; + } + + private static StaticInformationContributionObject staticInformationContributionObject(ReadGraph graph, NamedResource moduleType) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + Resource sclModule = Layer0Utils.getPossibleChild(graph, moduleType.getResource(), L0.SCLModule, DYNAMIC_VISUALISATIONS_CONTRIBUTION_MODULE); + if (sclModule != null) { + String moduleURI = graph.getURI(sclModule); + return new StaticInformationContributionObject(moduleType, getContributionSupplier(moduleURI, STATIC_INFORMATION_CONTRIBUTION)); + } + return null; + } + + public static Collection dynamicSymbolContributionObjects(ReadGraph graph) throws DatabaseException { + + List sharedOntologies = Simantics.applySCL("Simantics/SharedOntologies", "getSharedOntologies", graph, Tuple0.INSTANCE); + List results = new ArrayList<>(); + + for (Resource sharedOntology : sharedOntologies) { + Collection findByType = graph.syncRequest(new ObjectsWithSupertype(sharedOntology, Layer0.getInstance(graph).ConsistsOf, StructuralResource2.getInstance(graph).Component)); + //Collection findByType = QueryIndexUtils.searchByType(graph, sharedOntology, ); + for (Resource find : findByType) { + NamedResource moduleType = new NamedResource(NameLabelUtil.modalName(graph, find), find); + DynamicSymbolContributionObject dynamicSymbolContributionObject = dynamicSymbolContributionObject(graph, moduleType); + if (dynamicSymbolContributionObject != null) + results.add(dynamicSymbolContributionObject); + } + } + return results; + } + private static DynamicSymbolContributionObject dynamicSymbolContributionObject(ReadGraph graph, NamedResource moduleType) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + Resource sclModule = Layer0Utils.getPossibleChild(graph, moduleType.getResource(), L0.SCLModule, DYNAMIC_VISUALISATIONS_CONTRIBUTION_MODULE); + if (sclModule != null) { + String moduleURI = graph.getURI(sclModule); + return new DynamicSymbolContributionObject(moduleType, getContributionSupplier(moduleURI, DYNAMIC_SYMBOL_CONTRIBUTION)); + } + return null; + } + public static class DynamicArrowObject { private final NamedResource arrowObject; @@ -226,7 +288,67 @@ public class DynamicVisualisationsContributions { return arrowContributions; } } - + + public static class StaticInformationContributionObject { + + private final NamedResource staticInformationContributionObject; + private final Supplier> staticInformationContributionSupplier; + private Map staticInformationContributions; + + public StaticInformationContributionObject(NamedResource staticInformationContributionObject, Supplier> staticInformationContributionSupplier) { + this.staticInformationContributionObject = staticInformationContributionObject; + this.staticInformationContributionSupplier = staticInformationContributionSupplier; + } + + public NamedResource getStaticInformationContributionObject() { + return staticInformationContributionObject; + } + + public Map getStaticInformationContributions() { + if (staticInformationContributions == null) + staticInformationContributions = staticInformationContributionSupplier.get().collect(Collectors.toMap(c -> c.getLabel(), c -> c)); + return staticInformationContributions; + } + } + + public static class DynamicSymbolContributionObject { + + private final NamedResource dynamicSymbolContributionObject; + private final Supplier> dynamicSymbolContributionSupplier; + private DynamicSymbolContribution dynamicSymbolContribution; + + public DynamicSymbolContributionObject(NamedResource dynamicSymbolContributionObject, Supplier> dynamicSymbolContributionSupplier) { + this.dynamicSymbolContributionObject = dynamicSymbolContributionObject; + this.dynamicSymbolContributionSupplier = dynamicSymbolContributionSupplier; + } + + public NamedResource getDynamicSymbolContributionObject() { + return dynamicSymbolContributionObject; + } + + public DynamicSymbolContribution getDynamicSymbolContribution() { + if (dynamicSymbolContribution == null) { + Optional findFirst = dynamicSymbolContributionSupplier.get().findFirst(); + findFirst.ifPresent(dsc -> { + dynamicSymbolContribution = dsc; + }); + } + return dynamicSymbolContribution; + } + + public void resolveSymbols(ReadGraph graph) { + SCLContext current = SCLContext.getCurrent(); + Object oldGraph = current.put("graph", graph); + try { + DynamicSymbolContribution dsc = getDynamicSymbolContribution(); + if (dsc != null) + dsc.resolveSymbolMap(); + } finally { + current.put("graph", oldGraph); + } + } + } + public static class DynamicColoringObject { private final NamedResource coloringObject;