package net.sourceforge.seqware.common.util.testtools;
import io.seqware.pipeline.SqwKeys;
import java.util.HashMap;
import java.util.Map;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.naming.NoInitialContextException;
import net.sourceforge.seqware.common.util.Log;
import net.sourceforge.seqware.common.util.configtools.ConfigTools;
import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
import org.springframework.mock.jndi.SimpleNamingContextBuilder;
/**
* <p>
* JndiDatasourceCreator class.
* </p>
*
* @author boconnor
* @version $Id: $Id
*/
public class JndiDatasourceCreator {
// private static final String url =
// "jdbc:postgres:localhost/seqware_meta_db_test";
private static final String USERNAME = "seqware";
private static final String PASSWORD = "seqware";
private static final String JNDI_NAME = "SeqWareMetaDB";
/**
* <p>
* create.
* </p>
*
* @throws java.lang.Exception
* if any.
*/
public static void create() throws Exception {
try {
if (isJNDIExist("java:comp/env/jdbc/" + JNDI_NAME)) return;
final SimpleNamingContextBuilder builder = new SimpleNamingContextBuilder();
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("org.postgresql.Driver");
ds.setUsername(USERNAME);
ds.setPassword(PASSWORD);
ds.setRemoveAbandoned(true);
ds.setRemoveAbandonedTimeout(30);
ds.setLogAbandoned(true);
ds.setUrl("jdbc:postgresql://localhost:5432/test_seqware_meta_db");
Map<String, String> settings = new HashMap<>();
try {
settings = ConfigTools.getSettings();
} catch (Exception e) {
Log.stderr("Error reading settings file: " + e.getMessage());
}
if (settings.containsKey(SqwKeys.BASIC_TEST_DB_HOST.getSettingKey())) {
ds.setUsername(settings.get(SqwKeys.BASIC_TEST_DB_USER.getSettingKey()));
ds.setPassword(settings.get(SqwKeys.BASIC_TEST_DB_PASSWORD.getSettingKey()));
ds.setUrl("jdbc:postgresql://" + settings.get(SqwKeys.BASIC_TEST_DB_HOST.getSettingKey()) + ":5432/"
+ settings.get(SqwKeys.BASIC_TEST_DB_NAME.getSettingKey()));
}
// PGPoolingDataSource ds = new PGPoolingDataSource();
// ds.setServerName("localhost");
// ds.setPortNumber(5432);
// ds.setDatabaseName("test_seqware_meta_db");
// ds.setUser(username);
// ds.setPassword(password);
builder.bind("java:comp/env/jdbc/" + JNDI_NAME, ds);
builder.activate();
} catch (NamingException ex) {
ex.printStackTrace();
}
}
private static boolean isJNDIExist(String name) throws NamingException {
try {
InitialContext context = new InitialContext();
return context.lookup(name) != null;
} catch (NoInitialContextException e) {
return false;
}
}
}