All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.akquinet.jbosscc.guttenbase.connector.impl.AbstractConnector Maven / Gradle / Ivy

The newest version!
package de.akquinet.jbosscc.guttenbase.connector.impl;

import de.akquinet.jbosscc.guttenbase.configuration.SourceDatabaseConfiguration;
import de.akquinet.jbosscc.guttenbase.configuration.TargetDatabaseConfiguration;
import de.akquinet.jbosscc.guttenbase.connector.Connector;
import de.akquinet.jbosscc.guttenbase.connector.ConnectorInfo;
import de.akquinet.jbosscc.guttenbase.meta.DatabaseMetaData;
import de.akquinet.jbosscc.guttenbase.repository.ConnectorRepository;
import de.akquinet.jbosscc.guttenbase.repository.impl.DatabaseMetaDataInspectorTool;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * Default connector implementation.
 *
 * 

* © 2012-2034 akquinet tech@spree *

* * @author M. Dahm */ public abstract class AbstractConnector implements Connector { protected static final Logger LOG = LoggerFactory.getLogger(AbstractConnector.class); protected transient Connection _connection; protected final ConnectorRepository _connectorRepository; protected final String _connectorId; protected final ConnectorInfo _connectionInfo; public AbstractConnector(final ConnectorRepository connectorRepository, final String connectorId, final ConnectorInfo connectionInfo) { assert connectionInfo != null : "connectionInfo != null"; assert connectorId != null : "connectorId != null"; assert connectorRepository != null : "connectorRepository != null"; _connectionInfo = connectionInfo; _connectorRepository = connectorRepository; _connectorId = connectorId; } /** * {@inheritDoc} */ @Override public void closeConnection() throws SQLException { try { if (_connection != null) { if (!_connection.isClosed()) { final TargetDatabaseConfiguration targetDatabaseConfiguration = _connectorRepository.getTargetDatabaseConfiguration(_connectorId); if (!_connection.getAutoCommit() && targetDatabaseConfiguration.isMayCommit()) { _connection.commit(); } _connection.close(); } } } catch (final SQLException e) { LOG.warn("Closing connection failed", e); throw e; } finally { _connection = null; } } /** * {@inheritDoc} */ @Override public DatabaseMetaData retrieveDatabaseMetaData() throws SQLException { final DatabaseMetaDataInspectorTool tableMetaDataInspector = new DatabaseMetaDataInspectorTool(_connectorRepository, _connectorId); final Connection connection = openConnection(); final SourceDatabaseConfiguration sourceDatabaseConfiguration = _connectorRepository.getSourceDatabaseConfiguration(_connectorId); sourceDatabaseConfiguration.initializeSourceConnection(connection, _connectorId); final DatabaseMetaData databaseMetaData = tableMetaDataInspector.getDatabaseMetaData(connection); sourceDatabaseConfiguration.finalizeSourceConnection(connection, _connectorId); closeConnection(); return databaseMetaData; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy