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

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

import de.ivu.elect.business.person.control.BerufByNameComparator;
import de.ivu.elect.business.person.entity.Beruf;
import de.ivu.elect.business.person.entity.QBeruf;
import de.ivu.elect.jee.entity.QueryDsl;

public class BerufSearch extends AbstractBerufSearch {

  private static final Comparator<Beruf> DEFAULT_COMPARATOR = new BerufByNameComparator();

  public BerufSearch() {
    super();
  }

  @Override
  protected List<Beruf> querySearchResult(BerufSearchParameters searchParameters) {
    QBeruf beruf = QBeruf.beruf;

    QueryDsl queryDsl = dao.getQueryDsl().from(beruf);

    queryDsl.likeIfNotBlank(beruf.name, searchParameters.getBeruf().getName());
    queryDsl.likeIfNotBlank(beruf.code, searchParameters.getBeruf().getCode());
    queryDsl.likeIfNotBlank(beruf.herkunft, searchParameters.getBeruf().getHerkunft());
    queryDsl.eqIfNotNull(beruf.geschlecht, searchParameters.getBeruf().getGeschlecht());

    List<Beruf> result = queryDsl.list(beruf);
    result.sort(getDefaultComparator());

    return result;
  }

  protected Comparator<Beruf> getDefaultComparator() {
    return DEFAULT_COMPARATOR;
  }
}
