package profileEngine;

import java.util.Calendar;

public class ColumnElement
{
    private int columnId;
    private String columnName;
    private String dataType;
    private int dataLength;
    private Calendar dateStatisticsCollected;
    private String nullable;
    private long nullCount;
    private long zeroCount;
    private long blankCount;
    private long uniqueValueCount;
    private double minNumber;
    private String minDate;
    private String minString;
    private double maxNumber;
    private String maxDate;
    private String maxString;
    private int maxLength;
	private double mostPopularNumber;
    private Calendar mostPopularDate;
    private String mostPopularString;
    private long mostPopularCount;
    private double averageValue;
    private String profileDataType;
    private int columnProfileId;
    
    
	public ColumnElement()
	{
		;
	}

	public int getColumnId()
	{
		return columnId;
	}

	public void setColumnId(int columnId)
	{
		this.columnId = columnId;
	}

	public String getColumnName()
	{
		return columnName;
	}

	public void setColumnName(String columnName)
	{
		this.columnName = columnName;
	}

	public int getDataLength()
	{
		return dataLength;
	}

	public void setDataLength(int dataLength)
	{
		this.dataLength = dataLength;
	}

	public String getDataType()
	{
		return dataType;
	}

	public void setDataType(String dataType)
	{
		this.dataType = dataType;
        if 
        (
			dataType.equalsIgnoreCase("NUMBER") ||
			dataType.equalsIgnoreCase("BINARY_INTEGER") || 
			dataType.equalsIgnoreCase("NATURAL") ||
			dataType.equalsIgnoreCase("NATURALN") || 
			dataType.equalsIgnoreCase("POSITIVE") || 
			dataType.equalsIgnoreCase("POSITIVEN") || 
			dataType.equalsIgnoreCase("SIGNTYPE") || 
			dataType.equalsIgnoreCase("DEC") || 
			dataType.equalsIgnoreCase("DECIMAL") || 
			dataType.equalsIgnoreCase("DOUBLE PRECISION") ||
			dataType.equalsIgnoreCase("DOUBLE") ||
			dataType.equalsIgnoreCase("FLOAT") || 
			dataType.equalsIgnoreCase("INTEGER") || 
			dataType.equalsIgnoreCase("INT") || 
			dataType.equalsIgnoreCase("INT1") || 
			dataType.equalsIgnoreCase("INT2") || 
			dataType.equalsIgnoreCase("INT4") || 
			dataType.equalsIgnoreCase("INT8") || 
			dataType.equalsIgnoreCase("FLOAT4") || 
			dataType.equalsIgnoreCase("FLOAT8") || 
			dataType.equalsIgnoreCase("NUMERIC") || 
			dataType.equalsIgnoreCase("REAL") || 
			dataType.equalsIgnoreCase("SMALLINT") ||
			dataType.equalsIgnoreCase("BIGINT")
        )
        	profileDataType = "Number";
        else if 
        (
    		(dataType.equalsIgnoreCase("DATE")) ||
     		(dataType.toLowerCase().startsWith("timestamp")) ||
     		(dataType.toLowerCase().startsWith("datetime"))
        )
        	profileDataType = "Date";
        else if 
        (
     		(dataType.equalsIgnoreCase("TIME")) ||
    		(dataType.equalsIgnoreCase("TIMETZ"))
        )
        	profileDataType = "Time";
        else if 
        (
        	(dataType.toLowerCase().startsWith("bool")) ||
        	(dataType.toLowerCase().equals("bit"))
        )
        	profileDataType = "Boolean";
        else
        	profileDataType = "String";
	}

	public double getAverageValue()
	{
		return averageValue;
	}

	public void setAverageValue(double averageValue)
	{
		this.averageValue = averageValue;
	}

	public long getBlankCount()
	{
		return blankCount;
	}

	public void setBlankCount(long blankCount)
	{
		this.blankCount = blankCount;
	}

	public Calendar getDateStatisticsCollected()
	{
		return dateStatisticsCollected;
	}

	public void setDateStatisticsCollected(Calendar dateStatisticsCollected)
	{
		this.dateStatisticsCollected = dateStatisticsCollected;
	}

	public String getMaxDate()
	{
		return maxDate;
	}

	public void setMaxDate(String maxDate)
	{
		this.maxDate = maxDate;
	}

	public double getMaxNumber()
	{
		return maxNumber;
	}

	public void setMaxNumber(double maxNumber)
	{
		this.maxNumber = maxNumber;
	}

	public String getMaxString()
	{
		return maxString;
	}

	public void setMaxString(String maxString)
	{
		this.maxString = maxString;
	}

	public int getMaxLength() 
	{
		return maxLength;
	}

	public void setMaxLength(int maxLength) 
	{
		this.maxLength = maxLength;
	}

	public String getMinDate()
	{
		return minDate;
	}

	public void setMinDate(String minDate)
	{
		this.minDate = minDate;
	}

	public double getMinNumber()
	{
		return minNumber;
	}

	public void setMinNumber(double minNumber)
	{
		this.minNumber = minNumber;
	}

	public String getMinString()
	{
		return minString;
	}

	public void setMinString(String minString)
	{
		this.minString = minString;
	}

	public long getMostPopularCount()
	{
		return mostPopularCount;
	}

	public void setMostPopularCount(long mostPopularCount)
	{
		this.mostPopularCount = mostPopularCount;
	}

	public Calendar getMostPopularDate()
	{
		return mostPopularDate;
	}

	public void setMostPopularDate(Calendar mostPopularDate)
	{
		this.mostPopularDate = mostPopularDate;
	}

	public double getMostPopularNumber()
	{
		return mostPopularNumber;
	}

	public void setMostPopularNumber(double mostPopularNumber)
	{
		this.mostPopularNumber = mostPopularNumber;
	}

	public String getMostPopularString()
	{
		return mostPopularString;
	}

	public void setMostPopularString(String mostPopularString)
	{
		this.mostPopularString = mostPopularString;
	}

	public String getNullable()
	{
		return nullable;
	}

	public void setNullable(String nullable)
	{
		this.nullable = nullable;
	}

	public long getNullCount()
	{
		return nullCount;
	}

	public void setNullCount(long nullCount)
	{
		this.nullCount = nullCount;
	}

	public long getUniqueValueCount()
	{
		return uniqueValueCount;
	}

	public void setUniqueValueCount(long uniqueValueCount)
	{
		this.uniqueValueCount = uniqueValueCount;
	}

	public long getZeroCount()
	{
		return zeroCount;
	}

	public void setZeroCount(long zeroCount)
	{
		this.zeroCount = zeroCount;
	}

	public String getProfileDataType()
	{
		return profileDataType;
	}

	public int getColumnProfileId()
	{
		return columnProfileId;
	}

	public void setColumnProfileId(int columnProfileId)
	{
		this.columnProfileId = columnProfileId;
	}

}
