package fr.jcgay.notification;
import com.google.auto.value.AutoValue;
import javax.annotation.Nullable;
import static fr.jcgay.notification.Notification.Level.INFO;
/**
* A notification to send.
*/
@AutoValue
public abstract class Notification {
/**
* Indicate notification priority.
*/
public enum Level {INFO, WARNING, ERROR}
/**
* Notification message.
*
* @return message.
*/
public abstract String message();
/**
* Notification title.
*
* @return title.
*/
public abstract String title();
/**
* Notification subtitle. <br />
* Not available for all notifier implementation.
*
* @return subtitle.
*/
@Nullable
public abstract String subtitle();
/**
* Notification icon.
*
* @return icon.
*/
public abstract Icon icon();
/**
* Indicate the notification priority type.
*
* @return type
*/
public abstract Level level();
Notification() {
// prevent external subclasses
}
public static Builder builder(String title, String message, Icon icon) {
return builder()
.title(title)
.message(message)
.icon(icon);
}
public static Builder builder() {
return new AutoValue_Notification.Builder().level(INFO);
}
@AutoValue.Builder
public interface Builder {
Builder title(String title);
Builder message(String message);
Builder icon(Icon icon);
Builder subtitle(String subtitle);
Builder level(Level level);
Notification build();
}
}