nl.topicus.jdbc.shaded.net.sf.jsqlparser.statement.select.SetOperationList Maven / Gradle / Ivy
/*
* #%L
* JSQLParser library
* %%
* Copyright (C) 2004 - 2013 JSQLParser
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 2.1 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Lesser Public License for more details.
*
* You should have received a copy of the GNU General Lesser Public
* License along with this program. If not, see
* .
* #L%
*/
package nl.topicus.jdbc.shaded.net.sf.jsqlparser.statement.select;
import java.util.List;
/**
* A database set operation. This operation consists of a list of plainSelects connected by set
* operations (UNION,INTERSECT,MINUS,EXCEPT). All these operations have the same priority.
*
* @author tw
*/
public class SetOperationList implements SelectBody {
private List selects;
private List brackets;
private List operations;
private List orderByElements;
private Limit limit;
private Offset offset;
private Fetch fetch;
@Override
public void accept(SelectVisitor selectVisitor) {
selectVisitor.visit(this);
}
public List getOrderByElements() {
return orderByElements;
}
public List getSelects() {
return selects;
}
public List getOperations() {
return operations;
}
public List getBrackets() {
return brackets;
}
public void setBrackets(List brackets) {
this.brackets = brackets;
}
public void setOrderByElements(List orderByElements) {
this.orderByElements = orderByElements;
}
public void setBracketsOpsAndSelects(List brackets, List select, List ops) {
selects = select;
operations = ops;
this.brackets = brackets;
if (select.size() - 1 != ops.size() || select.size() != brackets.size()) {
throw new IllegalArgumentException("list sizes are not valid");
}
}
public Limit getLimit() {
return limit;
}
public void setLimit(Limit limit) {
this.limit = limit;
}
public Offset getOffset() {
return offset;
}
public void setOffset(Offset offset) {
this.offset = offset;
}
public Fetch getFetch() {
return fetch;
}
public void setFetch(Fetch fetch) {
this.fetch = fetch;
}
@Override
public String toString() {
StringBuilder buffer = new StringBuilder();
for (int i = 0; i < selects.size(); i++) {
if (i != 0) {
buffer.append(" ").append(operations.get(i - 1).toString()).append(" ");
}
if (brackets == null || brackets.get(i)) {
buffer.append("(").append(selects.get(i).toString()).append(")");
} else {
buffer.append(selects.get(i).toString());
}
}
if (orderByElements != null) {
buffer.append(PlainSelect.orderByToString(orderByElements));
}
if (limit != null) {
buffer.append(limit.toString());
}
if (offset != null) {
buffer.append(offset.toString());
}
if (fetch != null) {
buffer.append(fetch.toString());
}
return buffer.toString();
}
/**
* list of set operations.
*/
public enum SetOperationType {
INTERSECT,
EXCEPT,
MINUS,
UNION
}
}