1 package org.simantics.db.layer0.genericrelation;
\r
3 import org.simantics.db.ReadGraph;
\r
4 import org.simantics.db.Resource;
\r
5 import org.simantics.db.Session;
\r
6 import org.simantics.db.common.request.ParametrizedPrimitiveRead;
\r
7 import org.simantics.db.layer0.adapter.GenericRelationIndex;
\r
8 import org.simantics.db.procedure.Listener;
\r
9 import org.simantics.utils.datastructures.Pair;
\r
11 class ExternalRequest extends ParametrizedPrimitiveRead<Pair<GenericRelationIndex,Resource>,Long> implements Runnable {
\r
13 private static long value = 0;
\r
14 private Session session;
\r
15 private Listener<Long> procedure;
\r
17 public ExternalRequest(GenericRelationIndex index, Resource model) {
\r
18 super(Pair.make(index, model));
\r
22 public void register(ReadGraph graph, Listener<Long> procedure) {
\r
23 synchronized(getClass()) {
\r
24 procedure.execute(value++);
\r
26 if(procedure.isDisposed()) return;
\r
27 assert(this.procedure == null);
\r
28 this.session = graph.getSession();
\r
29 this.procedure = procedure;
\r
30 parameter.first.addListener(graph, parameter.second, this);
\r
34 public void unregistered() {
\r
35 parameter.first.removeListener(session, parameter.second, this);
\r
40 synchronized(getClass()) {
\r
41 procedure.execute(value++);
\r