
package de.ivu.elect.presentation.gruppe.menu;

import static java.util.Arrays.asList;

import java.util.List;

import javax.inject.Inject;

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

import de.ivu.elect.business.gruppe.boundary.GruppeNachErfassungsgebietStimmenSearchParameters;
import de.ivu.elect.business.security.UseCasePermission;

public abstract class AbstractGruppeNachErfassungsgebietStimmenAnzeigenMenuItemEntry extends AbstractGruppeKumulierteStimmenAnzeigenMenuItemEntry {

  private static final long serialVersionUID = 1L;

  @Inject
  @ConversationGroup(GruppeNachErfassungsgebietStimmenSearchParameters.class)
  private transient GruppeNachErfassungsgebietStimmenSearchParameters gruppeNachErfassungsgebietStimmenSearchParameters;

  public AbstractGruppeNachErfassungsgebietStimmenAnzeigenMenuItemEntry() {
    super();
  }

  @Override
  protected UseCasePermission getRequiredUseCasePermission() {
    return UseCasePermission.ERGEBNIS_GRUPPEN_NACH_GEBIETEN_ANZEIGEN;
  }

  @Override
  public String getTargetViewId() {
    return null; // doAction
  }

  @Override
  public String doAction() {
    initSearchParameters(gruppeNachErfassungsgebietStimmenSearchParameters);

    return getActionViewId();
  }

  protected abstract void initSearchParameters(GruppeNachErfassungsgebietStimmenSearchParameters searchParameters);

  @Override
  protected List<String> getAdditionalTopicViewIds() {
    return asList(getActionViewId());
  }

  protected abstract String getActionViewId();
}
