/** * Alipay.com Inc. * Copyright (c) 2004-2012 All Rights Reserved. */ package com.alipay.zdal.parser.sql.dialect.oracle.ast.expr; import java.io.Serializable; import com.alipay.zdal.parser.sql.ast.SQLExpr; import com.alipay.zdal.parser.sql.ast.expr.SQLAggregateExpr; import com.alipay.zdal.parser.sql.dialect.oracle.visitor.OracleASTVisitor; import com.alipay.zdal.parser.sql.visitor.SQLASTVisitor; /** * * @author ���� * @version $Id: OracleAggregateExpr.java, v 0.1 2012-11-17 ����3:42:47 Exp $ */ public class OracleAggregateExpr extends SQLAggregateExpr implements Serializable, OracleExpr { private static final long serialVersionUID = 1L; private OracleAnalytic over; private boolean ignoreNulls = false; public boolean isUnique() { return Option.UNIQUE.equals(this.getOption()); } public void setUnique(boolean unique) { this.setOption(Option.UNIQUE); } public boolean isIgnoreNulls() { return this.ignoreNulls; } public void setIgnoreNulls(boolean ignoreNulls) { this.ignoreNulls = ignoreNulls; } public OracleAggregateExpr(String methodName) { super(methodName); } public OracleAggregateExpr(String methodName, Option option) { super(methodName, option); } public OracleAnalytic getOver() { return this.over; } public void setOver(OracleAnalytic over) { this.over = over; } public void output(StringBuffer buf) { buf.append(this.methodName); buf.append("("); int i = 0; for (int size = this.arguments.size(); i < size; ++i) { ((SQLExpr) this.arguments.get(i)).output(buf); } buf.append(")"); if (this.over != null) { buf.append(" "); this.over.output(buf); } } @Override protected void accept0(SQLASTVisitor visitor) { if (visitor instanceof OracleASTVisitor) { this.accept0((OracleASTVisitor) visitor); } else { if (visitor.visit(this)) { acceptChild(visitor, this.arguments); acceptChild(visitor, this.over); } visitor.endVisit(this); } } public void accept0(OracleASTVisitor visitor) { if (visitor.visit(this)) { acceptChild(visitor, this.arguments); acceptChild(visitor, this.over); } visitor.endVisit(this); } }