
package de.ivu.elect.presentation.gruppeimgebiet.action;

import javax.inject.Inject;

import de.ivu.elect.business.ergebnis.control.StimmenPoolExtendedDAOFactory;
import de.ivu.elect.business.gruppeimgebiet.boundary.GruppeImGebietChangeEvent;
import de.ivu.elect.business.gruppeimgebiet.boundary.GruppeImGebietEdit;
import de.ivu.elect.business.gruppeimgebiet.boundary.GruppeImGebietExtendedDAO;
import de.ivu.elect.business.gruppeimgebiet.boundary.GruppeImGebietReihenfolgeBestaetiger;
import de.ivu.elect.business.gruppeimgebiet.control.GruppeImGebietReihenfolgeVorsortierer;
import de.ivu.elect.business.gruppeimgebiet.entity.GruppeImGebiet;
import de.ivu.elect.business.security.UseCasePermission;
import de.ivu.elect.presentation.menu.AbstractActionEntry;
import de.ivu.elect.presentation.security.AbstractGebietSecurity;
import de.ivu.elect.presentation.wahlvorschlag.WahlvorschlagRequestCache;

public abstract class AbstractGruppeImGebietPositionVerschiebenAction extends AbstractActionEntry<GruppeImGebiet> {

  private static final long serialVersionUID = 1L;

  @Inject
  protected GruppeImGebietChangeEvent changeEvent;

  @Inject
  protected GruppeImGebietEdit gruppeImGebietEdit;

  @Inject
  protected GruppeImGebietExtendedDAO gruppeImGebietExtendedDAO;

  @Inject
  protected GruppeImGebietReihenfolgeBestaetiger gruppeImGebietReihenfolgeBestaetiger;

  @Inject
  protected GruppeImGebietReihenfolgeVorsortierer gruppeImGebietReihenfolgeVorsortierer;

  @Inject
  protected WahlvorschlagRequestCache wahlvorschlagRequestCache;

  @Inject
  protected StimmenPoolExtendedDAOFactory stimmenPoolExtendedDAOFactory;

  public AbstractGruppeImGebietPositionVerschiebenAction() {
    super();
  }

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

  @Override
  protected AbstractGebietSecurity getGebietSecurity() {
    return getBearbeitenGebietSecurity();
  }

  @Override
  protected boolean isDisabledInternalOnRowDblselect(GruppeImGebiet gruppeImGebiet) {
    return true;
  }

  @Override
  protected boolean isFireChangeEvent() {
    return true;
  }

  @Override
  protected void fireChangeEvent() {
    changeEvent.sendChangeEvent();
  }
}
