]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.issues.common/src/org/simantics/issues/common/StandardIssueDescription.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.issues.common / src / org / simantics / issues / common / StandardIssueDescription.java
1 package org.simantics.issues.common;\r
2 \r
3 import java.util.Collections;\r
4 import java.util.List;\r
5 \r
6 import org.simantics.db.Issue;\r
7 import org.simantics.db.ReadGraph;\r
8 import org.simantics.db.Resource;\r
9 import org.simantics.db.common.issue.AnonymousIssue;\r
10 import org.simantics.db.common.issue.StandardIssue;\r
11 import org.simantics.db.common.request.ResourceRead;\r
12 import org.simantics.db.common.utils.ListUtils;\r
13 import org.simantics.db.exception.DatabaseException;\r
14 import org.simantics.issues.ontology.IssueResource;\r
15 \r
16 public class StandardIssueDescription extends ResourceRead<Issue> {\r
17 \r
18         public StandardIssueDescription(Resource issue) {\r
19                 super(issue);\r
20         }\r
21         \r
22         @Override\r
23         public Issue perform(ReadGraph graph) throws DatabaseException {\r
24 \r
25                 IssueResource ISSUE = IssueResource.getInstance(graph);\r
26                 Resource type = graph.getPossibleType(resource, ISSUE.Issue);\r
27                 if(type == null) return null;\r
28                 Resource list = graph.getPossibleObject(resource, ISSUE.Issue_HasContexts);\r
29                 if(list == null) {\r
30                 \r
31                     if(graph.isInheritedFrom(type, ISSUE.Sources_DependencyTracker_AnonymousIssue))\r
32                         return new AnonymousIssue(type, Collections.singletonList(resource));\r
33                     else\r
34                         return new StandardIssue(type, Collections.singletonList(resource));\r
35                         \r
36                 } else {\r
37 \r
38                         List<Resource> contexts = ListUtils.toPossibleList(graph, list);\r
39                         if(contexts == null) return null;\r
40                         \r
41                         if(graph.isInheritedFrom(type, ISSUE.Sources_DependencyTracker_AnonymousIssue))\r
42                 return new AnonymousIssue(type, contexts);\r
43                         else\r
44                             return new StandardIssue(type, contexts);\r
45                         \r
46                 }\r
47                 \r
48         }\r
49         \r
50 }