MergeOperationVisitorAdapter.java

/*-
 * #%L
 * JSQLParser library
 * %%
 * Copyright (C) 2004 - 2024 JSQLParser
 * %%
 * Dual licensed under GNU LGPL 2.1 or Apache License 2.0
 * #L%
 */
package net.sf.jsqlparser.statement.merge;

import net.sf.jsqlparser.expression.ExpressionVisitor;
import net.sf.jsqlparser.expression.ExpressionVisitorAdapter;
import net.sf.jsqlparser.statement.select.SelectVisitorAdapter;

@SuppressWarnings({"PMD.UncommentedEmptyMethodBody"})
public class MergeOperationVisitorAdapter<T> implements MergeOperationVisitor<T> {
    private ExpressionVisitor<T> expressionVisitor;

    public MergeOperationVisitorAdapter() {
        this.expressionVisitor = new ExpressionVisitorAdapter<>();
    }

    public MergeOperationVisitorAdapter(ExpressionVisitor<T> expressionVisitor) {
        this.expressionVisitor = expressionVisitor;
    }

    public MergeOperationVisitorAdapter(SelectVisitorAdapter<T> selectVisitorAdapter) {
        this.expressionVisitor = selectVisitorAdapter.getExpressionVisitor();
    }

    @Override
    public <S> T visit(MergeDelete mergeDelete, S context) {
        expressionVisitor.visitExpression(mergeDelete.getAndPredicate(), context);
        return null;
    }

    @Override
    public <S> T visit(MergeUpdate mergeUpdate, S context) {
        expressionVisitor.visitExpression(mergeUpdate.getAndPredicate(), context);
        expressionVisitor.visitUpdateSets(mergeUpdate.getUpdateSets(), context);
        expressionVisitor.visitExpression(mergeUpdate.getWhereCondition(), context);
        expressionVisitor.visitExpression(mergeUpdate.getDeleteWhereCondition(), context);
        return null;
    }

    @Override
    public <S> T visit(MergeInsert mergeInsert, S context) {
        expressionVisitor.visitExpression(mergeInsert.getAndPredicate(), context);
        expressionVisitor.visitExpressions(mergeInsert.getColumns(), context);
        expressionVisitor.visitExpressions(mergeInsert.getValues(), context);
        expressionVisitor.visitExpression(mergeInsert.getWhereCondition(), context);
        return null;
    }
}