package org.uva.sea.ql.gui.questionaire; import java.util.HashMap; import java.util.Observable; import java.util.Observer; import org.uva.sea.ql.ast.Identifier; import org.uva.sea.ql.evaluate.Value; import org.uva.sea.ql.evaluate.VariableEnvironment; public class State { private final VariableEnvironment environment; private final HashMap<Identifier, Observable> observables; public State(){ this.environment = new VariableEnvironment(); this.observables = new HashMap<Identifier,Observable>(); } public void addObserver(Identifier identifier, Observer observer){ observables.get(identifier).addObserver(observer); } public void addIdentifier(Identifier identifier, Value value){ environment.addIdentifier(identifier, value); } public void addObservable(Identifier identifier, Observable observable) { observables.put(identifier, observable); } public VariableEnvironment getEnvironment() { return environment; } public void notify(Identifier identifier) { Observable observable = observables.get(identifier); if (observable != null) { observable.notifyObservers(); } } public void addGlobalObservers(Observer observer) { for(Identifier id : observables.keySet()) { addObserver(id, observer); } } }