package fr.jcgay.notification.notifier.notificationcenter; import com.google.auto.value.AutoValue; import javax.annotation.Nullable; import java.util.Properties; @AutoValue public abstract class TerminalNotifierConfiguration { private static final TerminalNotifierConfiguration DEFAULT = new AutoValue_TerminalNotifierConfiguration( "terminal-notifier", "com.apple.Terminal", null ); public abstract String bin(); public abstract String activateApplication(); @Nullable public abstract String sound(); TerminalNotifierConfiguration() { // prevent external subclasses } public static TerminalNotifierConfiguration byDefault() { return DEFAULT; } public static TerminalNotifierConfiguration create(Properties properties) { if (properties == null) { return byDefault(); } return new AutoValue_TerminalNotifierConfiguration( properties.getProperty("notifier.notification-center.path", DEFAULT.bin()), properties.getProperty("notifier.notification-center.activate", DEFAULT.activateApplication()), properties.getProperty("notifier.notification-center.sound", DEFAULT.sound()) ); } }