/**
* Alipay.com Inc.
* Copyright (c) 2004-2012 All Rights Reserved.
*/
package com.alipay.zdal.parser.sql.dialect.oracle.ast.stmt;
import java.util.ArrayList;
import java.util.List;
import com.alipay.zdal.parser.sql.ast.SQLExpr;
import com.alipay.zdal.parser.sql.ast.SQLHint;
import com.alipay.zdal.parser.sql.ast.SQLName;
import com.alipay.zdal.parser.sql.ast.statement.SQLTableSource;
import com.alipay.zdal.parser.sql.ast.statement.SQLUpdateSetItem;
import com.alipay.zdal.parser.sql.dialect.oracle.ast.OracleSQLObjectImpl;
import com.alipay.zdal.parser.sql.dialect.oracle.ast.clause.OracleErrorLoggingClause;
import com.alipay.zdal.parser.sql.dialect.oracle.visitor.OracleASTVisitor;
/**
*
* @author ����
* @version $Id: OracleMergeStatement.java, v 0.1 2012-11-17 ����3:48:46 Exp $
*/
public class OracleMergeStatement extends OracleStatementImpl {
private static final long serialVersionUID = 1L;
private final List<SQLHint> hints = new ArrayList<SQLHint>();
private SQLName into;
private String alias;
private SQLTableSource using;
private SQLExpr on;
private MergeUpdateClause updateClause;
private MergeInsertClause insertClause;
private OracleErrorLoggingClause errorLoggingClause;
public void accept0(OracleASTVisitor visitor) {
if (visitor.visit(this)) {
acceptChild(visitor, into);
acceptChild(visitor, using);
acceptChild(visitor, on);
acceptChild(visitor, updateClause);
acceptChild(visitor, insertClause);
acceptChild(visitor, errorLoggingClause);
}
visitor.endVisit(this);
}
public String getAlias() {
return alias;
}
public void setAlias(String alias) {
this.alias = alias;
}
public SQLName getInto() {
return into;
}
public void setInto(SQLName into) {
this.into = into;
}
public SQLTableSource getUsing() {
return using;
}
public void setUsing(SQLTableSource using) {
this.using = using;
}
public SQLExpr getOn() {
return on;
}
public void setOn(SQLExpr on) {
this.on = on;
}
public MergeUpdateClause getUpdateClause() {
return updateClause;
}
public void setUpdateClause(MergeUpdateClause updateClause) {
this.updateClause = updateClause;
}
public MergeInsertClause getInsertClause() {
return insertClause;
}
public void setInsertClause(MergeInsertClause insertClause) {
this.insertClause = insertClause;
}
public OracleErrorLoggingClause getErrorLoggingClause() {
return errorLoggingClause;
}
public void setErrorLoggingClause(OracleErrorLoggingClause errorLoggingClause) {
this.errorLoggingClause = errorLoggingClause;
}
public List<SQLHint> getHints() {
return hints;
}
public static class MergeUpdateClause extends OracleSQLObjectImpl {
private static final long serialVersionUID = 1L;
private List<SQLUpdateSetItem> items = new ArrayList<SQLUpdateSetItem>();
private SQLExpr where;
private SQLExpr deleteWhere;
public List<SQLUpdateSetItem> getItems() {
return items;
}
public void setItems(List<SQLUpdateSetItem> items) {
this.items = items;
}
public SQLExpr getWhere() {
return where;
}
public void setWhere(SQLExpr where) {
this.where = where;
}
public SQLExpr getDeleteWhere() {
return deleteWhere;
}
public void setDeleteWhere(SQLExpr deleteWhere) {
this.deleteWhere = deleteWhere;
}
@Override
public void accept0(OracleASTVisitor visitor) {
if (visitor.visit(this)) {
acceptChild(visitor, items);
acceptChild(visitor, where);
acceptChild(visitor, deleteWhere);
}
visitor.endVisit(this);
}
}
public static class MergeInsertClause extends OracleSQLObjectImpl {
private static final long serialVersionUID = 1L;
private List<SQLExpr> columns = new ArrayList<SQLExpr>();
private List<SQLExpr> values = new ArrayList<SQLExpr>();
private SQLExpr where;
@Override
public void accept0(OracleASTVisitor visitor) {
if (visitor.visit(this)) {
acceptChild(visitor, columns);
acceptChild(visitor, columns);
acceptChild(visitor, columns);
}
visitor.endVisit(this);
}
public List<SQLExpr> getColumns() {
return columns;
}
public void setColumns(List<SQLExpr> columns) {
this.columns = columns;
}
public List<SQLExpr> getValues() {
return values;
}
public void setValues(List<SQLExpr> values) {
this.values = values;
}
public SQLExpr getWhere() {
return where;
}
public void setWhere(SQLExpr where) {
this.where = where;
}
}
}