ConnectionValidator.java
package org.ferris.riviera.console.connection;
import static java.lang.String.format;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.annotation.Priority;
import javax.enterprise.event.Observes;
import javax.inject.Inject;
import org.apache.log4j.Logger;
import static org.ferris.riviera.console.connection.ConnectionValidationEvent.VALIDATE;
/**
*
* @author Michael Remijan mjremijan@yahoo.com @mjremijan
*/
public class ConnectionValidator {
@Inject
protected Logger log;
@Inject
protected ConnectionHandler handler;
@Inject
protected ConnectionProperties properties;
/**
* Validate the database connection
* @param event Event for processing
*/
protected void validateDatabaseConnection(
@Observes @Priority(VALIDATE) ConnectionValidationEvent event
) {
try (
Connection conn = handler.getConnection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(properties.getValidationSql())
) {
if (rs.next()) {
event.setValidationSql(properties.getValidationSql());
event.setValidationResult(rs.getString(1));
} else {
throw new SQLException(
format("No result set returned for validation query \"%s\""
, properties.getValidationSql())
);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
}