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

import java.util.List;
import java.util.function.Supplier;

import de.ivu.elect.business.gebietsbaum.entity.Gebiet;
import de.ivu.elect.business.gebietsbaum.entity.Gebietsart;
import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.business.wahl.entity.Wahl;
import de.ivu.elect.business.wahl.entity.Wahlart;
import de.ivu.elect.jee.faces.Messages;
import de.ivu.elect.presentation.gebietsbaum.GebietNummerFormatter;

public class InternetWidgetPropertyContext {

  private final Messages messages;

  private final Wahl wahl;

  private final InternetSeiteTyp internetSeiteTyp;

  private final Supplier<List<Gruppe>> gruppen;

  private final Supplier<List<Gebiet>> gebiete;

  private final GebietNummerFormatter gebietNummerFormatter;

  private final Supplier<List<Wahlart>> alleWahlarten;

  private final Supplier<List<Gebietsart>> alleGebietsarten;

  public InternetWidgetPropertyContext(Messages messages, Wahl wahl, InternetSeiteTyp internetSeiteTyp, Supplier<List<Gruppe>> gruppen, Supplier<List<Gebiet>> gebiete, GebietNummerFormatter gebietNummerFormatter, Supplier<List<Wahlart>> alleWahlarten, Supplier<List<Gebietsart>> alleGebietsarten) {
    this.messages = messages;
    this.wahl = wahl;
    this.internetSeiteTyp = internetSeiteTyp;
    this.gruppen = gruppen;
    this.gebiete = gebiete;
    this.gebietNummerFormatter = gebietNummerFormatter;
    this.alleWahlarten = alleWahlarten;
    this.alleGebietsarten = alleGebietsarten;
  }

  public Messages getMessages() {
    return messages;
  }

  public Supplier<List<Gruppe>> getGruppen() {
    return gruppen;
  }

  public Supplier<List<Gebiet>> getGebiete() {
    return gebiete;
  }

  public GebietNummerFormatter getGebietNummerFormatter() {
    return gebietNummerFormatter;
  }

  public InternetSeiteTyp getInternetSeiteTyp() {
    return internetSeiteTyp;
  }

  public Wahl getWahl() {
    return wahl;
  }

  public Supplier<List<Wahlart>> getAlleWahlarten() {
    return alleWahlarten;
  }

  public Supplier<List<Gebietsart>> getAlleGebietsarten() {
    return alleGebietsarten;
  }
}
