package rmblworx.tools.timey.vo;
/*
* Copyright 2014-2015 Christian Raue
* MIT License http://opensource.org/licenses/mit-license.php
*/
/**
* Werteobjekt zur Beschreibung eines Alarms.
*
* @author mmatthies
*/
public class AlarmDescriptor {
/**
* Definiert die Größe bei Initialisierung des StringBuilder-Objekts.
*/
private static final int SIZE = 1024;
/**
* Beschreibung des eigentlichen Alarmzeitpunktes.
*/
private TimeDescriptor alarmtime;
/**
* Beschreibung zum Alarmzeitpunkt.
*/
private String description;
/**
* Beschreibt ob der Alarm aktiv/ inaktiv ist.
*/
private Boolean isActive;
/**
* Beschreibung des Zeitpunktes an dem der Alarm wiederholt werden soll.
*/
private TimeDescriptor snooze;
/**
* Abzuspielender Sound beim Eintreten des Alarms.
*/
private String sound;
/**
* Erweiterter Konstruktor.
*
* @param timeDescriptor
* Beschreibung des Alarmzeitpunktes
* @param isActive
* Gibt an ob der Alarm aktiviert ist
* @param description
* Beschreibungstext zum Alarmzeitpunkt
* @param soundToPlay
* Pfad zum abzuspielenden Sound wenn der Alarmzeitpunkt eintritt
* @param snooze
* Beschreibung des Zeitpunktes, an welchem der Alarm erneut ausgefuehrt werden soll
*/
public AlarmDescriptor(final TimeDescriptor timeDescriptor, final Boolean isActive, final String description,
final String soundToPlay, final TimeDescriptor snooze) {
this.alarmtime = timeDescriptor;
this.isActive = isActive;
this.description = description;
this.sound = soundToPlay;
this.snooze = snooze;
}
/**
* Liefert die Alarmzeit.
*
* @return Wert >= 0
*/
public TimeDescriptor getAlarmtime() {
return this.alarmtime;
}
/**
* Liefert den nutzerdefinierten Beschreibungstext zum Alarm.
*
* @return Beschreibungstext oder <code>null</code>
*/
public String getDescription() {
return this.description;
}
/**
* Liefert den Status des Alarms.
*
* @return true wenn aktiviert, sonst false oder <code>null</code>
*/
public Boolean getIsActive() {
return this.isActive;
}
/**
* Liefert den Zeitpunkt an dem der Alarm erneut ausgelöst werden soll.
*
* @return Werteobjekt zur Kapselung des Zeitpunktes oder <code>null</code>.
*/
public TimeDescriptor getSnooze() {
return this.snooze;
}
/**
* Liefert den optional, definierbaren Klang der im Falle des Alarmzeitpunktes abgespielt werden soll.
*
* @return Pfad zur Klangdatei oder <code>null</code>
*/
public String getSound() {
return this.sound;
}
/**
* Setzt die Alarmzeit.
*
* @param timeDescriptor
* Werteobjekt zum Beschreiben des Alarmzeitpunktes. Es wird nicht auf die Referenzierung von
* <code>null</code> geprueft!
*/
public void setAlarmtime(final TimeDescriptor timeDescriptor) {
this.alarmtime = timeDescriptor;
}
/**
* Setzt den optionalen Beschreibungstext zum Alarm.
*
* @param description
* zu verwendender Beschreibungstext. Es wird nicht auf die Referenzierung von <code>null</code>
* geprueft!
*/
public void setDescription(final String description) {
this.description = description;
}
/**
* Setzt den Zustand des Alarms.
*
* @param isActive
* true wenn aktiviert sonst false. Es wird nicht auf die Referenzierung von <code>null</code> geprueft!
*/
public void setIsActive(final Boolean isActive) {
this.isActive = isActive;
}
/**
* Setzt den Zeitpunkt an welchem der bereits mindestens einmal ausgelöste Alarm wieder erneut ausgelöst werden
* soll.
*
* @param snooze
* Werteobjekt zur Beschreibung des Zeitpunkts. Es wird nicht auf die Referenzierung von
* <code>null</code> geprueft!
*/
public void setSnooze(final TimeDescriptor snooze) {
this.snooze = snooze;
}
/**
* Setzt den Klang der beim Eintreten des Alarmzeitpunktes abgespielt werden soll.
*
* @param sound
* Pfad zur Klanngdatei. Es wird nicht auf die Referenzierung von <code>null</code> geprueft!
*/
public final void setSound(final String sound) {
this.sound = sound;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder(SIZE);
String result;
sb.append("AlarmDescriptor-State:");
sb.append("Description:");
sb.append(this.description);
sb.append(",");
sb.append("isActive:");
sb.append(this.isActive);
sb.append(",");
sb.append("Snooze:");
sb.append(this.snooze);
sb.append(",");
sb.append("Sound:");
sb.append(this.sound);
sb.append(",");
sb.append("Alarmtime:");
sb.append(this.alarmtime);
result = sb.toString();
sb = null;
return result;
}
}