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