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}