All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.teiid.modeshape.sequencer.ddl.TeiidDdlConstants Maven / Gradle / Ivy

/*
 * 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.modeshape.sequencer.ddl;

import java.util.ArrayList;
import java.util.List;

/**
 * DDL constants specific to the Teiid dialect. Teiid's BNF for SQL Grammar (updated Feb 14, 2013) was used.
 */
public interface TeiidDdlConstants extends DdlConstants {

    /*
     * Teiid DDL Keywords
     */
    public static final String GLOBAL = "GLOBAL";
    public static final String TEMPORARY = "TEMPORARY";

    /**
     * An object that has a DDL representation.
     */
    interface DdlElement {

        /**
         * @return the DDL string representation (never null or empty)
         */
        String toDdl();

    }

    /**
     * 
     * (  |  | 
     */
    enum DdlStatement implements DdlElement {

        /**
         * Create Table
         * 

* * CREATE ( ( FOREIGN TABLE ) | ( ( VIRTUAL )? VIEW ) | ( GLOBAL TEMPORARY TABLE ) ) ( | ( )? ) ( AS )? * CREATE ( LOCAL )? FOREIGN TEMPORARY TABLE ON * CREATE ( LOCAL )? TEMPORARY TABLE ( )* ( PRIMARY KEY )? ( ON COMMIT PRESERVE ROWS )? * */ CREATE_FOREIGN_TABLE(CREATE, FOREIGN, TABLE), CREATE_GLOBAL_TEMPORARY_TABLE(CREATE, GLOBAL, TEMPORARY, TABLE), CREATE_VIRTUAL_VIEW(CREATE, TeiidReservedWord.VIRTUAL.name(), VIEW), CREATE_VIEW(CREATE, VIEW), CREATE_FOREIGN_TEMPORARY_TABLE(CREATE, FOREIGN, TEMPORARY, TABLE), CREATE_LOCAL_FOREIGN_TEMPORARY_TABLE(CREATE, TeiidReservedWord.LOCAL.name(), FOREIGN, TEMPORARY, TABLE), CREATE_LOCAL_TEMPORARY_TABLE(CREATE, TeiidReservedWord.LOCAL.name(), TEMPORARY, TABLE), CREATE_TEMPORARY_TABLE(CREATE, TEMPORARY, TABLE), /** * Create Procedure *

* * CREATE ( VIRTUAL | FOREIGN )? ( PROCEDURE | FUNCTION ) ( ( ( )* )? ( RETURNS ( ( ( TABLE )? ( )* ) | ) )? ( )? ( AS )? ) * */ CREATE_VIRTUAL_FUNCTION(CREATE, TeiidReservedWord.VIRTUAL.name(), TeiidReservedWord.FUNCTION.name()), CREATE_VIRTUAL_PROCEDURE(CREATE, TeiidReservedWord.VIRTUAL.name(), TeiidReservedWord.PROCEDURE.name()), CREATE_FOREIGN_FUNCTION(CREATE, FOREIGN, TeiidReservedWord.FUNCTION.name()), CREATE_FOREIGN_PROCEDURE(CREATE, FOREIGN, TeiidReservedWord.PROCEDURE.name()), CREATE_FUNCTION(CREATE, TeiidReservedWord.FUNCTION.name()), CREATE_PROCEDURE(CREATE, TeiidReservedWord.PROCEDURE.name()), /** * Option Namespace *

* * SET NAMESPACE AS * */ OPTION_NAMESPACE(SET, TeiidNonReservedWord.NAMESPACE.name()), /** * Alter Options *

* * ALTER ( VIRTUAL | FOREIGN )? ( TABLE | VIEW | PROCEDURE ) ( | ) * */ ALTER_VIRTUAL_PROCEDURE(ALTER, TeiidReservedWord.VIRTUAL.name(), TeiidReservedWord.PROCEDURE.name()), ALTER_VIRTUAL_TABLE(ALTER, TeiidReservedWord.VIRTUAL.name(), TABLE), ALTER_VIRTUAL_VIEW(ALTER, TeiidReservedWord.VIRTUAL.name(), VIEW), ALTER_FOREIGN_PROCEDURE(ALTER, FOREIGN, TeiidReservedWord.PROCEDURE.name()), ALTER_FOREIGN_TABLE(ALTER, FOREIGN, TABLE), ALTER_FOREIGN_VIEW(ALTER, FOREIGN, VIEW), ALTER_PROCEDURE(ALTER, TeiidReservedWord.PROCEDURE.name()), ALTER_TABLE(ALTER, TABLE), ALTER_VIEW(ALTER, VIEW), /** * Create Trigger *

* * CREATE TRIGGER ON INSTEAD OF ( INSERT | UPDATE | DELETE ) AS * */ CREATE_TRIGGER(CREATE, TeiidReservedWord.TRIGGER.name(), ON); private final String[] tokens; private DdlStatement( final String... tokens ) { this.tokens = tokens; } /** * {@inheritDoc} * * @see org.teiid.modeshape.sequencer.ddl.TeiidDdlConstants.DdlElement#toDdl() */ @Override public String toDdl() { boolean firstTime = true; final StringBuilder ddl = new StringBuilder(); for (final String token : this.tokens) { if (firstTime) { firstTime = false; } else { ddl.append(' '); } ddl.append(token); } return ddl.toString(); } /** * @return the tokens used by the DDL tokenizer (never null or empty) */ public String[] tokens() { return this.tokens; } } /** * Teiid data types. */ enum TeiidDataType implements DdlElement { BIGDECIMAL, BIGINT, BIGINTEGER, BLOB, BOOLEAN, BYTE, CHAR, CLOB, DATE, DECIMAL, DOUBLE, FLOAT, GEOMETRY, INTEGER, LONG, OBJECT, REAL, SHORT, SMALLINT, STRING, TIME, TIMESTAMP, TINYINT, VARBINARY, VARCHAR, XML; private static List _startWords; public static List getStartWords() { if (_startWords == null) { final TeiidDataType[] values = values(); _startWords = new ArrayList(values.length); for (final TeiidDataType type : values) { _startWords.add(type.toDdl()); } } return _startWords; } /** * {@inheritDoc} * * @see org.teiid.modeshape.sequencer.ddl.TeiidDdlConstants.DdlElement#toDdl() */ @Override public String toDdl() { return toString(); } } /** * Teiid future reserved words. */ enum TeiidFutureReserveWord { ALLOCATE, ARE, ARRAY, ASENSITIVE, ASYMETRIC, AUTHORIZATION, BINARY, CALLED, CASCADED, CHARACTER, CHECK, CLOSE, COLLATE, COMMIT, CONNECT, CORRESPONDING, CRITERIA, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURRENT_USER, CURSOR, CYCLE, DATALINK, DEALLOCATE, DEC, DEREF, DESCRIBE, DETERMINISTIC, DISCONNECT, DLNEWCOPY, DLPREVIOUSCOPY, DLURLCOMPLETE, DLURLCOMPLETEONLY, DLURLCOMPLETEWRITE, DLURLPATH, DLURLPATHONLY, DLURLPATHWRITE, DLURLSCHEME, DLURLSERVER, DLVALUE, DYNAMIC, ELEMENT, EXTERNAL, FREE, GET, GLOBAL, GRANT, HAS, HOLD, IDENTITY, IMPORT, INDICATOR, INPUT, INSENSITIVE, INT, INTERVAL, ISOLATION, LARGE, LOCALTIME, LOCALTIMESTAMP, MATCH, MEMBER, METHOD, MODIFIES, MODULE, MULTISET, NATIONAL, NATURAL, NCHAR, NCLOB, NEW, NONE, NUMERIC, OLD, OPEN, OUTPUT, OVERLAPS, PRECISION, PREPARE, RANGE, READS, RECURSIVE, REFERENCING, RELEASE, REVOKE, ROLLBACK, ROLLUP, SAVEPOINT, SCROLL, SEARCH, SENSITIVE, SESSION_USER, SPECIFIC, SPECIFICTYPE, SQL, START, STATIC, SUBMULTILIST, SYMETRIC, SYSTEM, SYSTEM_USER, TIMEZONE_HOUR, TIMEZONE_MINUTE, TRANSLATION, TREAT, VALUE, VARYING, WHENEVER, WINDOW, WITHIN, XMLBINARY, XMLCAST, XMLDOCUMENT, XMLEXISTS, XMLITERATE, XMLTEXT, XMLVALIDATE } /** * Teiid non-reserved words. */ enum TeiidNonReservedWord implements DdlElement { ACCESSPATTERN, ARRAYTABLE, AUTO_INCREMENT, AVG, CHAIN, COLUMNS, CONTENT, COUNT, DELIMITER, DENSE_RANK, DISABLED, DOCUMENT, EMPTY, ENABLED, ENCODING, EVERY, EXCEPTION, EXCLUDING, EXTRACT, FIRST, HEADER, INCLUDING, INDEX, INSTEAD, JSONARRAY_AGG, JSONOBJECT, KEY, LAST, MAX, MIN, NAME, NAMESPACE, NEXT, NULLS, OBJECTTABLE, ORDINALITY, PASSING, PATH, PRESERVE, QUERYSTRING, QUOTE, RAISE, RANK, RESULT, ROW_NUMBER, SELECTOR, SERIAL, SKIP, SQL_TSI_DAY, SQL_TSI_FRAC_SECOND, SQL_TSI_HOUR, SQL_TSI_MINUTE, SQL_TSI_MONTH, SQL_TSI_QUARTER, SQL_TSI_SECOND, SQL_TSI_WEEK, SQL_TSI_YEAR, STDDEV_POP, STDDEV_SAMP, SUBSTRING, SUM, TEXTAGG, TEXTTABLE, TIMESTAMPADD, TIMESTAMPDIFF, TO_BYTES, TO_CHARS, TRIM, VAR_POP, VAR_SAMP, VARIADIC, VERSION, VIEW, WELLFORMED, WIDTH, XMLDECLARATION; private static List _list; public static List asList() { if (_list == null) { final TeiidNonReservedWord[] values = values(); _list = new ArrayList(values.length); for (final TeiidNonReservedWord word : values) { _list.add(word.name()); } } return _list; } /** * {@inheritDoc} * * @see org.teiid.modeshape.sequencer.ddl.TeiidDdlConstants.DdlElement#toDdl() */ @Override public String toDdl() { return toString(); } } /** * Teiid reserved words. */ enum TeiidReservedWord implements DdlElement { ADD, ALL, ALLOCATE, ALTER, AND, ANY, ARRAY_AGG, AS, ASC, ATOMIC, BEGIN, BETWEEN, BOTH, BREAK, BY, CALL, CASE, COLUMN, CONSTRAINT, CONTINUE, CREATE, CROSS, DAY, DECLARE, DEFAULT, DELETE, DESC, DISTINCT, DROP, EACH, ELSE, END, ERROR, ESCAPE, EXCEPT, EXEC, EXECUTE, EXISTS, FALSE, FETCH, FILTER, FOR, FOREIGN, FROM, FULL, FUNCTION, GROUP, HAVING, HOUR, IF, IMMEDIATE, IN, INNER, INOUT, INSERT, INTERSECT, INTO, IS, JOIN, LANGUAGE, LATERAL, LEADING, LEAVE, LEFT, LIKE, LIKE_REGEX, LIMIT, LOCAL, LOOP, MAKEDEP, MAKENOTDEP, MERGE, MINUTE, MONTH, NO, NOCACHE, NOT, NULL, OF, OFFSET, ON, ONLY, OPTION, OPTIONS, OR, ORDER, OUT, OUTER, OVER, PARAMETER, PARTITION, PREPARE, PRIMARY, PROCEDURE, REFERENCES, RETURN, RETURNS, RIGHT, ROLLUP, ROW, ROWS, SECOND, SELECT, SET, SIMILAR, SOME, SQLEXCEPTION, SQLSTATE, SQLWARNING, TABLE, TEMPORARY, THEN, TO, TRAILING, TRANSLATE, TRIGGER, TRUE, UNION, UNIQUE, UNKNOWN, UPDATE, USER, USING, VALUES, VIRTUAL, WHEN, WHERE, WHILE, WITH, WITHOUT, XMLAGG, XMLATTRIBUTES, XMLCOMMENT, XMLCONCAT, XMLELEMENT, XMLFOREST, XMLNAMESPACES, XMLPARSE, XMLPI, XMLQUERY, XMLSERIALIZE, XMLTABLE, YEAR; private static List _list; public static List asList() { if (_list == null) { final TeiidReservedWord[] values = values(); _list = new ArrayList(values.length); for (final TeiidReservedWord word : values) { _list.add(word.name()); } } return _list; } /** * {@inheritDoc} * * @see org.teiid.modeshape.sequencer.ddl.TeiidDdlConstants.DdlElement#toDdl() */ @Override public String toDdl() { return toString(); } } /** * Indicates if element is foreign/physical or virtual. */ enum SchemaElementType implements DdlElement { FOREIGN, VIRTUAL; /** * {@inheritDoc} * * @see org.teiid.modeshape.sequencer.ddl.TeiidDdlConstants.DdlElement#toDdl() */ @Override public String toDdl() { return toString(); } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy