package rmblworx.tools.timey; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import rmblworx.tools.timey.exception.NullArgumentException; import rmblworx.tools.timey.exception.ValueMinimumArgumentException; /* * Copyright 2014-2015 Christian Raue * MIT License http://opensource.org/licenses/mit-license.php */ /** * @author mmatthies */ class SimpleAlarm implements ApplicationContextAware { /** * Größe des Thread-Pools. */ private static final int THREAD_POOL_SIZE = 1; /** * Spring-Anwendungskontext. */ private ApplicationContext springContext; @Override public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException { this.springContext = applicationContext; } /** * Startet die Alarmerkennung. * * @param delayPerThread * Maßzahl für den Ausfuehrungsintervall * @param timeUnit * Einheit für den Ausfuehrungsintervall */ public void startAlarmdetection(final int delayPerThread, final TimeUnit timeUnit) { if (delayPerThread < 1) { throw new ValueMinimumArgumentException(); } else if (timeUnit == null) { throw new NullArgumentException(); } final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(THREAD_POOL_SIZE); final AlarmRunnable alarmDetection = (AlarmRunnable) this.springContext.getBean("alarmRunnable"); scheduler.scheduleAtFixedRate(alarmDetection, 0, delayPerThread, timeUnit); } }