de.mguennewig.pobjects.jdbc
Class MySQLContainer

java.lang.Object
  extended by de.mguennewig.pobjects.AbstractContainer
      extended by de.mguennewig.pobjects.jdbc.JdbcContainer
          extended by de.mguennewig.pobjects.jdbc.MySQLContainer
All Implemented Interfaces:
Container

public class MySQLContainer
extends JdbcContainer

Container implementation for MySQL databases.

This implementation uses a type table to work around the missing INHERITS support.

Author:
Michael Günnewig
See Also:
MySQL

Nested Class Summary
static class MySQLContainer.MySQLEvalContext
          MySQL has a bug with OUTER JOINs and this special evaluation context works around it.
 
Field Summary
 
Fields inherited from interface de.mguennewig.pobjects.Container
SUPPORTS_BOOLEAN, SUPPORTS_INHERITS, SUPPORTS_JOIN, SUPPORTS_LIMIT_OFFSET, SUPPORTS_ORACLE_JOIN, SUPPORTS_SQL99_JOIN, USE_ARRAY_FOR_LOB, USE_STREAM_TO_INSERT_LOB
 
Constructor Summary
MySQLContainer(java.sql.Connection conn, PObjDictionary dict, java.lang.String schema)
          Creates a container with a specified connection to a DBMS, which must denote a MySQL compatible DMBS.
MySQLContainer(PObjDictionary dict, java.lang.String schema)
          Creates a container without a connection to a MySQL DB.
MySQLContainer(java.lang.String hostname, java.lang.Integer port, java.lang.String database, java.lang.String username, java.lang.String password, PObjDictionary dict, java.lang.String schema)
           
 
Method Summary
 int getCapabilities()
          Returns the capabilities of the DBMS.
 java.lang.String getConnectURL(java.lang.String hostname, java.lang.Integer port, java.lang.String database)
          
 java.lang.String getSequenceCurrentValue(Sequence seq)
          Returns the current value of the given sequence.
 java.lang.String getSequenceNextValue(Sequence seq)
          Returns a new value of the given sequence.
 java.lang.String insertObject(PObject obj)
          Inserts the given object into the database.
 EvalContext newEvalContext(int numColumns)
          
 
Methods inherited from class de.mguennewig.pobjects.jdbc.JdbcContainer
addArguments, addParameter, beginTransaction, close, commitTransaction, deleteAll, deleteAll, deleteObject, deleteRecord, getConnection, getConnectProperties, getObject, insertRecord, mapClassDeclToPClassId, mapPClassIdToClassDecl, newQuery, prepareStatement, prepareStatement, reset, retrieveData, rollbackTransaction, setConnection, updateObject
 
Methods inherited from class de.mguennewig.pobjects.AbstractContainer
createObject, deleteAll, getClassDecl, getClassDecls, getData, getDictionary, getObject, getQualifiedName, getSchema, getTableExpr, isStrictMode, makePersistent, newQuery, newQuery, newQuery, newQuery, newQuery, newQuery, newQuery, newQuery, notifyChange, setStrictMode, storeAll, supportsBoolean, supportsInherits, supportsLimitOffset, supportsOracleJoin, supportsSQL99Join, useArrayForLob, useStreamToInsertLob
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MySQLContainer

public MySQLContainer(PObjDictionary dict,
                      java.lang.String schema)
Creates a container without a connection to a MySQL DB.

Parameters:
dict -
schema - the schema name that should be used. As MySQL does not support SCHEMA's this parameter is simply ignored.

MySQLContainer

public MySQLContainer(java.lang.String hostname,
                      java.lang.Integer port,
                      java.lang.String database,
                      java.lang.String username,
                      java.lang.String password,
                      PObjDictionary dict,
                      java.lang.String schema)
               throws java.sql.SQLException
Throws:
java.sql.SQLException

MySQLContainer

public MySQLContainer(java.sql.Connection conn,
                      PObjDictionary dict,
                      java.lang.String schema)
               throws java.sql.SQLException
Creates a container with a specified connection to a DBMS, which must denote a MySQL compatible DMBS.

NOTE: Auto-commitment will be turned off which is normally turned on for JDBC.

Throws:
java.sql.SQLException
Method Detail

getConnectURL

public java.lang.String getConnectURL(java.lang.String hostname,
                                      java.lang.Integer port,
                                      java.lang.String database)

Specified by:
getConnectURL in class JdbcContainer

getCapabilities

public int getCapabilities()
Returns the capabilities of the DBMS.

See Also:
"The SUPPORTS_* constants."

getSequenceCurrentValue

public java.lang.String getSequenceCurrentValue(Sequence seq)
Returns the current value of the given sequence.

Throws:
java.lang.UnsupportedOperationException - as MySQL does not support sequences

getSequenceNextValue

public java.lang.String getSequenceNextValue(Sequence seq)
Returns a new value of the given sequence.

Throws:
java.lang.UnsupportedOperationException - as MySQL does not support sequences

insertObject

public java.lang.String insertObject(PObject obj)
                              throws PObjConstraintException,
                                     PObjSQLException
Inserts the given object into the database.

Throws:
PObjConstraintException - if a database constraint will be violated.
PObjSQLException - if any other database error occurs.

newEvalContext

public EvalContext newEvalContext(int numColumns)

Specified by:
newEvalContext in interface Container
Overrides:
newEvalContext in class JdbcContainer
Returns:
a special MySQL evaluation context to work around a bug within MySQL related to outer joins.
See Also:
MySQLContainer.MySQLEvalContext