/* * JEF - Copyright 2009-2010 Jiyi (mr.jiyi@gmail.com) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package jef.database.jsqlparser.util.deparser; import java.util.Iterator; import jef.database.jsqlparser.statement.create.CreateTable; import jef.database.jsqlparser.statement.delete.Delete; import jef.database.jsqlparser.statement.drop.Drop; import jef.database.jsqlparser.statement.insert.Insert; import jef.database.jsqlparser.statement.replace.Replace; import jef.database.jsqlparser.statement.select.Select; import jef.database.jsqlparser.statement.select.WithItem; import jef.database.jsqlparser.statement.truncate.Truncate; import jef.database.jsqlparser.statement.update.Update; import jef.database.jsqlparser.visitor.StatementVisitor; public class StatementDeParser implements StatementVisitor { protected StringBuilder buffer; public StatementDeParser(StringBuilder buffer) { this.buffer = buffer; } public void visit(CreateTable createTable) { CreateTableDeParser createTableDeParser = new CreateTableDeParser(buffer); createTableDeParser.deParse(createTable); } public void visit(Delete delete) { SelectDeParser selectDeParser = new SelectDeParser(); selectDeParser.setBuffer(buffer); ExpressionDeParser expressionDeParser = new ExpressionDeParser(selectDeParser, buffer); selectDeParser.setExpressionVisitor(expressionDeParser); DeleteDeParser deleteDeParser = new DeleteDeParser(expressionDeParser, buffer); deleteDeParser.deParse(delete); } public void visit(Drop drop) { } public void visit(Insert insert) { SelectDeParser selectDeParser = new SelectDeParser(); selectDeParser.setBuffer(buffer); ExpressionDeParser expressionDeParser = new ExpressionDeParser(selectDeParser, buffer); selectDeParser.setExpressionVisitor(expressionDeParser); InsertDeParser insertDeParser = new InsertDeParser(expressionDeParser, selectDeParser, buffer); insertDeParser.deParse(insert); } public void visit(Replace replace) { SelectDeParser selectDeParser = new SelectDeParser(); selectDeParser.setBuffer(buffer); ExpressionDeParser expressionDeParser = new ExpressionDeParser(selectDeParser, buffer); selectDeParser.setExpressionVisitor(expressionDeParser); ReplaceDeParser replaceDeParser = new ReplaceDeParser(expressionDeParser, selectDeParser, buffer); replaceDeParser.deParse(replace); } public void visit(Select select) { SelectDeParser selectDeParser = new SelectDeParser(); selectDeParser.setBuffer(buffer); ExpressionDeParser expressionDeParser = new ExpressionDeParser(selectDeParser, buffer); selectDeParser.setExpressionVisitor(expressionDeParser); if (select.getWithItemsList() != null && !select.getWithItemsList().isEmpty()) { buffer.append("WITH "); for (Iterator<WithItem> iter = select.getWithItemsList().iterator(); iter.hasNext(); ) { WithItem withItem = iter.next(); buffer.append(withItem); if (iter.hasNext()) buffer.append(","); buffer.append(" "); } } select.getSelectBody().accept(selectDeParser); } public void visit(Truncate truncate) { } public void visit(Update update) { SelectDeParser selectDeParser = new SelectDeParser(); selectDeParser.setBuffer(buffer); ExpressionDeParser expressionDeParser = new ExpressionDeParser(selectDeParser, buffer); UpdateDeParser updateDeParser = new UpdateDeParser(expressionDeParser, buffer); selectDeParser.setExpressionVisitor(expressionDeParser); updateDeParser.deParse(update); } public StringBuilder getBuffer() { return buffer; } public void setBuffer(StringBuilder buffer) { this.buffer = buffer; } }