]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling/src/org/simantics/modeling/scl/GraphModuleSourceRepository.java
Sync git svn branch with SVN repository r33153.
[simantics/platform.git] / bundles / org.simantics.modeling / src / org / simantics / modeling / scl / GraphModuleSourceRepository.java
index cfc3f4f1579c5f232c6f6746d4af913d7f1b9d1d..3edc7bfeae28dd2a696dc9c3bd1d9d984c00de5d 100644 (file)
@@ -1,5 +1,7 @@
 package org.simantics.modeling.scl;\r
 \r
+import java.util.Collection;\r
+\r
 import org.simantics.Simantics;\r
 import org.simantics.db.ReadGraph;\r
 import org.simantics.db.RequestProcessorSpecific;\r
@@ -17,6 +19,8 @@ import org.simantics.scl.compiler.source.ModuleSource;
 import org.simantics.scl.compiler.source.StringModuleSource;\r
 import org.simantics.scl.compiler.source.repository.ModuleSourceRepository;\r
 import org.simantics.scl.runtime.SCLContext;\r
+import org.simantics.structural2.utils.StructuralUtils;\r
+import org.simantics.scl.runtime.tuple.Tuple0;\r
 \r
 import gnu.trove.procedure.TObjectProcedure;\r
 import gnu.trove.set.hash.THashSet;\r
@@ -92,13 +96,16 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository {
     \r
     public static class GraphModuleSource extends StringModuleSource {\r
 \r
-        public GraphModuleSource(String moduleName, ClassLoader classLoader, String moduleText) {\r
+        private final boolean immutable;\r
+\r
+        public GraphModuleSource(String moduleName, ClassLoader classLoader, String moduleText, boolean immutable) {\r
             super(moduleName, classLoader, moduleText);\r
+            this.immutable = immutable;\r
         }\r
         \r
         @Override\r
         public boolean isUpdateable() {\r
-            return true;\r
+            return !immutable;\r
         }\r
         \r
         @Override\r
@@ -125,7 +132,8 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository {
             if(!graph.isInstanceOf(moduleResource, L0.SCLModule))\r
                 return null;\r
             String text = graph.getRelatedValue(moduleResource, L0.SCLModule_definition);\r
-            return new GraphModuleSource(parameter, getClass().getClassLoader(), text);\r
+            boolean immutable = StructuralUtils.isImmutable(graph, moduleResource);\r
+            return new GraphModuleSource(parameter, getClass().getClassLoader(), text, immutable);\r
         }\r
     }\r
     \r
@@ -167,6 +175,13 @@ public enum GraphModuleSourceRepository implements ModuleSourceRepository {
                                 result.add(graph.getURI(module));\r
                         }\r
                     }\r
+                    \r
+                    Collection<Resource> ontologies = Simantics.applySCL("Simantics/SharedOntologies", "getSharedOntologies", graph, Tuple0.INSTANCE);\r
+                    for (Resource ontology : ontologies) {\r
+                        for(Resource module : ModelingUtils.searchByType(graph, ontology, L0.SCLModule))\r
+                            result.add(graph.getURI(module));\r
+                    }\r
+                    \r
                     return result;\r
                 }\r
             });\r