]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.issues.common/src/org/simantics/issues/common/StandardIssueDescription.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.issues.common / src / org / simantics / issues / common / StandardIssueDescription.java
1 package org.simantics.issues.common;
2
3 import java.util.Collections;
4 import java.util.List;
5
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;
15
16 public class StandardIssueDescription extends ResourceRead<Issue> {
17
18         public StandardIssueDescription(Resource issue) {
19                 super(issue);
20         }
21         
22         @Override
23         public Issue perform(ReadGraph graph) throws DatabaseException {
24
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);
29                 if(list == null) {
30                 
31                     if(graph.isInheritedFrom(type, ISSUE.Sources_DependencyTracker_AnonymousIssue))
32                         return new AnonymousIssue(type, Collections.singletonList(resource));
33                     else
34                         return new StandardIssue(type, Collections.singletonList(resource));
35                         
36                 } else {
37
38                         List<Resource> contexts = ListUtils.toPossibleList(graph, list);
39                         if(contexts == null) return null;
40                         
41                         if(graph.isInheritedFrom(type, ISSUE.Sources_DependencyTracker_AnonymousIssue))
42                 return new AnonymousIssue(type, contexts);
43                         else
44                             return new StandardIssue(type, contexts);
45                         
46                 }
47                 
48         }
49         
50 }