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

import java.util.List;

import javax.ejb.Stateless;

import de.ivu.elect.business.gebietsbaum.entity.Gebietsgruppierung;
import de.ivu.elect.business.gebietsbaum.entity.QGebietsgruppierung;
import de.ivu.elect.jee.entity.QueryDsl;

@Stateless
public class GebietsgruppierungSearch extends AbstractGebietsgruppierungSearch {

  public GebietsgruppierungSearch() {
    super();
  }

  @Override
  protected List<Gebietsgruppierung> querySearchResult(GebietsgruppierungSearchParameters searchParameters) {
    QGebietsgruppierung gebietsgruppierung = QGebietsgruppierung.gebietsgruppierung;

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

    if (searchParameters.hasWahl()) {
      queryDsl.eq(gebietsgruppierung.wahl, searchParameters.getWahl());
    } else {
      queryDsl.eq(gebietsgruppierung.wahltermin, searchParameters.getWahltermin());
    }

    queryDsl.eqIfNotBlank(gebietsgruppierung.gebietsgruppierungArt, searchParameters.getGebietsgruppierungArt());

    queryDsl.orderBy(gebietsgruppierung.gebietsgruppierungArt.asc(), gebietsgruppierung.position.asc());

    return queryDsl.list(gebietsgruppierung);
  }
}
