001/* 002 * ModeShape (http://www.modeshape.org) 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package org.modeshape.sequencer.ddl.dialect.derby; 017 018import java.util.Arrays; 019import java.util.List; 020import org.modeshape.sequencer.ddl.DdlConstants; 021import org.modeshape.sequencer.ddl.StandardDdlLexicon; 022 023/** 024 * @author blafond 025 */ 026public interface DerbyDdlConstants extends DdlConstants { 027 public static final String[] CUSTOM_KEYWORDS = {"TRIGGER", "SYNOMYM", "LOCK", "ISOLATION", "SQLID", INDEX, "RENAME", 028 "DECLARE", "RESTART", "LOCKSIZE", "INCREMENT", "GENERATED", "ALWAYS", "BIGINT", "CLOB", "BLOB", "EXCLUSIVE", 029 "REFERENCING"}; 030 031 interface DerbyStatementStartPhrases { 032 033 static final String[][] ALTER_PHRASES = {}; 034 035 static final String[] STMT_CREATE_FUNCTION = {CREATE, "FUNCTION"}; 036 static final String[] STMT_CREATE_INDEX = {CREATE, "INDEX"}; 037 static final String[] STMT_CREATE_UNIQUE_INDEX = {CREATE, "UNIQUE", INDEX}; 038 static final String[] STMT_CREATE_PROCEDURE = {CREATE, "PROCEDURE"}; 039 static final String[] STMT_CREATE_ROLE = {CREATE, "ROLE"}; 040 static final String[] STMT_CREATE_SYNONYM = {CREATE, "SYNONYM"}; 041 static final String[] STMT_CREATE_TRIGGER = {CREATE, "TRIGGER"}; 042 043 static final String[][] CREATE_PHRASES = {STMT_CREATE_FUNCTION, STMT_CREATE_INDEX, STMT_CREATE_UNIQUE_INDEX, 044 STMT_CREATE_PROCEDURE, STMT_CREATE_ROLE, STMT_CREATE_SYNONYM, STMT_CREATE_TRIGGER}; 045 046 static final String[] STMT_DECLARE_GLOBAL_TEMP_TABLE = {"DECLARE", "GLOBAL", "TEMPORARY", "TABLE"}; 047 static final String[] STMT_DROP_FUNCTION = {DROP, "FUNCTION"}; 048 static final String[] STMT_DROP_INDEX = {DROP, "INDEX"}; 049 static final String[] STMT_DROP_PROCEDURE = {DROP, "PROCEDURE"}; 050 static final String[] STMT_DROP_ROLE = {DROP, "ROLE"}; 051 static final String[] STMT_DROP_SYNONYM = {DROP, "SYNONYM"}; 052 static final String[] STMT_DROP_TRIGGER = {DROP, "TRIGGER"}; 053 054 static final String[][] DROP_PHRASES = {STMT_DROP_FUNCTION, STMT_DROP_INDEX, STMT_DROP_PROCEDURE, STMT_DROP_ROLE, 055 STMT_DROP_SYNONYM, STMT_DROP_TRIGGER}; 056 057 static final String[] STMT_LOCK_TABLE = {"LOCK", TABLE}; 058 static final String[] STMT_RENAME_TABLE = {"RENAME", TABLE}; 059 static final String[] STMT_RENAME_INDEX = {"RENAME", INDEX}; 060 061 static final String[] STMT_SET_ISOLATION = {SET, "ISOLATION"}; 062 static final String[] STMT_SET_CURRENT_ISOLATION = {SET, "CURRENT", "ISOLATION"}; 063 static final String[] STMT_SET_ROLE = {SET, "ROLE"}; 064 static final String[] STMT_SET_SCHEMA = {SET, "SCHEMA"}; 065 static final String[] STMT_SET_CURRENT_SCHEMA = {SET, "CURRENT", SCHEMA}; 066 static final String[] STMT_SET_CURRENT_SQLID = {SET, "CURRENT", "SQLID"}; 067 068 static final String[][] SET_PHRASES = {STMT_SET_ISOLATION, STMT_SET_CURRENT_ISOLATION, STMT_SET_ROLE, STMT_SET_SCHEMA, 069 STMT_SET_CURRENT_SCHEMA, STMT_SET_CURRENT_SQLID}; 070 071 static final String[][] MISC_PHRASES = {STMT_LOCK_TABLE, STMT_RENAME_TABLE, STMT_RENAME_INDEX, 072 STMT_DECLARE_GLOBAL_TEMP_TABLE}; 073 074 // COULD NOT FIND ACTUAL REFERENCE... assuming the following.... 075 076 public final static String[] VALID_SCHEMA_CHILD_STMTS = {StandardDdlLexicon.TYPE_CREATE_TABLE_STATEMENT, 077 StandardDdlLexicon.TYPE_CREATE_VIEW_STATEMENT, StandardDdlLexicon.TYPE_GRANT_ON_TABLE_STATEMENT}; 078 } 079 080 interface DerbyDataTypes { 081 static final String[] DTYPE_BIGINT = {"BIGINT"}; 082 static final String[] DTYPE_LONG_VARCHAR = {"LONG", "VARCHAR"}; 083 static final String[] DTYPE_LONG_VARCHAR_FBD = {"LONG", "VARCHAR", "FOR", "BIT", "DATA"}; 084 085 static final String[] DTYPE_DOUBLE = {"DOUBLE"}; 086 static final String[] DTYPE_XML = {"XML"}; 087 static final String[] DTYPE_CLOB = {"CLOB"}; // CLOB [ ( length [{K |M |G }] ) ] 088 static final String[] DTYPE_CHARACTER_LARGE_OBJECT = {"CHARACTER", "LARGE", "OBJECT"}; // [ ( length [{K |M |G }] ) ] 089 static final String[] DTYPE_BLOB = {"BLOB"}; // BLOB [ ( length [{K |M |G }] ) ] 090 static final String[] DTYPE_BINARY_LARGE_OBJECT = {"BINARY", "LARGE", "OBJECT"}; // [ ( length [{K |M |G }] ) ] 091 092 static final List<String[]> CUSTOM_DATATYPE_START_PHRASES = Arrays.asList(DTYPE_BIGINT, 093 DTYPE_LONG_VARCHAR, 094 DTYPE_LONG_VARCHAR_FBD, 095 DTYPE_DOUBLE, 096 DTYPE_XML, 097 DTYPE_CLOB, 098 DTYPE_CHARACTER_LARGE_OBJECT, 099 DTYPE_BLOB, 100 DTYPE_BINARY_LARGE_OBJECT); 101 102 static final List<String> CUSTOM_DATATYPE_START_WORDS = Arrays.asList("BIGINT", 103 "LONG", 104 "DOUBLE", 105 "XML", 106 "CLOB", 107 "CHARACTER", 108 "BLOB", 109 "BINARY"); 110 } 111}