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

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.jee.cdi.BeanManagerUtil;
import de.ivu.elect.presentation.AbstractElectEditView;

public abstract class AbstractPersonendatenDeleteActionResolver extends AbstractPersonendatenActionResolver {

  private static final long serialVersionUID = 1L;

  public AbstractPersonendatenDeleteActionResolver() {
    super();
  }

  public <E extends Personendaten> String doDelete(E personendaten) {
    getAction(personendaten).action(personendaten);

    return getEditView(personendaten).delete();
  }

  private <E extends Personendaten> AbstractElectEditView<E> getEditView(E personendaten) {
    return BeanManagerUtil.getBeanByName(resolveEditViewComponentName(personendaten));
  }

  public <E extends Personendaten> String getDialogName(E personendaten) {
    return getAction(personendaten).getDialogName();
  }

  protected abstract <E extends Personendaten> String resolveEditViewComponentName(Personendaten personendaten);
}
