# 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 TableDefinitionOutputV1(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 = {
        'additional_properties': 'list[ScalarPropertyV1]',
        'batch_action': 'str',
        'column_definitions': 'list[ColumnDefinitionOutputV1]',
        'data_id': 'str',
        'datasource_class': 'str',
        'datasource_id': 'str',
        'description': 'str',
        'effective_permissions': 'PermissionsV1',
        'exports': 'list[ExportPreviewV1]',
        'id': 'str',
        'is_archived': 'bool',
        'is_redacted': 'bool',
        'name': 'str',
        'navigation_column_id': 'str',
        'scoped_to': 'str',
        'status_message': 'str',
        'subscription': 'ItemPreviewV1',
        'table_type': 'str',
        'translation_key': 'str',
        'type': 'str',
        'unique_id_column_name': 'str',
        'vantage': 'ItemPreviewV1'
    }

    attribute_map = {
        'additional_properties': 'additionalProperties',
        'batch_action': 'batchAction',
        'column_definitions': 'columnDefinitions',
        'data_id': 'dataId',
        'datasource_class': 'datasourceClass',
        'datasource_id': 'datasourceId',
        'description': 'description',
        'effective_permissions': 'effectivePermissions',
        'exports': 'exports',
        'id': 'id',
        'is_archived': 'isArchived',
        'is_redacted': 'isRedacted',
        'name': 'name',
        'navigation_column_id': 'navigationColumnId',
        'scoped_to': 'scopedTo',
        'status_message': 'statusMessage',
        'subscription': 'subscription',
        'table_type': 'tableType',
        'translation_key': 'translationKey',
        'type': 'type',
        'unique_id_column_name': 'uniqueIDColumnName',
        'vantage': 'vantage'
    }

    def __init__(self, additional_properties=None, batch_action=None, column_definitions=None, data_id=None, datasource_class=None, datasource_id=None, description=None, effective_permissions=None, exports=None, id=None, is_archived=False, is_redacted=False, name=None, navigation_column_id=None, scoped_to=None, status_message=None, subscription=None, table_type=None, translation_key=None, type=None, unique_id_column_name=None, vantage=None):
        """
        TableDefinitionOutputV1 - a model defined in Swagger
        """

        self._additional_properties = None
        self._batch_action = None
        self._column_definitions = None
        self._data_id = None
        self._datasource_class = None
        self._datasource_id = None
        self._description = None
        self._effective_permissions = None
        self._exports = None
        self._id = None
        self._is_archived = None
        self._is_redacted = None
        self._name = None
        self._navigation_column_id = None
        self._scoped_to = None
        self._status_message = None
        self._subscription = None
        self._table_type = None
        self._translation_key = None
        self._type = None
        self._unique_id_column_name = None
        self._vantage = None

        if additional_properties is not None:
          self.additional_properties = additional_properties
        if batch_action is not None:
          self.batch_action = batch_action
        if column_definitions is not None:
          self.column_definitions = column_definitions
        if data_id is not None:
          self.data_id = data_id
        if datasource_class is not None:
          self.datasource_class = datasource_class
        if datasource_id is not None:
          self.datasource_id = datasource_id
        if description is not None:
          self.description = description
        if effective_permissions is not None:
          self.effective_permissions = effective_permissions
        if exports is not None:
          self.exports = exports
        if id is not None:
          self.id = id
        if is_archived is not None:
          self.is_archived = is_archived
        if is_redacted is not None:
          self.is_redacted = is_redacted
        if name is not None:
          self.name = name
        if navigation_column_id is not None:
          self.navigation_column_id = navigation_column_id
        if scoped_to is not None:
          self.scoped_to = scoped_to
        if status_message is not None:
          self.status_message = status_message
        if subscription is not None:
          self.subscription = subscription
        if table_type is not None:
          self.table_type = table_type
        if translation_key is not None:
          self.translation_key = translation_key
        if type is not None:
          self.type = type
        if unique_id_column_name is not None:
          self.unique_id_column_name = unique_id_column_name
        if vantage is not None:
          self.vantage = vantage

    @property
    def additional_properties(self):
        """
        Gets the additional_properties of this TableDefinitionOutputV1.
        Additional properties of the item

        :return: The additional_properties of this TableDefinitionOutputV1.
        :rtype: list[ScalarPropertyV1]
        """
        return self._additional_properties

    @additional_properties.setter
    def additional_properties(self, additional_properties):
        """
        Sets the additional_properties of this TableDefinitionOutputV1.
        Additional properties of the item

        :param additional_properties: The additional_properties of this TableDefinitionOutputV1.
        :type: list[ScalarPropertyV1]
        """

        self._additional_properties = additional_properties

    @property
    def batch_action(self):
        """
        Gets the batch_action of this TableDefinitionOutputV1.
        The behavior when the table receives batch updates

        :return: The batch_action of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._batch_action

    @batch_action.setter
    def batch_action(self, batch_action):
        """
        Sets the batch_action of this TableDefinitionOutputV1.
        The behavior when the table receives batch updates

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

        self._batch_action = batch_action

    @property
    def column_definitions(self):
        """
        Gets the column_definitions of this TableDefinitionOutputV1.
        The Column Definitions for this Table Definition

        :return: The column_definitions of this TableDefinitionOutputV1.
        :rtype: list[ColumnDefinitionOutputV1]
        """
        return self._column_definitions

    @column_definitions.setter
    def column_definitions(self, column_definitions):
        """
        Sets the column_definitions of this TableDefinitionOutputV1.
        The Column Definitions for this Table Definition

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

        self._column_definitions = column_definitions

    @property
    def data_id(self):
        """
        Gets the data_id of this TableDefinitionOutputV1.
        The data ID of this asset. Note: This is not the Seeq ID, but the unique identifier that the remote datasource uses.

        :return: The data_id of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._data_id

    @data_id.setter
    def data_id(self, data_id):
        """
        Sets the data_id of this TableDefinitionOutputV1.
        The data ID of this asset. Note: This is not the Seeq ID, but the unique identifier that the remote datasource uses.

        :param data_id: The data_id of this TableDefinitionOutputV1.
        :type: str
        """

        self._data_id = data_id

    @property
    def datasource_class(self):
        """
        Gets the datasource_class of this TableDefinitionOutputV1.
        The datasource class, which is the type of system holding the item, such as OSIsoft PI

        :return: The datasource_class of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._datasource_class

    @datasource_class.setter
    def datasource_class(self, datasource_class):
        """
        Sets the datasource_class of this TableDefinitionOutputV1.
        The datasource class, which is the type of system holding the item, such as OSIsoft PI

        :param datasource_class: The datasource_class of this TableDefinitionOutputV1.
        :type: str
        """

        self._datasource_class = datasource_class

    @property
    def datasource_id(self):
        """
        Gets the datasource_id of this TableDefinitionOutputV1.
        The datasource identifier, which is how the datasource holding this item identifies itself

        :return: The datasource_id of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._datasource_id

    @datasource_id.setter
    def datasource_id(self, datasource_id):
        """
        Sets the datasource_id of this TableDefinitionOutputV1.
        The datasource identifier, which is how the datasource holding this item identifies itself

        :param datasource_id: The datasource_id of this TableDefinitionOutputV1.
        :type: str
        """

        self._datasource_id = datasource_id

    @property
    def description(self):
        """
        Gets the description of this TableDefinitionOutputV1.
        Clarifying information or other plain language description of this item

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

    @description.setter
    def description(self, description):
        """
        Sets the description of this TableDefinitionOutputV1.
        Clarifying information or other plain language description of this item

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

        self._description = description

    @property
    def effective_permissions(self):
        """
        Gets the effective_permissions of this TableDefinitionOutputV1.

        :return: The effective_permissions of this TableDefinitionOutputV1.
        :rtype: PermissionsV1
        """
        return self._effective_permissions

    @effective_permissions.setter
    def effective_permissions(self, effective_permissions):
        """
        Sets the effective_permissions of this TableDefinitionOutputV1.

        :param effective_permissions: The effective_permissions of this TableDefinitionOutputV1.
        :type: PermissionsV1
        """

        self._effective_permissions = effective_permissions

    @property
    def exports(self):
        """
        Gets the exports of this TableDefinitionOutputV1.
        The exports configured for the table

        :return: The exports of this TableDefinitionOutputV1.
        :rtype: list[ExportPreviewV1]
        """
        return self._exports

    @exports.setter
    def exports(self, exports):
        """
        Sets the exports of this TableDefinitionOutputV1.
        The exports configured for the table

        :param exports: The exports of this TableDefinitionOutputV1.
        :type: list[ExportPreviewV1]
        """

        self._exports = exports

    @property
    def id(self):
        """
        Gets the id of this TableDefinitionOutputV1.
        The ID that can be used to interact with the item

        :return: The id of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """
        Sets the id of this TableDefinitionOutputV1.
        The ID that can be used to interact with the item

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

        self._id = id

    @property
    def is_archived(self):
        """
        Gets the is_archived of this TableDefinitionOutputV1.
        Whether item is archived

        :return: The is_archived of this TableDefinitionOutputV1.
        :rtype: bool
        """
        return self._is_archived

    @is_archived.setter
    def is_archived(self, is_archived):
        """
        Sets the is_archived of this TableDefinitionOutputV1.
        Whether item is archived

        :param is_archived: The is_archived of this TableDefinitionOutputV1.
        :type: bool
        """

        self._is_archived = is_archived

    @property
    def is_redacted(self):
        """
        Gets the is_redacted of this TableDefinitionOutputV1.
        Whether item is redacted

        :return: The is_redacted of this TableDefinitionOutputV1.
        :rtype: bool
        """
        return self._is_redacted

    @is_redacted.setter
    def is_redacted(self, is_redacted):
        """
        Sets the is_redacted of this TableDefinitionOutputV1.
        Whether item is redacted

        :param is_redacted: The is_redacted of this TableDefinitionOutputV1.
        :type: bool
        """

        self._is_redacted = is_redacted

    @property
    def name(self):
        """
        Gets the name of this TableDefinitionOutputV1.
        The human readable name

        :return: The name of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """
        Sets the name of this TableDefinitionOutputV1.
        The human readable name

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

        self._name = name

    @property
    def navigation_column_id(self):
        """
        Gets the navigation_column_id of this TableDefinitionOutputV1.
        The navigation column id used for overriding the default Data tab column representation. The navigation column can only be set on Scaling or Scaling CSV table types. Only Text and Item columns can be used as navigation columns.

        :return: The navigation_column_id of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._navigation_column_id

    @navigation_column_id.setter
    def navigation_column_id(self, navigation_column_id):
        """
        Sets the navigation_column_id of this TableDefinitionOutputV1.
        The navigation column id used for overriding the default Data tab column representation. The navigation column can only be set on Scaling or Scaling CSV table types. Only Text and Item columns can be used as navigation columns.

        :param navigation_column_id: The navigation_column_id of this TableDefinitionOutputV1.
        :type: str
        """

        self._navigation_column_id = navigation_column_id

    @property
    def scoped_to(self):
        """
        Gets the scoped_to of this TableDefinitionOutputV1.
        The ID of the workbook to which this item is scoped or null if it is in the global scope.

        :return: The scoped_to of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._scoped_to

    @scoped_to.setter
    def scoped_to(self, scoped_to):
        """
        Sets the scoped_to of this TableDefinitionOutputV1.
        The ID of the workbook to which this item is scoped or null if it is in the global scope.

        :param scoped_to: The scoped_to of this TableDefinitionOutputV1.
        :type: str
        """

        self._scoped_to = scoped_to

    @property
    def status_message(self):
        """
        Gets the status_message of this TableDefinitionOutputV1.
        A plain language status message with information about any issues that may have been encountered during an operation

        :return: The status_message of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._status_message

    @status_message.setter
    def status_message(self, status_message):
        """
        Sets the status_message of this TableDefinitionOutputV1.
        A plain language status message with information about any issues that may have been encountered during an operation

        :param status_message: The status_message of this TableDefinitionOutputV1.
        :type: str
        """

        self._status_message = status_message

    @property
    def subscription(self):
        """
        Gets the subscription of this TableDefinitionOutputV1.

        :return: The subscription of this TableDefinitionOutputV1.
        :rtype: ItemPreviewV1
        """
        return self._subscription

    @subscription.setter
    def subscription(self, subscription):
        """
        Sets the subscription of this TableDefinitionOutputV1.

        :param subscription: The subscription of this TableDefinitionOutputV1.
        :type: ItemPreviewV1
        """

        self._subscription = subscription

    @property
    def table_type(self):
        """
        Gets the table_type of this TableDefinitionOutputV1.
        The type of table

        :return: The table_type of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._table_type

    @table_type.setter
    def table_type(self, table_type):
        """
        Sets the table_type of this TableDefinitionOutputV1.
        The type of table

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

        self._table_type = table_type

    @property
    def translation_key(self):
        """
        Gets the translation_key of this TableDefinitionOutputV1.
        The item's translation key, if any

        :return: The translation_key of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._translation_key

    @translation_key.setter
    def translation_key(self, translation_key):
        """
        Sets the translation_key of this TableDefinitionOutputV1.
        The item's translation key, if any

        :param translation_key: The translation_key of this TableDefinitionOutputV1.
        :type: str
        """

        self._translation_key = translation_key

    @property
    def type(self):
        """
        Gets the type of this TableDefinitionOutputV1.
        The type of the item

        :return: The type of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._type

    @type.setter
    def type(self, type):
        """
        Sets the type of this TableDefinitionOutputV1.
        The type of the item

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

        self._type = type

    @property
    def unique_id_column_name(self):
        """
        Gets the unique_id_column_name of this TableDefinitionOutputV1.
        The Unique ID column name for the Table, if applicable

        :return: The unique_id_column_name of this TableDefinitionOutputV1.
        :rtype: str
        """
        return self._unique_id_column_name

    @unique_id_column_name.setter
    def unique_id_column_name(self, unique_id_column_name):
        """
        Sets the unique_id_column_name of this TableDefinitionOutputV1.
        The Unique ID column name for the Table, if applicable

        :param unique_id_column_name: The unique_id_column_name of this TableDefinitionOutputV1.
        :type: str
        """

        self._unique_id_column_name = unique_id_column_name

    @property
    def vantage(self):
        """
        Gets the vantage of this TableDefinitionOutputV1.

        :return: The vantage of this TableDefinitionOutputV1.
        :rtype: ItemPreviewV1
        """
        return self._vantage

    @vantage.setter
    def vantage(self, vantage):
        """
        Sets the vantage of this TableDefinitionOutputV1.

        :param vantage: The vantage of this TableDefinitionOutputV1.
        :type: ItemPreviewV1
        """

        self._vantage = vantage

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

        return self.__dict__ == other.__dict__

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