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

com.yammer.dropwizard.db.DatabaseConfiguration Maven / Gradle / Ivy

The newest version!
package com.yammer.dropwizard.db;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Objects;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.yammer.dropwizard.util.Duration;
import com.yammer.dropwizard.validation.ValidationMethod;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Map;

@SuppressWarnings("UnusedDeclaration")
public class DatabaseConfiguration {
    @NotNull
    @JsonProperty
    private String driverClass = null;

    @NotNull
    @JsonProperty
    private String user = null;

    @JsonProperty
    private String password = "";

    @NotNull
    @JsonProperty
    private String url = null;

    @NotNull
    @JsonProperty
    private ImmutableMap properties = ImmutableMap.of();

    @NotNull
    @JsonProperty
    private Duration maxWaitForConnection = Duration.seconds(1);

    @NotNull
    @JsonProperty
    private String validationQuery = "/* Health Check */ SELECT 1";

    @Min(1)
    @Max(1024)
    @JsonProperty
    private int minSize = 1;

    @Min(1)
    @Max(1024)
    @JsonProperty
    private int maxSize = 8;

    @JsonProperty
    private boolean checkConnectionWhileIdle;

    @NotNull
    @JsonProperty
    private Duration checkConnectionHealthWhenIdleFor = Duration.seconds(10);

    @NotNull
    @JsonProperty
    private Duration closeConnectionIfIdleFor = Duration.minutes(1);

    @JsonProperty
    private boolean defaultReadOnly = false;

    @JsonProperty
    private ImmutableList connectionInitializationStatements = ImmutableList.of();

    @JsonProperty
    private boolean autoCommentsEnabled = true;

    public boolean isAutoCommentsEnabled() {
        return autoCommentsEnabled;
    }

    public void setAutoCommentsEnabled(boolean autoCommentsEnabled) {
        this.autoCommentsEnabled = autoCommentsEnabled;
    }

    public String getDriverClass() {
        return driverClass;
    }

    public void setDriverClass(String driverClass) {
        this.driverClass = driverClass;
    }

    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public ImmutableMap getProperties() {
        return properties;
    }

    public void setProperties(Map properties) {
        this.properties = ImmutableMap.copyOf(properties);
    }

    public Duration getMaxWaitForConnection() {
        return maxWaitForConnection;
    }

    public void setMaxWaitForConnection(Duration maxWaitForConnection) {
        this.maxWaitForConnection = maxWaitForConnection;
    }

    public String getValidationQuery() {
        return validationQuery;
    }

    public void setValidationQuery(String validationQuery) {
        this.validationQuery = validationQuery;
    }

    public int getMinSize() {
        return minSize;
    }

    public void setMinSize(int minSize) {
        this.minSize = minSize;
    }

    public int getMaxSize() {
        return maxSize;
    }

    public void setMaxSize(int maxSize) {
        this.maxSize = maxSize;
    }

    public boolean isCheckConnectionWhileIdle() {
        return checkConnectionWhileIdle;
    }

    public void setCheckConnectionWhileIdle(boolean checkConnectionWhileIdle) {
        this.checkConnectionWhileIdle = checkConnectionWhileIdle;
    }

    public Duration getCheckConnectionHealthWhenIdleFor() {
        return checkConnectionHealthWhenIdleFor;
    }

    public void setCheckConnectionHealthWhenIdleFor(Duration checkConnectionHealthWhenIdleFor) {
        this.checkConnectionHealthWhenIdleFor = checkConnectionHealthWhenIdleFor;
    }

    public Duration getCloseConnectionIfIdleFor() {
        return closeConnectionIfIdleFor;
    }

    public void setCloseConnectionIfIdleFor(Duration closeConnectionIfIdleFor) {
        this.closeConnectionIfIdleFor = closeConnectionIfIdleFor;
    }

    public boolean isDefaultReadOnly() {
        return defaultReadOnly;
    }

    public void setDefaultReadOnly(boolean defaultReadOnly) {
        this.defaultReadOnly = defaultReadOnly;
    }

    public ImmutableList getConnectionInitializationStatements() {
        return connectionInitializationStatements;
    }

    public void setConnectionInitializationStatements(List statements) {
        this.connectionInitializationStatements = ImmutableList.copyOf(statements);
    }

    @ValidationMethod(message = ".minSize must be less than or equal to maxSize")
    public boolean isPoolSizedCorrectly() {
        return minSize <= maxSize;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) { return true; }
        if ((obj == null) || (getClass() != obj.getClass())) { return false; }
        final DatabaseConfiguration that = (DatabaseConfiguration) obj;
        return (checkConnectionWhileIdle == that.checkConnectionWhileIdle) &&
                (maxSize == that.maxSize) &&
                (minSize == that.minSize) &&
                !((checkConnectionHealthWhenIdleFor != null) ? !checkConnectionHealthWhenIdleFor.equals(that.checkConnectionHealthWhenIdleFor) : (that.checkConnectionHealthWhenIdleFor != null)) &&
                !((closeConnectionIfIdleFor != null) ? !closeConnectionIfIdleFor.equals(that.closeConnectionIfIdleFor) : (that.closeConnectionIfIdleFor != null)) &&
                (defaultReadOnly == that.defaultReadOnly) &&
                !((driverClass != null) ? !driverClass.equals(that.driverClass) : (that.driverClass != null)) &&
                !((maxWaitForConnection != null) ? !maxWaitForConnection.equals(that.maxWaitForConnection) : (that.maxWaitForConnection != null)) &&
                !((password != null) ? !password.equals(that.password) : (that.password != null)) &&
                !((properties != null) ? !properties.equals(that.properties) : (that.properties != null)) &&
                !((url != null) ? !url.equals(that.url) : (that.url != null)) &&
                !((user != null) ? !user.equals(that.user) : (that.user != null)) &&
                !((validationQuery != null) ? !validationQuery.equals(that.validationQuery) : (that.validationQuery != null)) &&
                !((connectionInitializationStatements != null) ? !connectionInitializationStatements.equals(that.connectionInitializationStatements) : (that.connectionInitializationStatements != null));
    }

    @Override
    public int hashCode() {
        int result = (driverClass != null) ? driverClass.hashCode() : 0;
        result = (31 * result) + ((user != null) ? user.hashCode() : 0);
        result = (31 * result) + ((password != null) ? password.hashCode() : 0);
        result = (31 * result) + ((url != null) ? url.hashCode() : 0);
        result = (31 * result) + ((properties != null) ? properties.hashCode() : 0);
        result = (31 * result) + ((maxWaitForConnection != null) ? maxWaitForConnection.hashCode() : 0);
        result = (31 * result) + ((validationQuery != null) ? validationQuery.hashCode() : 0);
        result = (31 * result) + minSize;
        result = (31 * result) + maxSize;
        result = (31 * result) + (checkConnectionWhileIdle ? 1 : 0);
        result = (31 * result) + ((checkConnectionHealthWhenIdleFor != null) ? checkConnectionHealthWhenIdleFor.hashCode() : 0);
        result = (31 * result) + ((closeConnectionIfIdleFor != null) ? closeConnectionIfIdleFor.hashCode() : 0);
        result = (31 * result) + (defaultReadOnly ? 1 : 0);
        result = (31 * result) + ((connectionInitializationStatements != null) ? connectionInitializationStatements.hashCode() : 0);
        return result;
    }

    @Override
    public String toString() {
        return Objects.toStringHelper(this)
                      .add("driverClass", driverClass)
                      .add("user", user)
                      .add("password", password)
                      .add("url", url)
                      .add("properties", properties)
                      .add("maxWaitForConnection", maxWaitForConnection)
                      .add("validationQuery", validationQuery)
                      .add("minSize", minSize)
                      .add("maxSize", maxSize)
                      .add("checkConnectionWhileIdle", checkConnectionWhileIdle)
                      .add("checkConnectionHealthWhenIdleFor", checkConnectionHealthWhenIdleFor)
                      .add("closeConnectionIfIdleFor", closeConnectionIfIdleFor)
                      .add("defaultReadOnly", defaultReadOnly)
                      .add("connectionInitializationStatements", connectionInitializationStatements)
                      .toString();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy