/* ================================================================ * JSQLParser : java based sql parser * ================================================================ * * Project Info: http://jsqlparser.sourceforge.net * Project Lead: Leonardo Francalanci (leoonardoo@yahoo.it); * * (C) Copyright 2004, by Leonardo Francalanci * * This library 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 library 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License along with this * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307, USA. */ package net.sf.jsqlparser.statement.select; import java.util.List; /** * A UNION statement */ public class Union implements SelectBody { private List plainSelects; private List orderByElements; private Limit limit; private boolean distinct; private boolean all; public void accept(SelectVisitor selectVisitor){ selectVisitor.visit(this); } public List getOrderByElements() { return orderByElements; } /** * the list of {@link PlainSelect}s in this UNION * @return the list of {@link PlainSelect}s */ public List getPlainSelects() { return plainSelects; } public void setOrderByElements(List orderByElements) { this.orderByElements = orderByElements; } public void setPlainSelects(List list) { plainSelects = list; } public Limit getLimit() { return limit; } public void setLimit(Limit limit) { this.limit = limit; } /** * This is not 100% right; every UNION should have their own All/Distinct clause... */ public boolean isAll() { return all; } public void setAll(boolean all) { this.all = all; } /** * This is not 100% right; every UNION should have their own All/Distinct clause... */ public boolean isDistinct() { return distinct; } public void setDistinct(boolean distinct) { this.distinct = distinct; } public String toString() { String selects = ""; String allDistinct = ""; if (isAll()) { allDistinct = "ALL "; } else if (isDistinct()) { allDistinct = "DISTINCT "; } for (int i = 0; i < plainSelects.size(); i++) { selects += "(" + plainSelects.get(i) + ((i < plainSelects.size() - 1) ? ") UNION " + allDistinct : ")"); } return selects + ((orderByElements!=null)?PlainSelect.orderByToString(orderByElements):"") + ((limit!=null)?limit+"":""); } }