
package de.ivu.elect.presentation.wahlausschuss;

import javax.inject.Inject;
import javax.inject.Named;

import org.apache.deltaspike.core.api.scope.ConversationGroup;
import org.apache.deltaspike.core.api.scope.GroupedConversationScoped;

import de.ivu.elect.business.dokumente.boundary.AbstractDokumentGenerator;
import de.ivu.elect.business.gebietsbaum.boundary.GebietSessionSelect;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.business.wahlausschuss.boundary.WahlausschussmitgliederAlsListeDokumentContext;
import de.ivu.elect.business.wahlausschuss.boundary.WahlausschussmitgliederAlsListeDokumentGenerator;
import de.ivu.elect.business.wahlausschuss.entity.Wahlausschussmitglied;
import de.ivu.elect.presentation.View;
import de.ivu.elect.presentation.dokumente.AbstractDokumentErzeugenView;
import de.ivu.elect.presentation.dokumente.ElectDokumentContextGenerator;

@GroupedConversationScoped
@ConversationGroup(WahlausschussmitgliederAlsListeDokumentErzeugenView.class)
@Named(WahlausschussmitgliederAlsListeDokumentErzeugenView.COMPONENT_NAME)
@View(viewId = WahlausschussmitgliederAlsListeDokumentErzeugenView.VIEW_ID, useCase = UseCasePermission.DOKUMENT_ERZEUGEN_WAHLAUSSCHUSS_ALS_LISTE)
public class WahlausschussmitgliederAlsListeDokumentErzeugenView
    extends
    AbstractDokumentErzeugenView<Wahlausschussmitglied, WahlausschussmitgliederAlsListeDokumentContext> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "wahlausschussmitgliederAlsListeDokumentErzeugenView";

  public static final String VIEW_ID = "/wahlausschuss/wahlausschussmitglieder-als-liste-dokument-erzeugen-view.xhtml";

  @Inject
  protected transient WahlausschussmitgliederAlsListeDokumentGenerator dokumentGenerator;

  @Inject
  ElectDokumentContextGenerator electDokumentContextGenerator;

  @Inject
  GebietSessionSelect gebietSessionSelect;

  @Override
  public String getViewId() {
    return VIEW_ID;
  }

  @Override
  protected WahlausschussmitgliederAlsListeDokumentContext getContext() {
    return new WahlausschussmitgliederAlsListeDokumentContext(electDokumentContextGenerator.createElectDokumentContext(), gebietSessionSelect.getEntity());
  }

  @Override
  protected AbstractDokumentGenerator<Wahlausschussmitglied, WahlausschussmitgliederAlsListeDokumentContext> getDokumentGenerator() {
    return dokumentGenerator;
  }

  @Override
  protected UseCasePermission getRequiredPermission() {
    return UseCasePermission.DOKUMENT_ERZEUGEN_WAHLAUSSCHUSS_ALS_LISTE;
  }

}
