package dataQualityWebSite;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class Configuration 
{
    private int    configurationId;
    private String configurationName;
    private String htmlFileLocation;
    private String logFileLocation;
    private String queryFileLocation;
	private String groupSummaryName;
    private String groupPrefix;
    private String dataTablePrefix;
    private String chartPrefix;
    private String linkToStylesheets;
    private String linkToKpiImages;
    private int    chartThumbnailWidth;
    private int    chartThumbnailHeight;
    private String linkToIssueTrackingNew;
    private String kpiImageType;

    private Connection connection;
    
    public Configuration(String configurationName, Connection connection)
    {
    	
    	Statement selectConfigurationStatement = null;
    	ResultSet configurationResultSet = null;
    	boolean configurationFound = false;
    	
    	this.configurationName = configurationName;
		this.connection = connection;
		
		try
		{
			selectConfigurationStatement = connection.createStatement();
		}
		catch(SQLException sqle)
		{
			System.out.println(sqle);
		}

		try
		{
			configurationResultSet = selectConfigurationStatement.executeQuery
			(
				"select " +
			        "id, " +
			        "html_file_location, " +
				    "log_file_location, " +
				    "query_file_location, " +
				    "group_summary_name, " +
				    "group_prefix, " +
				    "data_table_prefix, " +
				    "chart_prefix, " +
				    "link_to_stylesheets, " +
				    "link_to_kpi_images, " +
				    "chart_thumbnail_width, " +
				    "chart_thumbnail_height, " +
				    "link_to_issue_tracking_new, " +
				    "kpi_image_type " +
				"from " +
					"configuration " +
				"where " +
					"configuration_name = '" + configurationName + "'"
			);

		}
		catch(SQLException sqle)
		{
			System.out.println(sqle);
		}
		
		try
		{
			configurationFound = configurationResultSet.next();
		} 
		catch (SQLException e)
		{
			e.printStackTrace();
		}
		
		if (configurationFound)
		{
			try
			{
			    configurationId = configurationResultSet.getInt("id");
			    htmlFileLocation = new String(configurationResultSet.getString("html_file_location"));
			    logFileLocation = new String(configurationResultSet.getString("log_file_location"));
			    queryFileLocation = new String(configurationResultSet.getString("query_file_location"));
			    groupSummaryName = new String(configurationResultSet.getString("group_summary_name"));
			    groupPrefix = new String(configurationResultSet.getString("group_prefix"));
			    dataTablePrefix = new String(configurationResultSet.getString("data_table_prefix"));
			    chartPrefix = new String(configurationResultSet.getString("chart_prefix"));
			    linkToStylesheets = new String(configurationResultSet.getString("link_to_stylesheets"));
			    linkToKpiImages = new String(configurationResultSet.getString("link_to_kpi_images"));
			    chartThumbnailWidth = configurationResultSet.getInt("chart_thumbnail_width");
			    chartThumbnailHeight = configurationResultSet.getInt("chart_thumbnail_height");
			    linkToIssueTrackingNew = configurationResultSet.getString("link_to_issue_tracking_new");
			    kpiImageType = new String(configurationResultSet.getString("kpi_image_type"));
			} 
			catch (SQLException e)
			{
				e.printStackTrace();
			}
		}

		try 
		{
			selectConfigurationStatement.close();
		} 
		catch (SQLException e) 
		{
			e.printStackTrace();
		}
    }

	public String getChartPrefix() 
	{
		return chartPrefix;
	}

	public String getDataTablePrefix() 
	{
		return dataTablePrefix;
	}

	public String getGroupPrefix() 
	{
		return groupPrefix;
	}

	public String getGroupSummaryName() 
	{
		return groupSummaryName;
	}

	public int getConfigurationId() 
	{
		return configurationId;
	}

	public String getConfigurationName() {
		return configurationName;
	}

	public int getChartThumbnailHeight()
	{
		return chartThumbnailHeight;
	}

	public int getChartThumbnailWidth()
	{
		return chartThumbnailWidth;
	}

	public Connection getConnection()
	{
		return connection;
	}

	public String getKpiImageType()
	{
		return kpiImageType;
	}

	public String getLinkToStylesheets()
	{
		return linkToStylesheets;
	}

	public String getLinkToIssueTrackingNew()
	{
		return linkToIssueTrackingNew;
	}

	public String getLinkToKpiImages()
	{
		return linkToKpiImages;
	}

	public String getLogFileLocation()
	{
		return logFileLocation;
	}

	public String getHtmlFileLocation()
	{
		return htmlFileLocation;
	}
	
    public String getQueryFileLocation() 
    {
		return queryFileLocation;
	}

	public void setQueryFileLocation(String queryFileLocation) 
	{
		this.queryFileLocation = queryFileLocation;
	}
}