
package de.ivu.elect.business.stimmeingabe.control.plausi;

public enum StimmeingabeAnzahlReference {

  /**
   * Stimmen (bspw. Direkt- oder Listenstimmen) für eine SystemGruppe.
   */
  SYSTEM_GRUPPE_STIMMEN,

  SYSTEM_GRUPPE_WAHLBERECHTIGTE_OHNE_WAHLSCHEIN,
  SYSTEM_GRUPPE_WAHLBERECHTIGTE_MIT_WAHLSCHEIN,
  SYSTEM_GRUPPE_WAHLBERECHTIGTE_NICHT_IM_WAEHLERVERZEICHNIS,
  SYSTEM_GRUPPE_WAHLBERECHTIGTE_GESAMT,

  SYSTEM_GRUPPE_WAEHLER_OHNE_WAHLSCHEIN,
  /**
   * A.k.a. "Wähler ohne Wahlschein berechnet" oder "Wähler am Ort", keine tatsächliche Stimm- oder Zwischensummeneingabe, sondern ein berechneter Wert, der plausibilisiert wird und dessen Plausi an
   * einer Stimm- oder Zwischensummeneingabe, bspw. StimmeingabeAnzahlReference#SYSTEM_GRUPPE_WAEHLER_GESAMT, hängt.
   */
  SYSTEM_GRUPPE_WAEHLER_OHNE_WAHLSCHEIN_BERECHNET,
  SYSTEM_GRUPPE_WAEHLER_MIT_WAHLSCHEIN,
  SYSTEM_GRUPPE_WAEHLER_MIT_WAHLSCHEIN_ANTEIL_AUS_URNENWAHL,
  SYSTEM_GRUPPE_WAEHLER_MIT_WAHLSCHEIN_ANTEIL_AUS_BRIEFWAHL,
  SYSTEM_GRUPPE_WAEHLER_MIT_VOLLMACHT,
  SYSTEM_GRUPPE_WAEHLER_GESAMT,

  SYSTEM_GRUPPE_STIMMZETTEL_GESAMT,
  SYSTEM_GRUPPE_STIMMZETTEL_ZUWENIG,
  SYSTEM_GRUPPE_STIMMZETTEL_ZUVIEL,

  /**
   * Stimmen (bspw. Direkt- oder Listenstimmen) für die SystemGruppe#GUELTIGE.
   *
   * @deprecated
   * @see StimmeingabeAnzahlReference#SYSTEM_GRUPPE_GUELTIGE_*
   */
  SYSTEM_GRUPPE_GUELTIGE_STIMMEN,
  SYSTEM_GRUPPE_GUELTIGE_DIREKTSTIMMEN,
  SYSTEM_GRUPPE_GUELTIGE_LISTENSTIMMEN,
  /**
   * A.k.a. "Gültige Stimmzettel", Zwischensummeneingabe aus der SystemGruppe#GUELTIGE und der Stimmenart#LISTENSTIMME, angezeigt auf der Erfassungsmaske für Wahlvorschläge.
   */
  SYSTEM_GRUPPE_GUELTIGE_LISTENSTIMMEN_ZWISCHENSUMME,
  SYSTEM_GRUPPE_GUELTIGE_LISTENSTIMMEN_ABZUZIEHEN,

  /**
   * Stimmen (bspw. Direkt- oder Listenstimmen) für die SystemGruppe#UNGUELTIGE.
   *
   * @deprecated
   * @see StimmeingabeAnzahlReference#SYSTEM_GRUPPE_UNGUELTIGE_*
   */
  SYSTEM_GRUPPE_UNGUELTIGE_STIMMEN,
  SYSTEM_GRUPPE_UNGUELTIGE_DIREKTSTIMMEN,
  SYSTEM_GRUPPE_UNGUELTIGE_LISTENSTIMMEN,
  SYSTEM_GRUPPE_UNGUELTIGE_LISTENSTIMMEN_ABZUZIEHEN,

  SYSTEM_GRUPPE_BLANKO_DIREKTSTIMMEN,
  SYSTEM_GRUPPE_BLANKO_LISTENSTIMMEN,

  /**
   * Stimmen (bspw. Direkt- oder Listenstimmen) für eine Gruppe.
   */
  GRUPPE_STIMMEN,
  GRUPPE_DIREKTSTIMMEN,
  GRUPPE_LISTENSTIMMEN,
  GRUPPE_LISTENSTIMMEN_ABZUZIEHEN,
  GRUPPE_REFERENDUM_STIMMEN,

  /**
   * Listenstimmen für eine Listenkandidatur einer politischen Gruppe.
   */
  LISTENKANDIDATUR_LISTENSTIMMEN,
  /**
   * A.k.a. "zus.", Zwischensummeneingabe aus einer politischen Gruppe und der Stimmenart#LISTENSTIMME, angezeigt pro Spalte auf der Erfassungsmaske für Listenkandidaturen eines Wahlvorschlages.
   *
   * @see AbstractStimmeingabeListenkandidaturStimmenModelBuilder#createStimmeingabenListenkandidaturStimmenListenkandidaturZwischensummen
   */
  LISTENKANDIDATUR_LISTENSTIMMEN_ZWISCHENSUMME_SPALTE,
  /**
   * A.k.a. "Gesamtstimmenzahl", "Zweitstimmen insgesamt", Zwischensummeneingabe aus einer politischen Gruppe und der Stimmenart#LISTENSTIMME, angezeigt auf der endgültigen Erfassungsmaske für
   * Listenkandidaturen eines Wahlvorschlages.
   *
   * @see ByLtwStimmeingabeListenkandidaturStimmenModelBuilder#LISTENKANDIDATUR_STIMMEN_GESAMT_ZWISCHENSUMME_INDEX
   * @see ByKommunalListenwahlStimmeingabeListenkandidaturStimmenModelBuilder#GRUPPE_LISTENKANDIDATUR_LISTENSTIMMEN_GESAMT_ZWISCHENSUMME_INDEX
   * @see KomNiKommunalListenwahlZwischensumme#GRUPPE_LISTENSTIMMEN_NUR_LISTENKANDIDATUREN
   */
  LISTENKANDIDATUR_LISTENSTIMMEN_ZWISCHENSUMME_GESAMT,

  /**
   * A.k.a. "Gültige Stimmen insgesamt", Zwischensummeneingabe aus einer Referendumvorlage und der Stimmenart#REFERENDUM_STIMME, ggf. angezeigt pro Referendumvorlage.
   *
   * @see AbstractStimmeingabeReferendumVorlageStimmenModelBuilder#GRUPPE_STIMMEN_GUELTIGE_GESAMT_ZWISCHENSUMME_INDEX
   */
  REFERENDUM_VORLAGE_REFERENDUM_STIMMEN_ZWISCHENSUMME_GUELTIGE,
  /**
   * A.k.a. "Ungültige Stimmen", Zwischensummeneingabe aus einer Referendumvorlage und der Stimmenart#REFERENDUM_STIMME, ggf. angezeigt pro Referendumvorlage.
   *
   * @see AbstractStimmeingabeReferendumVorlageStimmenModelBuilder#GRUPPE_STIMMEN_UNGUELTIGE_ZWISCHENSUMME_INDEX
   */
  REFERENDUM_VORLAGE_REFERENDUM_STIMMEN_ZWISCHENSUMME_UNGUELTIGE,
  /**
   * A.k.a. "Abgegebene Stimmen insgesamt", Zwischensummeneingabe aus einer Referendumvorlage und der Stimmenart#REFERENDUM_STIMME, ggf. angezeigt pro Referendumvorlage.
   *
   * @see AbstractStimmeingabeReferendumVorlageStimmenModelBuilder#GRUPPE_STIMMEN_GESAMT_ZWISCHENSUMME_INDEX
   */
  REFERENDUM_VORLAGE_REFERENDUM_STIMMEN_ZWISCHENSUMME_GESAMT,

  /*
   * KOMMUNALWAHL - Erfassungsmaske für Wahlvorschläge - Eingaben pro Zeile
   */

  /**
   * A.k.a. "Stimmzettel für genau einen Wahlvorschlag unverändert", angezeigt pro Zeile/politischer Gruppe auf der Erfassungsmaske für Wahlvorschläge.
   */
  GRUPPE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_UNVERAENDERT,
  /**
   * A.k.a. "Stimmzettel für genau einen Wahlvorschlag mit Änderungen nur in diesem", angezeigt pro Zeile/politischer Gruppe auf der Erfassungsmaske für Wahlvorschläge.
   *
   * @see AbstractListenwahlStimmeingabeGruppeStimmenModelBuilder#GRUPPE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_VERAENDERT_ZWISCHENSUMME_INDEX
   */
  GRUPPE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_VERAENDERT,
  /**
   * A.k.a. "Stimmzettel für genau einen Wahlvorschlag mit panaschierten Stimmen", angezeigt pro Zeile/politischer Gruppe auf der Erfassungsmaske für Wahlvorschläge.
   *
   * @see AbstractListenwahlStimmeingabeGruppeStimmenModelBuilder#GRUPPE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_PANASCHIERT_ZWISCHENSUMME_INDEX
   */
  GRUPPE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_PANASCHIERT,
  /**
   * A.k.a. "Stimmzettel für genau einen Wahlvorschlag", angezeigt pro Zeile/politischer Gruppe auf der Erfassungsmaske für Wahlvorschläge.
   *
   * @see AbstractListenwahlStimmeingabeGruppeStimmenModelBuilder#GRUPPE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_GESAMT
   */
  GRUPPE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_GESAMT,
  /**
   * A.k.a. "Gültige kumulierte und panaschierte Stimmen insgesamt", angezeigt pro Zeile/politischer Gruppe auf der Erfassungsmaske für Wahlvorschläge.
   *
   * @see AbstractListenwahlStimmeingabeGruppeStimmenModelBuilder#GRUPPE_LISTENSTIMMEN_LISTENKANDIDATUREN_GESAMT_ZWISCHENSUMME_INDEX
   */
  GRUPPE_LISTENSTIMMEN_LISTENKANDIDATUREN_GESAMT,

  /*
   * KOMMUNALWAHL - Erfassungsmaske für Wahlvorschläge - "Gültige insgesamt"
   */

  /**
   * A.k.a. "Gültige insgesamt nach oben abgeschätzt", keine tatsächliche Stimm- oder Zwischensummeneingabe, sondern ein berechneter Wert, der plausibilisiert wird und dessen Plausi an einer Stimm-
   * oder Zwischensummeneingabe, bspw. StimmeingabeAnzahlReference#SYSTEM_GRUPPE_GUELTIGE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_UNVERAENDERT, hängt.
   *
   * @see ByKommunalListenwahlGueltigeListenstimmenAusgezaehltPlausiHelper
   */
  SYSTEM_GRUPPE_GUELTIGE_LISTENSTIMMEN_BERECHNET,

  /**
   * A.k.a. "Gültige insgesamt" für "Stimmzettel für genau einen Wahlvorschlag unverändert", angezeigt auf der Erfassungsmaske für Wahlvorschläge.
   *
   * @see AbstractListenwahlStimmeingabeGruppeStimmenModelBuilder#GUELTIGE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_UNVERAENDERT_ZWISCHENSUMME_INDEX
   */
  SYSTEM_GRUPPE_GUELTIGE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_UNVERAENDERT,
  /**
   * A.k.a. "Gültige insgesamt" für "Stimmzettel für genau einen Wahlvorschlag mit Änderungen nur in diesem", angezeigt auf der endgültigen Erfassungsmaske für Wahlvorschläge.
   *
   * @see AbstractListenwahlStimmeingabeGruppeStimmenModelBuilder#GUELTIGE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_VERAENDERT_ZWISCHENSUMME_INDEX
   */
  SYSTEM_GRUPPE_GUELTIGE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_VERAENDERT,
  /**
   * A.k.a. "Gültige insgesamt" für "Stimmzettel für genau einen Wahlvorschlag mit panaschierten Stimmen", angezeigt auf der endgültigen Erfassungsmaske für Wahlvorschläge.
   *
   * @see AbstractListenwahlStimmeingabeGruppeStimmenModelBuilder#GUELTIGE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_PANASCHIERT_ZWISCHENSUMME_INDEX
   */
  SYSTEM_GRUPPE_GUELTIGE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_PANASCHIERT,
  /**
   * A.k.a. "Gültige insgesamt" für "Stimmzettel für genau einen Wahlvorschlag", angezeigt auf der Erfassungsmaske für Wahlvorschläge.
   *
   * @see AbstractListenwahlStimmeingabeGruppeStimmenModelBuilder#GUELTIGE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_GESAMT_ZWISCHENSUMME_INDEX
   */
  SYSTEM_GRUPPE_GUELTIGE_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_GESAMT,
  /**
   * A.k.a. "Gültige insgesamt" für "Gültige kumulierte und panaschierte Stimmen insgesamt", angezeigt auf der Erfassungsmaske für Wahlvorschläge.
   *
   * @see AbstractListenwahlStimmeingabeGruppeStimmenModelBuilder#GUELTIGE_LISTENSTIMMEN_LISTENKANDIDATUREN_GESAMT_ZWISCHENSUMME_INDEX
   */
  SYSTEM_GRUPPE_GUELTIGE_LISTENSTIMMEN_LISTENKANDIDATUREN_GESAMT,

  /*
   * KOMMUNALWAHL - Erfassungsmaske für Listenkandidaturen
   */

  /**
   * A.k.a. "Stimmzettel für genau einen Wahlvorschlag unverändert", Zwischensummeneingabe aus einer politischen Gruppe und der Stimmenart#LISTENSTIMME, angezeigt NUR AUF DER ENDGÜLTIGEN
   * ERFASSUNGSMASKE BEI MUC für Listenkandidaturen eines Wahlvorschlages.
   *
   * @see ByKommunalListenwahlStimmeingabeListenkandidaturStimmenModelBuilder#GRUPPE_LISTENKANDIDATUR_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_UNVERAENDERT_ZWISCHENSUMME_INDEX
   */
  LISTENKANDIDATUR_LISTENSTIMMEN_NUR_EINZELNER_WAHLVORSCHLAG_UNVERAENDERT,

  /*
   * BY (MUC, KOM)
   */

  /*
   * LANDTAGSWAHL - Erfassungsmaske für Wahlvorschläge
   */

  /**
   * A.k.a. "Abgegebene Stimmen insgesamt" für "Erststimmen", Zwischensummeneingabe aus der SystemGruppe#WAEHLER und der Stimmenart#DIREKTSTIMME, angezeigt auf der Erfassungsmaske für Wahlvorschläge.
   *
   * @see ByLtwStimmeingabeGruppeStimmenModelBuilder#GRUPPE_DIREKTSTIMMEN_GESAMT_ZWISCHENSUMME_INDEX
   */
  BY_LANDTAGSWAHL_SYSTEM_GRUPPE_WAEHLER_DIREKTSTIMMEN_ZWISCHENSUMME,
  /**
   * A.k.a. "Abgegebene Stimmen insgesamt" für "Zweitstimmen", Zwischensummeneingabe aus der SystemGruppe#WAEHLER und der Stimmenart#LISTENSTIMME, angezeigt auf der Erfassungsmaske für Wahlvorschläge.
   *
   * @see ByLtwStimmeingabeGruppeStimmenModelBuilder#GRUPPE_LISTENSTIMMEN_GESAMT_ZWISCHENSUMME_INDEX
   */
  BY_LANDTAGSWAHL_SYSTEM_GRUPPE_WAEHLER_LISTENSTIMMEN_ZWISCHENSUMME,

  ;

  StimmeingabeAnzahlReference() {
  }

  public String getLabel() {
    return name();
  }
}
