package com.plectix.simulator.staticanalysis.observables;
import com.plectix.simulator.interfaces.ObservableInterface;
import com.plectix.simulator.simulator.api.steps.experiments.Pattern;
public class ObservableComponentsManager {
private final Observables observables;
ObservableComponentsManager(Observables observables) {
this.observables = observables;
}
public final ObservableInterface findObservable(String observableName) {
for (ObservableInterface observable : observables.getComponentList()) {
if (observableName.equals(observable.getName())) {
return observable;
}
}
return null;
}
public final ObservableInterface findObservable(Pattern<?> pattern) {
for (ObservableInterface observable : observables.getComponentList()) {
if (observable.matches(pattern)) {
return observable;
}
}
return null;
}
public final double getFinalComponentState(String observableName) {
ObservableInterface observable = this.findObservable(observableName);
return (observable == null) ? -1 : observable.getLastValue();
}
public final double getFinalComponentState(Pattern<?> pattern) {
ObservableInterface observable = this.findObservable(pattern);
return (observable == null) ? -1 : observable.getLastValue();
}
public final double getMaxComponentState(String observableName) {
ObservablesStatesVisitor stateHandler = new ObservablesStatesVisitor(new MaxStateFinder());
return stateHandler.visit(observables, observableName);
}
public final double getMaxComponentState(Pattern<?> pattern) {
ObservablesStatesVisitor stateHandler = new ObservablesStatesVisitor(new MaxStateFinder());
return stateHandler.visit(observables, pattern);
}
}