/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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 ro.nextreports.engine.querybuilder.sql.dialect; import java.sql.Types; import ro.nextreports.engine.util.ProcUtil; /** * Created by IntelliJ IDEA. * User: mihai.panaitescu * Date: Jul 3, 2006 * Time: 4:56:38 PM */ public class MSSQLDialect extends AbstractDialect { public MSSQLDialect() { super(); registerColumnType("bit", Types.BIT); registerColumnType("bigint", Types.BIGINT); registerColumnType("bigint identity", Types.BIGINT); registerColumnType("smallint", Types.SMALLINT); registerColumnType("smallint identity", Types.SMALLINT); registerColumnType("tinyint", Types.TINYINT); registerColumnType("tinyint identity", Types.TINYINT); registerColumnType("int", Types.INTEGER); registerColumnType("int identity", Types.INTEGER); registerColumnType("float", Types.FLOAT); registerColumnType("decimal", Types.DECIMAL); registerColumnType("double", Types.DOUBLE); registerColumnType("real", Types.DOUBLE); registerColumnType("numeric", Types.NUMERIC); registerColumnType("numeric identity", Types.NUMERIC); registerColumnType("uniqueidentifier", Types.CHAR); registerColumnType("char", Types.CHAR); registerColumnType("nchar", Types.CHAR); registerColumnType("varchar", Types.VARCHAR); registerColumnType("nvarchar", Types.VARCHAR); registerColumnType("text", Types.VARCHAR); registerColumnType("ntext", Types.VARCHAR); registerColumnType("date", Types.DATE); registerColumnType("smalldatetime", Types.TIMESTAMP); registerColumnType("datetime", Types.TIMESTAMP); registerColumnType("timestamp", Types.TIMESTAMP); registerColumnType("money", Types.DECIMAL); registerColumnType("smallmoney", Types.DECIMAL); registerColumnType("blob", Types.BLOB); registerColumnType("varbinary", Types.BLOB); registerColumnType("image", Types.BLOB); registerColumnType("clob", Types.CLOB); } public String getCurrentDate() throws DialectException { return "getdate()"; } public String getCurrentDateSelect() { return "select getdate()"; } public String getRecycleBinTablePrefix() { return null; } public String getCursorSqlTypeName() { return ProcUtil.REF_CURSOR; } public int getCursorSqlType() { return Types.OTHER; } @Override public boolean schemaBeforeCatalog() { return false; } public String getSqlChecker() { return "SELECT 1"; } protected void setKeywords() { keywords = new String[] { "ADD", "ALTER", "AND", "ANY", "AS", "ASC", "AUTHORIZATION", "BACKUP", "BEGIN", "BETWEEN", "BREAK", "BROWSE", "BULK", "BY", "CASCADE", "CASE", "CHECK", "CHECKPOINT", "CLOSE", "CLUSTERED", "COALESCE", "COLLATE", "COLUMN", "COMMIT", "COMPUTE", "CONSTRAINT", "CONTAINS", "CONTAINSTABLE", "CONTINUE", "CONVERT", "CREATE", "CROSS", "CURRENT", "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "CURRENT_USER", "CURSOR", "DATABASE", "DBCC", "DEALLOCATE", "DECLARE", "DEFAULT", "DELETE", "DENY", "DESC", "DISK", "DISTINCT", "DISTRIBUTED", "DOUBLE", "DROP", "DUMMY", "DUMP", "ELSE", "END", "ERRLVL", "ESCAPE", "EXCEPT", "EXECUTE", "EXISTS", "EXIT", "FETCH", "FILE", "FILLFACTOR", "FOR", "FOREIGN", "FREETEXT", "FREETEXTTABLE", "FROM", "FULL", "FUNCTION", "GOTO", "GRANT", "GROUP", "HAVING", "HOLDLOCK", "IDENTITY", "IDENTITY_INSERT", "IDENTITYCOL", "IF", "IN", "INDEX", "INNER", "INSERT", "INTERSECT", "INTO", "IS", "JOIN", "KEY", "KILL", "LEFT", "LIKE", "LINENO", "LOAD", "NATIONAL", "NOCHECK", "NONCLUSTERED", "NOT", "NULL", "NULLIF", "OF", "OFF", "OFFSETS", "ON", "OPEN", "OPENDATASOURCE", "OPENQUERY", "OPENROWSET", "OPENXML", "OPTION", "OR", "ORDER", "OUTER", "OVER", "PERCENT", "PLAN", "PRECISION", "PRIMARY", "PRINT", "PROC", "PROCEDURE", "PUBLIC", "RAISERROR", "READ", "READTEXT", "RECONFIGURE", "REFERENCES", "REPLICATION", "RESTORE", "RESTRICT", "RETURN" , "REVOKE", "RIGHT", "ROLLBACK", "ROWCOUNT", "ROWGUIDCOL", "RULE", "SAVE", "SCHEMA", "SELECT", "SESSION_USER", "SET", "SETUSER", "SHUTDOWN", "SOME", "STATISTICS", "SYSTEM_USER", "TABLE", "TEXTSIZE", "THEN", "TO", "TOP", "TRAN", "TRANSACTION", "TRIGGER" ,"TRUNCATE", "TSEQUAL", "UNION", "UNIQUE", "UPDATE", "UPDATETEXT", "USE", "USER", "VALUES", "VARYING", "VIEW", "WAITFOR", "WHEN", "WHERE", "WHILE", "WITH", "WRITETEXT" }; } public String getEscapedKeyWord(String keyword) { if (keyword == null) { throw new IllegalArgumentException("Keyword cannot be null!"); } return "[" + keyword + "]"; } }