package org.castor.jdo.util;
import java.util.Enumeration;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.castor.jdo.conf.JdoConf;
import org.castor.jdo.conf.Param;
import org.castor.jdo.conf.TransactionDemarcation;
import org.castor.jdo.conf.TransactionManager;
import org.castor.transactionmanager.LocalTransactionManagerFactory;
import org.exolab.castor.mapping.MappingException;
public final class JDOConfAdapter {
//--------------------------------------------------------------------------
/** The <a href="http://jakarta.apache.org/commons/logging/">Jakarta
* Commons Logging</a> instance used for all logging. */
private static final Log LOG = LogFactory.getLog(JDOConfAdapter.class);
private JdoConf _jdoConf;
//--------------------------------------------------------------------------
public JDOConfAdapter(final JdoConf jdoConf) {
_jdoConf = jdoConf;
}
//--------------------------------------------------------------------------
public String getName() {
return _jdoConf.getName();
}
public String getTransactionManager() throws MappingException {
TransactionDemarcation demarcation = _jdoConf.getTransactionDemarcation();
if (LocalTransactionManagerFactory.NAME.equals(demarcation.getMode())) {
return LocalTransactionManagerFactory.NAME;
} else if (demarcation.getTransactionManager() != null) {
return demarcation.getTransactionManager().getName();
} else {
String msg = "Missing configuration of TransactionManager.";
LOG.error(msg);
throw new MappingException(msg);
}
}
public Properties getTransactionManagerParameters() {
Properties properties = new Properties();
TransactionDemarcation demarcation = _jdoConf.getTransactionDemarcation();
TransactionManager manager = demarcation.getTransactionManager();
if (manager != null) {
Enumeration<? extends Param> parameters = manager.enumerateParam();
while (parameters.hasMoreElements()) {
Param param = parameters.nextElement();
properties.put(param.getName(), param.getValue());
}
}
return properties;
}
//--------------------------------------------------------------------------
}