View Javadoc

1   package org.modeshape.sequencer.ddl;
2   
3   import java.util.Arrays;
4   import java.util.List;
5   import org.modeshape.graph.property.Name;
6   
7   public interface DdlConstants {
8       public static final String DEFAULT_TERMINATOR = ";";
9   
10      /*
11       * Character Strings
12       */
13      public static final String SPACE = " ";
14      public static final String PERIOD = ".";
15      public static final String COMMA = ",";
16      public static final String SEMICOLON = ";";
17      public static final String L_PAREN = "(";
18      public static final String R_PAREN = ")";
19      public static final String L_SQUOTE = "’";
20  
21      /*
22       * Table Constraint ID's
23       */
24      public static final int CONSTRAINT_UC = 0;
25      public static final int CONSTRAINT_FK = 1;
26      public static final int CONSTRAINT_PK = 2;
27      public static final int CONSTRAINT_C = 3;
28  
29      public static final String PRIMARY_KEY = "PRIMARY KEY";
30      public static final String FOREIGN_KEY = "FOREIGN KEY";
31  
32      /*
33       * Common DDL Keywords
34       */
35      public static final String ALTER = "ALTER";
36      public static final String CHECK = "CHECK";
37      public static final String COLUMN = "COLUMN";
38      public static final String CONSTRAINT = "CONSTRAINT";
39      public static final String CREATE = "CREATE";
40      public static final String DECLARE = "DECLARE";
41      public static final String DROP = "DROP";
42      public static final String FOREIGN = "FOREIGN";
43      public static final String GRANT = "GRANT";
44      public static final String REVOKE = "REVOKE";
45      public static final String INDEX = "INDEX";
46      public static final String INSERT = "INSERT";
47      public static final String UPDATE = "UPDATE";
48      public static final String DELETE = "DELETE";
49      public static final String SELECT = "SELECT";
50      public static final String KEY = "KEY";
51      public static final String OFF = "OFF";
52      public static final String ON = "ON";
53      public static final String PRIMARY = "PRIMARY";
54      public static final String SCHEMA = "SCHEMA";
55      public static final String SET = "SET";
56      public static final String TABLE = "TABLE";
57      public static final String UNIQUE = "UNIQUE";
58      public static final String VIEW = "VIEW";
59  
60      /*
61       * Default Value ID's
62       */
63      public static final int DEFAULT_ID_UNDEFINED = -1;
64      public static final int DEFAULT_ID_LITERAL = 0;
65      public static final int DEFAULT_ID_DATETIME = 1;
66      public static final int DEFAULT_ID_USER = 2;
67      public static final int DEFAULT_ID_CURRENT_USER = 3;
68      public static final int DEFAULT_ID_SESSION_USER = 4;
69      public static final int DEFAULT_ID_SYSTEM_USER = 5;
70      public static final int DEFAULT_ID_NULL = 6;
71  
72      public static final String MISSING_TERMINATOR_NODE_LITERAL = "missingTerminator";
73  
74      interface DropBehavior {
75          public static final String CASCADE = "CASCADE";
76          public static final String RESTRICT = "RESTRICT";
77      }
78  
79      interface MatchType {
80          public static final String FULL = "FULL";
81          public static final String PARTIAL = "PARTIAL";
82      }
83  
84      interface ReferencialAction {
85          public static final String CASCADE = "CASCADE";
86          public static final String SET_NULL = "SET NULL";
87          public static final String SET_DEFAULT = "SET DEFAULT";
88          public static final String NO_ACTION = "NO ACTION";
89      }
90  
91      // Basic SQL 92 statement start phrases
92      interface StatementStartPhrases {
93          public static final String[] STMT_CREATE_SCHEMA = {CREATE, SCHEMA};
94          public static final String[] STMT_CREATE_TABLE = {CREATE, TABLE}; // { GLOBAL | LOCAL } TEMPORARY ] TABLE
95          public static final String[] STMT_CREATE_GLOBAL_TEMPORARY_TABLE = {CREATE, "GLOBAL", "TEMPORARY", TABLE};
96          public static final String[] STMT_CREATE_LOCAL_TEMPORARY_TABLE = {CREATE, "LOCAL", "TEMPORARY", TABLE};
97          public static final String[] STMT_CREATE_VIEW = {CREATE, VIEW};
98          public static final String[] STMT_CREATE_OR_REPLACE_VIEW = {CREATE, "OR", "REPLACE", VIEW};
99          public static final String[] STMT_CREATE_ASSERTION = {CREATE, "ASSERTION"};
100         public static final String[] STMT_CREATE_CHARACTER_SET = {CREATE, "CHARACTER", SET};
101         public static final String[] STMT_CREATE_COLLATION = {CREATE, "COLLATION"};
102         public static final String[] STMT_CREATE_DOMAIN = {CREATE, "DOMAIN"};
103         public static final String[] STMT_CREATE_TRANSLATION = {CREATE, "TRANSLATION"};
104         public static final String[] STMT_ALTER_TABLE = {ALTER, TABLE};
105         public static final String[] STMT_ALTER_DOMAIN = {ALTER, "DOMAIN"};
106         public static final String[] STMT_GRANT = {GRANT};
107         public static final String[] STMT_REVOKE = {REVOKE};
108         public static final String[] STMT_DROP_SCHEMA = {DROP, SCHEMA};
109         public static final String[] STMT_DROP_TABLE = {DROP, TABLE};
110         public static final String[] STMT_DROP_VIEW = {DROP, VIEW};
111         public static final String[] STMT_DROP_DOMAIN = {DROP, "DOMAIN"};
112         public static final String[] STMT_DROP_CHARACTER_SET = {DROP, "CHARACTER", SET};
113         public static final String[] STMT_DROP_COLLATION = {DROP, "COLLATION"};
114         public static final String[] STMT_DROP_TRANSLATION = {DROP, "TRANSLATION"};
115         public static final String[] STMT_DROP_ASSERTION = {DROP, "ASSERTION"};
116         public static final String[] STMT_INSERT_INTO = {"INSERT", "INTO"};
117         public static final String[] STMT_SET_DEFINE = {"SET", "DEFINE"};
118 
119         public final static String[][] SQL_92_ALL_PHRASES = {STMT_CREATE_SCHEMA, STMT_CREATE_TABLE,
120             STMT_CREATE_GLOBAL_TEMPORARY_TABLE, STMT_CREATE_LOCAL_TEMPORARY_TABLE, STMT_CREATE_VIEW, STMT_CREATE_OR_REPLACE_VIEW,
121             STMT_CREATE_ASSERTION, STMT_CREATE_CHARACTER_SET, STMT_CREATE_COLLATION, STMT_CREATE_TRANSLATION, STMT_CREATE_DOMAIN,
122             STMT_ALTER_TABLE, STMT_ALTER_DOMAIN, STMT_GRANT, STMT_REVOKE, STMT_DROP_SCHEMA, STMT_DROP_TABLE, STMT_DROP_VIEW,
123             STMT_DROP_DOMAIN, STMT_DROP_CHARACTER_SET, STMT_DROP_COLLATION, STMT_DROP_TRANSLATION, STMT_DROP_ASSERTION,
124             STMT_INSERT_INTO, STMT_SET_DEFINE};
125 
126         // <schema definition>
127         // | <table definition>
128         // | <view definition>
129         // | <grant statement>
130         // | <domain definition>
131         // | <character set definition>
132         // | <collation definition>
133         // | <translation definition>
134         // | <assertion definition>
135         public final static Name[] VALID_SCHEMA_CHILD_TYPES = {StandardDdlLexicon.TYPE_CREATE_TABLE_STATEMENT,
136             StandardDdlLexicon.TYPE_CREATE_VIEW_STATEMENT, StandardDdlLexicon.TYPE_GRANT_ON_TABLE_STATEMENT,
137             StandardDdlLexicon.TYPE_GRANT_ON_DOMAIN_STATEMENT, StandardDdlLexicon.TYPE_GRANT_ON_TRANSLATION_STATEMENT,
138             StandardDdlLexicon.TYPE_GRANT_ON_COLLATION_STATEMENT, StandardDdlLexicon.TYPE_GRANT_ON_CHARACTER_SET_STATEMENT,
139             StandardDdlLexicon.TYPE_CREATE_DOMAIN_STATEMENT, StandardDdlLexicon.TYPE_CREATE_CHARACTER_SET_STATEMENT,
140             StandardDdlLexicon.TYPE_CREATE_COLLATION_STATEMENT, StandardDdlLexicon.TYPE_CREATE_TRANSLATION_STATEMENT,
141             StandardDdlLexicon.TYPE_CREATE_ASSERTION_STATEMENT};
142     }
143 
144     /**
145      * Constants related to Data Types
146      */
147     interface DataTypes {
148         public static final int DTYPE_CODE_ANY = -1;
149         public static final int DTYPE_CODE_CHAR_STRING = 0;
150         public static final int DTYPE_CODE_NCHAR_STRING = 1;
151         public static final int DTYPE_CODE_BIT_STRING = 2;
152         public static final int DTYPE_CODE_EXACT_NUMERIC = 3;
153         public static final int DTYPE_CODE_APROX_NUMERIC = 4;
154         public static final int DTYPE_CODE_DATE_TIME = 5;
155         public static final int DTYPE_CODE_MISC = 6;
156         public static final int DTYPE_CODE_CUSTOM = 7;
157 
158         // CHAR
159         public static final String[] DTYPE_CHARACTER = {"CHARACTER"};
160         public static final String[] DTYPE_CHAR = {"CHAR"};
161         public static final String[] DTYPE_CHARACTER_VARYING = {"CHARACTER", "VARYING"};
162         public static final String[] DTYPE_CHAR_VARYING = {"CHAR", "VARYING"};
163         public static final String[] DTYPE_VARCHAR = {"VARCHAR"};
164         // NATIONAL CHAR
165         public static final String[] DTYPE_NATIONAL_CHARACTER = {"NATIONAL", "CHARACTER"};
166         public static final String[] DTYPE_NATIONAL_CHAR = {"NATIONAL", "CHAR"};
167         public static final String[] DTYPE_NATIONAL_CHARACTER_VARYING = {"NATIONAL", "CHARACTER", "VARYING"};
168         public static final String[] DTYPE_NATIONAL_CHAR_VARYING = {"NATIONAL", "CHAR", "VARYING"};
169         public static final String[] DTYPE_NCHAR_VARYING = {"NCHAR", "VARYING"};
170         public static final String[] DTYPE_NCHAR = {"NCHAR"};
171         // BIT STRING
172         public static final String[] DTYPE_BIT = {"BIT"};
173         public static final String[] DTYPE_BIT_VARYING = {"BIT", "VARYING"};
174         // EXACT NUMERIC
175         public static final String[] DTYPE_NUMERIC = {"NUMERIC"};
176         public static final String[] DTYPE_DEC = {"DEC"};
177         public static final String[] DTYPE_DECIMAL = {"DECIMAL"};
178         public static final String[] DTYPE_INTEGER = {"INTEGER"};
179         public static final String[] DTYPE_INT = {"INT"};
180         public static final String[] DTYPE_SMALLINT = {"SMALLINT"};
181         // APPROXIMATE NUMERIC
182         public static final String[] DTYPE_FLOAT = {"FLOAT"};
183         public static final String[] DTYPE_REAL = {"REAL"};
184         public static final String[] DTYPE_DOUBLE_PRECISION = {"DOUBLE", "PRECISION"};
185         // DATE-TIME
186         public static final String[] DTYPE_DATE = {"DATE"};
187         public static final String[] DTYPE_TIME = {"TIME"};
188         public static final String[] DTYPE_TIMESTAMP = {"TIMESTAMP"};
189         // INTERVAL
190         public static final String[] DTYPE_INTERVAL = {"INTERVAL"};
191 
192         public final static List<String> DATATYPE_START_WORDS = Arrays.asList(new String[] {"CHAR", "CHARACTER", "VARCHAR",
193             "NATIONAL", "NCHAR", "BIT", "NUMERIC", "DEC", "DECIMAL", "INT", "INTEGER", "SMALLINT", "FLOAT", "REAL", "DOUBLE",
194             "DATE", "TIME", "TIMESTAMP", "INTERVAL"});
195     }
196 
197     @SuppressWarnings( "nls" )
198     public final static String[] SQL_92_RESERVED_WORDS = {"ABSOLUTE", "ACTION", "ADD", "ALL", "ALLOCATE", ALTER, "AND", "ANY",
199         "ARE", "AS", "ASC", "ASSERTION", "AT", "AUTHORIZATION", "AVG", "BEGIN", "BETWEEN", "BIT", "BIT_LENGTH", "BOTH", "BY",
200         "CASCADE", "CASCADED", "CASE", "CAST", "CATALOG", "CHAR", "CHARACTER", "CHAR_LENGTH", "CHARACTER_LENGTH", CHECK, "CLOSE",
201         "COALESCE", "COLLATE", "COLLATION", COLUMN, "COMMIT", "CONNECT", "CONNECTION", CONSTRAINT, "CONSTRAINTS", "CONTINUE",
202         "CONVERT", "CORRESPONDING", "COUNT", CREATE, "CROSS", "CURRENT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP",
203         "CURRENT_USER", "CURSOR", "DATE", "DAY", "DEALLOCATE", "DEC", "DECIMAL", DECLARE, "DEFAULT", "DEFERRABLE", "DEFERRED",
204         "DELETE", "DESC", "DESCRIBE", "DESCRIPTOR", "DIAGNOSTICS", "DISCONNECT", "DISTINCT", "DOMAIN", "DOUBLE", DROP, "ELSE",
205         "END", "END_EXEC", "ESCAPE", "EXCEPT", "EXCEPTION", "EXEC", "EXECUTE", "EXISTS", "EXTERNAL", "EXTRACT", "FALSE", "FETCH",
206         "FIRST", "FLOAT", "FOR", FOREIGN, "FOUND", "FROM", "FULL", "GET", "GLOBAL", "GO", "GOTO", GRANT, "GROUP", "HAVING",
207         "HOUR", "IDENTITY", "IMMEDIATE", "IN", "INDICATOR", "INITIALLY", "INNER", "INPUT", "INSENSITIVE", INSERT, "INT",
208         "INTEGER", "INTERSECT", "INTERVAL", "INTO", "IS", "ISOLATION", "JOIN", KEY, "LANGUAGE", "LAST", "LEADING", "LEFT",
209         "LEVEL", "LIKE", "LOCAL", "LOWER", "MATCH", "MAX", "MIN", "MINUTE", "MODULE", "MONTH", "NAMES", "NATIONAL", "NATURAL",
210         "NCHAR", "NEXT", "NO", "NOT", "NULL", "NULLIF", "NUMERIC", "OCTET_LENGTH", "OF", ON, "ONLY", "OPEN", "OPTION", "OR",
211         "ORDER", "OUTER", "OUTPUT", "OVERLAPS", "PAD", "PARTIAL", "POSITION", "PRECISION", "PREPARE", "PRESERVE", PRIMARY,
212         "PRIOR", "PRIVILEGES", "PROCEDURE", "PUBLIC", "READ", "REAL", "REFERENCES", "RELATIVE", "RESTRICT", "REVOKE", "RIGHT",
213         "ROLLBACK", "ROWS", SCHEMA, "SCROLL", "SECOND", "SECTION", "SELECT", "SESSION", "SESSION_USER", SET, "SIZE", "SMALLINT",
214         "SOME", "SPACE", "SQL", "SQLCODE", "SQLERROR", "SQLSTATE", "SUBSTRING", "SUM", "SYSTEM_USER", TABLE, "TEMPORARY", "THEN",
215         "TIME", "TIMESTAMP", "TIMEZONE_HOUR", "TIMEZONE_MINUTE", "TO", "TRAILING", "TRANSACTION", "TRANSLATE", "TRANSLATION",
216         "TRIM", "TRUE", "UNION", UNIQUE, "UNKNOWN", "UPDATE", "UPPER", "USAGE", "USER", "USING", "VALUE", "VALUES", "VARCHAR",
217         "VARYING", VIEW, "WHEN", "WHENEVER", "WHERE", "WITH", "WORK", "WRITE", "YEAR", "ZONE"};
218 
219     interface Problems {
220         public static final int OK = 0;
221         public static final int WARNING = 1;
222         public static final int ERROR = 2;
223     }
224 
225     interface AstNodeNames {
226         public static final String TABLE_DEFINITION = "TABLE_DEFINITION";
227         public static final String ALTER_TABLE_DEFINITION = "ALTER_TABLE_DEFINITION";
228         public static final String COLUMN_DEFINITION = "COLUMN_DEFINITION";
229         public static final String COLUMN_REFERENCE = "COLUMN_REFERENCE";
230         public static final String TABLE_CONSTRAINT = "TABLE_CONSTRAINT";
231         // public static final String TABLE_OPTION = "TABLE_OPTION";
232         public static final String ADD_COLUMN_DEFINITION = "ADD_COLUMN_DEFINITION";
233         public static final String ADD_TABLE_CONSTRAINT = "ADD_TABLE_CONSTRAINT";
234         public static final String DROP_COLUMN_DEFINITION = "DROP_COLUMN_DEFINITION";
235         public static final String DROP_TABLE_CONSTRAINT = "DROP_TABLE_CONSTRAINT";
236         public static final String ALTER_COLUMN_DEFINITION = "ALTER_COLUMN_DEFINITION";
237 
238     }
239 }