/*
* 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 liquibase.database.core;
import liquibase.database.AbstractDatabase;
import liquibase.database.DatabaseConnection;
import liquibase.exception.DatabaseException;
import java.math.BigInteger;
/**
* Liquibase Cubrid Database driver.
*
* @author Matt
* @author JunHo Yoon
* @since 3.0
*/
public class CUBRIDDatabase extends AbstractDatabase {
public static final String PRODUCT_NAME = "cubrid";
/*
* (non-Javadoc)
*
* @see liquibase.database.Database#getDefaultDriver(java.lang.String)
*/
@Override
public String getDefaultDriver(String url) {
if (url.startsWith("jdbc:CUBRID")) {
return "cubrid.jdbc.driver.CUBRIDDriver";
}
return null;
}
/*
* (non-Javadoc)
*
* @see liquibase.servicelocator.PrioritizedService#getPriority()
*/
@Override
public int getPriority() {
return PRIORITY_DEFAULT;
}
/*
* (non-Javadoc)
*
* @see
* liquibase.database.Database#isCorrectDatabaseImplementation(liquibase
* .database.DatabaseConnection )
*/
@Override
public boolean isCorrectDatabaseImplementation(DatabaseConnection conn) throws DatabaseException {
return PRODUCT_NAME.equalsIgnoreCase(conn.getDatabaseProductName());
}
/*
* (non-Javadoc)
*
* @see liquibase.database.AbstractDatabase#supportsSequences()
*/
@Override
public boolean supportsSequences() {
return false;
}
/*
* (non-Javadoc)
*
* @see liquibase.database.Database#supportsInitiallyDeferrableColumns()
*/
@Override
public boolean supportsInitiallyDeferrableColumns() {
return false;
}
/*
* (non-Javadoc)
*
* @see liquibase.database.Database#getCurrentDateTimeFunction()
*/
@Override
public String getCurrentDateTimeFunction() {
if (currentDateTimeFunction != null) {
return currentDateTimeFunction;
}
return "NOW()";
}
/*
* (non-Javadoc)
*
* @see liquibase.database.AbstractDatabase#getLineComment()
*/
@Override
public String getLineComment() {
return "-- ";
}
/*
* (non-Javadoc)
*
* @see liquibase.database.AbstractDatabase#getAutoIncrementClause()
*/
@Override
protected String getAutoIncrementClause() {
return "AUTO_INCREMENT";
}
/*
* (non-Javadoc)
*
* @see
* liquibase.database.AbstractDatabase#generateAutoIncrementBy(java.math
* .BigInteger)
*/
@Override
protected boolean generateAutoIncrementBy(BigInteger incrementBy) {
return false;
}
/*
* (non-Javadoc)
*
* @see liquibase.database.AbstractDatabase#getAutoIncrementOpening()
*/
@Override
protected String getAutoIncrementOpening() {
return "";
}
/*
* (non-Javadoc)
*
* @see liquibase.database.AbstractDatabase#getAutoIncrementClosing()
*/
@Override
protected String getAutoIncrementClosing() {
return "";
}
/*
* (non-Javadoc)
*
* @see
* liquibase.database.AbstractDatabase#getAutoIncrementStartWithClause()
*/
@Override
protected String getAutoIncrementStartWithClause() {
return "=%d";
}
/*
* (non-Javadoc)
*
* @see liquibase.database.AbstractDatabase#getConcatSql(java.lang.String[])
*/
@Override
public String getConcatSql(String... values) {
StringBuffer returnString = new StringBuffer();
returnString.append("CONCAT_WS(");
for (String value : values) {
returnString.append(value).append(", ");
}
return returnString.toString().replaceFirst(", $", ")");
}
/*
* (non-Javadoc)
*
* @see liquibase.database.Database#supportsTablespaces()
*/
@Override
public boolean supportsTablespaces() {
return false;
}
/*
* (non-Javadoc)
*
* @see liquibase.database.AbstractDatabase#getDefaultDatabaseSchemaName()
*/
@Override
protected String getDefaultDatabaseSchemaName() throws DatabaseException {
return getConnection().getCatalog();
}
/*
* (non-Javadoc)
*
* @see
* liquibase.database.AbstractDatabase#convertRequestedSchemaToSchema(java
* .lang.String)
*/
@Override
public String convertRequestedSchemaToSchema(String requestedSchema) throws DatabaseException {
if (requestedSchema == null) {
return getDefaultDatabaseSchemaName();
}
return requestedSchema;
}
/*
* (non-Javadoc)
*
* @see
* liquibase.database.AbstractDatabase#convertRequestedSchemaToCatalog(java
* .lang.String)
*/
@Override
public String convertRequestedSchemaToCatalog(String requestedSchema) throws DatabaseException {
return requestedSchema;
}
/*
* (non-Javadoc)
*
* @see
* liquibase.database.AbstractDatabase#escapeDatabaseObject(java.lang.String
* )
*/
@Override
public String escapeDatabaseObject(String objectName) {
return "`" + objectName + "`";
}
/*
* (non-Javadoc)
*
* @see
* liquibase.database.AbstractDatabase#escapeIndexName(java.lang.String,
* java.lang.String)
*/
@Override
public String escapeIndexName(String schemaName, String indexName) {
return escapeDatabaseObject(indexName);
}
/*
* (non-Javadoc)
*
* @see liquibase.database.AbstractDatabase#supportsForeignKeyDisable()
*/
@Override
public boolean supportsForeignKeyDisable() {
return false;
}
/*
* (non-Javadoc)
*
* @see liquibase.database.AbstractDatabase#disableForeignKeyChecks()
*/
@Override
public boolean disableForeignKeyChecks() throws DatabaseException {
return false;
}
/*
* (non-Javadoc)
*
* @see liquibase.database.AbstractDatabase#enableForeignKeyChecks()
*/
@Override
public void enableForeignKeyChecks() {
}
/*
* (non-Javadoc)
*
* @see liquibase.database.Database#getTypeName()
*/
public String getTypeName() {
return "cubrid";
}
}