X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.issues.common%2Fsrc%2Forg%2Fsimantics%2Fissues%2Fcommon%2FAll.java;h=d39ee983745bed698ffa35c49342d3228999252b;hp=9173101eee8d77e57f218791d551ac9d2e5f6ff5;hb=a770d29c1cd08ec09aed5a988cb54c9aaf623f3f;hpb=8ec310714002ecf514ee520448bb4c7595241455 diff --git a/bundles/org.simantics.issues.common/src/org/simantics/issues/common/All.java b/bundles/org.simantics.issues.common/src/org/simantics/issues/common/All.java index 9173101ee..d39ee9837 100644 --- a/bundles/org.simantics.issues.common/src/org/simantics/issues/common/All.java +++ b/bundles/org.simantics.issues.common/src/org/simantics/issues/common/All.java @@ -1,17 +1,20 @@ package org.simantics.issues.common; +import java.util.Collections; import java.util.List; import org.simantics.databoard.Bindings; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; import org.simantics.db.common.request.PossibleIndexRoot; +import org.simantics.db.common.utils.ListUtils; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.variable.Variable; import org.simantics.db.layer0.variable.Variables; import org.simantics.issues.ontology.IssueResource; import org.simantics.layer0.Layer0; import org.simantics.scl.reflection.annotations.SCLValue; +import org.simantics.scl.runtime.function.Function1; public class All { @@ -69,6 +72,7 @@ public class All { if(issueRoot.equals(contextRoot)) { String uri = graph.getURI(parent); String contextURI = graph.getURI(contextRoot); + if (uri.equals(contextURI)) return ""; return IssueUtils.pathString(uri, contextURI.length()+1); } else { String uri = graph.getURI(parent); @@ -77,9 +81,46 @@ public class All { } } - @SCLValue(type = "ReadGraph -> Resource -> Variable -> [Resource]") - public static List standardIssueContexts(ReadGraph graph, Resource converter, Variable property) throws DatabaseException { - return IssueUtils.getContextsForProperty(graph, property); + @SCLValue(type = "ReadGraph -> Resource -> a -> [Resource]") + public static List standardIssueContexts(ReadGraph graph, Resource converter, Object property) throws DatabaseException { + if (property instanceof Variable) { + return IssueUtils.getContextsForProperty(graph, (Variable) property); + } else if (property instanceof Resource) { + Resource issue = (Resource) property; + IssueResource ISSUE = IssueResource.getInstance(graph); + Resource list = graph.getPossibleObject(issue, ISSUE.Issue_HasContexts); + if(list != null) + return ListUtils.toList(graph, list); + else + return Collections.emptyList(); + } + throw new IllegalArgumentException("Unsupported property type: " + property); + } + + @SCLValue(type = "ReadGraph -> Resource -> a -> b") + public static Function1 standardIssueHider(ReadGraph graph, Resource converter, Object property) throws DatabaseException { + if (property instanceof Variable) { + Variable hider = (Variable) property; + Variable issue = hider.getParent(graph); + Resource r = issue.getPossibleRepresents(graph); + if (r != null) + return new HideFunction(r); + } + return null; + } + + @SCLValue(type = "ReadGraph -> Resource -> a -> Boolean") + public static Boolean standardIssueHidden(ReadGraph graph, Resource converter, Object property) throws DatabaseException { + if (property instanceof Variable) { + Variable hidden = (Variable) property; + Variable issue = hidden.getParent(graph); + Resource r = issue.getPossibleRepresents(graph); + if (r != null) { + IssueResource ISSUE = IssueResource.getInstance(graph); + return graph.hasStatement(r, ISSUE.Hidden); + } + } + return false; } }