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 CountdownClient {
/** Speichert die Empfänger Instanz des Klient. */
private final ICountdown fReceiver;
/**
* Erzeugt eine Klient-Instanz und speichert die uebergebene Empfängerimplementierung.
*
* @param receiver
* Empfänger-Referenz.
*/
public CountdownClient(final ICountdown receiver) {
this.fReceiver = receiver;
}
/**
* @return Werteobjekt das die Countdownzeit kapselt.
*/
public TimeDescriptor initCountdownStartCommand() {
final CountdownStartCommand cmd = new CountdownStartCommand(this.fReceiver);
final Invoker<TimeDescriptor> invoker = new Invoker<>();
invoker.storeCommand(cmd);
return invoker.execute();
}
/**
* @return true wenn erfolgreich sonst false.
*/
public Boolean initCountdownStopCommand() {
final CountdownStopCommand cmd = new CountdownStopCommand(this.fReceiver);
final Invoker<Boolean> invoker = new Invoker<>();
invoker.storeCommand(cmd);
return invoker.execute();
}
/**
* @param descriptor
* Werteobjekt das die Countdownzeit kapselt.
* @return true wenn erfolgreich sonst false.
*/
public Boolean initSetCountdownTimeCommand(final TimeDescriptor descriptor) {
final CountdownSetTimeCommand cmd = new CountdownSetTimeCommand(this.fReceiver, descriptor);
final Invoker<Boolean> invoker = new Invoker<>();
invoker.storeCommand(cmd);
return invoker.execute();
}
}