
org.skyway.spring.util.dao.call.DatabaseObjectName Maven / Gradle / Ivy
The newest version!
/**
* Copyright 2007 - 2011 Skyway Software, Inc.
*/
package org.skyway.spring.util.dao.call;
import java.sql.DatabaseMetaData;
import java.sql.SQLException;
public class DatabaseObjectName {
private DatabaseMetaData databaseMetaData;
private String objectName;
private String schemaName;
private String fullName;
public DatabaseObjectName(String fullName, DatabaseMetaData databaseMetaData){
this.databaseMetaData = databaseMetaData;
this.parseName(fullName);
}
public String getIdentifierQuoteString(){
try{
return databaseMetaData.getIdentifierQuoteString();
}catch(SQLException x){
// Assume this means this database does not support quoted identifiers
return null;
}
}
public boolean supportsIdentifierQuoting(){
return getIdentifierQuoteString() != null && getIdentifierQuoteString().length() > 0;
}
public boolean isSchemaNameQuoted(){
return isNameQuoted(schemaName);
}
public boolean isObjectNameQuoted(){
return isNameQuoted(objectName);
}
public String getQuotedSchemaName(){
if (isSchemaNameQuoted()){
return schemaName;
}else{
return quote(schemaName);
}
}
public String getQuotedObjectName(){
if (isObjectNameQuoted()){
return objectName;
}else{
return quote(objectName);
}
}
public String getUnquotedSchemaName(){
if (isSchemaNameQuoted()){
return unquote(schemaName);
}else{
return schemaName;
}
}
public String getUnquotedObjectName(){
if (isObjectNameQuoted()){
return unquote(objectName);
}else{
return objectName;
}
}
public String getRawName(){
return fullName;
}
public String getRawSchemaName(){
return schemaName;
}
public String getRawObjectName(){
return objectName;
}
public String getSchemaName(){
return stored(schemaName);
}
public String getObjectName(){
return stored(objectName);
}
public boolean isNameQuoted(String identifier){
return identifier != null && supportsIdentifierQuoting() ? identifier.startsWith(this.getIdentifierQuoteString()) && identifier.endsWith(getIdentifierQuoteString()) : false;
}
public String unquote(String identifier){
String unquotedIdentifier = null;
if (identifier != null && supportsIdentifierQuoting()){
if (isNameQuoted(identifier)){
unquotedIdentifier = identifier.substring(getIdentifierQuoteString().length(), identifier.length() - getIdentifierQuoteString().length());
}
}
return unquotedIdentifier != null ? unquotedIdentifier : identifier;
}
public String quote(String identifier){
String unquotedIdentifier = null;
if (identifier != null && supportsIdentifierQuoting()){
if (!isNameQuoted(identifier)){
unquotedIdentifier = new StringBuilder().append(getIdentifierQuoteString()).append(identifier).append(getIdentifierQuoteString()).toString();
}
}
return unquotedIdentifier != null ? unquotedIdentifier : identifier;
}
public String stored(String identifier){
String storedIdentifier = null;
if (identifier != null){
try{
if (isNameQuoted(identifier)){
identifier = unquote(identifier);
if (databaseMetaData.storesLowerCaseQuotedIdentifiers()){
storedIdentifier = identifier.toLowerCase();
}else if (databaseMetaData.storesMixedCaseQuotedIdentifiers()){
storedIdentifier = identifier;
}else if (databaseMetaData.storesUpperCaseQuotedIdentifiers()){
storedIdentifier = identifier.toUpperCase();
}else{
storedIdentifier = identifier;
}
}else{
if (databaseMetaData.storesLowerCaseIdentifiers()){
storedIdentifier = identifier.toLowerCase();
}else if (databaseMetaData.storesMixedCaseIdentifiers()){
storedIdentifier = identifier;
}else if (databaseMetaData.storesUpperCaseIdentifiers()){
storedIdentifier = identifier.toUpperCase();
}else{
storedIdentifier = identifier;
}
}
}catch(SQLException x){
// We don't know what the database supports so don't alter the identifier
storedIdentifier = identifier;
}
}
return storedIdentifier;
}
private void parseName(String databaseObjectName){
int index;
if (databaseObjectName == null || databaseObjectName.length() == 0){
throw new IllegalArgumentException("Database object name must be provided."); //$NON-NLS-1$
}
fullName = databaseObjectName.trim();
index = fullName.indexOf("."); //$NON-NLS-1$
if (index != -1){
schemaName = fullName.substring(0, index);
objectName = fullName.substring(index + 1);
}else{
objectName = fullName;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy