
package de.ivu.elect.business.internet.control;

import de.ivu.elect.business.stimmeingabe.control.sequenznummer.ErgebnissequenznummerSetzen;
import de.ivu.elect.business.system.control.AbstractElectBackgroundService;
import de.ivu.elect.business.system.entity.SystemLogQuelle;

import javax.ejb.DependsOn;
import javax.ejb.Singleton;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.inject.Inject;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong;

import static de.ivu.elect.business.system.entity.SystemLogQuelle.ERGEBNISSEQUENZNUMMER_SETZEN;
import static de.ivu.elect.business.system.entity.SystemLogQuelle.PRAESENTATION_BEREITSTELLEN;

@Singleton
@DependsOn("DbInit")
//https://issues.jboss.org/browse/EJBTHREE-2070 (keine Transaktion)
@TransactionManagement(TransactionManagementType.BEAN)
public class PraesentationAsynchronBereitstellenBackgroundService extends AbstractElectBackgroundService {

  public static final AtomicLong RUNNING = createRunning();

  public static final AtomicBoolean DISABLED = createDisabled();

  @Inject
  private PraesentationAsynchronBereitstellen praesentationAsynchronBereitstellen;

  @Override
  protected AtomicBoolean getDisabledInternal() {
    return DISABLED;
  }

  @Override
  protected boolean isSomethingToDoInternal() {
    return praesentationAsynchronBereitstellen.isPraesentationAsynchronBereitZuStellen();
  }

  @Override
  protected void doSomethingInternal() {
    praesentationAsynchronBereitstellen.praesentationAsynchronBereitstellen();
  }

  @Override
  public SystemLogQuelle getSystemLogQuelle() {
    return PRAESENTATION_BEREITSTELLEN;
  }

  @Override
  public AtomicLong getRunning() {
    return RUNNING;
  }
}
