# 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 ConnectionStatusV1(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 = {
        'agent_version_required': 'str',
        'connection_message': 'str',
        'connector_developer_name': 'str',
        'connector_developer_support_url': 'str',
        'datasource_class': 'str',
        'datasource_id': 'str',
        'id': 'str',
        'indexing_datasource_connection': 'bool',
        'name': 'str',
        'pull_datasource_connection': 'bool',
        'reinitialized': 'bool',
        'status': 'str',
        'sync_progress': 'SyncProgress',
        'sync_status': 'str',
        'version': 'str'
    }

    attribute_map = {
        'agent_version_required': 'agentVersionRequired',
        'connection_message': 'connectionMessage',
        'connector_developer_name': 'connectorDeveloperName',
        'connector_developer_support_url': 'connectorDeveloperSupportUrl',
        'datasource_class': 'datasourceClass',
        'datasource_id': 'datasourceId',
        'id': 'id',
        'indexing_datasource_connection': 'indexingDatasourceConnection',
        'name': 'name',
        'pull_datasource_connection': 'pullDatasourceConnection',
        'reinitialized': 'reinitialized',
        'status': 'status',
        'sync_progress': 'syncProgress',
        'sync_status': 'syncStatus',
        'version': 'version'
    }

    def __init__(self, agent_version_required=None, connection_message=None, connector_developer_name=None, connector_developer_support_url=None, datasource_class=None, datasource_id=None, id=None, indexing_datasource_connection=False, name=None, pull_datasource_connection=False, reinitialized=False, status=None, sync_progress=None, sync_status=None, version=None):
        """
        ConnectionStatusV1 - a model defined in Swagger
        """

        self._agent_version_required = None
        self._connection_message = None
        self._connector_developer_name = None
        self._connector_developer_support_url = None
        self._datasource_class = None
        self._datasource_id = None
        self._id = None
        self._indexing_datasource_connection = None
        self._name = None
        self._pull_datasource_connection = None
        self._reinitialized = None
        self._status = None
        self._sync_progress = None
        self._sync_status = None
        self._version = None

        if agent_version_required is not None:
          self.agent_version_required = agent_version_required
        if connection_message is not None:
          self.connection_message = connection_message
        if connector_developer_name is not None:
          self.connector_developer_name = connector_developer_name
        if connector_developer_support_url is not None:
          self.connector_developer_support_url = connector_developer_support_url
        if datasource_class is not None:
          self.datasource_class = datasource_class
        if datasource_id is not None:
          self.datasource_id = datasource_id
        if id is not None:
          self.id = id
        if indexing_datasource_connection is not None:
          self.indexing_datasource_connection = indexing_datasource_connection
        if name is not None:
          self.name = name
        if pull_datasource_connection is not None:
          self.pull_datasource_connection = pull_datasource_connection
        if reinitialized is not None:
          self.reinitialized = reinitialized
        if status is not None:
          self.status = status
        if sync_progress is not None:
          self.sync_progress = sync_progress
        if sync_status is not None:
          self.sync_status = sync_status
        if version is not None:
          self.version = version

    @property
    def agent_version_required(self):
        """
        Gets the agent_version_required of this ConnectionStatusV1.
        The version of the Agent required by this Connector

        :return: The agent_version_required of this ConnectionStatusV1.
        :rtype: str
        """
        return self._agent_version_required

    @agent_version_required.setter
    def agent_version_required(self, agent_version_required):
        """
        Sets the agent_version_required of this ConnectionStatusV1.
        The version of the Agent required by this Connector

        :param agent_version_required: The agent_version_required of this ConnectionStatusV1.
        :type: str
        """

        self._agent_version_required = agent_version_required

    @property
    def connection_message(self):
        """
        Gets the connection_message of this ConnectionStatusV1.
        The message indicating the status of the connection to the datasource (e.g. reason for disconnection)

        :return: The connection_message of this ConnectionStatusV1.
        :rtype: str
        """
        return self._connection_message

    @connection_message.setter
    def connection_message(self, connection_message):
        """
        Sets the connection_message of this ConnectionStatusV1.
        The message indicating the status of the connection to the datasource (e.g. reason for disconnection)

        :param connection_message: The connection_message of this ConnectionStatusV1.
        :type: str
        """

        self._connection_message = connection_message

    @property
    def connector_developer_name(self):
        """
        Gets the connector_developer_name of this ConnectionStatusV1.
        The name of this datasource's connector developer.

        :return: The connector_developer_name of this ConnectionStatusV1.
        :rtype: str
        """
        return self._connector_developer_name

    @connector_developer_name.setter
    def connector_developer_name(self, connector_developer_name):
        """
        Sets the connector_developer_name of this ConnectionStatusV1.
        The name of this datasource's connector developer.

        :param connector_developer_name: The connector_developer_name of this ConnectionStatusV1.
        :type: str
        """

        self._connector_developer_name = connector_developer_name

    @property
    def connector_developer_support_url(self):
        """
        Gets the connector_developer_support_url of this ConnectionStatusV1.
        The support URL of this datasource's connector developer.

        :return: The connector_developer_support_url of this ConnectionStatusV1.
        :rtype: str
        """
        return self._connector_developer_support_url

    @connector_developer_support_url.setter
    def connector_developer_support_url(self, connector_developer_support_url):
        """
        Sets the connector_developer_support_url of this ConnectionStatusV1.
        The support URL of this datasource's connector developer.

        :param connector_developer_support_url: The connector_developer_support_url of this ConnectionStatusV1.
        :type: str
        """

        self._connector_developer_support_url = connector_developer_support_url

    @property
    def datasource_class(self):
        """
        Gets the datasource_class of this ConnectionStatusV1.
        The datasource class served by this connector.  Example: OSIsoft PI

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

    @datasource_class.setter
    def datasource_class(self, datasource_class):
        """
        Sets the datasource_class of this ConnectionStatusV1.
        The datasource class served by this connector.  Example: OSIsoft PI

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

        self._datasource_class = datasource_class

    @property
    def datasource_id(self):
        """
        Gets the datasource_id of this ConnectionStatusV1.
        The datasource ID served by this connector.

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

    @datasource_id.setter
    def datasource_id(self, datasource_id):
        """
        Sets the datasource_id of this ConnectionStatusV1.
        The datasource ID served by this connector.

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

        self._datasource_id = datasource_id

    @property
    def id(self):
        """
        Gets the id of this ConnectionStatusV1.
        The ID of the connector. This ID uniquely identifies this connector but does not convey any information about the connector. There is no specified structure for this ID; it may be in UUID form but need not be

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

    @id.setter
    def id(self, id):
        """
        Sets the id of this ConnectionStatusV1.
        The ID of the connector. This ID uniquely identifies this connector but does not convey any information about the connector. There is no specified structure for this ID; it may be in UUID form but need not be

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

        self._id = id

    @property
    def indexing_datasource_connection(self):
        """
        Gets the indexing_datasource_connection of this ConnectionStatusV1.
        Indicates whether the datasource allows metadata indexing.

        :return: The indexing_datasource_connection of this ConnectionStatusV1.
        :rtype: bool
        """
        return self._indexing_datasource_connection

    @indexing_datasource_connection.setter
    def indexing_datasource_connection(self, indexing_datasource_connection):
        """
        Sets the indexing_datasource_connection of this ConnectionStatusV1.
        Indicates whether the datasource allows metadata indexing.

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

        self._indexing_datasource_connection = indexing_datasource_connection

    @property
    def name(self):
        """
        Gets the name of this ConnectionStatusV1.
        The name of this connection. The name should represent the specific data source to which this connection connects.  Example: AMAZONA-4RV912N

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

    @name.setter
    def name(self, name):
        """
        Sets the name of this ConnectionStatusV1.
        The name of this connection. The name should represent the specific data source to which this connection connects.  Example: AMAZONA-4RV912N

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

        self._name = name

    @property
    def pull_datasource_connection(self):
        """
        Gets the pull_datasource_connection of this ConnectionStatusV1.
        Indicates whether the datasource allows pull requests.

        :return: The pull_datasource_connection of this ConnectionStatusV1.
        :rtype: bool
        """
        return self._pull_datasource_connection

    @pull_datasource_connection.setter
    def pull_datasource_connection(self, pull_datasource_connection):
        """
        Sets the pull_datasource_connection of this ConnectionStatusV1.
        Indicates whether the datasource allows pull requests.

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

        self._pull_datasource_connection = pull_datasource_connection

    @property
    def reinitialized(self):
        """
        Gets the reinitialized of this ConnectionStatusV1.
        Indicates whether the connection was reinitialized.

        :return: The reinitialized of this ConnectionStatusV1.
        :rtype: bool
        """
        return self._reinitialized

    @reinitialized.setter
    def reinitialized(self, reinitialized):
        """
        Sets the reinitialized of this ConnectionStatusV1.
        Indicates whether the connection was reinitialized.

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

        self._reinitialized = reinitialized

    @property
    def status(self):
        """
        Gets the status of this ConnectionStatusV1.
        The status of the current connection between the datasource and this connector. Valid values are Connected, Disconnected and Connecting. If the state is Disconnected (or Connecting), it could be caused by a failure in the connection between the connector and its datasource or a failed connection between the Seeq application server and the agent hosting this connector. See connectionMessage.

        :return: The status of this ConnectionStatusV1.
        :rtype: str
        """
        return self._status

    @status.setter
    def status(self, status):
        """
        Sets the status of this ConnectionStatusV1.
        The status of the current connection between the datasource and this connector. Valid values are Connected, Disconnected and Connecting. If the state is Disconnected (or Connecting), it could be caused by a failure in the connection between the connector and its datasource or a failed connection between the Seeq application server and the agent hosting this connector. See connectionMessage.

        :param status: The status of this ConnectionStatusV1.
        :type: str
        """

        self._status = status

    @property
    def sync_progress(self):
        """
        Gets the sync_progress of this ConnectionStatusV1.

        :return: The sync_progress of this ConnectionStatusV1.
        :rtype: SyncProgress
        """
        return self._sync_progress

    @sync_progress.setter
    def sync_progress(self, sync_progress):
        """
        Sets the sync_progress of this ConnectionStatusV1.

        :param sync_progress: The sync_progress of this ConnectionStatusV1.
        :type: SyncProgress
        """

        self._sync_progress = sync_progress

    @property
    def sync_status(self):
        """
        Gets the sync_status of this ConnectionStatusV1.
        The synchronization status of the current connection between the datasource and this connector. Valid values are SYNC_UNKNOWN, SYNC_INITIALIZING, SYNC_IN_PROGRESS, SYNC_COMPLETE, SYNC_ARCHIVING_DELETED_ITEMS

        :return: The sync_status of this ConnectionStatusV1.
        :rtype: str
        """
        return self._sync_status

    @sync_status.setter
    def sync_status(self, sync_status):
        """
        Sets the sync_status of this ConnectionStatusV1.
        The synchronization status of the current connection between the datasource and this connector. Valid values are SYNC_UNKNOWN, SYNC_INITIALIZING, SYNC_IN_PROGRESS, SYNC_COMPLETE, SYNC_ARCHIVING_DELETED_ITEMS

        :param sync_status: The sync_status of this ConnectionStatusV1.
        :type: str
        """

        self._sync_status = sync_status

    @property
    def version(self):
        """
        Gets the version of this ConnectionStatusV1.
        The version of the Connector

        :return: The version of this ConnectionStatusV1.
        :rtype: str
        """
        return self._version

    @version.setter
    def version(self, version):
        """
        Sets the version of this ConnectionStatusV1.
        The version of the Connector

        :param version: The version of this ConnectionStatusV1.
        :type: str
        """

        self._version = version

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

        return self.__dict__ == other.__dict__

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