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

import java.util.List;

import de.ivu.elect.business.system.entity.QSystemLog;
import de.ivu.elect.business.system.entity.SystemLog;
import de.ivu.elect.jee.entity.QueryDsl;

public class SystemLogSearch extends AbstractSystemLogSearch {

  public SystemLogSearch() {
    super();
  }

  @Override
  protected List<SystemLog> querySearchResult(SystemLogSearchParameters searchParameters) {
    QueryDsl queryDsl = dao.getQueryDsl();
    QSystemLog qSystemLog = QSystemLog.systemLog;
    queryDsl.from(qSystemLog);
    queryDsl.eq(qSystemLog.mandant, searchParameters.getMandant());
    queryDsl.eqIfNotNull(qSystemLog.logNachrichtArt, searchParameters.getSystemLog().getLogNachrichtArt());
    queryDsl.eqIfNotNull(qSystemLog.status, searchParameters.getSystemLog().getStatus());
    queryDsl.eqIfNotNull(qSystemLog.quelle, searchParameters.getSystemLog().getQuelle());
    queryDsl.likeIfNotBlank(qSystemLog.logNachricht, searchParameters.getSystemLog().getLogNachricht());

    queryDsl.orderBy(qSystemLog.zeitpunkt.desc(), qSystemLog.id.desc());

    return searchParameters.applyLimit(queryDsl).list(qSystemLog);
  }
}
