
package de.ivu.elect.dokumente.ergebnis.sitzverteilung;

import de.ivu.document.generator.template.BaseDocument;
import de.ivu.document.generator.template.annotations.DocumentSimpleField;
import de.ivu.elect.business.gruppe.entity.PolitischeGruppe;
import de.ivu.elect.business.wahlvorschlag.entity.Liste;
import de.ivu.elect.business.wahlvorschlag.entity.Listenverbindung;
import de.ivu.elect.dokumente.DokumentFormatter;
import de.ivu.elect.dokumente.WasElectContext;
import de.ivu.elect.sitzberechnung.verteilung.Teilnehmer;

public class SitzverteilungTeilnehmerInVerteilungDocument extends BaseDocument implements Teilnehmer {

  private static final long serialVersionUID = 1L;

  @DocumentSimpleField("Name")
  public final String name;

  @DocumentSimpleField("Kurzname")
  public final String kurzname;

  @DocumentSimpleField("Anzahl-Stimmen")
  public final Long anzahlStimmen;

  @DocumentSimpleField("Anzahl-Stimmen-Formatiert")
  public final String anzahlStimmenFormatiert;

  public SitzverteilungTeilnehmerInVerteilungDocument(WasElectContext wasElectContext, PolitischeGruppe politischeGruppe, long anzahlStimmen) {
    super();

    DokumentFormatter formatter = new DokumentFormatter(wasElectContext.getLocale());

    this.name = politischeGruppe.getName();
    this.kurzname = politischeGruppe.getKurzname();

    this.anzahlStimmen = anzahlStimmen;
    this.anzahlStimmenFormatiert = formatter.formatStimmzahl(this.anzahlStimmen);
  }

  public SitzverteilungTeilnehmerInVerteilungDocument(WasElectContext wasElectContext, Listenverbindung listenverbindung, long anzahlStimmen) {
    super();

    DokumentFormatter formatter = new DokumentFormatter(wasElectContext.getLocale());

    this.name = listenverbindung.getBezeichnung();
    this.kurzname = listenverbindung.getBezeichnung();

    this.anzahlStimmen = anzahlStimmen;
    this.anzahlStimmenFormatiert = formatter.formatStimmzahl(this.anzahlStimmen);
  }

  public SitzverteilungTeilnehmerInVerteilungDocument(WasElectContext wasElectContext, Liste liste, long anzahlStimmen) {
    super();

    DokumentFormatter formatter = new DokumentFormatter(wasElectContext.getLocale());

    this.name = liste.getGruppe().getName();
    this.kurzname = liste.getKurznameOderKennwort();

    this.anzahlStimmen = anzahlStimmen;
    this.anzahlStimmenFormatiert = formatter.formatStimmzahl(this.anzahlStimmen);
  }

  @Override
  public long getStimmen() {
    return anzahlStimmen;
  }
}
