]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.document.server/src/org/simantics/document/server/request/HandleEventRequest.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.document.server / src / org / simantics / document / server / request / HandleEventRequest.java
1 package org.simantics.document.server.request;\r
2 \r
3 import org.simantics.db.ReadGraph;\r
4 import org.simantics.db.exception.DatabaseException;\r
5 import org.simantics.db.layer0.variable.Variable;\r
6 import org.simantics.db.layer0.variable.Variables;\r
7 import org.simantics.db.request.Read;\r
8 import org.simantics.document.server.handler.AbstractEventHandler;\r
9 import org.simantics.document.server.io.CommandContext;\r
10 import org.simantics.structural.stubs.StructuralResource2;\r
11 \r
12 public class HandleEventRequest implements Read<AbstractEventHandler> {\r
13 \r
14     final String id;\r
15 \r
16     public HandleEventRequest(String id) {\r
17         this.id = id;\r
18     }\r
19 \r
20     @Override\r
21     public AbstractEventHandler perform(ReadGraph graph) throws DatabaseException {\r
22 \r
23         StructuralResource2.getInstance(graph);\r
24 \r
25         Variable variable = Variables.getPossibleVariable(graph, id);\r
26         if(variable == null) return null;\r
27 \r
28 //        System.err.println("EVENT " + variable.getURI(graph));\r
29         Object handler = variable.getValue(graph);\r
30         if(handler instanceof AbstractEventHandler)\r
31             return (AbstractEventHandler) handler;\r
32         else\r
33             throw new DatabaseException("Handler for " + id + " is not instance of AbstractEventHandler (it is instance of " + (handler != null ? handler.getClass() : null) + ")");\r
34     }\r
35 \r
36 }