]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.impl/src/org/simantics/db/impl/graph/PossibleObjectProcedure.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.impl / src / org / simantics / db / impl / graph / PossibleObjectProcedure.java
1 package org.simantics.db.impl.graph;\r
2 \r
3 import org.simantics.db.Resource;\r
4 import org.simantics.db.exception.DatabaseException;\r
5 import org.simantics.db.exception.NoSingleResultException;\r
6 import org.simantics.db.impl.query.IntProcedure;\r
7 import org.simantics.db.impl.query.QueryProcessor;\r
8 \r
9 public class PossibleObjectProcedure implements IntProcedure {\r
10 \r
11         private static DatabaseException DUMMY = new DatabaseException();\r
12         \r
13         final private QueryProcessor processor;\r
14         private DatabaseException exception;\r
15         private Resource result;\r
16         \r
17         public PossibleObjectProcedure(QueryProcessor processor) {\r
18                 this.processor = processor;\r
19         }\r
20         \r
21         @Override\r
22         public void execute(ReadGraphImpl graph, int i) {\r
23                 Resource resource = processor.querySupport.getResource(i);\r
24                 if(result != null) {\r
25                         exception = DUMMY;\r
26                 } else {\r
27                         result = resource;\r
28                 }\r
29         }\r
30 \r
31         @Override\r
32         public void finished(ReadGraphImpl graph) {\r
33         }\r
34 \r
35         @Override\r
36         public void exception(ReadGraphImpl graph, Throwable throwable) {\r
37                 if(throwable instanceof DatabaseException) exception = (DatabaseException)throwable;\r
38                 else throwable = new DatabaseException(throwable);\r
39         }\r
40         \r
41         public Resource get() throws DatabaseException {\r
42                 if(exception == DUMMY) return null;\r
43                 else if(exception != null) throw exception;\r
44                 else return result;\r
45         }\r
46 \r
47 }\r