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

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import javax.enterprise.inject.Specializes;
import javax.inject.Inject;

import de.ivu.elect.business.konfiguration.entity.Konfiguration;
import de.ivu.elect.business.personenregister.boundary.PersonenregisterSwitch;
import de.ivu.elect.business.personenregister.entity.PersonenregisterSource;

@Specializes
public class CommonPersonenregisterSourceFilter extends PersonenregisterSourceFilter {

  @Inject
  private transient PersonenregisterSwitch personenregisterSwitch;

  @Override
  public List<PersonenregisterSource> filter(Konfiguration customParameter, List<PersonenregisterSource> values) {
    List<PersonenregisterSource> result = new ArrayList<>(super.filter(customParameter, values));

    Set<PersonenregisterSource> personenregisterSources = personenregisterSwitch.getPersonenregisterSources();
    for (PersonenregisterSource value : values) {
      if (personenregisterSources.contains(value) && !result.contains(value)) {
        result.add(value);
      }
    }

    return result;
  }
}
