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

import java.util.List;

import de.ivu.elect.business.veranstaltung.entity.Teilnahme;

public class CombinedTeilnahmePersonendatenFinder implements TeilnahmePersonendatenFinder {

  private final List<TeilnahmePersonendatenFinder> finderList;

  public CombinedTeilnahmePersonendatenFinder(List<TeilnahmePersonendatenFinder> finderList) {
    super();

    this.finderList = finderList;
  }

  @Override
  public Result validatePersonendatenInDb(Teilnahme teilnahmeInDatei) {
    for (TeilnahmePersonendatenFinder finder : finderList) {
      Result result = finder.validatePersonendatenInDb(teilnahmeInDatei);

      if (result.isErgebnisNichtLeer()) {
        // HINT: Wir nutzen das Ergebnis des ersten Finders in der Reihenfolge, selbst, wenn er die Person nicht eindeutig zuordnen kann.
        return result;
      }
    }

    return new ValidateResult(0L);
  }

  @Override
  public Result findPersonendatenInDb(Teilnahme teilnahmeInDatei) {
    for (TeilnahmePersonendatenFinder finder : finderList) {
      Result result = finder.findPersonendatenInDb(teilnahmeInDatei);

      if (result.isErgebnisNichtLeer()) {
        // HINT: Wir nutzen das Ergebnis des ersten Finders in der Reihenfolge, selbst, wenn er die Person nicht eindeutig zuordnen kann.
        return result;
      }
    }

    return new FindResult();
  }
}
