package com.telephoners.krakyournet.ctf.core;

import com.telephoners.krakyournet.ctf.beans.Team;
import com.telephoners.krakyournet.ctf.beans.User;
import com.telephoners.krakyournet.ctf.beans.tasks.TextTask;
import com.telephoners.krakyournet.ctf.beans.tasks.WebTask;
import io.dropwizard.Configuration;

import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.Set;

public class ApplicationConfiguration extends Configuration
{
    @NotNull
    private String dbHost;

    @NotNull
    private int dbPort;

    @NotNull
    private String dbName;

    @NotNull
    private String digestMethod;

    @NotNull
    private List<Team> teams;

    @NotNull
    private List<TextTask> textTasks;

    @NotNull
    private List<WebTask> webTasks;

    @NotNull
    private List<User> admins;

    @NotNull
    private StartupConfiguration startupConfiguration;

    @NotNull
    private Set<String> proxiedHeaders;

    public List<User> getAdmins()
    {
        return admins;
    }

    public void setAdmins(List<User> admins)
    {
        this.admins = admins;
    }

    public String getDigestMethod()
    {
        return digestMethod;
    }

    public List<Team> getTeams()
    {
        return teams;
    }

    public void setTeams(List<Team> teams)
    {
        this.teams = teams;
    }

    public void setDigestMethodHashMethod(String digestMethod)
    {
        this.digestMethod = digestMethod;
    }

    public String getDbHost()
    {
        return dbHost;
    }

    public void setDbHost(String dbHost)
    {
        this.dbHost = dbHost;
    }

    public int getDbPort()
    {
        return dbPort;
    }

    public void setDbPort(int dbPort)
    {
        this.dbPort = dbPort;
    }

    public String getDbName()
    {
        return dbName;
    }

    public void setDbName(String dbName)
    {
        this.dbName = dbName;
    }

    public List<TextTask> getTextTasks()
    {
        return textTasks;
    }

    public void setTextTasks(List<TextTask> textTasks)
    {
        this.textTasks = textTasks;
    }

    public List<WebTask> getWebTasks()
    {
        return webTasks;
    }

    public void setWebTasks(List<WebTask> webTasks)
    {
        this.webTasks = webTasks;
    }

    public void setDigestMethod(String digestMethod)
    {
        this.digestMethod = digestMethod;
    }

    public StartupConfiguration getStartupConfiguration()
    {
        return startupConfiguration;
    }

    public void setStartupConfiguration(StartupConfiguration startupConfiguration)
    {
        this.startupConfiguration = startupConfiguration;
    }

    public Set<String> getProxiedHeaders()
    {
        return proxiedHeaders;
    }

    public void setProxiedHeaders(Set<String> proxiedHeaders)
    {
        this.proxiedHeaders = proxiedHeaders;
    }
}
