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

import de.ivu.elect.business.gebietsbaum.boundary.WahlverwaltungGebietInformation;
import de.ivu.elect.business.wahl.entity.WahlartErgebnisart;
import de.ivu.elect.dokumente.BaseElectContext;
import de.ivu.elect.dokumente.ergebnis.AbstractErgebnisTabellarischDocumentCreator;
import de.ivu.elect.dokumente.ergebnis.ErgebnisDocumentDatenArt;
import de.ivu.elect.dokumente.ergebnis.ErgebnisDocumentDatenGebietDocument;

public class ErgebnisKandidaturenTabellarischDocumentCreator
    extends
      AbstractErgebnisTabellarischDocumentCreator<ErgebnisKandidaturenTabellarischDocument, ErgebnisKandidaturenTabellarischDocumentZeile> {

  public ErgebnisKandidaturenTabellarischDocumentCreator() {
    super();
  }

  @Override
  protected ErgebnisKandidaturenTabellarischDocument createDocument(BaseElectContext baseElectContext, WahlartErgebnisart ergebnisart, WahlverwaltungGebietInformation datenGebiet,
      ErgebnisDocumentDatenArt datenArt) {
    return new ErgebnisKandidaturenTabellarischDocument(baseElectContext, ergebnisart, new ErgebnisDocumentDatenGebietDocument(datenGebiet), ErgebnisDocumentDatenArt.GESAMT); // NOTE, dass ErgebnisDocumentDatenArt.GESAMT schon immer fix war!
  }

  @Override
  protected void fillInDocument(BaseElectContext baseElectContext, ErgebnisKandidaturenTabellarischDocument document, ErgebnisKandidaturenTabellarischDocumentZeile template,
      ErgebnisDocumentDatenArt datenArt) {
    super.fillInDocument(baseElectContext, document, template, datenArt);

    document.parteiKurzName = template.parteiKurzName;
    document.wahlvorschlagName = template.wahlvorschlagName;
    document.parteiNummer = template.parteiNummer;
    document.parteiWahlkreisvorschlagNummer = template.parteiNummerWahlkreisvorschlag;
    document.parteiErststimmenNameBewerber = template.parteiErststimmenNameBewerber;
    document.parteiErststimmenNummerBewerber = template.parteiErststimmenNummerBewerber;
  }

  @Override
  protected void fillInSummenDocument(WahlverwaltungGebietInformation summenGebiet, ErgebnisKandidaturenTabellarischDocument document) {
    super.fillInSummenDocument(summenGebiet, document);

    document.ergebnisSummen.setSummen(document.zeilen, document);
  }
}
