edu.udo.cs.miningmart.db
Class DbCoreOracle

java.lang.Object
  extended byedu.udo.cs.miningmart.db.DbCore
      extended byedu.udo.cs.miningmart.db.DbCoreOracle

public class DbCoreOracle
extends DbCore

This class provides an access to an Oracle DBMS. It has only been tested with Oracle version 8.1.6. To compile this class, the Oracle JDBC driver package must be added to the classpath.

Version:
$Id: DbCoreOracle.java,v 1.5 2006/04/11 14:10:16 euler Exp $
Author:
Martin Scholz

Field Summary
static java.lang.String ORACLE_TYPE_CHAR
          The public constant indicating the Oracle Datatype CHAR
static java.lang.String ORACLE_TYPE_DATE
          The public constant indicating the Oracle Datatype DATE
static java.lang.String ORACLE_TYPE_LONG
          The public constant indicating the Oracle Datatype LONG
static java.lang.String ORACLE_TYPE_NUMBER
          The public constant indicating the Oracle Datatype NUMBER
static java.lang.String ORACLE_TYPE_STRING
          The public constant indicating the Oracle Datatype VARCHAR2
 
Fields inherited from class edu.udo.cs.miningmart.db.DbCore
DBMS_ORACLE, DBMS_POSTGRES
 
Constructor Summary
DbCoreOracle(java.lang.String url, java.lang.String dbName, java.lang.String user, java.lang.String passwd, M4InterfaceContext cal, boolean isM4Schema)
          The constructor of this class establishes a new database connection.
 
Method Summary
 boolean dropRelation(java.lang.String tableName)
          Try to drop the table or view with the given name, if it exists.
 java.lang.String getAttributeForColumnNames()
          Abstract method to be implemented by the subclasses.
 java.lang.String getAttributeForColumnTypes()
          Abstract method to be implemented by the subclasses.
 java.lang.String getDatatypeName(java.lang.String m4RelDatatypeName, int size)
          This method returns the DBMS-dependent name of the datatype which the current DBMS uses to realize the given M4-Relational Datatype.
 short getDbms()
          Indicates the DBMS used.
 java.lang.String getM4DatatypeName(java.lang.String dbmsDatatypeName)
          This method returns the M4-Relational Datatype that corresponds to the given DBMS-dependent name of a datatype.
protected  long getNextM4SequenceValue(java.sql.Statement stmt)
           
 java.util.Collection getPrimaryKeyColumnNames(java.lang.String dbObjectName)
          Returns a Collection with the names of the DB columns that belong to the given table or view and form its primary key, if such a key is declared by SQL constraints in the DB.
 java.lang.String getSelectStringAllColumnsForDbObject(java.lang.String dbObjectName)
          Abstract method to be implemented by the subclasses.
 java.lang.String getSelectStringAllTables()
          Abstract method to be implemented by the subclasses.
 java.lang.String getSelectStringAllViews()
          Abstract method to be implemented by the subclasses.
 java.lang.String getSelectStringColumnDataTypes(java.lang.String dbObjectName, java.lang.String owner, java.lang.String columnName)
          This method returns the DBMS-dependent SQL command that returns the name of the datatype of the given column in the given table or view (which is owned by the given owner).
 java.lang.String getTableOrViewType(java.lang.String dbObjectName)
          Returns one of the TYPE_... constants in the class edu.udo.cs.miningmart.m4.Columnset, or null if the given String is neither a table or view.
 java.util.Map getTablesReferencedBy(java.lang.String dbObjectName)
          Returns a Map that maps every column of the given table that acts as a foreign key to the name of the table that it references.
 java.lang.String getTestQuery()
           
 java.lang.String getUniqueRowIdentifier()
          Abstract method to be implemented by the subclasses.
protected  void registerJDBC_Driver()
          This method must be implemented by subclasses in order to use other JDBC drivers (for other DBMS, for example).
protected  void switchAutocommitOff(java.sql.Connection con)
          Since the transaction mechanism may be different for different DBMS, use this method to implement the Autocommit handling.
 boolean tableExists(java.lang.String tableName)
          Returns TRUE if a table (not a view) with the given name exists in the database.
 
Methods inherited from class edu.udo.cs.miningmart.db.DbCore
commitTransactions, createSQLFunction, createSqlIndex, createSQLView, executeDBProcedure, executeSingleValueSqlRead, executeSingleValueSqlReadL, executeSingleValueSqlReadL, executeSqlRead, executeSqlWrite, finalize, findDBMS, getCasePrintObject, hasOnlyForeignKeyColumns, rollback
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ORACLE_TYPE_NUMBER

public static final java.lang.String ORACLE_TYPE_NUMBER
The public constant indicating the Oracle Datatype NUMBER

See Also:
Constant Field Values

ORACLE_TYPE_STRING

public static final java.lang.String ORACLE_TYPE_STRING
The public constant indicating the Oracle Datatype VARCHAR2

See Also:
Constant Field Values

ORACLE_TYPE_DATE

public static final java.lang.String ORACLE_TYPE_DATE
The public constant indicating the Oracle Datatype DATE

See Also:
Constant Field Values

ORACLE_TYPE_CHAR

public static final java.lang.String ORACLE_TYPE_CHAR
The public constant indicating the Oracle Datatype CHAR

See Also:
Constant Field Values

ORACLE_TYPE_LONG

public static final java.lang.String ORACLE_TYPE_LONG
The public constant indicating the Oracle Datatype LONG

See Also:
Constant Field Values
Constructor Detail

DbCoreOracle

public DbCoreOracle(java.lang.String url,
                    java.lang.String dbName,
                    java.lang.String user,
                    java.lang.String passwd,
                    M4InterfaceContext cal,
                    boolean isM4Schema)
             throws java.sql.SQLException
The constructor of this class establishes a new database connection. Autocommit is set to false, so transaction management must be done individually by the database functions.

Parameters:
url - Prefix of the database url
dbName - name of the database
user - name of the database user
passwd - password for the database user
cal - the CompilerAccessLogic of the current thread. It is just needed in order to reach the appropriate Print-object for writing debug messages
isM4Schema - is true iff the connection refers to the M4 schema. Useful to decide whether triggers need to be switched off etc.
Throws:
java.sql.SQLException
See Also:
edu.udo.cs.miningmart.m4.core.utils.DbCore#DbCore(String, String, String, String, CompilerAccessLogic, boolean)
Method Detail

getDbms

public short getDbms()
Description copied from class: DbCore
Indicates the DBMS used.

Specified by:
getDbms in class DbCore
See Also:
DbCore.getDbms()

registerJDBC_Driver

protected void registerJDBC_Driver()
                            throws java.sql.SQLException
Description copied from class: DbCore
This method must be implemented by subclasses in order to use other JDBC drivers (for other DBMS, for example).

Specified by:
registerJDBC_Driver in class DbCore
Throws:
java.sql.SQLException
See Also:
DbCore.registerJDBC_Driver()

switchAutocommitOff

protected void switchAutocommitOff(java.sql.Connection con)
                            throws java.sql.SQLException
Description copied from class: DbCore
Since the transaction mechanism may be different for different DBMS, use this method to implement the Autocommit handling.

Specified by:
switchAutocommitOff in class DbCore
Throws:
java.sql.SQLException
See Also:
DbCore#switchAutocommitOff()

getNextM4SequenceValue

protected long getNextM4SequenceValue(java.sql.Statement stmt)
                               throws M4Exception
Specified by:
getNextM4SequenceValue in class DbCore
Parameters:
stmt - the Statement to be used to execute the query
Returns:
the value returned by the sequence (installed in the M4 schema).
Throws:
M4Exception - if for some reason the sequence does not return a value
See Also:
DbCore.getNextM4SequenceValue(Statement)

getSelectStringAllTables

public java.lang.String getSelectStringAllTables()
Description copied from class: DbCore
Abstract method to be implemented by the subclasses. Returns an SQL String that selects the names of all tables from the current schema. This is DBMS-dependent.

Specified by:
getSelectStringAllTables in class DbCore
Returns:
An SQL String
See Also:
DbCore

tableExists

public boolean tableExists(java.lang.String tableName)
                    throws M4Exception
Description copied from class: DbCore
Returns TRUE if a table (not a view) with the given name exists in the database.

Specified by:
tableExists in class DbCore
Parameters:
tableName - the table name
Returns:
TRUE or FALSE
Throws:
M4Exception

getSelectStringAllViews

public java.lang.String getSelectStringAllViews()
Description copied from class: DbCore
Abstract method to be implemented by the subclasses. Returns an SQL String that selects the names of all views from the current schema. This is DBMS-dependent.

Specified by:
getSelectStringAllViews in class DbCore
Returns:
An SQL String
See Also:
DbCore

getSelectStringAllColumnsForDbObject

public java.lang.String getSelectStringAllColumnsForDbObject(java.lang.String dbObjectName)
Description copied from class: DbCore
Abstract method to be implemented by the subclasses. Returns the SQL String that selects all column names and types for the given Table or View name from the business data schema. This is DBMS-dependent.

Specified by:
getSelectStringAllColumnsForDbObject in class DbCore
Parameters:
dbObjectName - Name of a table or view in the business data schema
Returns:
An SQL String
See Also:
DbCore

getSelectStringColumnDataTypes

public java.lang.String getSelectStringColumnDataTypes(java.lang.String dbObjectName,
                                                       java.lang.String owner,
                                                       java.lang.String columnName)
Description copied from class: DbCore
This method returns the DBMS-dependent SQL command that returns the name of the datatype of the given column in the given table or view (which is owned by the given owner).

Specified by:
getSelectStringColumnDataTypes in class DbCore
Parameters:
dbObjectName - Name of a table or view in the business data schema
owner - Name of the owner of the table or view (can be null)
columnName - Name of the column whose datatype is returned
Returns:
the DBMS-dependent name of the datatype of the column with the given name
See Also:
DbCore

getPrimaryKeyColumnNames

public java.util.Collection getPrimaryKeyColumnNames(java.lang.String dbObjectName)
                                              throws java.sql.SQLException,
                                                     DbConnectionClosed
Returns a Collection with the names of the DB columns that belong to the given table or view and form its primary key, if such a key is declared by SQL constraints in the DB. Otherwise null is returned.

Specified by:
getPrimaryKeyColumnNames in class DbCore
Parameters:
dbObjectName - the name of the given table or view
Returns:
a Collection of Strings
Throws:
java.sql.SQLException
DbConnectionClosed

getTablesReferencedBy

public java.util.Map getTablesReferencedBy(java.lang.String dbObjectName)
                                    throws java.sql.SQLException,
                                           DbConnectionClosed
Returns a Map that maps every column of the given table that acts as a foreign key to the name of the table that it references. The Map uses only Strings.

Specified by:
getTablesReferencedBy in class DbCore
Parameters:
dbObjectName -
Returns:
Throws:
java.sql.SQLException
DbConnectionClosed

getTableOrViewType

public java.lang.String getTableOrViewType(java.lang.String dbObjectName)
                                    throws java.sql.SQLException,
                                           DbConnectionClosed
Returns one of the TYPE_... constants in the class edu.udo.cs.miningmart.m4.Columnset, or null if the given String is neither a table or view.

Specified by:
getTableOrViewType in class DbCore
Parameters:
dbObjectName - name of a table or view
Returns:
a String with the type information
Throws:
java.sql.SQLException
DbConnectionClosed

getAttributeForColumnNames

public java.lang.String getAttributeForColumnNames()
Description copied from class: DbCore
Abstract method to be implemented by the subclasses. Returns the name of the column that contains the column names. This is DBMS-dependent.

Specified by:
getAttributeForColumnNames in class DbCore
Returns:
the name of the column that contains the column names
See Also:
DbCore

getAttributeForColumnTypes

public java.lang.String getAttributeForColumnTypes()
Description copied from class: DbCore
Abstract method to be implemented by the subclasses. Returns the name of the column that contains the column types. This is DBMS-dependent.

Specified by:
getAttributeForColumnTypes in class DbCore
Returns:
the name of the column that contains the column types
See Also:
DbCore

getUniqueRowIdentifier

public java.lang.String getUniqueRowIdentifier()
Description copied from class: DbCore
Abstract method to be implemented by the subclasses. Returns a String that can be used to uniquely identify table rows in SQL-Statements. This is DBMS-dependent.

Specified by:
getUniqueRowIdentifier in class DbCore
Returns:
the unique row identifier name
See Also:
DbCore

getDatatypeName

public java.lang.String getDatatypeName(java.lang.String m4RelDatatypeName,
                                        int size)
Description copied from class: DbCore
This method returns the DBMS-dependent name of the datatype which the current DBMS uses to realize the given M4-Relational Datatype.

Specified by:
getDatatypeName in class DbCore
Parameters:
m4RelDatatypeName - name of the M4 Relational Datatype
size - A size to be returned with the datatype, if the DBMS allows that. For example, if the M4 Relational Datatype is NUMBER and length is 10, then the return value will be the String "NUMBER(10)" if the DBMS is Oracle. If this length is not positive, the datatype will be returned without a size, in the example: "NUMBER". The DBMS may not allow lengths at all, in which case also the datatype without a size is returned.
Returns:
A DBMS-dependent string that contains a datatype name.
See Also:
DbCore

getM4DatatypeName

public java.lang.String getM4DatatypeName(java.lang.String dbmsDatatypeName)
Description copied from class: DbCore
This method returns the M4-Relational Datatype that corresponds to the given DBMS-dependent name of a datatype.

Specified by:
getM4DatatypeName in class DbCore
Parameters:
dbmsDatatypeName - the name of the datatype in the underlying DBMS
Returns:
the corresponding M4 Relational Datatype
See Also:
DbCore

dropRelation

public boolean dropRelation(java.lang.String tableName)
                     throws M4Exception
Try to drop the table or view with the given name, if it exists. Returns TRUE iff the table had existed, FALSE otherwise.

Specified by:
dropRelation in class DbCore
Parameters:
tableName - the name of the table to be dropped
Returns:
TRUE iff the table had existed before it was removed, FALSE if nothing was done.
Throws:
M4Exception

getTestQuery

public java.lang.String getTestQuery()
Specified by:
getTestQuery in class DbCore
Returns:
a String that can be used as a query to test the DB connection.


Copyright © 2001-2005