/**
******************************************************************************
* Copyright © 2018 PTA GmbH.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* 
*     http://www.eclipse.org/legal/epl-v10.html
* 
******************************************************************************
*/

package org.eclipse.openk;

import io.dropwizard.Configuration;
import com.fasterxml.jackson.annotation.JsonProperty;
import org.hibernate.validator.constraints.*;

public class MicsCentralConfiguration extends Configuration {
    @NotEmpty
    private String servicesDistributionFileName;

    @JsonProperty
    private String proxyHost;

    @JsonProperty
    private String proxyPort;

    @JsonProperty
    public String getServicesDistributionFileName() {
        return servicesDistributionFileName;
    }

    @JsonProperty
    public void setServicesDistributionFileName(String servicesDistributionFileName) {
        this.servicesDistributionFileName = servicesDistributionFileName;
    }

    public String getProxyHost() {
        return proxyHost;
    }

    public void setProxyHost(String proxyHost) {
        this.proxyHost = proxyHost;
    }

    public String getProxyPort() {
        return proxyPort;
    }

    public void setProxyPort(String proxyPort) {
        this.proxyPort = proxyPort;
    }
}
