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

/**
 * Ursprünglich gedacht für die Unterscheidung von Erst- und Zweitstimmen auf "GruppeImGebiet" Konzept funktionierte für Bundes- und Landtagswahlen im alten WAS sehr gut. Prophezeiung: die Liste wird
 * sich mit den merkwürdigsten Einträgen füllen... (Tut sie hiermit -- elect)
 * <p>
 * Cf. https://support.elect-it.com/wiki/display/ELECT/Stimmenarten
 */
public enum Stimmenart {

  // ELECT-5979
  PRUEFKENNZEICHEN,

  DIREKTSTIMME {

    @Override
    public boolean isDirektstimme() {
      return true;
    }
  },

  LISTENSTIMME {

    @Override
    public boolean isListenstimme() {
      return true;
    }
  },

  LISTENSTIMME_LEER { // ELECT-9630

    @Override
    public boolean isListenstimmeLeer() {
      return true;
    }
  },

  /**
   * Bspw. "Stimmzettel mit Anlass zu Bedenken"
   */
  LISTENSTIMME_UNBESTIMMT { // ELECT-13792

    @Override
    public boolean isListenstimmeUnbestimmt() {
      return true;
    }
  },

  LISTENSTIMME_ABZUZIEHEN { // ELECT-3908

    @Override
    public boolean isListenstimmeAbzuziehen() {
      return true;
    }
  },

  LISTENSTIMME_EINZELNER_WAHLVORSCHAG_UNVERAENDERT { // ELECT-9233

    @Override
    public boolean isListenstimmeEinzelnerWahlvorschlagUnveraendert() {
      return true;
    }
  },
  LISTENSTIMME_EINZELNER_WAHLVORSCHAG_VERAENDERT { // ELECT-9233

    @Override
    public boolean isListenstimmeEinzelnerWahlvorschlagVeraendert() {
      return true;
    }
  },
  LISTENSTIMME_EINZELNER_WAHLVORSCHAG_PANASCHIERT { // ELECT-13677

    @Override
    public boolean isListenstimmeEinzelnerWahlvorschlagPanaschiert() {
      return true;
    }
  },

  LISTENSTIMME_KEIN_EINZELNER_WAHLVORSCHAG_VERAENDERT { // ELECT-13792

    @Override
    public boolean isListenstimmeKeinEinzelnerWahlvorschlagVeraendert() {
      return true;
    }
  },
  LISTENSTIMME_KEIN_EINZELNER_WAHLVORSCHAG_PANASCHIERT { // ELECT-13792

    @Override
    public boolean isListenstimmeKeinEinzelnerWahlvorschlagPanaschiert() {
      return true;
    }
  },

  LISTENKANDIDATURSTIMME_NICHT_ERGEBNISRELEVANT { // ELECTMUC-1116

    @Override
    public boolean isListenkandidaturstimmeNichtErgebnisrelevant() {
      return true;
    }
  },

  REFERENDUM_STIMME {

    @Override
    public boolean isReferendumStimmenart() {
      return true;
    }
  },

  /**
   * Bspw. "Wähler ohne Wahlschein", "Wähler mit Wahlbenachrichtigung", "Wahlberechtigte ohne Wahlschein"
   */
  OHNE_WAHLSCHEIN {

    @Override
    public boolean isOhneWahlschein() {
      return true;
    }
  },

  /**
   * Bspw. "Wähler mit Wahlschein", "Wahlberechtigte mit Wahlschein"
   */
  MIT_WAHLSCHEIN {

    @Override
    public boolean isMitWahlschein() {
      return true;
    }
  },

  /**
   * A.k.a. MIT_WAHLSCHEIN_IN_URNENWAHL_ANZAHL_AUS_URNENWAHL
   */
  ALS_URNENWAHL_IN_URNE, // ELECT-9319
  /**
   * A.k.a. MIT_WAHLSCHEIN_IN_URNENWAHL_ANZAHL_AUS_BRIEFWAHL
   */
  ALS_BRIEFWAHL_IN_URNE, // ELECTDD-331

  /**
   * Bspw. "Wahlberechtigte nicht im Wählerverzeichnis"
   */
  NICHT_IM_WAEHLERVERZEICHNIS {

    @Override
    public boolean isNichtImWaehlerverzeichnis() {
      return true;
    }
  },

  /**
   * Bspw. "Wähler mit Vollmacht"
   */
  MIT_VOLLMACHT, // ELECT-9630

  GESAMT {

    @Override
    public boolean isGesamt() {
      return true;
    }
  },

  /*
   * ELECT-9630
   */

  GESAMT_EINGENOMMEN,
  GESAMT_ABWEICHEND_ZUVIEL,
  GESAMT_ABWEICHEND_ZUWENIG,

  GESAMT_ABWEICHEND_GRUND_AUSGEGEBEN_NICHT_ABGEGEBEN,
  GESAMT_ABWEICHEND_GRUND_AUSGEGEBEN_ZUWENIG,
  GESAMT_ABWEICHEND_GRUND_AUSGEGEBEN_ZUVIEL,

  GESAMT_ABWEICHEND_GRUND_IN_WAHLBRIEF_ZUWENIG,
  GESAMT_ABWEICHEND_GRUND_IN_WAHLBRIEF_ZUVIEL,

  GESAMT_ABWEICHEND_GRUND_VERLOREN,

  GESAMT_ABWEICHEND_GRUND_SONSTIGES,
  GESAMT_ABWEICHEND_GRUND_UNBEKANNT,

  ;

  public boolean isDirektstimme() {
    return false;
  }

  public boolean isListenstimme() {
    return false;
  }

  public boolean isListenstimmeLeer() {
    return false;
  }

  public boolean isListenstimmeUnbestimmt() {
    return false;
  }

  public boolean isListenstimmeAbzuziehen() {
    return false;
  }

  public boolean isListenstimmeEinzelnerWahlvorschlagUnveraendert() {
    return false;
  }

  public boolean isListenstimmeEinzelnerWahlvorschlagVeraendert() {
    return false;
  }

  public boolean isListenstimmeEinzelnerWahlvorschlagPanaschiert() {
    return false;
  }

  public boolean isListenstimmeKeinEinzelnerWahlvorschlagVeraendert() {
    return false;
  }

  public boolean isListenstimmeKeinEinzelnerWahlvorschlagPanaschiert() {
    return false;
  }

  public boolean isListenkandidaturstimmeNichtErgebnisrelevant() {
    return false;
  }

  public boolean isReferendumStimmenart() {
    return false;
  }

  public boolean isMitWahlschein() {
    return false;
  }

  public boolean isOhneWahlschein() {
    return false;
  }

  public boolean isNichtImWaehlerverzeichnis() {
    return false;
  }

  public boolean isGesamt() {
    return false;
  }
}
