package com.plectix.simulator.staticanalysis.observables; import com.plectix.simulator.interfaces.ObservableInterface; import com.plectix.simulator.simulator.api.steps.experiments.Pattern; public class ObservablesStatesVisitor { private final ObservablesStatesHandler statesHandler; public ObservablesStatesVisitor(ObservablesStatesHandler strategy) { this.statesHandler = strategy; } public double visit(Observables observables, Pattern<?> pattern) { ObservableInterface observable = observables.getComponentManager().findObservable(pattern); if (observable == null) { throw new RuntimeException("There is no observable like " + pattern); } for (int i = 0; i < observables.getCountTimeList().size(); i++) { statesHandler.visit(observable.getItem(i, observables)); } return statesHandler.getResult(); } public double visit(Observables observables, String observableName) { ObservableInterface observable = observables.getComponentManager().findObservable(observableName); if (observable == null) { throw new RuntimeException("There is no observable with name " + observableName); } for (int i = 0; i < observables.getCountTimeList().size(); i++) { statesHandler.visit(observable.getItem(i, observables)); } return statesHandler.getResult(); } }