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

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

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

import de.ivu.elect.business.wahlvorschlagsperson.entity.WahlvorschlagsPerson;
import de.ivu.elect.jee.presentation.action.AbstractActionMenuModelBuilder;
import de.ivu.elect.jee.presentation.action.ActionEntry;

@Named(WahlvorschlagsPersonActionMenu.COMPONENT_NAME)
public class WahlvorschlagsPersonActionMenu extends AbstractActionMenuModelBuilder<WahlvorschlagsPerson> {

  private static final long serialVersionUID = 1L;

  public static final String COMPONENT_NAME = "wahlvorschlagsPersonActionMenu";

  @Inject
  private transient BeauftragterEditAction beauftragterEditAction;

  @Inject
  private transient UnterzeichnerEditAction unterzeichnerEditAction;

  @Inject
  private transient AufstellungsversammlungMitunterzeichnerEditAction aufstellungsversammlungMitunterzeichnerEditAction;

  @Inject
  private transient BeauftragterDeleteAction beauftragterDeleteAction;

  @Inject
  private transient UnterzeichnerDeleteAction unterzeichnerDeleteAction;

  @Inject
  private transient AufstellungsversammlungMitunterzeichnerDeleteAction aufstellungsversammlungMitunterzeichnerDeleteAction;

  public WahlvorschlagsPersonActionMenu() {
    super();
  }

  @Override
  protected List<ActionEntry<WahlvorschlagsPerson>> getActionEntriesSorted() {
    List<ActionEntry<WahlvorschlagsPerson>> result = new ArrayList<>();

    addKonfliktLoesenAction(result);

    result.add(beauftragterEditAction);
    result.add(unterzeichnerEditAction);
    result.add(aufstellungsversammlungMitunterzeichnerEditAction);

    addKonfliktSuchen(result);

    result.add(beauftragterDeleteAction);
    result.add(unterzeichnerDeleteAction);
    result.add(aufstellungsversammlungMitunterzeichnerDeleteAction);

    return result;
  }

  protected void addKonfliktSuchen(List<ActionEntry<WahlvorschlagsPerson>> result) {
    // Personenprüfung vorerst nicht in Core
  }

  protected void addKonfliktLoesenAction(List<ActionEntry<WahlvorschlagsPerson>> result) {
    // Personenprüfung vorerst nicht in Core
  }
}
