1 package org.simantics.issues.common;
3 import java.util.Collections;
6 import org.simantics.db.Issue;
7 import org.simantics.db.ReadGraph;
8 import org.simantics.db.Resource;
9 import org.simantics.db.common.issue.AnonymousIssue;
10 import org.simantics.db.common.issue.StandardIssue;
11 import org.simantics.db.common.request.ResourceRead;
12 import org.simantics.db.common.utils.ListUtils;
13 import org.simantics.db.exception.DatabaseException;
14 import org.simantics.issues.ontology.IssueResource;
16 public class StandardIssueDescription extends ResourceRead<Issue> {
18 public StandardIssueDescription(Resource issue) {
23 public Issue perform(ReadGraph graph) throws DatabaseException {
25 IssueResource ISSUE = IssueResource.getInstance(graph);
26 Resource type = graph.getPossibleType(resource, ISSUE.Issue);
27 if(type == null) return null;
28 Resource list = graph.getPossibleObject(resource, ISSUE.Issue_HasContexts);
31 if(graph.isInheritedFrom(type, ISSUE.Sources_DependencyTracker_AnonymousIssue))
32 return new AnonymousIssue(type, Collections.singletonList(resource));
34 return new StandardIssue(type, Collections.singletonList(resource));
38 List<Resource> contexts = ListUtils.toPossibleList(graph, list);
39 if(contexts == null) return null;
41 if(graph.isInheritedFrom(type, ISSUE.Sources_DependencyTracker_AnonymousIssue))
42 return new AnonymousIssue(type, contexts);
44 return new StandardIssue(type, contexts);