X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.structural2%2Fsrc%2Forg%2Fsimantics%2Fstructural2%2Futils%2FStructuralUtils.java;h=aac19a7f176b663c9297e9e3b820e86e44392992;hp=584b4acf73f924f4ab57de7de12764fc39548ec3;hb=06aeb7cad707d1fed2c21c1ad9413aa97e901da7;hpb=7402926f3949dbb38e9f8f45e864ba4dd65b59b9 diff --git a/bundles/org.simantics.structural2/src/org/simantics/structural2/utils/StructuralUtils.java b/bundles/org.simantics.structural2/src/org/simantics/structural2/utils/StructuralUtils.java index 584b4acf7..aac19a7f1 100644 --- a/bundles/org.simantics.structural2/src/org/simantics/structural2/utils/StructuralUtils.java +++ b/bundles/org.simantics.structural2/src/org/simantics/structural2/utils/StructuralUtils.java @@ -308,11 +308,13 @@ public class StructuralUtils { } public static boolean isImmutable(ReadGraph graph, Resource r) throws DatabaseException { + // Marking a resource L0.readOnly also makes it immutable + if (graph.isImmutable(r) || Layer0Utils.isMarkedReadOnly(graph, r)) + return true; StructuralResource2 STR = StructuralResource2.getInstance(graph); Resource uc = graph.syncRequest(new PossibleTypedParent(r, STR.ComponentType)); - return graph.isImmutable(r) - // Anything under a published or locked user component is published as well - || (uc != null && (Layer0Utils.isPublished(graph, uc) + return // Anything under a published or locked user component is published as well + (uc != null && (Layer0Utils.isPublished(graph, uc) || graph.hasStatement(uc, STR.ComponentType_Locked))) // Anything under a published container (shared library) is published as well || Layer0Utils.isContainerPublished(graph, r) @@ -325,16 +327,22 @@ public class StructuralUtils { public static Resource structuralTypeResource(ReadGraph graph, Variable component, Resource baseType) throws DatabaseException { StructuralOverrideData od = StructuralOverrideData.compute(graph, component); - return od.type(); + if (od != null) + return od.type(); + return null; } public static Resource getComponentType(ReadGraph graph, Variable configuration, Resource component) throws DatabaseException { - Variable componentVariable = configuration.browse(graph, component); return componentVariable.getType(graph); - } + public static Resource getPossibleComponentType(ReadGraph graph, Variable configuration, Resource component) throws DatabaseException { + Variable componentVariable = configuration.browsePossible(graph, component); + if(componentVariable == null) return null; + StructuralResource2 STR = StructuralResource2.getInstance(graph); + return componentVariable.getPossibleType(graph, STR.Component); + } }