# coding: utf-8

"""
    Camunda Platform REST API

    OpenApi Spec for Camunda Platform REST API.  # noqa: E501

    The version of the OpenAPI document: 7.18.0
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from generic_camunda_client.configuration import Configuration


class TelemetryInternalsDto(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'database': 'dict(str, AbstractVendorVersionInformationDto)',
        'application_server': 'dict(str, AbstractVendorVersionInformationDto)',
        'license_key': 'dict(str, TelemetryLicenseKeyDto)',
        'camunda_integration': 'list[str]',
        'commands': 'dict(str, TelemetryCountDto)',
        'metrics': 'dict(str, TelemetryCountDto)',
        'webapps': 'list[str]',
        'jdk': 'dict(str, AbstractVendorVersionInformationDto)'
    }

    attribute_map = {
        'database': 'database',
        'application_server': 'application-server',
        'license_key': 'license-key',
        'camunda_integration': 'camunda-integration',
        'commands': 'commands',
        'metrics': 'metrics',
        'webapps': 'webapps',
        'jdk': 'jdk'
    }

    def __init__(self, database=None, application_server=None, license_key=None, camunda_integration=None, commands=None, metrics=None, webapps=None, jdk=None, local_vars_configuration=None):  # noqa: E501
        """TelemetryInternalsDto - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._database = None
        self._application_server = None
        self._license_key = None
        self._camunda_integration = None
        self._commands = None
        self._metrics = None
        self._webapps = None
        self._jdk = None
        self.discriminator = None

        self.database = database
        self.application_server = application_server
        self.license_key = license_key
        self.camunda_integration = camunda_integration
        self.commands = commands
        self.metrics = metrics
        self.webapps = webapps
        self.jdk = jdk

    @property
    def database(self):
        """Gets the database of this TelemetryInternalsDto.  # noqa: E501

        Vendor and version of the connected database.  # noqa: E501

        :return: The database of this TelemetryInternalsDto.  # noqa: E501
        :rtype: dict(str, AbstractVendorVersionInformationDto)
        """
        return self._database

    @database.setter
    def database(self, database):
        """Sets the database of this TelemetryInternalsDto.

        Vendor and version of the connected database.  # noqa: E501

        :param database: The database of this TelemetryInternalsDto.  # noqa: E501
        :type: dict(str, AbstractVendorVersionInformationDto)
        """

        self._database = database

    @property
    def application_server(self):
        """Gets the application_server of this TelemetryInternalsDto.  # noqa: E501

        Vendor and version of the application server.  # noqa: E501

        :return: The application_server of this TelemetryInternalsDto.  # noqa: E501
        :rtype: dict(str, AbstractVendorVersionInformationDto)
        """
        return self._application_server

    @application_server.setter
    def application_server(self, application_server):
        """Sets the application_server of this TelemetryInternalsDto.

        Vendor and version of the application server.  # noqa: E501

        :param application_server: The application_server of this TelemetryInternalsDto.  # noqa: E501
        :type: dict(str, AbstractVendorVersionInformationDto)
        """

        self._application_server = application_server

    @property
    def license_key(self):
        """Gets the license_key of this TelemetryInternalsDto.  # noqa: E501

        Information about the Camunda license key.  # noqa: E501

        :return: The license_key of this TelemetryInternalsDto.  # noqa: E501
        :rtype: dict(str, TelemetryLicenseKeyDto)
        """
        return self._license_key

    @license_key.setter
    def license_key(self, license_key):
        """Sets the license_key of this TelemetryInternalsDto.

        Information about the Camunda license key.  # noqa: E501

        :param license_key: The license_key of this TelemetryInternalsDto.  # noqa: E501
        :type: dict(str, TelemetryLicenseKeyDto)
        """

        self._license_key = license_key

    @property
    def camunda_integration(self):
        """Gets the camunda_integration of this TelemetryInternalsDto.  # noqa: E501

        List of Camunda integrations used (e.g., Camunda Spring Boot Starter, Camunda Run, WildFly/JBoss subsystem, Camunda EJB).  # noqa: E501

        :return: The camunda_integration of this TelemetryInternalsDto.  # noqa: E501
        :rtype: list[str]
        """
        return self._camunda_integration

    @camunda_integration.setter
    def camunda_integration(self, camunda_integration):
        """Sets the camunda_integration of this TelemetryInternalsDto.

        List of Camunda integrations used (e.g., Camunda Spring Boot Starter, Camunda Run, WildFly/JBoss subsystem, Camunda EJB).  # noqa: E501

        :param camunda_integration: The camunda_integration of this TelemetryInternalsDto.  # noqa: E501
        :type: list[str]
        """

        self._camunda_integration = camunda_integration

    @property
    def commands(self):
        """Gets the commands of this TelemetryInternalsDto.  # noqa: E501

        The count of executed commands after the last retrieved data.  # noqa: E501

        :return: The commands of this TelemetryInternalsDto.  # noqa: E501
        :rtype: dict(str, TelemetryCountDto)
        """
        return self._commands

    @commands.setter
    def commands(self, commands):
        """Sets the commands of this TelemetryInternalsDto.

        The count of executed commands after the last retrieved data.  # noqa: E501

        :param commands: The commands of this TelemetryInternalsDto.  # noqa: E501
        :type: dict(str, TelemetryCountDto)
        """

        self._commands = commands

    @property
    def metrics(self):
        """Gets the metrics of this TelemetryInternalsDto.  # noqa: E501

        The collected metrics are the number of root process instance executions started, the number of activity instances started or also known as flow node instances, and the number of executed decision instances and elements.  # noqa: E501

        :return: The metrics of this TelemetryInternalsDto.  # noqa: E501
        :rtype: dict(str, TelemetryCountDto)
        """
        return self._metrics

    @metrics.setter
    def metrics(self, metrics):
        """Sets the metrics of this TelemetryInternalsDto.

        The collected metrics are the number of root process instance executions started, the number of activity instances started or also known as flow node instances, and the number of executed decision instances and elements.  # noqa: E501

        :param metrics: The metrics of this TelemetryInternalsDto.  # noqa: E501
        :type: dict(str, TelemetryCountDto)
        """

        self._metrics = metrics

    @property
    def webapps(self):
        """Gets the webapps of this TelemetryInternalsDto.  # noqa: E501

        The webapps enabled in this installation of Camunda.  # noqa: E501

        :return: The webapps of this TelemetryInternalsDto.  # noqa: E501
        :rtype: list[str]
        """
        return self._webapps

    @webapps.setter
    def webapps(self, webapps):
        """Sets the webapps of this TelemetryInternalsDto.

        The webapps enabled in this installation of Camunda.  # noqa: E501

        :param webapps: The webapps of this TelemetryInternalsDto.  # noqa: E501
        :type: list[str]
        """

        self._webapps = webapps

    @property
    def jdk(self):
        """Gets the jdk of this TelemetryInternalsDto.  # noqa: E501

        Vendor and version of the installed JDK.  # noqa: E501

        :return: The jdk of this TelemetryInternalsDto.  # noqa: E501
        :rtype: dict(str, AbstractVendorVersionInformationDto)
        """
        return self._jdk

    @jdk.setter
    def jdk(self, jdk):
        """Sets the jdk of this TelemetryInternalsDto.

        Vendor and version of the installed JDK.  # noqa: E501

        :param jdk: The jdk of this TelemetryInternalsDto.  # noqa: E501
        :type: dict(str, AbstractVendorVersionInformationDto)
        """

        self._jdk = jdk

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

        for attr, _ in six.iteritems(self.openapi_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 pprint.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, TelemetryInternalsDto):
            return False

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
