package com.avaje.ebean.config.dbplatform; /** * Use top xx and start at xx to limit sql results. Based on * MsSqlServer2005SqlLimiter and LimitOffsetSqlLimiter */ public class SqlAnywhereLimiter implements SqlLimiter { public SqlLimitResponse limit(SqlLimitRequest request) { StringBuilder sb = new StringBuilder(500); int firstRow = request.getFirstRow(); int maxRows = request.getMaxRows(); if (maxRows > 0) { // fetch 1 more than we return so that // we know if more rows are available maxRows = maxRows + 1; } /* * SELECT TOP xx START AT xx ... FROM ... */ sb.append("select "); if (request.isDistinct()) { sb.append("distinct "); } if (maxRows > 0) { sb.append("top ").append(maxRows).append(" "); } if (firstRow > 0) { sb.append("start at ").append(firstRow + 1).append(" "); } sb.append(request.getDbSql()); String sql = request.getDbPlatform().completeSql(sb.toString(), request.getOrmQuery()); return new SqlLimitResponse(sql, false); } }