]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.db.layer0/src/org/simantics/db/layer0/request/SingleActiveModel.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.db.layer0 / src / org / simantics / db / layer0 / request / SingleActiveModel.java
1 package org.simantics.db.layer0.request;\r
2 \r
3 import java.util.Collection;\r
4 \r
5 import org.simantics.db.ReadGraph;\r
6 import org.simantics.db.Resource;\r
7 import org.simantics.db.common.request.ResourceRead;\r
8 import org.simantics.db.common.utils.NameUtils;\r
9 import org.simantics.db.exception.DatabaseException;\r
10 import org.simantics.db.exception.NoSingleResultException;\r
11 \r
12 /**\r
13  * Returns the active model or null if no single active model is available.\r
14  */\r
15 public class SingleActiveModel extends ResourceRead<Resource> {\r
16 \r
17     public SingleActiveModel(Resource project) {\r
18         super(project);\r
19     }\r
20 \r
21     @Override\r
22     public Resource perform(ReadGraph graph) throws DatabaseException {\r
23         Collection<Resource> actives = graph.syncRequest(new ActiveModels(resource));\r
24         if (actives.size() == 1)\r
25             return actives.iterator().next();\r
26 \r
27         if (actives.size() == 0) \r
28                 throw new NoSingleResultException("There are no active models."); \r
29 \r
30         throw new NoSingleResultException("There are many active models: " + NameUtils.getSafeName(graph, actives)); \r
31         \r
32     }\r
33 \r
34 }\r