1 package org.simantics.db.layer0.genericrelation;
\r
3 import gnu.trove.set.hash.THashSet;
\r
5 import java.util.HashMap;
\r
6 import java.util.Map;
\r
7 import java.util.Set;
\r
9 import org.simantics.db.Resource;
\r
11 class DependenciesListenerStore {
\r
13 private final Map<Resource,Set<Runnable>> listeners = new HashMap<Resource,Set<Runnable>>();
\r
15 public synchronized void addListener(Resource model, Runnable listener) {
\r
16 Set<Runnable> list = listeners.get(model);
\r
18 list = new THashSet<Runnable>();
\r
19 listeners.put(model, list);
\r
22 if (DependenciesRelation.DEBUG_LISTENERS) {
\r
23 System.out.println("DependenciesRelation.addListener(" + listener + "), " + listeners.size() + " total listeners");
\r
24 new Exception("DependenciesRelation.addListener(" + listener + ")").printStackTrace(System.out);
\r
28 public synchronized void removeListener(Resource model, Runnable listener) {
\r
29 Set<Runnable> list = listeners.get(model);
\r
30 if(list == null) return;
\r
31 list.remove(listener);
\r
32 if (DependenciesRelation.DEBUG_LISTENERS) {
\r
33 System.out.println("DependenciesRelation.removeListener(" + listener + "), " + listeners.size() + " total listeners");
\r
34 new Exception("DependenciesRelation.removeListener(" + listener + ")").printStackTrace(System.out);
\r
38 public synchronized void fireListeners(Resource model) {
\r
39 Set<Runnable> list = listeners.get(model);
\r
40 if(list == null) return;
\r
41 for (Runnable r : list) {
\r