rmblworx.tools.timey.persistence.service.AlarmService.java Source code

Java tutorial

Introduction

Here is the source code for rmblworx.tools.timey.persistence.service.AlarmService.java

Source

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;
    }
}