package com.quantum.adapters; import com.quantum.Messages; import com.quantum.sql.SQLHelper; import com.quantum.util.QuantumUtil; public class OracleAdapter extends DatabaseAdapter { public String getShowSequenceQuery(String qualifier, boolean isDefault) { return "SELECT SEQUENCE_OWNER, SEQUENCE_NAME FROM ALL_SEQUENCES WHERE SEQUENCE_OWNER = '" + qualifier + "'"; //$NON-NLS-1$ } public String getPrevValue(String sequence, String owner) { return "SELECT LAST_NUMBER FROM ALL_SEQUENCES WHERE SEQUENCE_OWNER = '" + owner + "' AND SEQUENCE_NAME = '" + sequence + "'"; //$NON-NLS-1$ //$NON-NLS-2$ } public String getNextValue(String sequence, String owner) { return "SELECT " + SQLHelper.getQualifiedName(owner, sequence) + ".NEXTVAL FROM DUAL"; } public String getCommentsQuery(String tableName, String column) { String query = "SELECT COMMENTS FROM ALL_COL_COMMENTS WHERE TABLE_NAME = '"; query += QuantumUtil.getTableName(tableName) + "' AND COLUMN_NAME = '" + column + "'" ; if (!(QuantumUtil.getSchemaName(tableName).equals(""))) query += " AND OWNER = '" + QuantumUtil.getSchemaName(tableName) + "'"; return query; } /** * Quotes a string according to the type of the column * @param string to be quoted * @param type according to java.sql.Types * @return */ public String quote(String string, int type, String typeString) { if (type == java.sql.Types.DATE || type == java.sql.Types.TIMESTAMP) { string = string.trim(); String sub = string.substring(string.length()-2, string.length()-1); if (string.length() > 1 && sub.equals(Messages.getString("OracleAdapter.._3"))) //$NON-NLS-1$ string = string.substring(0,string.length()-2); return "TO_DATE('" + string + "','yyyy-mm-dd hh24:mi:ss')"; //$NON-NLS-1$ //$NON-NLS-2$ } // use the default (upper type) return super.quote(string, type, typeString); } /* (non-Javadoc) * @see com.quantum.adapters.DatabaseAdapter#filterTableName(java.lang.String) */ public String filterTableName(String tableName) { // If there is no mixed case, better not quote, it's prettier on display if (tableName.equals(tableName.toUpperCase())) return tableName; // We quote the table name (and only the table name) because it has mixed case if (QuantumUtil.getSchemaName(tableName).equals("")) return "\"" + tableName +"\""; //$NON-NLS-1$ else return QuantumUtil.getSchemaName(tableName) + ".\"" + QuantumUtil.getTableName(tableName) + "\""; } /** * The default schema for Oracle is the upper-case userid. * @see com.quantum.adapters.DatabaseAdapter#getDefaultSchema(java.lang.String) */ public String getDefaultSchema(String userid) { return super.getDefaultSchema(userid).toUpperCase(); } }