
package de.ivu.elect.dokumente.ergebnistabelle.kandidaten;

import de.ivu.elect.business.ergebnis.entity.Stimmabgabeart;
import de.ivu.elect.business.gebietsbaum.entity.Wahldurchfuehrungsgebiet;
import de.ivu.elect.business.gruppe.entity.PolitischeGruppe;
import de.ivu.elect.business.internet.control.PolitischeGruppeUndGebietUndStimmabgabeart;
import de.ivu.elect.dokumente.ergebnistabelle.AbstractErgebnistabelleZeilenSchluessel;
import de.ivu.elect.dokumente.ergebnistabelle.ErgebnistabelleZeileArt;

public class ListenkandidaturenErgebnistabelleZeilenSchluessel extends AbstractErgebnistabelleZeilenSchluessel {

  protected PolitischeGruppe gruppe;

  protected ListenkandidaturenErgebnistabelleZeilenSchluessel(ErgebnistabelleZeileArt zeileArt,
      Stimmabgabeart stimmabgabeart, Wahldurchfuehrungsgebiet gebiet, PolitischeGruppe gruppe) {
    super(zeileArt, stimmabgabeart, gebiet);
    this.gruppe = gruppe;
  }

  public PolitischeGruppe getGruppe() {
    return gruppe;
  }

  public PolitischeGruppeUndGebietUndStimmabgabeart getPolitischeGruppeUndGebietUndStimmabgabeart() {
    return new PolitischeGruppeUndGebietUndStimmabgabeart(getGruppe(), getGebiet(), getStimmabgabeart());
  }

  public static ListenkandidaturenErgebnistabelleZeilenSchluessel createFuerErfassungseinheit(Stimmabgabeart stimmabgabeart,
      Wahldurchfuehrungsgebiet gebiet, PolitischeGruppe gruppe) {
    return new ListenkandidaturenErgebnistabelleZeilenSchluessel(ErgebnistabelleZeileArt.ERFASSUNGSEINHEIT, stimmabgabeart,
        gebiet, gruppe);
  }

  public static ListenkandidaturenErgebnistabelleZeilenSchluessel createFuerSumme(Stimmabgabeart stimmabgabeart,
      Wahldurchfuehrungsgebiet gebiet, PolitischeGruppe gruppe) {
    return new ListenkandidaturenErgebnistabelleZeilenSchluessel(ErgebnistabelleZeileArt.SUMME, stimmabgabeart,
        gebiet, gruppe);
  }
}
