package rmblworx.tools.timey.persistence.service; import java.util.List; import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import rmblworx.tools.timey.event.AlarmsModifiedEvent; import rmblworx.tools.timey.event.TimeyEventDispatcher; import rmblworx.tools.timey.persistence.dao.IAlarmDao; import rmblworx.tools.timey.vo.AlarmDescriptor; /* * Copyright 2014-2015 Christian Raue * MIT License http://opensource.org/licenses/mit-license.php */ /** * Serviceimplementierung zur Persistierung von {@link rmblworx.tools.timey.persistence.model.AlarmEntity * Alarmzeitpunkt}en. * * @author mmatthies */ @Service @Transactional class AlarmService implements IAlarmService, ApplicationContextAware { /** * Referenz auf das Datenzugriffsobjekt. */ @Qualifier("alarmDao") @Autowired private IAlarmDao dao; private TimeyEventDispatcher eventDispatcher; private ApplicationContext springContext; @Override public Boolean create(final AlarmDescriptor descriptor) { Boolean result; result = this.getDao().createAlarm(descriptor); this.fireAlarmModifiedEvent(); return result; } @Override public Boolean delete(final AlarmDescriptor descriptor) { Boolean result; result = this.getDao().deleteAlarm(descriptor); this.fireAlarmModifiedEvent(); return result; } private void fireAlarmModifiedEvent() { final AlarmsModifiedEvent alarmsModifiedEvent = (AlarmsModifiedEvent) this.springContext .getBean("alarmsModifiedEvent"); this.eventDispatcher.dispatchEvent(alarmsModifiedEvent); } @Override public List<AlarmDescriptor> getAll() { return this.getDao().findAll(); } /** * @return Referenz auf das Datenzugriffsobjekt. */ private IAlarmDao getDao() { return this.dao; } @Override public Boolean isActivated(final AlarmDescriptor descriptor) { Boolean result; result = this.dao.isActivated(descriptor); this.fireAlarmModifiedEvent(); return result; } @Override public void setApplicationContext(final ApplicationContext applicationContext) throws BeansException { this.springContext = applicationContext; this.eventDispatcher = (TimeyEventDispatcher) this.springContext.getBean("timeyEventDispatcher"); } @Override public Boolean setState(final AlarmDescriptor descriptor, final Boolean isActivated) { Boolean result; result = this.dao.setIsActivated(descriptor, isActivated); this.fireAlarmModifiedEvent(); return result; } }