All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.espertech.esper.client.soda.RowLimitClause Maven / Gradle / Ivy

The newest version!
/*
 ***************************************************************************************
 *  Copyright (C) 2006 EsperTech, Inc. All rights reserved.                            *
 *  http://www.espertech.com/esper                                                     *
 *  http://www.espertech.com                                                           *
 *  ---------------------------------------------------------------------------------- *
 *  The software in this package is published under the terms of the GPL license       *
 *  a copy of which has been included with this distribution in the license.txt file.  *
 ***************************************************************************************
 */
package com.espertech.esper.client.soda;

import java.io.Serializable;
import java.io.StringWriter;

/**
 * Specification object for a row limit.
 */
public class RowLimitClause implements Serializable {
    private static final long serialVersionUID = 0L;

    private Integer numRows;
    private Integer optionalOffsetRows;
    private String numRowsVariable;
    private String optionalOffsetRowsVariable;

    /**
     * Ctor.
     */
    public RowLimitClause() {
    }

    /**
     * Creates a row limit clause.
     *
     * @param numRowsVariable name of the variable providing the maximum number of rows
     * @return clause
     */
    public static RowLimitClause create(String numRowsVariable) {
        return new RowLimitClause(null, null, numRowsVariable, null);
    }

    /**
     * Creates a row limit clause.
     *
     * @param numRowsVariable name of the variable providing the maximum number of rows
     * @param offsetVariable  name of the variable providing the offset
     * @return clause
     */
    public static RowLimitClause create(String numRowsVariable, String offsetVariable) {
        return new RowLimitClause(null, null, numRowsVariable, offsetVariable);
    }

    /**
     * Creates a row limit clause.
     *
     * @param numRows maximum number of rows
     * @return clause
     */
    public static RowLimitClause create(int numRows) {
        return new RowLimitClause(numRows, null, null, null);
    }

    /**
     * Creates a row limit clause.
     *
     * @param numRows maximum number of rows
     * @param offset  offset
     * @return clause
     */
    public static RowLimitClause create(int numRows, int offset) {
        return new RowLimitClause(numRows, offset, null, null);
    }

    /**
     * Ctor.
     *
     * @param numRows                    maximum number of rows
     * @param optionalOffsetRows         offset
     * @param numRowsVariable            name of the variable providing the maximum number of rows
     * @param optionalOffsetRowsVariable name of the variable providing the offset
     */
    public RowLimitClause(Integer numRows, Integer optionalOffsetRows, String numRowsVariable, String optionalOffsetRowsVariable) {
        this.numRows = numRows;
        this.optionalOffsetRows = optionalOffsetRows;
        this.numRowsVariable = numRowsVariable;
        this.optionalOffsetRowsVariable = optionalOffsetRowsVariable;
    }

    /**
     * Returns the maximum number of rows, or null if using variable.
     *
     * @return max num rows
     */
    public Integer getNumRows() {
        return numRows;
    }

    /**
     * Sets the maximum number of rows.
     *
     * @param numRows max num rows
     */
    public void setNumRows(Integer numRows) {
        this.numRows = numRows;
    }

    /**
     * Returns the offset, or null if using variable or not using offset.
     *
     * @return offset
     */
    public Integer getOptionalOffsetRows() {
        return optionalOffsetRows;
    }

    /**
     * Sets the offset.
     *
     * @param optionalOffsetRows offset
     */
    public void setOptionalOffsetRows(Integer optionalOffsetRows) {
        this.optionalOffsetRows = optionalOffsetRows;
    }

    /**
     * Returns the variable providing maximum number of rows, or null if using constant.
     *
     * @return max num rows variable
     */
    public String getNumRowsVariable() {
        return numRowsVariable;
    }

    /**
     * Sets the variable providing maximum number of rows.
     *
     * @param numRowsVariable max num rows variable
     */
    public void setNumRowsVariable(String numRowsVariable) {
        this.numRowsVariable = numRowsVariable;
    }

    /**
     * Returns the name of the variable providing offset values.
     *
     * @return variable name for offset
     */
    public String getOptionalOffsetRowsVariable() {
        return optionalOffsetRowsVariable;
    }

    /**
     * Sets the name of the variable providing offset values.
     *
     * @param optionalOffsetRowsVariable variable name for offset
     */
    public void setOptionalOffsetRowsVariable(String optionalOffsetRowsVariable) {
        this.optionalOffsetRowsVariable = optionalOffsetRowsVariable;
    }

    /**
     * Renders the clause in textual representation.
     *
     * @param writer to output to
     */
    public void toEPL(StringWriter writer) {
        if (numRowsVariable != null) {
            writer.write(numRowsVariable);
        } else {
            if (numRows != null) {
                writer.write(Integer.toString(numRows));
            } else {
                writer.write(Integer.toString(Integer.MAX_VALUE));
            }
        }

        if (optionalOffsetRowsVariable != null) {
            writer.write(" offset ");
            writer.write(optionalOffsetRowsVariable);
        } else if ((optionalOffsetRows != null) && (optionalOffsetRows != 0)) {
            writer.write(" offset ");
            writer.write(Integer.toString(optionalOffsetRows));
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy