package rmblworx.tools.timey;
import rmblworx.tools.timey.vo.TimeDescriptor;
/*
* Copyright 2014-2015 Christian Raue
* MIT License http://opensource.org/licenses/mit-license.php
*/
/**
* Erzeugt die konkreten Kommandoimplementierungen und setzt deren Empfängerimplementierungen.
*
* @author mmatthies
*/
class StopwatchClient {
/**
* Referenz auf die Empfängerimplementierung.
*/
private final IStopwatch fReceiver;
/**
* Erzeugt eine Instanz dieses Klients und speichert die Referenz auf die Empfängerimplementierung.
*
* @param receiver
* Referenz auf die Implementierung die dieser Client den Kommandos uebergeben soll.
*/
public StopwatchClient(final IStopwatch receiver) {
this.fReceiver = receiver;
}
/**
* @return true wenn erfolgreich sonst false
*/
public Boolean initStopwatchResetCommand() {
final StopwatchResetCommand cmd = new StopwatchResetCommand(this.fReceiver);
final Invoker<Boolean> invoker = new Invoker<>();
invoker.storeCommand(cmd);
return invoker.execute();
}
/**
* @return Zeitwertobjekt das die gemessene Zeit kapselt.
*/
public TimeDescriptor initStopwatchStartCommand() {
final StopwatchStartCommand cmd = new StopwatchStartCommand(this.fReceiver);
final Invoker<TimeDescriptor> invoker = new Invoker<>();
invoker.storeCommand(cmd);
return invoker.execute();
}
/**
* @return true wenn erfolgreich gestoppt sonst false
*/
public Boolean initStopwatchStopCommand() {
final StopwatchStopCommand cmd = new StopwatchStopCommand(this.fReceiver);
final Invoker<Boolean> invoker = new Invoker<>();
invoker.storeCommand(cmd);
return invoker.execute();
}
/**
* @return true wenn Time-Modus erfolgreich aktiviert wurde sonst false
*/
public Boolean initStopwatchToggleTimeModeCommand() {
final StopwatchToggleTimeModeCommand cmd = new StopwatchToggleTimeModeCommand(this.fReceiver);
final Invoker<Boolean> invoker = new Invoker<>();
invoker.storeCommand(cmd);
return invoker.execute();
}
}