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

import de.ivu.elect.business.person.entity.Personendaten;
import de.ivu.elect.business.personenpruefung.control.AbstractPersonendatenMatcher;
import de.ivu.elect.business.personenpruefung.control.mehrstaatigkeit.kriterium.MehrstaatigkeitZulaessigkeitKriterium;

public abstract class AbstractPersonendatenMehrstaatigkeitMatcher extends AbstractPersonendatenMatcher {

  private static final long serialVersionUID = 1L;

  public AbstractPersonendatenMehrstaatigkeitMatcher() {
    super();
  }

  @Override
  protected boolean matchesInternal(Personendaten personendaten) {
    return personendaten.getStaatsangehoerigkeitenSorted().size() < 2 || matchesMehrstaatigkeitZulaessigkeit(personendaten);
  }

  public boolean matchesMehrstaatigkeitZulaessigkeit(Personendaten personendaten) {
    return collectMehrstaatigkeitZulaessigkeitKriterium(personendaten).matches(personendaten);
  }

  public abstract MehrstaatigkeitZulaessigkeitKriterium collectMehrstaatigkeitZulaessigkeitKriterium(Personendaten personendaten);
}
