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

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 GruppenErgebnistabelleZeilenSchluessel extends AbstractErgebnistabelleZeilenSchluessel {

  protected GruppenErgebnistabelleZeilenSchluessel(ErgebnistabelleZeileArt zeileArt, Stimmabgabeart stimmabgabeart, Wahldurchfuehrungsgebiet gebiet) {
    super(zeileArt, stimmabgabeart, gebiet);
  }

  public PolitischeGruppeUndGebietUndStimmabgabeart getPolitischeGruppeUndGebietUndStimmabgabeart(GruppenErgebnistabelleSpaltenSchluessel spaltenSchluessel) {
    return new PolitischeGruppeUndGebietUndStimmabgabeart(spaltenSchluessel.getGruppe().castTo(PolitischeGruppe.class).getEntity(), getGebiet(), getStimmabgabeart());
  }

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

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

  public static GruppenErgebnistabelleZeilenSchluessel createFuerErgebnistabelleZeileArt(
      ErgebnistabelleZeileArt zeileArt, Stimmabgabeart stimmabgabeart, Wahldurchfuehrungsgebiet gebiet) {
    return new GruppenErgebnistabelleZeilenSchluessel(zeileArt, stimmabgabeart, gebiet);
  }
}
