
package de.ivu.elect.business.gruppe.boundary;

import java.util.Comparator;
import java.util.List;

import javax.ejb.Stateless;

import de.ivu.elect.business.gruppe.control.GruppeByBerechnetePositionComparator;
import de.ivu.elect.business.gruppe.entity.Gruppe;

@Stateless
public class GruppeSearch extends AbstractGruppeSearch {

  public GruppeSearch() {
    super();
  }

  @Override
  protected List<Gruppe> querySearchResult(GruppeSearchParameters searchParameters) {
    if (searchParameters.getWahl() == null) {
      return dao.findByOhneWahl();
    }
    List<Gruppe> result = dao.findByWahlAndGruppeArten(searchParameters.getWahl(), searchParameters.getGruppeArten());
    result.sort(getDefaultComparator(searchParameters));
    return result;

  }

  protected Comparator<Gruppe> getDefaultComparator(GruppeSearchParameters searchParameters) {
    return new GruppeByBerechnetePositionComparator(dao.findByWahl(searchParameters.getWahl()));
  }
}
