|
From: <one...@us...> - 2003-01-14 13:42:51
|
Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/odmg
In directory sc8-pr-cvs1:/tmp/cvs-serv19888/net/sf/hibernate/odmg
Modified Files:
Database.java OQLQuery.java Transaction.java
Log Message:
wrap all SQLExceptions fixed a bug in SchemaExport where generated foreign key constraints did not used qualified tablename for referenced table
Index: Database.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/odmg/Database.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** Database.java 5 Jan 2003 02:11:22 -0000 1.3
--- Database.java 14 Jan 2003 13:42:16 -0000 1.4
***************
*** 1,5 ****
//$Id$
package net.sf.hibernate.odmg;
! import java.sql.SQLException;
import org.odmg.ODMGException;
import org.odmg.ODMGRuntimeException;
--- 1,5 ----
//$Id$
package net.sf.hibernate.odmg;
!
import org.odmg.ODMGException;
import org.odmg.ODMGRuntimeException;
***************
*** 120,126 ****
throw new ODMGRuntimeException( he.getMessage() );
}
- catch (SQLException sqle) {
- throw new ODMGRuntimeException( sqle.getMessage() );
- }
}
--- 120,123 ----
***************
*** 144,150 ****
throw new ODMGRuntimeException( he.getMessage() );
}
- catch (SQLException sqle) {
- throw new ODMGRuntimeException( sqle.getMessage() );
- }
}
--- 141,144 ----
***************
*** 168,174 ****
throw new ODMGRuntimeException( he.getMessage() );
}
- catch (SQLException sqle) {
- throw new ODMGRuntimeException( sqle.getMessage() );
- }
}
--- 162,165 ----
***************
*** 184,190 ****
throw new ODMGRuntimeException( he.getMessage() );
}
- catch (SQLException sqle) {
- throw new ODMGRuntimeException( sqle.getMessage() );
- }
}
/**
--- 175,178 ----
***************
*** 198,204 ****
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
- }
- catch (SQLException sqle) {
- throw new ODMGRuntimeException( sqle.getMessage() );
}
}
--- 186,189 ----
Index: OQLQuery.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/odmg/OQLQuery.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** OQLQuery.java 5 Jan 2003 02:11:22 -0000 1.3
--- OQLQuery.java 14 Jan 2003 13:42:16 -0000 1.4
***************
*** 1,3 ****
! //$Id$
package net.sf.hibernate.odmg;
import java.sql.SQLException;
import org.odmg.ODMGRuntimeException;
import org.odmg.QueryException;
import org.odmg.QueryInvalidException;
import org.odmg.QueryParameterCountInvalidException;
import org.odmg.QueryParameterTypeInvalidException;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
/**
Experimental implementation of the ODMG <tt>OQLQuery</tt>
interface. The supported query language is actually the
Hibernate query language and the <tt>execute()</tt> method
returns results in the same format as
<tt>Session.find()</tt>.<br>
<br>
Warning: this implementation will change significantly as
ODMG support matures!
*/
public class OQLQuery implements org.odmg.OQLQuery {
private Transaction tx;
private Query query;
private int param=0;
/**
* Instantiate an <tt>OQLQuery</tt> for the current transaction.
*/
public OQLQuery(Database db) {
this.tx = db.currentTransaction();
}
/**
* Instantiate an <tt>OQLQuery</tt> for the given transaction.
*/
public OQLQuery(Transaction tx) {
this.tx = tx;
}
/**
* Instantiate an <tt>OQLQuery</tt> for the current transaction.
*/
public OQLQuery() {
this.tx = (Transaction) Implementation.getInstance().currentTransaction();
}
/**
* Get the underlying Hibernate <tt>Query</tt>.
*/
public Query getQuery() {
return query;
}
/**
* Set the HIbernate query string. Scalar return values are not supported.
* @see org.odmg.OQLQuery#create(String)
*/
public void create(String queryString) throws QueryInvalidException {
//TODO: the right exception
try {
this.query = tx.getSession().createQuery(queryString);
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
}
/**
* Bind a value to the next <tt>?</tt> style parameter.
* @see org.odmg.OQLQuery#bind(Object)
*/
public void bind(Object parameter) throws QueryParameterCountInvalidException, QueryParameterTypeInvalidException {
//TODO: the right exception
try {
query.setParameter(param++, parameter);
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
}
/**
* Get the query results as a collection.
* @see org.odmg.OQLQuery#execute()
*/
public Object execute() throws QueryException {
//TODO: how are results meant to be returned in ODMG?
try {
return query.list();
}
catch (SQLException sqle) {
throw new QueryException( sqle.getMessage() );
}
catch (HibernateException he) {
throw new QueryException( he.getMessage() );
}
}
}
--- 1,3 ----
! //$Id$
package net.sf.hibernate.odmg;
import org.odmg.ODMGRuntimeException;
import org.odmg.QueryException;
import org.odmg.QueryInvalidException;
import org.odmg.QueryParameterCountInvalidException;
import org.odmg.QueryParameterTypeInvalidException;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.Query;
/**
Experimental implementation of the ODMG <tt>OQLQuery</tt>
interface. The supported query language is actually the
Hibernate query language and the <tt>execute()</tt> method
returns results in the same format as
<tt>Session.find()</tt>.<br>
<br>
Warning: this implementation will change significantly as
ODMG support matures!
*/
public class OQLQuery implements org.odmg.OQLQuery {
private Transaction tx;
private Query query;
private int param=0;
/**
* Instantiate an <tt>OQLQuery</tt> for the current transaction.
*/
public OQLQuery(Database db) {
this.tx = db.currentTransaction();
}
/**
* Instantiate an <tt>OQLQuery</tt> for the given transaction.
*/
public OQLQuery(Transaction tx) {
this.tx = tx;
}
/**
* Instantiate an <tt>OQLQuery</tt> for the current transaction.
*/
public OQLQuery() {
this.tx = (Transaction) Implementation.getInstance().currentTransaction();
}
/**
* Get the underlying Hibernate <tt>Query</tt>.
*/
public Query getQuery() {
return query;
}
/**
* Set the HIbernate query string. Scalar return values are not supported.
* @see org.odmg.OQLQuery#create(String)
*/
public void create(String queryString) throws QueryInvalidException {
//TODO: the right exception
try {
this.query = tx.getSession().createQuery(queryString);
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
}
/**
* Bind a value to the next <tt>?</tt> style parameter.
* @see org.odmg.OQLQuery#bind(Object)
*/
public void bind(Object parameter) throws QueryParameterCountInvalidException, QueryParameterTypeInvalidException {
//TODO: the right exception
try {
query.setParameter(param++, parameter);
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
}
/**
* Get the query results as a collection.
* @see org.odmg.OQLQuery#execute()
*/
public Object execute() throws QueryException {
//TODO: how are results meant to be returned in ODMG?
try {
return query.list();
}
catch (HibernateException he) {
throw new QueryException( he.getMessage() );
}
}
}
Index: Transaction.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/odmg/Transaction.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** Transaction.java 5 Jan 2003 02:11:22 -0000 1.3
--- Transaction.java 14 Jan 2003 13:42:17 -0000 1.4
***************
*** 1,3 ****
! //$Id$
package net.sf.hibernate.odmg;
import java.sql.SQLException;
import org.odmg.LockNotGrantedException;
import org.odmg.ODMGException;
import org.odmg.ODMGRuntimeException;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.LockMode;
import net.sf.hibernate.Session;
/**
* Implements the ODMG <tt>Transaction</tt> API.
*/
public class Transaction implements org.odmg.Transaction {
private final Database database;
private final Session session;
private net.sf.hibernate.Transaction tx;
/**
* Instantiate a <tt>Transaction</tt> for the given <tt>Database</tt>.
*/
public Transaction(org.odmg.Database database) throws ODMGException {
this.database = (Database) database;
try {
this.session = this.database.getSessionFactory().openSession();
}
catch (SQLException sqle) {
throw new ODMGException( sqle.getMessage() );
}
this.database.associateThread(this);
}
/**
* Instantiate a <tt>Transaction</tt> for a <tt>Database</tt> created
* by the current thread.
*/
public Transaction() throws ODMGException {
this( Implementation.getInstance().currentDatabase() );
}
/**
* Get the underlying Hibernate <tt>Session</tt>. (Very useful!)
*/
public Session getSession() {
return session;
}
/**
* Associate the current thread with this <tt>Transaction</tt> and
* disassociate the thread from any other <tt>Transaction</tt>.
* @see org.odmg.Transaction#join()
*/
public void join() {
//database.disassociateThread();
database.associateThread(this);
}
/**
* Disassociate the thread the <tt>Transaction</tt>.
* @see org.odmg.Transaction#leave()
*/
public void leave() {
database.disassociateThread();
}
/**
* Begin the transaction.
* @see org.odmg.Transaction#begin()
*/
public void begin() {
try {
tx = session.beginTransaction();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
}
/**
* Is the transaction open? Returns true if <tt>begin()</tt> was called but
* neither <tt>commit()</tt> nor <tt>abort()</tt> was called.
* @see org.odmg.Transaction#isOpen()
*/
public boolean isOpen() {
return tx==null;
}
/**
* Commit the transaction.
* @see org.odmg.Transaction#commit()
*/
public void commit() {
database.disassociateThread();
try {
tx.commit();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
catch (SQLException sqle) {
throw new ODMGRuntimeException( sqle.getMessage() );
}
finally {
tx=null;
try {
session.close();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
catch (SQLException sqle) {
throw new ODMGRuntimeException( sqle.getMessage() );
}
}
}
/**
* Abort the transaction.
* @see org.odmg.Transaction#abort()
*/
public void abort() {
database.disassociateThread();
try {
tx.rollback();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
finally {
tx=null;
try {
session.close();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
catch (SQLException sqle) {
throw new ODMGRuntimeException( sqle.getMessage() );
}
}
}
/**
* Commit the changes, but leave the transaction open. This implementation
* does not have quite the same semantics os ODMG (locks are not retained).
* So you should only use this with versioned data.
* @see org.odmg.Transaction#checkpoint()
*/
public void checkpoint() {
try {
tx.commit();
tx = session.beginTransaction();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
catch (SQLException sqle) {
throw new ODMGRuntimeException( sqle.getMessage() );
}
}
/**
* Obtain a lock upon the given object. In the present implementation,
* <tt>READ</tt> lock mode is ignored while <tt>UPGRADE</tt> and
* <tt>WRITE</tt> lock modes obtain an <tt>UPGRADE</tt> lock for databases
* which support <tt>for update</tt>. We should improve this eventually....
* @see org.odmg.Transaction#lock(Object, int)
*/
public void lock(Object obj, int lockMode) throws LockNotGrantedException {
//TODO: check the semantics of this...
try {
if ( lockMode==org.odmg.Transaction.READ ) {
session.lock(obj, LockMode.READ);
}
else {
session.lock(obj, LockMode.UPGRADE);
}
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
catch (SQLException sqle) {
throw new ODMGRuntimeException( sqle.getMessage() );
}
}
/**
* Not implemented.
* @see org.odmg.Transaction#tryLock(Object, int)
*/
public boolean tryLock(Object obj, int lockMode) {
throw new UnsupportedOperationException("try using lock()");
}
}
--- 1,3 ----
! //$Id$
package net.sf.hibernate.odmg;
import org.odmg.LockNotGrantedException;
import org.odmg.ODMGException;
import org.odmg.ODMGRuntimeException;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.LockMode;
import net.sf.hibernate.Session;
/**
* Implements the ODMG <tt>Transaction</tt> API.
*/
public class Transaction implements org.odmg.Transaction {
private final Database database;
private final Session session;
private net.sf.hibernate.Transaction tx;
/**
* Instantiate a <tt>Transaction</tt> for the given <tt>Database</tt>.
*/
public Transaction(org.odmg.Database database) throws ODMGException {
this.database = (Database) database;
try {
this.session = this.database.getSessionFactory().openSession();
}
catch (HibernateException he) {
throw new ODMGException( he.getMessage() );
}
this.database.associateThread(this);
}
/**
* Instantiate a <tt>Transaction</tt> for a <tt>Database</tt> created
* by the current thread.
*/
public Transaction() throws ODMGException {
this( Implementation.getInstance().currentDatabase() );
}
/**
* Get the underlying Hibernate <tt>Session</tt>. (Very useful!)
*/
public Session getSession() {
return session;
}
/**
* Associate the current thread with this <tt>Transaction</tt> and
* disassociate the thread from any other <tt>Transaction</tt>.
* @see org.odmg.Transaction#join()
*/
public void join() {
//database.disassociateThread();
database.associateThread(this);
}
/**
* Disassociate the thread the <tt>Transaction</tt>.
* @see org.odmg.Transaction#leave()
*/
public void leave() {
database.disassociateThread();
}
/**
* Begin the transaction.
* @see org.odmg.Transaction#begin()
*/
public void begin() {
try {
tx = session.beginTransaction();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
}
/**
* Is the transaction open? Returns true if <tt>begin()</tt> was called but
* neither <tt>commit()</tt> nor <tt>abort()</tt> was called.
* @see org.odmg.Transaction#isOpen()
*/
public boolean isOpen() {
return tx==null;
}
/**
* Commit the transaction.
* @see org.odmg.Transaction#commit()
*/
public void commit() {
database.disassociateThread();
try {
tx.commit();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
finally {
tx=null;
try {
session.close();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
}
}
/**
* Abort the transaction.
* @see org.odmg.Transaction#abort()
*/
public void abort() {
database.disassociateThread();
try {
tx.rollback();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
finally {
tx=null;
try {
session.close();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
}
}
/**
* Commit the changes, but leave the transaction open. This implementation
* does not have quite the same semantics os ODMG (locks are not retained).
* So you should only use this with versioned data.
* @see org.odmg.Transaction#checkpoint()
*/
public void checkpoint() {
try {
tx.commit();
tx = session.beginTransaction();
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
}
/**
* Obtain a lock upon the given object. In the present implementation,
* <tt>READ</tt> lock mode is ignored while <tt>UPGRADE</tt> and
* <tt>WRITE</tt> lock modes obtain an <tt>UPGRADE</tt> lock for databases
* which support <tt>for update</tt>. We should improve this eventually....
* @see org.odmg.Transaction#lock(Object, int)
*/
public void lock(Object obj, int lockMode) throws LockNotGrantedException {
//TODO: check the semantics of this...
try {
if ( lockMode==org.odmg.Transaction.READ ) {
session.lock(obj, LockMode.READ);
}
else {
session.lock(obj, LockMode.UPGRADE);
}
}
catch (HibernateException he) {
throw new ODMGRuntimeException( he.getMessage() );
}
}
/**
* Not implemented.
* @see org.odmg.Transaction#tryLock(Object, int)
*/
public boolean tryLock(Object obj, int lockMode) {
throw new UnsupportedOperationException("try using lock()");
}
}
|