# 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 ViewColumnInputV1(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_definition': 'str',
        'group_order': 'int',
        'sort_ascending': 'bool',
        'sort_index': 'int',
        'view_column_filters': 'list[ViewColumnFilterInputV1]'
    }

    attribute_map = {
        'column_definition': 'columnDefinition',
        'group_order': 'groupOrder',
        'sort_ascending': 'sortAscending',
        'sort_index': 'sortIndex',
        'view_column_filters': 'viewColumnFilters'
    }

    def __init__(self, column_definition=None, group_order=None, sort_ascending=None, sort_index=None, view_column_filters=None):
        """
        ViewColumnInputV1 - a model defined in Swagger
        """

        self._column_definition = None
        self._group_order = None
        self._sort_ascending = None
        self._sort_index = None
        self._view_column_filters = None

        if column_definition is not None:
          self.column_definition = column_definition
        if group_order is not None:
          self.group_order = group_order
        if sort_ascending is not None:
          self.sort_ascending = sort_ascending
        if sort_index is not None:
          self.sort_index = sort_index
        if view_column_filters is not None:
          self.view_column_filters = view_column_filters

    @property
    def column_definition(self):
        """
        Gets the column_definition of this ViewColumnInputV1.
        ID of the Column Definition in the Item Table that generates the View Column for the Item Hierarchy.

        :return: The column_definition of this ViewColumnInputV1.
        :rtype: str
        """
        return self._column_definition

    @column_definition.setter
    def column_definition(self, column_definition):
        """
        Sets the column_definition of this ViewColumnInputV1.
        ID of the Column Definition in the Item Table that generates the View Column for the Item Hierarchy.

        :param column_definition: The column_definition of this ViewColumnInputV1.
        :type: str
        """

        self._column_definition = column_definition

    @property
    def group_order(self):
        """
        Gets the group_order of this ViewColumnInputV1.
        The grouping order for this column. If not provided, the column is not grouped to create the Hierarchy. Lower grouping order values will be grouped first indicating they are at a higher level in the hierarchy. 

        :return: The group_order of this ViewColumnInputV1.
        :rtype: int
        """
        return self._group_order

    @group_order.setter
    def group_order(self, group_order):
        """
        Sets the group_order of this ViewColumnInputV1.
        The grouping order for this column. If not provided, the column is not grouped to create the Hierarchy. Lower grouping order values will be grouped first indicating they are at a higher level in the hierarchy. 

        :param group_order: The group_order of this ViewColumnInputV1.
        :type: int
        """

        self._group_order = group_order

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

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

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

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

        self._sort_ascending = sort_ascending

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

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

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

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

        self._sort_index = sort_index

    @property
    def view_column_filters(self):
        """
        Gets the view_column_filters of this ViewColumnInputV1.
        The filters to be applied to the view column. If not provided, no filters are applied.

        :return: The view_column_filters of this ViewColumnInputV1.
        :rtype: list[ViewColumnFilterInputV1]
        """
        return self._view_column_filters

    @view_column_filters.setter
    def view_column_filters(self, view_column_filters):
        """
        Sets the view_column_filters of this ViewColumnInputV1.
        The filters to be applied to the view column. If not provided, no filters are applied.

        :param view_column_filters: The view_column_filters of this ViewColumnInputV1.
        :type: list[ViewColumnFilterInputV1]
        """

        self._view_column_filters = view_column_filters

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

        return self.__dict__ == other.__dict__

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