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

import javax.inject.Inject;

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.wahlausschuss.entity.Wahlausschussmitglied;
import de.ivu.elect.presentation.menu.AbstractActionEntry;
import de.ivu.elect.presentation.wahlausschuss.WahlausschussmitgliedEditView;
import de.ivu.elect.presentation.wahlausschuss.action.WahlausschussmitgliedDeleteAction;

public class CorePersonendatenDeleteActionResolver extends AbstractPersonendatenDeleteActionResolver {

  private static final long serialVersionUID = 1L;

  @Inject
  protected transient PersonendatenDeleteActionResolver personendatenDeleteActionResolver;

  @Inject
  protected transient WahlausschussmitgliedDeleteAction wahlausschussmitgliedDeleteAction;

  public CorePersonendatenDeleteActionResolver() {
    super();
  }

  @Override
  @SuppressWarnings("unchecked")
  protected AbstractActionEntry< ? extends Personendaten> resolveAction(Personendaten personendaten) {
    if (personendaten.isInstanceOf(Wahlausschussmitglied.class)) {
      return wahlausschussmitgliedDeleteAction;
    }

    return personendatenDeleteActionResolver.resolveAction(personendaten);
  }

  @Override
  protected <E extends Personendaten> String resolveEditViewComponentName(Personendaten personendaten) {
    if (personendaten.isInstanceOf(Wahlausschussmitglied.class)) {
      return WahlausschussmitgliedEditView.COMPONENT_NAME;
    }

    return personendatenDeleteActionResolver.resolveEditViewComponentName(personendaten);
  }
}
