X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.db.common%2Fsrc%2Forg%2Fsimantics%2Fdb%2Fcommon%2Futils%2FCommonDBUtils.java;h=919f06b6847a51d876469bec47a5043ab65a6f77;hp=dcd3939a4f2e64d73ed288a1856b471c1ab8fd46;hb=HEAD;hpb=228cc786f0c4c31e81e437d7e636051d09a73d2b diff --git a/bundles/org.simantics.db.common/src/org/simantics/db/common/utils/CommonDBUtils.java b/bundles/org.simantics.db.common/src/org/simantics/db/common/utils/CommonDBUtils.java index dcd3939a4..919f06b68 100644 --- a/bundles/org.simantics.db.common/src/org/simantics/db/common/utils/CommonDBUtils.java +++ b/bundles/org.simantics.db.common/src/org/simantics/db/common/utils/CommonDBUtils.java @@ -18,7 +18,9 @@ import org.simantics.db.common.request.ObjectsWithType; import org.simantics.db.common.request.PossibleChild; import org.simantics.db.common.request.PossibleObjectWithType; import org.simantics.db.common.request.PossibleOwner; +import org.simantics.db.common.request.ResourceRead; import org.simantics.db.common.request.RuntimeEnvironmentRequest; +import org.simantics.db.exception.AdaptionException; import org.simantics.db.exception.DatabaseException; import org.simantics.db.exception.InvalidResourceReferenceException; import org.simantics.db.service.ClusterUID; @@ -318,6 +320,11 @@ public class CommonDBUtils { return xs.isClusterLoaded(clusterUID); } + public static void setImmutable(ReadGraph graph, Resource resource, boolean value) throws DatabaseException { + XSupport xs = graph.getService(XSupport.class); + xs.setImmutable(resource, value); + } + public static Type getSCLType(ReadGraph graph, RuntimeEnvironment runtimeEnvironment, String typeText) throws DatabaseException { try { return Environments.getType(runtimeEnvironment.getEnvironment(), typeText); @@ -345,5 +352,31 @@ public class CommonDBUtils { if(!graph.isInstanceOf(child, type)) return null; return child; } - + + public static String getEnumerationValueName(ReadGraph graph, Resource resource) throws DatabaseException { + Layer0 L0 = Layer0.getInstance(graph); + String label = graph.getPossibleRelatedValue(resource, L0.HasLabel, Bindings.STRING); + if(label != null) + return label; + return safeName(graph, resource); + } + + private static String safeName(ReadGraph graph, Resource value) throws DatabaseException { + return graph.syncRequest(new StringAdapterRequest(value)); + } + + public static class StringAdapterRequest extends ResourceRead { + public StringAdapterRequest(Resource resource) { + super(resource); + } + @Override + public String perform(ReadGraph graph) throws DatabaseException { + try { + return graph.adapt(resource, String.class); + } catch (AdaptionException e) { + return NameUtils.getSafeName(graph, resource); + } + } + } + }