
package de.ivu.elect.business.person.control;

import java.util.Collection;
import java.util.List;

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

public interface PersonenVergleichFunktion<T extends Personendaten> {

  boolean isPersonenAehnlich(T one, T another);

  boolean isPersonenIdentisch(T one, T another);

  /**
   * Mit Kenntnis der Ähnlichkeits- und Identitätsfunktionen lassen sich die Personen in Pakete teilen, innerhalb derer überhaupt nach ähnlichen Personen gesucht werden soll. Dies verhindert, dass
   * jede Person mit jeder anderen verglichen werden muss.
   *
   * Personen dürfen in mehreren Paketen enthalten sein.
   */
  List<List<T>> paketierePersonen(Collection< ? extends T> personendaten);
}
