/** * Copyright (c) 2014-2017 by the respective copyright holders. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html */ package org.eclipse.smarthome.binding.digitalstrom.internal.lib.sensorJobExecutor; import org.eclipse.smarthome.binding.digitalstrom.internal.lib.manager.ConnectionManager; import org.eclipse.smarthome.binding.digitalstrom.internal.lib.sensorJobExecutor.sensorJob.SensorJob; import org.eclipse.smarthome.binding.digitalstrom.internal.lib.sensorJobExecutor.sensorJob.impl.SceneConfigReadingJob; import org.eclipse.smarthome.binding.digitalstrom.internal.lib.sensorJobExecutor.sensorJob.impl.SceneOutputValueReadingJob; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * The {@link SceneReadingJobExecutor} is the implementation of the {@link AbstractSensorJobExecutor} to execute * digitalSTROM-Device scene configuration {@link SensorJob}'s e.g. {@link SceneConfigReadingJob} and * {@link SceneOutputValueReadingJob}. * <p> * In addition priorities can be assigned to jobs therefore the {@link SceneReadingJobExecutor} offers the methods * {@link #addHighPriorityJob()}, {@link #addLowPriorityJob()} and {@link #addLowPriorityJob()}. * </p> * <p> * <b>NOTE:</b><br> * In contrast to the {@link SensorJobExecutor} the {@link SceneReadingJobExecutor} will execute {@link SensorJob}'s * with high priority always before medium priority {@link SensorJob}s and so on. * </p> * * @author Michael Ochel - Initial contribution * @author Matthias Siegele - Initial contribution * */ public class SceneReadingJobExecutor extends AbstractSensorJobExecutor { private Logger logger = LoggerFactory.getLogger(SceneReadingJobExecutor.class); public SceneReadingJobExecutor(ConnectionManager connectionManager) { super(connectionManager); } @Override public void addHighPriorityJob(SensorJob sensorJob) { if (sensorJob == null) { return; } sensorJob.setInitalisationTime(0); addSensorJobToCircuitScheduler(sensorJob); logger.debug("Add SceneReadingJob from device with dSID {} and high-priority to SceneReadingSobExecutor", sensorJob.getDSID()); } @Override public void addMediumPriorityJob(SensorJob sensorJob) { if (sensorJob == null) { return; } sensorJob.setInitalisationTime(1); addSensorJobToCircuitScheduler(sensorJob); logger.debug("Add SceneReadingJob from device with dSID {} and medium-priority to SceneReadingJobExecutor", sensorJob.getDSID()); } @Override public void addLowPriorityJob(SensorJob sensorJob) { if (sensorJob == null) { return; } sensorJob.setInitalisationTime(2); addSensorJobToCircuitScheduler(sensorJob); logger.debug("Add SceneReadingJob from device with dSID {} and low-priority to SceneReadingJobExecutor", sensorJob.getDSID()); } }