]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.issues.common/src/org/simantics/issues/common/All.java
Allow overriding issue hidden-ness/hiding logic in inheriting ontologies
[simantics/platform.git] / bundles / org.simantics.issues.common / src / org / simantics / issues / common / All.java
index 6ff625c0bb4ffc9f9535340da6f640181f5af8b4..d39ee983745bed698ffa35c49342d3228999252b 100644 (file)
@@ -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);
@@ -76,5 +80,47 @@ public class All {
                return IssueUtils.pathString(uri, modelURI.length()+1);
        }
     }
-     
+
+    @SCLValue(type = "ReadGraph -> Resource -> a -> [Resource]")
+    public static List<Resource> 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<Boolean, Boolean> 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;
+    }
+
 }