X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;ds=inline;f=org.simantics.district.network%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fvisualisations%2FDynamicVisualisationsContributions.java;h=6c25d237886fc82825045d7f45e08c257511a5e6;hb=6b98761b9c2e9835629d2c0aabefe92657d6d36b;hp=45e52fb55c48c99519f4a17ca7525efec3b4d9d9;hpb=c27c9900e0ac0e6cb89c0d052f53e2eac5605aed;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 45e52fb5..6c25d237 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 @@ -17,6 +17,7 @@ import org.simantics.db.common.NamedResource; import org.simantics.db.common.request.ObjectsWithSupertype; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.util.Layer0Utils; +import org.simantics.district.network.visualisations.model.DynamicArrowContribution; import org.simantics.district.network.visualisations.model.DynamicColorContribution; import org.simantics.district.network.visualisations.model.DynamicColorMap; import org.simantics.district.network.visualisations.model.DynamicSizeContribution; @@ -41,6 +42,7 @@ public class DynamicVisualisationsContributions { private static final String DYNAMIC_VISUALISATIONS_CONTRIBUTION_MODULE = "DynamicVisualisationsContribution"; private static final String COLOR_CONTRIBUTION = "colorContribution"; private static final String SIZE_CONTRIBUTION = "sizeContribution"; + private static final String ARROW_CONTRIBUTION = "arrowContribution"; public static Map dynamicColorMaps(ReadGraph graph) throws DatabaseException { List sharedOntologies = Simantics.applySCL("Simantics/SharedOntologies", "getSharedOntologies", graph, Tuple0.INSTANCE); @@ -168,6 +170,35 @@ public class DynamicVisualisationsContributions { return null; } + public static Collection dynamicEdgeArrowObjects(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); + DynamicArrowObject dynamicarrowObject = dynamicEdgeArrowObject(graph, moduleType); + if (dynamicarrowObject != null) + results.add(dynamicarrowObject); + } + } + return results; + } + + private static DynamicArrowObject dynamicEdgeArrowObject(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 DynamicArrowObject(moduleType, getDynamicEdgeArrowContributionSupplier(moduleURI, ARROW_CONTRIBUTION)); + } + return null; + } + private static Supplier> getDynamicColorMapSupplier(String uri, String expressionText) { return () -> { try { @@ -196,6 +227,20 @@ public class DynamicVisualisationsContributions { }; } + private static Supplier> getDynamicEdgeArrowContributionSupplier(String uri, String expressionText) { + return () -> { + try { + @SuppressWarnings("unchecked") + List result = (List) SCLOsgi.MODULE_REPOSITORY.getValue(uri, expressionText); + return result.stream();//result.stream().map(DynamicColorContribution::fromTuple9); + } catch (ValueNotFound e) { + LOGGER.error("Could not find contributions", e); + //throw new RuntimeException(e); + return Stream.empty(); + } + }; + } + private static Supplier> getDynamicSizeContributionSupplier(String uri, String expressionText) { return () -> { try { @@ -210,6 +255,28 @@ public class DynamicVisualisationsContributions { }; } + public static class DynamicArrowObject { + + private final NamedResource arrowObject; + private final Supplier> arrowContributionSupplier; + private Map arrowContributions; + + public DynamicArrowObject(NamedResource coloringObject, Supplier> arrowContributionSupplier) { + this.arrowObject = coloringObject; + this.arrowContributionSupplier = arrowContributionSupplier; + } + + public NamedResource getArrowObject() { + return arrowObject; + } + + public Map getArrowContributions() { + if (arrowContributions == null) + arrowContributions = arrowContributionSupplier.get().collect(Collectors.toMap(c -> c.getLabel(), c -> c)); + return arrowContributions; + } + } + public static class DynamicColoringObject { private final NamedResource coloringObject;