class DateValidator extends BaseValidator {

    @Override
    public String validate()
    {
        String message = null;

        Map<ColumnType, ColumnDefinitionRow> columnTypes = mapTypesToColumns();

        if (columnTypes.containsKey(ColumnType.TIME) && !columnTypes.containsKey(ColumnType.DATE))
        {
            message = "Need a " + ColumnType.DATE + " column identified for the identified " + ColumnType.TIME + " column.";
        }
        else if (columnTypes.containsKey(ColumnType.DOWN_TIME) && !columnTypes.containsKey(ColumnType.DATE)
                && !columnTypes.containsKey(ColumnType.DOWN_DATE) && !columnTypes.containsKey(ColumnType.TIMESTAMP))
        {
            message = "Need a " + ColumnType.DOWN_DATE + " column identified for the identified " + ColumnType.DOWN_TIME + ".";
        }
        else
        {
            for (ColumnType columType : ourDateColumnTypes)
            {
                ColumnDefinitionRow row = columnTypes.get(columType);
                if (row != null && StringUtils.isEmpty(row.getFormat()))
                {
                    message = "Need a format for column " + row.getColumnName();
                    break;
                }
            }
        }

        return message;
    }

    public  DateValidator(ColumnDefinitionModel model);

}