package de.ivu.elect.business.system.entity;

import java.io.Serializable;
import java.util.function.Consumer;
import java.util.function.Supplier;

/**
 *  on 31.10.2016.
 */
public class BackgroundServiceStatusFactory implements Serializable {

  private static final long serialVersionUID = 1L;

  private final SystemLogQuelle systemLogQuelle;

  private final Supplier<Boolean> laeuftGeradeSupplier;

  private final Supplier<Long> runningCountSupplier;

  private final Supplier<Boolean> deaktiviertSupplier;

  private final Supplier<Long> anzahlTodoCheckSupplier;

  private final Supplier<Long> anzahlAufrufeSupplier;

  private final Supplier<Long> anzahlFehlerSupplier;

  private final Supplier<Long> zeitInMsInsgesamtSupplier;

  private final Supplier<Consumer<Boolean>> disableToggle;

  public BackgroundServiceStatusFactory(SystemLogQuelle systemLogQuelle, Supplier<Boolean> laeuftGeradeSupplier, Supplier<Long> runningCountSupplier, Supplier<Boolean> deaktiviertSupplier, Supplier<Long> anzahlTodoCheckSupplier, Supplier<Long> anzahlAufrufeSupplier, Supplier<Long> anzahlFehlerSupplier, Supplier<Long> zeitInMsInsgesamtSupplier, Supplier<Consumer<Boolean>> disableToggle) {
    this.systemLogQuelle = systemLogQuelle;
    this.laeuftGeradeSupplier = laeuftGeradeSupplier;
    this.runningCountSupplier = runningCountSupplier;
    this.deaktiviertSupplier = deaktiviertSupplier;
    this.anzahlTodoCheckSupplier = anzahlTodoCheckSupplier;
    this.anzahlAufrufeSupplier = anzahlAufrufeSupplier;
    this.anzahlFehlerSupplier = anzahlFehlerSupplier;
    this.zeitInMsInsgesamtSupplier = zeitInMsInsgesamtSupplier;
    this.disableToggle = disableToggle;
  }

  public BackgroundServiceStatus createStatus() {
    return new BackgroundServiceStatus(systemLogQuelle, laeuftGeradeSupplier.get(), runningCountSupplier.get(), deaktiviertSupplier.get(),
      anzahlTodoCheckSupplier.get(), anzahlAufrufeSupplier.get(), anzahlFehlerSupplier.get(), zeitInMsInsgesamtSupplier.get(), disableToggle.get());

  }

}
