/*
* JBoss, Home of Professional Open Source.
* See the COPYRIGHT.txt file distributed with this work for information
* regarding copyright ownership. Some portions may be licensed
* to Red Hat, Inc. under one or more contributor license agreements.
*
* 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., 51 Franklin Street, Fifth Floor, Boston, MA
* 02110-1301 USA.
*/
package org.teiid.query.sql.proc;
import org.teiid.query.sql.LanguageObject;
import org.teiid.query.sql.visitor.SQLStringVisitor;
/**
* <p> This class represents the a statement in the stored procedure language.
* The subclasses of this class represent specific statements like an
* <code>IfStatement</code>, <code>AssignmentStatement</code> etc.</p>
*/
public abstract class Statement implements LanguageObject {
public interface Labeled {
String getLabel();
void setLabel(String label);
}
/**
* Represents an unknown type of statement
*/
public static final int TYPE_UNKNOWN = 0;
/**
* Represents a IF statement
*/
public static final int TYPE_IF = 1;
/**
* Represents a SQL COMMAND statement
*/
public static final int TYPE_COMMAND = 2;
/**
* Represents a DECLARE statement
*/
public static final int TYPE_DECLARE = 3;
/**
* Represents a ERROR statement
*/
public static final int TYPE_ERROR = 4;
/**
* Represents a ASSIGNMENT statement
*/
public static final int TYPE_ASSIGNMENT = 5;
/**
* Represents a LOOP statement
*/
public static final int TYPE_LOOP = 6;
/**
* Represents a WHILE statement
*/
public static final int TYPE_WHILE = 7;
/**
* Represents a CONTINUE statement
*/
public static final int TYPE_CONTINUE = 8;
/**
* Represents a BREAK statement
*/
public static final int TYPE_BREAK = 9;
public static final int TYPE_UPDATE = 10;
public static final int TYPE_COMPOUND = 11;
public static final int TYPE_LEAVE = 12;
public static final int TYPE_RETURN = 13;
/**
* Return type of statement to make it easier to build switch statements by statement type.
* @return Type from TYPE constants
*/
public abstract int getType();
// =========================================================================
// P R O C E S S I N G M E T H O D S
// =========================================================================
/**
* Deep clone statement to produce a new identical statement.
* @return Deep clone
*/
public abstract Object clone();
@Override
public String toString() {
return SQLStringVisitor.getSQLString(this);
}
}