package rmblworx.tools.timey;
import java.util.List;
import rmblworx.tools.timey.vo.AlarmDescriptor;
/*
* Copyright 2014-2015 Christian Raue
* MIT License http://opensource.org/licenses/mit-license.php
*/
/**
* Schnittstellenbeschreibung des Alarmsystems.
*
* @author mmatthies
*/
interface IAlarm {
/**
* Liefert alle Alarmzeitpunkte.
*
* @return unveränderliche Liste mit den bekannten Alarmzeitpunkten oder leere Liste
*/
List<AlarmDescriptor> getAllAlarms();
/**
* Liefert die Aussage, ob die Alarmzeit scharf oder unscharf geschalten ist.
*
* @param descriptor
* Beschreibung des Alarmzeitpunktes.
* @return true oder false oder {@code null} wenn Alarmzeitpunkt nicht vorhanden.
*/
Boolean isAlarmActivated(AlarmDescriptor descriptor);
/**
* Löscht den Alarmzeitpunkt.
*
* @param descriptor
* Beschreibung des Alarmzeitpunktes.
* @return true wenn erfolgreich sonst false oder {@code null} wenn Alarmzeitpunkt nicht vorhanden
*/
Boolean removeAlarm(AlarmDescriptor descriptor);
/**
* Setzt die Alarmzeit wobei jede nur einmalig vorkommen kann.
*
* @param descriptor
* Beschreibung des Alarmzeitpunktes.
* @return true wenn erfolgreich sonst false oder {@code null} wenn Alarmzeitpunkt bereits vorhanden
*/
Boolean setAlarm(AlarmDescriptor descriptor);
/**
* Stellt die Alarmzeit unscharf bzw. scharf.
*
* @param descriptor
* Beschreibung des Alarmzeitpunktes.
* @param isActivated
* Booleanscher Wert ob der Alarmzeitpunkt aktiviert werden soll
* @return true wenn erfolgreich sonst false oder {@code null} wenn Alarmzeitpunkt nicht vorhanden
*/
Boolean setStateOfAlarm(AlarmDescriptor descriptor, Boolean isActivated);
}