com.bstek.bdf2.core.orm.jdbc.dialect.AbstractDialect.java Source code

Java tutorial

Introduction

Here is the source code for com.bstek.bdf2.core.orm.jdbc.dialect.AbstractDialect.java

Source

/*
 * This file is part of BDF
 * BDF,Bstek Development Framework
 * Copyright 2002-2012, BSTEK
 * Dual licensed under the Bstek Commercial or GPL Version 2 licenses.
 * http://www.bstek.com/
 */
package com.bstek.bdf2.core.orm.jdbc.dialect;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.util.List;

import org.apache.commons.lang.StringUtils;

/**
 * @since 2013-1-17
 * @author Jacky.gao
 */
public abstract class AbstractDialect implements IDialect {
    /**
     * ???
     * @param connection ?
     * @param dbProductName ???
     * @param dbMajorVersion ??
     * @return ?????
     */
    public boolean support(Connection connection, String dbProductName, String dbMajorVersion) {
        try {
            DatabaseMetaData databaseMetaData = connection.getMetaData();
            String databaseProductName = databaseMetaData.getDatabaseProductName();
            int databaseMajorVersion = databaseMetaData.getDatabaseMajorVersion();
            boolean containsMysql = StringUtils.containsIgnoreCase(databaseProductName, dbProductName);
            if (StringUtils.isNotEmpty(dbMajorVersion)) {
                return containsMysql && Integer.valueOf(dbMajorVersion) == databaseMajorVersion;
            }
            return containsMysql;
        } catch (SQLException e) {
            return false;
        }
    }

    public String getCreateDefaultTableSql(String tableName) {
        return " CREATE TABLE " + tableName + " (ID_ VARCHAR(50) NOT NULL, PRIMARY KEY (ID_))";
    }

    public String generateColumnTypeSql(String columnType, String columnSize) {
        StringBuilder cType = new StringBuilder(" ");
        if (StringUtils.isEmpty(columnSize)) {
            cType.append(columnType);
        } else {
            String[] cs = columnSize.split(",");
            if (cs.length == 2) {
                cType.append(columnType + "(" + cs[0] + "," + cs[1] + ")");
            } else if (cs.length == 1) {
                cType.append(columnType + "(" + cs[0] + ")");
            }
        }
        cType.append(" ");
        return cType.toString();
    }

    public String generateAlertPrimaryKeySql(String tableName, List<String> primaryKeys) {
        StringBuilder sb = new StringBuilder();
        StringBuilder sql = new StringBuilder(" ");
        if (primaryKeys == null) {
            return sb.toString();
        }
        int i = 1;
        for (String s : primaryKeys) {
            if (primaryKeys.size() == i) {
                sb.append(s);
            } else {
                sb.append(s + ",");
            }
            i++;
        }
        if (primaryKeys.size() > 0) {
            sql.append(" ALTER TABLE ");
            sql.append(tableName);
            sql.append(" ADD CONSTRAINT PK_");
            sql.append(tableName);
            sql.append(" PRIMARY KEY (" + sb + ")");
        }
        return sql.toString();
    }

}