]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.simulator.toolkit.db/src/org/simantics/simulator/toolkit/db/ExperimentStateExternalRead.java
Merge "Tried to improve the implementation of getPossibleDomainProperty"
[simantics/platform.git] / bundles / org.simantics.simulator.toolkit.db / src / org / simantics / simulator / toolkit / db / ExperimentStateExternalRead.java
1 package org.simantics.simulator.toolkit.db;
2
3 import org.simantics.db.ReadGraph;
4 import org.simantics.db.common.request.ParametrizedPrimitiveRead;
5 import org.simantics.db.exception.RuntimeDatabaseException;
6 import org.simantics.db.procedure.Listener;
7
8 /**
9  * @author Antti Villberg
10  * @since 1.34.0
11  */
12 public class ExperimentStateExternalRead extends ParametrizedPrimitiveRead<Object, Integer> {
13
14         private int value = 0;
15         private Listener<Integer> listener = null;
16
17         public ExperimentStateExternalRead(Object experiment) {
18                 super(experiment);
19         }
20
21         @Override
22         public void register(ReadGraph graph, Listener<Integer> procedure) {
23                 procedure.execute(value);
24                 if (procedure.isDisposed())
25                         return;
26                 if (listener != null)
27                         throw new RuntimeDatabaseException("Internal error");
28                 listener = procedure;
29         }
30
31         @Override
32         public void unregistered() {
33                 listener = null;
34         }
35
36         public void fire() {
37                 value++;
38                 if (listener != null)
39                         listener.execute(value);
40         }
41
42 }