001package io.ebean.config.dbplatform.db2;
002
003import io.ebean.config.dbplatform.SqlLimitRequest;
004import io.ebean.config.dbplatform.SqlLimitResponse;
005import io.ebean.config.dbplatform.SqlLimiter;
006
007public class Db2SqlLimiter implements SqlLimiter {
008
009  @Override
010  public SqlLimitResponse limit(SqlLimitRequest request) {
011
012    StringBuilder sb = new StringBuilder(512);
013    sb.append("select ");
014    if (request.isDistinct()) {
015      sb.append("distinct ");
016    }
017    sb.append(request.getDbSql());
018    int firstRow = request.getFirstRow();
019    if (firstRow > 0) {
020      sb.append(" offset ").append(firstRow).append(" rows");
021    }
022    int maxRows = request.getMaxRows();
023    if (maxRows > 0) {
024      sb.append(" fetch next ").append(maxRows).append(" rows only");
025    }
026
027    String sql = request.getDbPlatform().completeSql(sb.toString(), request.getOrmQuery());
028    return new SqlLimitResponse(sql);
029  }
030}