
package de.ivu.elect.presentation.ergebnis.dokumente.gesamtergebnis;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;

import de.ivu.document.generator.template.BaseDocument;
import de.ivu.document.generator.template.annotations.DocumentComplexField;
import de.ivu.elect.business.gruppe.entity.Gruppe;
import de.ivu.elect.dokumente.BaseElectContext;
import de.ivu.elect.dokumente.wahlvorschlag.GruppeDokument;
import de.ivu.elect.was.exchange.internet.velocity.PolitischeGruppeProzentGewinnVerlust;
import de.ivu.elect.was.exchange.internet.velocity.SystemGruppeProzentGewinnVerlust;

public class GruppenErgebnisAufGebiet extends BaseDocument {

  private static final long serialVersionUID = 1L;

  @DocumentComplexField("Gruppe")
  public final GruppeDokument gruppe;

  @DocumentComplexField("Erststimmen")
  public final GruppenStimmen erststimmen;

  @DocumentComplexField("Zweitstimmen")
  public final GruppenStimmen zweitstimmen;

  @DocumentComplexField("Gesamtstimmen")
  public final GruppenStimmen gesamtstimmen;

  public GruppenErgebnisAufGebiet(@Nonnull BaseElectContext baseElectContext, @Nonnull Gruppe gruppe,
      @Nullable PolitischeGruppeProzentGewinnVerlust erststimmen,
      @Nullable PolitischeGruppeProzentGewinnVerlust zweitstimmen,
      @Nullable PolitischeGruppeProzentGewinnVerlust gesamtstimmen) {
    this.gruppe = new GruppeDokument(gruppe);

    this.erststimmen = new GruppenStimmen(baseElectContext, erststimmen);
    this.zweitstimmen = new GruppenStimmen(baseElectContext, zweitstimmen);
    this.gesamtstimmen = new GruppenStimmen(baseElectContext, gesamtstimmen);

  }

  public GruppenErgebnisAufGebiet(BaseElectContext baseElectContext, Gruppe gruppe,
      SystemGruppeProzentGewinnVerlust erststimmen, SystemGruppeProzentGewinnVerlust zweitstimmen,
      SystemGruppeProzentGewinnVerlust gesamtstimmen) {
    this.gruppe = new GruppeDokument(gruppe);

    this.erststimmen = new GruppenStimmen(baseElectContext, erststimmen);
    this.zweitstimmen = new GruppenStimmen(baseElectContext, zweitstimmen);
    this.gesamtstimmen = new GruppenStimmen(baseElectContext, gesamtstimmen);
  }
}
