PageRenderTime 25ms CodeModel.GetById 25ms RepoModel.GetById 0ms app.codeStats 0ms

/openbus.sql2kafka/src/br/com/produban/openbus/sql2kafka/util/database/ConnectionFactory.java

https://gitlab.com/marcelosabino/OpenbusBR
Java | 51 lines | 41 code | 10 blank | 0 comment | 6 complexity | ff990e1f08466dc01f5bfe5d185f9ca0 MD5 | raw file
  1. package br.com.produban.openbus.sql2kafka.util.database;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.util.concurrent.ConcurrentHashMap;
  5. import java.util.zip.CRC32;
  6. import java.util.zip.Checksum;
  7. import org.slf4j.Logger;
  8. import org.slf4j.LoggerFactory;
  9. import br.com.produban.openbus.sql2kafka.util.properties.CollectProperties;
  10. public class ConnectionFactory {
  11. private static Logger LOG = LoggerFactory.getLogger(ConnectionFactory.class);
  12. private static ConcurrentHashMap<Long, Connection> connectionMap = new ConcurrentHashMap<Long, Connection>();
  13. public static Connection getConnection(CollectProperties collectProperties) {
  14. long id = getUniqId(collectProperties.getJdbcDriverClass(), collectProperties.getJdbcConnectionString());
  15. try {
  16. Connection connection = connectionMap.get(id);
  17. if (connection == null || !connection.isValid(5)) {
  18. String user = collectProperties.getJdbcConnectionUser();
  19. String password = collectProperties.getJdbcConnectionPassword();
  20. if (user.isEmpty() && password.isEmpty()) {
  21. connection = DriverManager.getConnection(collectProperties.getJdbcConnectionString());
  22. } else {
  23. connection = DriverManager.getConnection(collectProperties.getJdbcConnectionString(), user,
  24. password);
  25. }
  26. connection.setReadOnly(true);
  27. connectionMap.put(id, connection);
  28. }
  29. return connection;
  30. } catch (Exception e) {
  31. LOG.debug("Error in connection factory.", e);
  32. }
  33. return null;
  34. }
  35. private static long getUniqId(String driverClass, String jdbcConnectionString) {
  36. byte bytes[] = (driverClass + jdbcConnectionString).getBytes();
  37. Checksum checksum = new CRC32();
  38. checksum.update(bytes, 0, bytes.length);
  39. return checksum.getValue();
  40. }
  41. }