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

jetbrick.dao.dialect.supports.OracleDialect Maven / Gradle / Ivy

There is a newer version: 2.0
Show newest version
/**
 * Copyright 2013-2014 Guoqiang Chen, Shanghai, China. All rights reserved.
 *
 * Email: [email protected]
 * URL: http://subchen.github.io/
 *
 * Licensed 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 jetbrick.dao.dialect.supports;

import jetbrick.dao.dialect.*;

public class OracleDialect extends SqlDialect {
    public static final String NAME = "Oracle";

    @Override
    protected String getQuotedIdentifier(String name) {
        return "\"" + name + "\"";
    }

    @Override
    public String sql_table_drop(String table) {
        return String.format("drop table %s;", getIdentifier(table));
    }

    @Override
    public String sql_table_rename(String oldName, String newName) {
        oldName = getIdentifier(oldName);
        newName = getIdentifier(newName);
        return "alter table  " + oldName + " rename to " + newName + ";";
    }

    @Override
    public String sql_column_add(String table, String column_definition, String column_position) {
        return String.format("alter table %s add column %s;", getIdentifier(table), column_definition);
    }

    @Override
    public String sql_column_modify(String table, String column_definition, String column_positions) {
        return String.format("alter table %s alter column %s;", getIdentifier(table), column_definition);
    }

    @Override
    public String sql_column_drop(String table, String column) {
        return String.format("alter table %s drop column %s;", getIdentifier(table), getIdentifier(column));
    }

    @Override
    public String sql_pagelist(String sql, int offset, int limit) {
        //@formatter:off
        sql = "select * from ("
            + "  select t.*, ROWNUM row from ("
            +      sql
            + "  ) t where ROWNUM <= " + (offset + limit) + ")";
        //@formatter:on
        if (offset > 0) {
            sql = sql + " where row > " + offset;
        }
        return sql;
    }

    @Override
    public String getHibernateDialect() {
        return "org.hibernate.dialect.OracleDialect";
    }

    @Override
    public String asSqlType(String type, Integer length, Integer scale) {
        if (SubStyleType.CHAR.equals(type)) {
            return new SqlType("nchar", length, null).toString();
        } else if (SubStyleType.VARCHAR.equals(type)) {
            return new SqlType("nvarchar2", length, null).toString();
        } else if (SubStyleType.TEXT.equals(type)) {
            return "nclob";
        } else if (SubStyleType.BOOLEAN.equals(type)) {
            return "number(1)";
        } else if (SubStyleType.INT.equals(type)) {
            return "number(10)";
        } else if (SubStyleType.LONG.equals(type)) {
            return "number(20, 0)";
        } else if (SubStyleType.BIGINT.equals(type)) {
            return "number(38, 0)";
        } else if (SubStyleType.DOUBLE.equals(type)) {
            return "number(38,10)";
        } else if (SubStyleType.DECIMAL.equals(type)) {
            return new SqlType("number", length, scale).toString();
        } else if (SubStyleType.DATETIME.equals(type)) {
            return "date";
        } else if (SubStyleType.TIMESTAMP.equals(type)) {
            return "date";
        } else if (SubStyleType.DATE.equals(type)) {
            return "date";
        } else if (SubStyleType.TIME.equals(type)) {
            return "date";
        } else if (SubStyleType.CLOB.equals(type)) {
            return "nclob";
        } else if (SubStyleType.INPUTSTREAM.equals(type)) {
            return "blob";
        }
        return super.asSqlType(type, length, scale);
    }

    @Override
    protected void initializeReservedWords() {
        reservedWords.add("ACCESS");
        reservedWords.add("ADD");
        reservedWords.add("ALL");
        reservedWords.add("ALTER");
        reservedWords.add("AND");
        reservedWords.add("ANY");
        reservedWords.add("AS");
        reservedWords.add("ASC");
        reservedWords.add("AUDIT");
        reservedWords.add("BETWEEN");
        reservedWords.add("BY");
        reservedWords.add("CHAR");
        reservedWords.add("CHECK");
        reservedWords.add("CLUSTER");
        reservedWords.add("COLUMN");
        reservedWords.add("COMMENT");
        reservedWords.add("COMPRESS");
        reservedWords.add("CONNECT");
        reservedWords.add("CREATE");
        reservedWords.add("CURRENT");
        reservedWords.add("DATE");
        reservedWords.add("DECIMAL");
        reservedWords.add("DEFAULT");
        reservedWords.add("DELETE");
        reservedWords.add("DESC");
        reservedWords.add("DISTINCT");
        reservedWords.add("DROP");
        reservedWords.add("ELSE");
        reservedWords.add("EXCLUSIVE");
        reservedWords.add("EXISTS");
        reservedWords.add("FILE");
        reservedWords.add("FLOAT");
        reservedWords.add("FOR");
        reservedWords.add("FROM");
        reservedWords.add("GRANT");
        reservedWords.add("GROUP");
        reservedWords.add("HAVING");
        reservedWords.add("IDENTIFIED");
        reservedWords.add("IMMEDIATE");
        reservedWords.add("IN");
        reservedWords.add("INCREMENT");
        reservedWords.add("INDEX");
        reservedWords.add("INITIAL");
        reservedWords.add("INSERT");
        reservedWords.add("INTEGER");
        reservedWords.add("INTERSECT");
        reservedWords.add("INTO");
        reservedWords.add("IS");
        reservedWords.add("LEVEL");
        reservedWords.add("LIKE");
        reservedWords.add("LOCK");
        reservedWords.add("LONG");
        reservedWords.add("MAXEXTENTS");
        reservedWords.add("MINUS");
        reservedWords.add("MLSLABEL");
        reservedWords.add("MODE");
        reservedWords.add("MODIFY");
        reservedWords.add("NOAUDIT");
        reservedWords.add("NOCOMPRESS");
        reservedWords.add("NOT");
        reservedWords.add("NOWAIT");
        reservedWords.add("NULL");
        reservedWords.add("NUMBER");
        reservedWords.add("OF");
        reservedWords.add("OFFLINE");
        reservedWords.add("ON");
        reservedWords.add("ONLINE");
        reservedWords.add("OPTION");
        reservedWords.add("OR");
        reservedWords.add("ORDER");
        reservedWords.add("PCTFREE");
        reservedWords.add("PRIOR");
        reservedWords.add("PRIVILEGES");
        reservedWords.add("PUBLIC");
        reservedWords.add("RAW");
        reservedWords.add("RENAME");
        reservedWords.add("RESOURCE");
        reservedWords.add("REVOKE");
        reservedWords.add("ROW");
        reservedWords.add("ROWID");
        reservedWords.add("ROWNUM");
        reservedWords.add("ROWS");
        reservedWords.add("SELECT");
        reservedWords.add("SESSION");
        reservedWords.add("SET");
        reservedWords.add("SHARE");
        reservedWords.add("SIZE");
        reservedWords.add("SMALLINT");
        reservedWords.add("START");
        reservedWords.add("SUCCESSFUL");
        reservedWords.add("SYNONYM");
        reservedWords.add("SYSDATE");
        reservedWords.add("TABLE");
        reservedWords.add("THEN");
        reservedWords.add("TO");
        reservedWords.add("TRIGGER");
        reservedWords.add("UID");
        reservedWords.add("UNION");
        reservedWords.add("UNIQUE");
        reservedWords.add("UPDATE");
        reservedWords.add("USER");
        reservedWords.add("VALIDATE");
        reservedWords.add("VALUES");
        reservedWords.add("VARCHAR");
        reservedWords.add("VARCHAR2");
        reservedWords.add("VIEW");
        reservedWords.add("WHENEVER");
        reservedWords.add("WHERE");
        reservedWords.add("WITH");
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy