
package de.ivu.elect.dokumente.wahlausschuss;

import static de.ivu.elect.business.dokumente.entity.DokumentKonverterResult.openOfficeFromList;

import java.util.ArrayList;
import java.util.List;

import javax.inject.Inject;

import de.ivu.elect.business.dokumente.control.DokumentExtraFileOutput;
import de.ivu.elect.business.dokumente.control.ProgressMonitor;
import de.ivu.elect.business.dokumente.entity.DokumentKonverterResult;
import de.ivu.elect.business.dokumente.entity.DokumentVorlageArt;
import de.ivu.elect.business.gebietsbaum.boundary.GebietDAO;
import de.ivu.elect.business.wahlausschuss.boundary.WahlausschussmitgliederAlsListeDokumentContext;
import de.ivu.elect.business.wahlausschuss.control.WahlausschussmitgliederAlsListeDokumentKonverter;
import de.ivu.elect.business.wahlausschuss.entity.Wahlausschussmitglied;
import de.ivu.elect.dokumente.CoreElectContext;
import de.ivu.elect.dokumente.CoreElectContextBuilder;
import de.ivu.elect.dokumente.konverter.AbstractDokumentKonverter;

public class CoreWahlausschussmitgliederAlsListeDocumentKonverter extends AbstractDokumentKonverter<WahlausschussmitgliederAlsListeDokumentContext>
    implements
      WahlausschussmitgliederAlsListeDokumentKonverter {

  @Inject
  private transient GebietDAO gebietDAO;

  @Inject
  private transient CoreElectContextBuilder coreElectContextBuilder;

  public CoreWahlausschussmitgliederAlsListeDocumentKonverter() {
    super();
  }

  @Override
  public DokumentVorlageArt getDokumentVorlageArt() {
    return DokumentVorlageArt.WAHLAUSSCHUSSMITGLIEDER_ALS_LISTE;
  }

  @Override
  public DokumentKonverterResult konvertiereInDokumentEingabe(List<Wahlausschussmitglied> entities, WahlausschussmitgliederAlsListeDokumentContext context,
      DokumentExtraFileOutput dokumentExtraFileOutput, ProgressMonitor monitor) {
    List<Object> result = new ArrayList<>();

    CoreElectContext coreElectContext = coreElectContextBuilder.create(createBaseElectContext(context, dokumentExtraFileOutput));

    result.add(new WahlausschussmitgliederAlsListeDocument(coreElectContext, entities, gebietDAO.attach(context.getGebiet())));

    return openOfficeFromList(result);
  }
}
