
package de.ivu.elect.business.personenpruefung.control.dubletten;

import static de.ivu.elect.jee.entity.EntityUtil.castTo;

import java.util.Optional;

import de.ivu.elect.business.person.entity.PersonenVerknuepfung;
import de.ivu.elect.business.person.entity.Personendaten;

public abstract class AbstractPersonenDublettenZulaessigkeitPruefer {

  public AbstractPersonenDublettenZulaessigkeitPruefer() {
    super();
  }

  public boolean isZulaessigeDublette(PersonenVerknuepfung personenVerknuepfung) {
    return isZulaessigeDublette(personenVerknuepfung.getPerson1(), personenVerknuepfung.getPerson2());
  }

  public boolean isZulaessigeDublette(Personendaten one, Personendaten another) {
    return false; // Standardmäßig keine (maschinell verknüpften) Dubletten als zulässig bestätigen.
  }

  protected <E extends Personendaten> Optional<E> asInstanceOf(Personendaten personendaten, Class<E> clazz) {
    if (personendaten != null && personendaten.isInstanceOf(clazz)) {
      return Optional.of(castTo(personendaten, clazz));
    }

    return Optional.empty();
  }
}
