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%2Fscl%2FCompileStructuralValueRequest.java;h=ce824090dce3f686af4a37d77096218f4e9e6f8b;hp=3b54c0f62c871ceff88fa8ef5cc3ac4dbc95b955;hb=04bf1d8e31c85530bcd47d41051362533997134e;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07 diff --git a/bundles/org.simantics.structural2/src/org/simantics/structural2/scl/CompileStructuralValueRequest.java b/bundles/org.simantics.structural2/src/org/simantics/structural2/scl/CompileStructuralValueRequest.java index 3b54c0f62..ce824090d 100644 --- a/bundles/org.simantics.structural2/src/org/simantics/structural2/scl/CompileStructuralValueRequest.java +++ b/bundles/org.simantics.structural2/src/org/simantics/structural2/scl/CompileStructuralValueRequest.java @@ -5,6 +5,7 @@ import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.procedure.adapter.TransientCacheListener; import org.simantics.db.common.request.IndexRoot; +import org.simantics.db.common.utils.NameUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.variable.Variable; import org.simantics.layer0.Layer0; @@ -39,16 +40,27 @@ public class CompileStructuralValueRequest extends AbstractCompileStructuralValu Object oldGraph = sclContext.get("graph"); CompileStructuralValueRequest request = new CompileStructuralValueRequest(graph, context); try { - Function1 exp = graph.syncRequest(request, TransientCacheListener.>instance()); + Function1 exp = graph.syncRequest(request, TransientCacheListener.instance()); sclContext.put("graph", graph); return exp.apply(context); } catch (Throwable t) { - throw new DatabaseException("Compiling structural value request for component=" + request.component + ", literal=" + request.literal + " and relation " + request.relation + " failed!", t); + String componentName = NameUtils.getSafeName(graph, request.component); + String literalName = NameUtils.getSafeName(graph, request.literal); + String relationName = NameUtils.getSafeName(graph, request.relation); + StringBuilder sb = new StringBuilder("Compiling structural value request for component ") + .append(componentName).append(" ").append(request.component).append(" , literal ") + .append(literalName).append(" ").append(request.literal).append(" and relation ") + .append(relationName).append(" ").append(request.relation).append(" failed!"); + throw new DatabaseException(sb.toString(), t); } finally { sclContext.put("graph", oldGraph); } } + public static Function1 compile(ReadGraph graph, Resource s, Resource o, Resource p) throws DatabaseException { + return graph.syncRequest(new CompileStructuralValueRequest(s, o, p), TransientCacheListener.instance()); + } + @Override protected String getExpressionText(ReadGraph graph) throws DatabaseException { @@ -73,6 +85,7 @@ public class CompileStructuralValueRequest extends AbstractCompileStructuralValu public int hashCode() { final int prime = 31; int result = 1; + result = prime * result + ((relation == null) ? 0 : relation.hashCode()); result = prime * result + ((component == null) ? 0 : component.hashCode()); result = prime * result + ((literal == null) ? 0 : literal.hashCode()); return result; @@ -87,6 +100,11 @@ public class CompileStructuralValueRequest extends AbstractCompileStructuralValu if (getClass() != obj.getClass()) return false; CompileStructuralValueRequest other = (CompileStructuralValueRequest) obj; + if (relation == null) { + if (other.relation != null) + return false; + } else if (!relation.equals(other.relation)) + return false; if (component == null) { if (other.component != null) return false; @@ -100,4 +118,16 @@ public class CompileStructuralValueRequest extends AbstractCompileStructuralValu return true; } + @Override + protected String getContextDescription(ReadGraph graph) throws DatabaseException { + if(component != null) { + String uri = graph.getPossibleURI(component); + if(uri != null) { + String propertyName = NameUtils.getSafeName(graph, relation); + return uri + "#" + propertyName; + } + } + return super.getContextDescription(graph); + } + }