package org.buddycloud.channelserver.db;
import java.sql.Connection;
import org.apache.log4j.Logger;
import org.buddycloud.channelserver.Configuration;
import org.buddycloud.channelserver.db.exception.NodeStoreException;
import org.buddycloud.channelserver.db.jdbc.JDBCNodeStore;
import org.buddycloud.channelserver.db.jdbc.dialect.Sql92NodeStoreDialect;
public class DefaultNodeStoreFactoryImpl implements NodeStoreFactory {
private static final String CONFIGURATION_JDBC_DIALECT = "jdbc.dialect";
private static final Logger LOGGER = Logger.getLogger(DefaultNodeStoreFactoryImpl.class);
private final Configuration configuration;
public DefaultNodeStoreFactoryImpl(final Configuration configuration) throws NodeStoreException {
this.configuration = configuration;
String dialectClass = configuration.getProperty(CONFIGURATION_JDBC_DIALECT, Sql92NodeStoreDialect.class.getName());
try {
Class.forName(dialectClass).newInstance();
} catch (Exception e) {
throw new NodeStoreException("Could not instantiate dialect class " + dialectClass, e);
}
}
@Override
public NodeStore create() {
Connection connection = null;
try {
connection = new JDBCConnectionFactory(configuration).getConnection();
return new JDBCNodeStore(connection, new Sql92NodeStoreDialect(), configuration);
} catch (Exception e) {
LOGGER.error("JDBCNodeStore failed to initialize.", e);
}
return null;
}
}