/* *************************************************************************************** * 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.StringWriter; import java.util.List; /** * Table access expression. */ public class TableAccessExpression extends ExpressionBase { private static final long serialVersionUID = 8878898170678366785L; private String tableName; private List<Expression> keyExpressions; private String optionalColumn; private Expression optionalAggregate; /** * Ctor. */ public TableAccessExpression() { } /** * Ctor. * * @param tableName the table name * @param keyExpressions the list of key expressions for each table primary key in the same order as declared * @param optionalColumn optional column name * @param optionalAggregate optional aggregation function */ public TableAccessExpression(String tableName, List<Expression> keyExpressions, String optionalColumn, Expression optionalAggregate) { this.tableName = tableName; this.keyExpressions = keyExpressions; this.optionalColumn = optionalColumn; this.optionalAggregate = optionalAggregate; } public ExpressionPrecedenceEnum getPrecedence() { return ExpressionPrecedenceEnum.UNARY; } public void toPrecedenceFreeEPL(StringWriter writer) { writer.write(tableName); if (keyExpressions != null && !keyExpressions.isEmpty()) { writer.write("["); ExpressionBase.toPrecedenceFreeEPL(keyExpressions, writer); writer.write("]"); } if (optionalColumn != null) { writer.write("."); writer.write(optionalColumn); } if (optionalAggregate != null) { writer.write("."); optionalAggregate.toEPL(writer, ExpressionPrecedenceEnum.MINIMUM); } } /** * Returns the table name. * * @return table name */ public String getTableName() { return tableName; } /** * Sets the table name. * * @param tableName table name */ public void setTableName(String tableName) { this.tableName = tableName; } /** * Returns the primary key expressions. * * @return primary key expressions */ public List<Expression> getKeyExpressions() { return keyExpressions; } /** * Sets the primary key expressions. * * @param keyExpressions primary key expressions */ public void setKeyExpressions(List<Expression> keyExpressions) { this.keyExpressions = keyExpressions; } /** * Returns the optional table column name to access. * * @return table column name or null if accessing row */ public String getOptionalColumn() { return optionalColumn; } /** * Sets the optional table column name to access. * * @param optionalColumn table column name or null if accessing row */ public void setOptionalColumn(String optionalColumn) { this.optionalColumn = optionalColumn; } /** * Returns the optional table column aggregation accessor to use. * * @return table column aggregation accessor */ public Expression getOptionalAggregate() { return optionalAggregate; } /** * Sets the optional table column aggregation accessor to use. * * @param optionalAggregate table column aggregation accessor */ public void setOptionalAggregate(Expression optionalAggregate) { this.optionalAggregate = optionalAggregate; } }