001package com.avaje.ebean.config.dbplatform;
002
003/**
004 * Use top xx and start at xx to limit sql results.
005 */
006public class SqlAnywhereLimiter implements SqlLimiter {
007
008  public SqlLimitResponse limit(SqlLimitRequest request) {
009
010    String dbSql = request.getDbSql();
011    
012    StringBuilder sb = new StringBuilder(60 + dbSql.length());
013
014    int firstRow = request.getFirstRow();
015    int maxRows = request.getMaxRows();
016
017    /*
018     * SELECT TOP xx START AT xx ... FROM ...
019     */
020    sb.append("select ");
021    if (request.isDistinct()) {
022      sb.append("distinct ");
023    }
024    if (maxRows > 0) {
025      sb.append("top ").append(maxRows).append(" ");
026    }
027    if (firstRow > 0) {
028      sb.append("start at ").append(firstRow + 1).append(" ");
029    }
030    sb.append(dbSql);
031
032    String sql = request.getDbPlatform().completeSql(sb.toString(), request.getOrmQuery());
033
034    return new SqlLimitResponse(sql, false);
035  }
036
037}