+ public static Collection<StaticInformationContributionObject> staticInformationContributionObjects(ReadGraph graph) throws DatabaseException {
+
+ List<Resource> sharedOntologies = Simantics.applySCL("Simantics/SharedOntologies", "getSharedOntologies", graph, Tuple0.INSTANCE);
+
+ List<StaticInformationContributionObject> results = new ArrayList<>();
+
+ for (Resource sharedOntology : sharedOntologies) {
+ Collection<Resource> findByType = graph.syncRequest(new ObjectsWithSupertype(sharedOntology, Layer0.getInstance(graph).ConsistsOf, StructuralResource2.getInstance(graph).Component));
+ //Collection<Resource> 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<DynamicSymbolContributionObject> dynamicSymbolContributionObjects(ReadGraph graph) throws DatabaseException {
+
+ List<Resource> sharedOntologies = Simantics.applySCL("Simantics/SharedOntologies", "getSharedOntologies", graph, Tuple0.INSTANCE);
+ List<DynamicSymbolContributionObject> results = new ArrayList<>();
+
+ for (Resource sharedOntology : sharedOntologies) {
+ Collection<Resource> findByType = graph.syncRequest(new ObjectsWithSupertype(sharedOntology, Layer0.getInstance(graph).ConsistsOf, StructuralResource2.getInstance(graph).Component));
+ //Collection<Resource> 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;
+ private final Supplier<Stream<DynamicArrowContribution>> arrowContributionSupplier;
+ private Map<String, DynamicArrowContribution> arrowContributions;
+
+ public DynamicArrowObject(NamedResource coloringObject, Supplier<Stream<DynamicArrowContribution>> arrowContributionSupplier) {
+ this.arrowObject = coloringObject;
+ this.arrowContributionSupplier = arrowContributionSupplier;
+ }
+
+ public NamedResource getArrowObject() {
+ return arrowObject;
+ }
+
+ public Map<String, DynamicArrowContribution> getArrowContributions() {
+ if (arrowContributions == null)
+ arrowContributions = arrowContributionSupplier.get().collect(Collectors.toMap(c -> c.getLabel(), c -> c));
+ return arrowContributions;
+ }
+ }
+
+ public static class StaticInformationContributionObject {
+
+ private final NamedResource staticInformationContributionObject;
+ private final Supplier<Stream<StaticInformationContribution>> staticInformationContributionSupplier;
+ private Map<String, StaticInformationContribution> staticInformationContributions;
+
+ public StaticInformationContributionObject(NamedResource staticInformationContributionObject, Supplier<Stream<StaticInformationContribution>> staticInformationContributionSupplier) {
+ this.staticInformationContributionObject = staticInformationContributionObject;
+ this.staticInformationContributionSupplier = staticInformationContributionSupplier;
+ }
+
+ public NamedResource getStaticInformationContributionObject() {
+ return staticInformationContributionObject;
+ }
+
+ public Map<String, StaticInformationContribution> 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<Stream<DynamicSymbolContribution>> dynamicSymbolContributionSupplier;
+ private DynamicSymbolContribution dynamicSymbolContribution;
+
+ public DynamicSymbolContributionObject(NamedResource dynamicSymbolContributionObject, Supplier<Stream<DynamicSymbolContribution>> dynamicSymbolContributionSupplier) {
+ this.dynamicSymbolContributionObject = dynamicSymbolContributionObject;
+ this.dynamicSymbolContributionSupplier = dynamicSymbolContributionSupplier;
+ }
+
+ public NamedResource getDynamicSymbolContributionObject() {
+ return dynamicSymbolContributionObject;
+ }
+
+ public DynamicSymbolContribution getDynamicSymbolContribution() {
+ if (dynamicSymbolContribution == null) {
+ Optional<DynamicSymbolContribution> 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);