--- /dev/null
+package org.simantics.issues.common;\r
+\r
+import java.util.Collections;\r
+import java.util.List;\r
+\r
+import org.simantics.db.Issue;\r
+import org.simantics.db.ReadGraph;\r
+import org.simantics.db.Resource;\r
+import org.simantics.db.common.issue.AnonymousIssue;\r
+import org.simantics.db.common.issue.StandardIssue;\r
+import org.simantics.db.common.request.ResourceRead;\r
+import org.simantics.db.common.utils.ListUtils;\r
+import org.simantics.db.exception.DatabaseException;\r
+import org.simantics.issues.ontology.IssueResource;\r
+\r
+public class StandardIssueDescription extends ResourceRead<Issue> {\r
+\r
+ public StandardIssueDescription(Resource issue) {\r
+ super(issue);\r
+ }\r
+ \r
+ @Override\r
+ public Issue perform(ReadGraph graph) throws DatabaseException {\r
+\r
+ IssueResource ISSUE = IssueResource.getInstance(graph);\r
+ Resource type = graph.getPossibleType(resource, ISSUE.Issue);\r
+ if(type == null) return null;\r
+ Resource list = graph.getPossibleObject(resource, ISSUE.Issue_HasContexts);\r
+ if(list == null) {\r
+ \r
+ if(graph.isInheritedFrom(type, ISSUE.Sources_DependencyTracker_AnonymousIssue))\r
+ return new AnonymousIssue(type, Collections.singletonList(resource));\r
+ else\r
+ return new StandardIssue(type, Collections.singletonList(resource));\r
+ \r
+ } else {\r
+\r
+ List<Resource> contexts = ListUtils.toPossibleList(graph, list);\r
+ if(contexts == null) return null;\r
+ \r
+ if(graph.isInheritedFrom(type, ISSUE.Sources_DependencyTracker_AnonymousIssue))\r
+ return new AnonymousIssue(type, contexts);\r
+ else\r
+ return new StandardIssue(type, contexts);\r
+ \r
+ }\r
+ \r
+ }\r
+ \r
+}
\ No newline at end of file