# coding: utf-8

"""
    Seeq REST API

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

    OpenAPI spec version: 66.118.2-v202603221428-CD
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

from pprint import pformat
from six import iteritems
import re


class StoredTableColumnInputV1(object):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """


    """
    Attributes:
      swagger_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    swagger_types = {
        'column_name': 'str',
        'column_type': 'str',
        'column_uom': 'str',
        'description': 'str',
        'is_hidden': 'bool',
        'is_indexed': 'bool',
        'sort_ascending': 'bool',
        'sort_index': 'int'
    }

    attribute_map = {
        'column_name': 'columnName',
        'column_type': 'columnType',
        'column_uom': 'columnUom',
        'description': 'description',
        'is_hidden': 'isHidden',
        'is_indexed': 'isIndexed',
        'sort_ascending': 'sortAscending',
        'sort_index': 'sortIndex'
    }

    def __init__(self, column_name=None, column_type=None, column_uom=None, description=None, is_hidden=None, is_indexed=None, sort_ascending=None, sort_index=None):
        """
        StoredTableColumnInputV1 - a model defined in Swagger
        """

        self._column_name = None
        self._column_type = None
        self._column_uom = None
        self._description = None
        self._is_hidden = None
        self._is_indexed = None
        self._sort_ascending = None
        self._sort_index = None

        if column_name is not None:
          self.column_name = column_name
        if column_type is not None:
          self.column_type = column_type
        if column_uom is not None:
          self.column_uom = column_uom
        if description is not None:
          self.description = description
        if is_hidden is not None:
          self.is_hidden = is_hidden
        if is_indexed is not None:
          self.is_indexed = is_indexed
        if sort_ascending is not None:
          self.sort_ascending = sort_ascending
        if sort_index is not None:
          self.sort_index = sort_index

    @property
    def column_name(self):
        """
        Gets the column_name of this StoredTableColumnInputV1.
        Name of the column. This will be used as the header for this column. It must be unique for              this table

        :return: The column_name of this StoredTableColumnInputV1.
        :rtype: str
        """
        return self._column_name

    @column_name.setter
    def column_name(self, column_name):
        """
        Sets the column_name of this StoredTableColumnInputV1.
        Name of the column. This will be used as the header for this column. It must be unique for              this table

        :param column_name: The column_name of this StoredTableColumnInputV1.
        :type: str
        """
        if column_name is None:
            raise ValueError("Invalid value for `column_name`, must not be `None`")

        self._column_name = column_name

    @property
    def column_type(self):
        """
        Gets the column_type of this StoredTableColumnInputV1.
        The type for the column

        :return: The column_type of this StoredTableColumnInputV1.
        :rtype: str
        """
        return self._column_type

    @column_type.setter
    def column_type(self, column_type):
        """
        Sets the column_type of this StoredTableColumnInputV1.
        The type for the column

        :param column_type: The column_type of this StoredTableColumnInputV1.
        :type: str
        """
        if column_type is None:
            raise ValueError("Invalid value for `column_type`, must not be `None`")

        self._column_type = column_type

    @property
    def column_uom(self):
        """
        Gets the column_uom of this StoredTableColumnInputV1.
        The unit of measure for this column. This is only applicable to columns whose type                      is NUMERIC. If provided, this will enforce that data in this column must be in this unit. For                      example, if the user specifies Fahrenheit and the value comes in as Meters, the value will not be                      inserted. If not provided, values with different units will be allowed to be stored and an extra                       column will be added to the generated table for the UOM

        :return: The column_uom of this StoredTableColumnInputV1.
        :rtype: str
        """
        return self._column_uom

    @column_uom.setter
    def column_uom(self, column_uom):
        """
        Sets the column_uom of this StoredTableColumnInputV1.
        The unit of measure for this column. This is only applicable to columns whose type                      is NUMERIC. If provided, this will enforce that data in this column must be in this unit. For                      example, if the user specifies Fahrenheit and the value comes in as Meters, the value will not be                      inserted. If not provided, values with different units will be allowed to be stored and an extra                       column will be added to the generated table for the UOM

        :param column_uom: The column_uom of this StoredTableColumnInputV1.
        :type: str
        """

        self._column_uom = column_uom

    @property
    def description(self):
        """
        Gets the description of this StoredTableColumnInputV1.
        The optional description for this column.

        :return: The description of this StoredTableColumnInputV1.
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """
        Sets the description of this StoredTableColumnInputV1.
        The optional description for this column.

        :param description: The description of this StoredTableColumnInputV1.
        :type: str
        """

        self._description = description

    @property
    def is_hidden(self):
        """
        Gets the is_hidden of this StoredTableColumnInputV1.

        :return: The is_hidden of this StoredTableColumnInputV1.
        :rtype: bool
        """
        return self._is_hidden

    @is_hidden.setter
    def is_hidden(self, is_hidden):
        """
        Sets the is_hidden of this StoredTableColumnInputV1.

        :param is_hidden: The is_hidden of this StoredTableColumnInputV1.
        :type: bool
        """

        self._is_hidden = is_hidden

    @property
    def is_indexed(self):
        """
        Gets the is_indexed of this StoredTableColumnInputV1.

        :return: The is_indexed of this StoredTableColumnInputV1.
        :rtype: bool
        """
        return self._is_indexed

    @is_indexed.setter
    def is_indexed(self, is_indexed):
        """
        Sets the is_indexed of this StoredTableColumnInputV1.

        :param is_indexed: The is_indexed of this StoredTableColumnInputV1.
        :type: bool
        """

        self._is_indexed = is_indexed

    @property
    def sort_ascending(self):
        """
        Gets the sort_ascending of this StoredTableColumnInputV1.
        Whether to sort ascending if sortIndex is provided, defaults to false

        :return: The sort_ascending of this StoredTableColumnInputV1.
        :rtype: bool
        """
        return self._sort_ascending

    @sort_ascending.setter
    def sort_ascending(self, sort_ascending):
        """
        Sets the sort_ascending of this StoredTableColumnInputV1.
        Whether to sort ascending if sortIndex is provided, defaults to false

        :param sort_ascending: The sort_ascending of this StoredTableColumnInputV1.
        :type: bool
        """

        self._sort_ascending = sort_ascending

    @property
    def sort_index(self):
        """
        Gets the sort_index of this StoredTableColumnInputV1.
        The sort index for this column. If not provided, the column is not sorted.

        :return: The sort_index of this StoredTableColumnInputV1.
        :rtype: int
        """
        return self._sort_index

    @sort_index.setter
    def sort_index(self, sort_index):
        """
        Sets the sort_index of this StoredTableColumnInputV1.
        The sort index for this column. If not provided, the column is not sorted.

        :param sort_index: The sort_index of this StoredTableColumnInputV1.
        :type: int
        """

        self._sort_index = sort_index

    def to_dict(self):
        """
        Returns the model properties as a dict
        """
        result = {}

        for attr, _ in iteritems(self.swagger_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """
        Returns the string representation of the model
        """
        return pformat(self.to_dict())

    def __repr__(self):
        """
        For `print` and `pprint`
        """
        return self.to_str()

    def __eq__(self, other):
        """
        Returns true if both objects are equal
        """
        if not isinstance(other, StoredTableColumnInputV1):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """
        Returns true if both objects are not equal
        """
        return not self == other
