package org.dcache.util;
import org.springframework.orm.jdo.DefaultJdoDialect;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionException;
import javax.jdo.JDOException;
import javax.jdo.Transaction;
import java.sql.SQLException;
/**
* Spring's JDO support is somewhat outdated: Features added in JDO
* 2.2 or 3.0 are not supported. This JdoDialect adds some of the
* missing features.
*/
public class Jdo3Dialect extends DefaultJdoDialect
{
@Override
public Object beginTransaction(Transaction transaction, TransactionDefinition definition)
throws JDOException, SQLException, TransactionException
{
switch (definition.getIsolationLevel()) {
case TransactionDefinition.ISOLATION_DEFAULT:
break;
case TransactionDefinition.ISOLATION_READ_UNCOMMITTED:
transaction.setIsolationLevel("read-uncommitted");
break;
case TransactionDefinition.ISOLATION_READ_COMMITTED:
transaction.setIsolationLevel("read-committed");
break;
case TransactionDefinition.ISOLATION_REPEATABLE_READ:
transaction.setIsolationLevel("repeatable-read");
break;
case TransactionDefinition.ISOLATION_SERIALIZABLE:
transaction.setIsolationLevel("serializable");
break;
}
transaction.begin();
return null;
}
}