# 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.119.1-v202603241138-CD
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

from pprint import pformat
from six import iteritems
import re


class ColumnDefinitionBulkEditInputV1(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_id': 'str',
        'column_name': 'str',
        'column_rules': 'list[ColumnRuleInputV1]',
        'column_type': 'str',
        'column_uom': 'str',
        'description': 'str',
        'display_property': 'str',
        'is_generated': 'bool',
        'is_hidden': 'bool',
        'is_indexed': 'bool',
        'sort_ascending': 'bool',
        'sort_index': 'int',
        'uuid_column_output_item_type': 'str'
    }

    attribute_map = {
        'column_id': 'columnId',
        'column_name': 'columnName',
        'column_rules': 'columnRules',
        'column_type': 'columnType',
        'column_uom': 'columnUom',
        'description': 'description',
        'display_property': 'displayProperty',
        'is_generated': 'isGenerated',
        'is_hidden': 'isHidden',
        'is_indexed': 'isIndexed',
        'sort_ascending': 'sortAscending',
        'sort_index': 'sortIndex',
        'uuid_column_output_item_type': 'uuidColumnOutputItemType'
    }

    def __init__(self, column_id=None, column_name=None, column_rules=None, column_type=None, column_uom=None, description=None, display_property=None, is_generated=None, is_hidden=None, is_indexed=None, sort_ascending=None, sort_index=None, uuid_column_output_item_type=None):
        """
        ColumnDefinitionBulkEditInputV1 - a model defined in Swagger
        """

        self._column_id = None
        self._column_name = None
        self._column_rules = None
        self._column_type = None
        self._column_uom = None
        self._description = None
        self._display_property = None
        self._is_generated = None
        self._is_hidden = None
        self._is_indexed = None
        self._sort_ascending = None
        self._sort_index = None
        self._uuid_column_output_item_type = None

        if column_id is not None:
          self.column_id = column_id
        if column_name is not None:
          self.column_name = column_name
        if column_rules is not None:
          self.column_rules = column_rules
        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 display_property is not None:
          self.display_property = display_property
        if is_generated is not None:
          self.is_generated = is_generated
        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
        if uuid_column_output_item_type is not None:
          self.uuid_column_output_item_type = uuid_column_output_item_type

    @property
    def column_id(self):
        """
        Gets the column_id of this ColumnDefinitionBulkEditInputV1.
        The optional column id to specify for columns being updated. This must be provided for a column that is being updated. If left blank, a new column will be created.

        :return: The column_id of this ColumnDefinitionBulkEditInputV1.
        :rtype: str
        """
        return self._column_id

    @column_id.setter
    def column_id(self, column_id):
        """
        Sets the column_id of this ColumnDefinitionBulkEditInputV1.
        The optional column id to specify for columns being updated. This must be provided for a column that is being updated. If left blank, a new column will be created.

        :param column_id: The column_id of this ColumnDefinitionBulkEditInputV1.
        :type: str
        """

        self._column_id = column_id

    @property
    def column_name(self):
        """
        Gets the column_name of this ColumnDefinitionBulkEditInputV1.
        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 ColumnDefinitionBulkEditInputV1.
        :rtype: str
        """
        return self._column_name

    @column_name.setter
    def column_name(self, column_name):
        """
        Sets the column_name of this ColumnDefinitionBulkEditInputV1.
        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 ColumnDefinitionBulkEditInputV1.
        :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_rules(self):
        """
        Gets the column_rules of this ColumnDefinitionBulkEditInputV1.
        The list of rules that determine the resulting value of a column. At least one rule is required

        :return: The column_rules of this ColumnDefinitionBulkEditInputV1.
        :rtype: list[ColumnRuleInputV1]
        """
        return self._column_rules

    @column_rules.setter
    def column_rules(self, column_rules):
        """
        Sets the column_rules of this ColumnDefinitionBulkEditInputV1.
        The list of rules that determine the resulting value of a column. At least one rule is required

        :param column_rules: The column_rules of this ColumnDefinitionBulkEditInputV1.
        :type: list[ColumnRuleInputV1]
        """
        if column_rules is None:
            raise ValueError("Invalid value for `column_rules`, must not be `None`")

        self._column_rules = column_rules

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

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

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

        :param column_type: The column_type of this ColumnDefinitionBulkEditInputV1.
        :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 ColumnDefinitionBulkEditInputV1.
        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 ColumnDefinitionBulkEditInputV1.
        :rtype: str
        """
        return self._column_uom

    @column_uom.setter
    def column_uom(self, column_uom):
        """
        Sets the column_uom of this ColumnDefinitionBulkEditInputV1.
        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 ColumnDefinitionBulkEditInputV1.
        :type: str
        """

        self._column_uom = column_uom

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

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

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

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

        self._description = description

    @property
    def display_property(self):
        """
        Gets the display_property of this ColumnDefinitionBulkEditInputV1.
        The optional display property for this column, defaults to Name if type UUID, otherwise defaults to null.

        :return: The display_property of this ColumnDefinitionBulkEditInputV1.
        :rtype: str
        """
        return self._display_property

    @display_property.setter
    def display_property(self, display_property):
        """
        Sets the display_property of this ColumnDefinitionBulkEditInputV1.
        The optional display property for this column, defaults to Name if type UUID, otherwise defaults to null.

        :param display_property: The display_property of this ColumnDefinitionBulkEditInputV1.
        :type: str
        """

        self._display_property = display_property

    @property
    def is_generated(self):
        """
        Gets the is_generated of this ColumnDefinitionBulkEditInputV1.

        :return: The is_generated of this ColumnDefinitionBulkEditInputV1.
        :rtype: bool
        """
        return self._is_generated

    @is_generated.setter
    def is_generated(self, is_generated):
        """
        Sets the is_generated of this ColumnDefinitionBulkEditInputV1.

        :param is_generated: The is_generated of this ColumnDefinitionBulkEditInputV1.
        :type: bool
        """

        self._is_generated = is_generated

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

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

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

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

        self._is_hidden = is_hidden

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

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

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

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

        self._is_indexed = is_indexed

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

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

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

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

        self._sort_ascending = sort_ascending

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

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

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

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

        self._sort_index = sort_index

    @property
    def uuid_column_output_item_type(self):
        """
        Gets the uuid_column_output_item_type of this ColumnDefinitionBulkEditInputV1.
        The output item type for a UUID column. This value will be used to validate against any items that are returned from rules that return items. If the item's type doesn't match the expected output type, the rule will fail. If not provided, the rule will not validate the item type and any output item type will be allowed

        :return: The uuid_column_output_item_type of this ColumnDefinitionBulkEditInputV1.
        :rtype: str
        """
        return self._uuid_column_output_item_type

    @uuid_column_output_item_type.setter
    def uuid_column_output_item_type(self, uuid_column_output_item_type):
        """
        Sets the uuid_column_output_item_type of this ColumnDefinitionBulkEditInputV1.
        The output item type for a UUID column. This value will be used to validate against any items that are returned from rules that return items. If the item's type doesn't match the expected output type, the rule will fail. If not provided, the rule will not validate the item type and any output item type will be allowed

        :param uuid_column_output_item_type: The uuid_column_output_item_type of this ColumnDefinitionBulkEditInputV1.
        :type: str
        """

        self._uuid_column_output_item_type = uuid_column_output_item_type

    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, ColumnDefinitionBulkEditInputV1):
            return False

        return self.__dict__ == other.__dict__

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