/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package EierUhrKomponente; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.Flow; import java.util.concurrent.Flow.Subscriber; import java.util.logging.Logger; import ohmlogger.OhmLogger; /** * * @author chris */ public class EierUhrController implements Flow.Subscriber { private EierUhrView view; private EierUhrModel model; private EierUhr eierUhr; private Flow.Subscription sub; private static Logger lg = OhmLogger.getLogger(); public EierUhrController(EierUhrView view, EierUhrModel model, EierUhr eierUhr) { this.view = view; this.model = model; this.eierUhr = eierUhr; addSubscription(); } public void setZahl(int zahl) { view.setZahl(zahl); } public int getZahl() { return view.getZahl(); } public void start(int zahl) { lg.info("Controller Start"); model.initZahl(zahl); } private void addSubscription() { model.addSubscription(this); } @Override public void onSubscribe(Flow.Subscription subscription) { this.sub = subscription; sub.request(1); } @Override public void onNext(Integer item) { int zahl = view.getZahl(); sub.request(1); view.setZahl(item); eierUhr.firePropertyChange("zahl", zahl, view.getZahl()); if(item == 0) { eierUhr.fireEierUhrEvent(new EierUhrEvent(this)); } } @Override public void onError(Throwable thrwbl) { } @Override public void onComplete() { } }