X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fscl%2FGraphModuleSourceRepository.java;h=3edc7bfeae28dd2a696dc9c3bd1d9d984c00de5d;hb=c160c0a55fb8aaacc9bcfa08b2bfbc4fdf0bf871;hp=cfc3f4f1579c5f232c6f6746d4af913d7f1b9d1d;hpb=969bd23cab98a79ca9101af33334000879fb60c5;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java index cfc3f4f15..3edc7bfea 100644 --- a/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java +++ b/bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java @@ -1,5 +1,7 @@ package org.simantics.modeling.scl; +import java.util.Collection; + import org.simantics.Simantics; import org.simantics.db.ReadGraph; import org.simantics.db.RequestProcessorSpecific; @@ -17,6 +19,8 @@ import org.simantics.scl.compiler.source.ModuleSource; import org.simantics.scl.compiler.source.StringModuleSource; import org.simantics.scl.compiler.source.repository.ModuleSourceRepository; import org.simantics.scl.runtime.SCLContext; +import org.simantics.structural2.utils.StructuralUtils; +import org.simantics.scl.runtime.tuple.Tuple0; import gnu.trove.procedure.TObjectProcedure; import gnu.trove.set.hash.THashSet; @@ -92,13 +96,16 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository { public static class GraphModuleSource extends StringModuleSource { - public GraphModuleSource(String moduleName, ClassLoader classLoader, String moduleText) { + private final boolean immutable; + + public GraphModuleSource(String moduleName, ClassLoader classLoader, String moduleText, boolean immutable) { super(moduleName, classLoader, moduleText); + this.immutable = immutable; } @Override public boolean isUpdateable() { - return true; + return !immutable; } @Override @@ -125,7 +132,8 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository { if(!graph.isInstanceOf(moduleResource, L0.SCLModule)) return null; String text = graph.getRelatedValue(moduleResource, L0.SCLModule_definition); - return new GraphModuleSource(parameter, getClass().getClassLoader(), text); + boolean immutable = StructuralUtils.isImmutable(graph, moduleResource); + return new GraphModuleSource(parameter, getClass().getClassLoader(), text, immutable); } } @@ -167,6 +175,13 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository { result.add(graph.getURI(module)); } } + + Collection ontologies = Simantics.applySCL("Simantics/SharedOntologies", "getSharedOntologies", graph, Tuple0.INSTANCE); + for (Resource ontology : ontologies) { + for(Resource module : ModelingUtils.searchByType(graph, ontology, L0.SCLModule)) + result.add(graph.getURI(module)); + } + return result; } });