package org.apache.seatunnel.datasource.plugin.rabbitmq;

public class RabbitConfiguration {
    private String host;
    private Integer port;
    private String virtualHost;
    private String username;
    private String password;
    private String uri;
    private Integer networkRecoveryInterval;
    private Boolean automaticRecovery;
    private Boolean topologyRecovery;
    private Integer connectionTimeout;
    private Integer requestedChannelMax;
    private Integer requestedFrameMax;
    private Integer requestedHeartbeat;
    private Integer prefetchCount;
    private long deliveryTimeout;
    private String queueName;
    private String routingKey;

    public RabbitConfiguration() {}

    public RabbitConfiguration(
            String host,
            Integer port,
            String virtualHost,
            String username,
            String password,
            String uri,
            Integer networkRecoveryInterval,
            Boolean automaticRecovery,
            Boolean topologyRecovery,
            Integer connectionTimeout,
            Integer requestedChannelMax,
            Integer requestedFrameMax,
            Integer requestedHeartbeat,
            Integer prefetchCount,
            long deliveryTimeout,
            String queueName,
            String routingKey,
            String schema) {
        this.host = host;
        this.port = port;
        this.virtualHost = virtualHost;
        this.username = username;
        this.password = password;
        this.uri = uri;
        this.networkRecoveryInterval = networkRecoveryInterval;
        this.automaticRecovery = automaticRecovery;
        this.topologyRecovery = topologyRecovery;
        this.connectionTimeout = connectionTimeout;
        this.requestedChannelMax = requestedChannelMax;
        this.requestedFrameMax = requestedFrameMax;
        this.requestedHeartbeat = requestedHeartbeat;
        this.prefetchCount = prefetchCount;
        this.deliveryTimeout = deliveryTimeout;
        this.queueName = queueName;
        this.routingKey = routingKey;
    }

    @Override
    public String toString() {
        return "RabbitConfiguration{"
                + "host='"
                + host
                + '\''
                + ", port="
                + port
                + ", virtualHost='"
                + virtualHost
                + '\''
                + ", username='"
                + username
                + '\''
                + ", password='"
                + password
                + '\''
                + ", uri='"
                + uri
                + '\''
                + ", networkRecoveryInterval="
                + networkRecoveryInterval
                + ", automaticRecovery="
                + automaticRecovery
                + ", topologyRecovery="
                + topologyRecovery
                + ", connectionTimeout="
                + connectionTimeout
                + ", requestedChannelMax="
                + requestedChannelMax
                + ", requestedFrameMax="
                + requestedFrameMax
                + ", requestedHeartbeat="
                + requestedHeartbeat
                + ", prefetchCount="
                + prefetchCount
                + ", deliveryTimeout="
                + deliveryTimeout
                + ", queueName='"
                + queueName
                + '\''
                + ", routingKey='"
                + routingKey
                + '\''
                + '}';
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public Integer getPort() {
        return port;
    }

    public void setPort(Integer port) {
        this.port = port;
    }

    public String getVirtualHost() {
        return virtualHost;
    }

    public void setVirtualHost(String virtualHost) {
        this.virtualHost = virtualHost;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

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

    public String getUri() {
        return uri;
    }

    public void setUri(String uri) {
        this.uri = uri;
    }

    public Integer getNetworkRecoveryInterval() {
        return networkRecoveryInterval;
    }

    public void setNetworkRecoveryInterval(Integer networkRecoveryInterval) {
        this.networkRecoveryInterval = networkRecoveryInterval;
    }

    public Boolean getAutomaticRecovery() {
        return automaticRecovery;
    }

    public void setAutomaticRecovery(Boolean automaticRecovery) {
        this.automaticRecovery = automaticRecovery;
    }

    public Boolean getTopologyRecovery() {
        return topologyRecovery;
    }

    public void setTopologyRecovery(Boolean topologyRecovery) {
        this.topologyRecovery = topologyRecovery;
    }

    public Integer getConnectionTimeout() {
        return connectionTimeout;
    }

    public void setConnectionTimeout(Integer connectionTimeout) {
        this.connectionTimeout = connectionTimeout;
    }

    public Integer getRequestedChannelMax() {
        return requestedChannelMax;
    }

    public void setRequestedChannelMax(Integer requestedChannelMax) {
        this.requestedChannelMax = requestedChannelMax;
    }

    public Integer getRequestedFrameMax() {
        return requestedFrameMax;
    }

    public void setRequestedFrameMax(Integer requestedFrameMax) {
        this.requestedFrameMax = requestedFrameMax;
    }

    public Integer getRequestedHeartbeat() {
        return requestedHeartbeat;
    }

    public void setRequestedHeartbeat(Integer requestedHeartbeat) {
        this.requestedHeartbeat = requestedHeartbeat;
    }

    public Integer getPrefetchCount() {
        return prefetchCount;
    }

    public void setPrefetchCount(Integer prefetchCount) {
        this.prefetchCount = prefetchCount;
    }

    public long getDeliveryTimeout() {
        return deliveryTimeout;
    }

    public void setDeliveryTimeout(long deliveryTimeout) {
        this.deliveryTimeout = deliveryTimeout;
    }

    public String getQueueName() {
        return queueName;
    }

    public void setQueueName(String queueName) {
        this.queueName = queueName;
    }

    public String getRoutingKey() {
        return routingKey;
    }

    public void setRoutingKey(String routingKey) {
        this.routingKey = routingKey;
    }
}
