# coding: utf-8

"""
    Internal API

    SmartDiagnostics REST API for internal users only  # noqa: E501

    OpenAPI spec version: v3
    
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

import pprint
import re  # noqa: F401

import six

class AlarmDefinitionChild(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 = {
        'low_alarm_value': 'float',
        'low_warning_value': 'float',
        'high_alarm_value': 'float',
        'high_warning_value': 'float',
        'off_threshold_value': 'float',
        'classification': 'MetricClassificationSourceEnum',
        'classification_indicator_source_id': 'str',
        'notification_criteria_percentage': 'float',
        'notification_criteria_points': 'int',
        'notification_criteria_coefficient': 'float'
    }

    attribute_map = {
        'low_alarm_value': 'LowAlarmValue',
        'low_warning_value': 'LowWarningValue',
        'high_alarm_value': 'HighAlarmValue',
        'high_warning_value': 'HighWarningValue',
        'off_threshold_value': 'OffThresholdValue',
        'classification': 'Classification',
        'classification_indicator_source_id': 'ClassificationIndicatorSourceId',
        'notification_criteria_percentage': 'NotificationCriteriaPercentage',
        'notification_criteria_points': 'NotificationCriteriaPoints',
        'notification_criteria_coefficient': 'NotificationCriteriaCoefficient'
    }

    def __init__(self, low_alarm_value=None, low_warning_value=None, high_alarm_value=None, high_warning_value=None, off_threshold_value=None, classification=None, classification_indicator_source_id=None, notification_criteria_percentage=None, notification_criteria_points=None, notification_criteria_coefficient=None):  # noqa: E501
        """AlarmDefinitionChild - a model defined in Swagger"""  # noqa: E501
        self._low_alarm_value = None
        self._low_warning_value = None
        self._high_alarm_value = None
        self._high_warning_value = None
        self._off_threshold_value = None
        self._classification = None
        self._classification_indicator_source_id = None
        self._notification_criteria_percentage = None
        self._notification_criteria_points = None
        self._notification_criteria_coefficient = None
        self.discriminator = None
        if low_alarm_value is not None:
            self.low_alarm_value = low_alarm_value
        if low_warning_value is not None:
            self.low_warning_value = low_warning_value
        if high_alarm_value is not None:
            self.high_alarm_value = high_alarm_value
        if high_warning_value is not None:
            self.high_warning_value = high_warning_value
        if off_threshold_value is not None:
            self.off_threshold_value = off_threshold_value
        self.classification = classification
        if classification_indicator_source_id is not None:
            self.classification_indicator_source_id = classification_indicator_source_id
        if notification_criteria_percentage is not None:
            self.notification_criteria_percentage = notification_criteria_percentage
        if notification_criteria_points is not None:
            self.notification_criteria_points = notification_criteria_points
        if notification_criteria_coefficient is not None:
            self.notification_criteria_coefficient = notification_criteria_coefficient

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

        When an indicator's current value goes below this threshold, an alarm will be triggered.  # noqa: E501

        :return: The low_alarm_value of this AlarmDefinitionChild.  # noqa: E501
        :rtype: float
        """
        return self._low_alarm_value

    @low_alarm_value.setter
    def low_alarm_value(self, low_alarm_value):
        """Sets the low_alarm_value of this AlarmDefinitionChild.

        When an indicator's current value goes below this threshold, an alarm will be triggered.  # noqa: E501

        :param low_alarm_value: The low_alarm_value of this AlarmDefinitionChild.  # noqa: E501
        :type: float
        """

        self._low_alarm_value = low_alarm_value

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

        When an indicator's current value goes below this threshold, a warning will be triggered.  # noqa: E501

        :return: The low_warning_value of this AlarmDefinitionChild.  # noqa: E501
        :rtype: float
        """
        return self._low_warning_value

    @low_warning_value.setter
    def low_warning_value(self, low_warning_value):
        """Sets the low_warning_value of this AlarmDefinitionChild.

        When an indicator's current value goes below this threshold, a warning will be triggered.  # noqa: E501

        :param low_warning_value: The low_warning_value of this AlarmDefinitionChild.  # noqa: E501
        :type: float
        """

        self._low_warning_value = low_warning_value

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

        When an indicator's current value goes above this threshold, an alarm will be triggered.  # noqa: E501

        :return: The high_alarm_value of this AlarmDefinitionChild.  # noqa: E501
        :rtype: float
        """
        return self._high_alarm_value

    @high_alarm_value.setter
    def high_alarm_value(self, high_alarm_value):
        """Sets the high_alarm_value of this AlarmDefinitionChild.

        When an indicator's current value goes above this threshold, an alarm will be triggered.  # noqa: E501

        :param high_alarm_value: The high_alarm_value of this AlarmDefinitionChild.  # noqa: E501
        :type: float
        """

        self._high_alarm_value = high_alarm_value

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

        When an indicator's current value goes above this threshold, a warning will be triggered.  # noqa: E501

        :return: The high_warning_value of this AlarmDefinitionChild.  # noqa: E501
        :rtype: float
        """
        return self._high_warning_value

    @high_warning_value.setter
    def high_warning_value(self, high_warning_value):
        """Sets the high_warning_value of this AlarmDefinitionChild.

        When an indicator's current value goes above this threshold, a warning will be triggered.  # noqa: E501

        :param high_warning_value: The high_warning_value of this AlarmDefinitionChild.  # noqa: E501
        :type: float
        """

        self._high_warning_value = high_warning_value

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

        When an indicator's current value is below this threshold, the associated machine/asset will be considered  as turned off (not currently running).  # noqa: E501

        :return: The off_threshold_value of this AlarmDefinitionChild.  # noqa: E501
        :rtype: float
        """
        return self._off_threshold_value

    @off_threshold_value.setter
    def off_threshold_value(self, off_threshold_value):
        """Sets the off_threshold_value of this AlarmDefinitionChild.

        When an indicator's current value is below this threshold, the associated machine/asset will be considered  as turned off (not currently running).  # noqa: E501

        :param off_threshold_value: The off_threshold_value of this AlarmDefinitionChild.  # noqa: E501
        :type: float
        """

        self._off_threshold_value = off_threshold_value

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


        :return: The classification of this AlarmDefinitionChild.  # noqa: E501
        :rtype: MetricClassificationSourceEnum
        """
        return self._classification

    @classification.setter
    def classification(self, classification):
        """Sets the classification of this AlarmDefinitionChild.


        :param classification: The classification of this AlarmDefinitionChild.  # noqa: E501
        :type: MetricClassificationSourceEnum
        """
        if classification is None:
            raise ValueError("Invalid value for `classification`, must not be `None`")  # noqa: E501

        self._classification = classification

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

        If the off threshold classification is inherited, this is the parent indicator ID that it is inherited from.  # noqa: E501

        :return: The classification_indicator_source_id of this AlarmDefinitionChild.  # noqa: E501
        :rtype: str
        """
        return self._classification_indicator_source_id

    @classification_indicator_source_id.setter
    def classification_indicator_source_id(self, classification_indicator_source_id):
        """Sets the classification_indicator_source_id of this AlarmDefinitionChild.

        If the off threshold classification is inherited, this is the parent indicator ID that it is inherited from.  # noqa: E501

        :param classification_indicator_source_id: The classification_indicator_source_id of this AlarmDefinitionChild.  # noqa: E501
        :type: str
        """

        self._classification_indicator_source_id = classification_indicator_source_id

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

        Notification criteria percentage of the alarm child  # noqa: E501

        :return: The notification_criteria_percentage of this AlarmDefinitionChild.  # noqa: E501
        :rtype: float
        """
        return self._notification_criteria_percentage

    @notification_criteria_percentage.setter
    def notification_criteria_percentage(self, notification_criteria_percentage):
        """Sets the notification_criteria_percentage of this AlarmDefinitionChild.

        Notification criteria percentage of the alarm child  # noqa: E501

        :param notification_criteria_percentage: The notification_criteria_percentage of this AlarmDefinitionChild.  # noqa: E501
        :type: float
        """

        self._notification_criteria_percentage = notification_criteria_percentage

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

        Notification criteria points of the alarm child  # noqa: E501

        :return: The notification_criteria_points of this AlarmDefinitionChild.  # noqa: E501
        :rtype: int
        """
        return self._notification_criteria_points

    @notification_criteria_points.setter
    def notification_criteria_points(self, notification_criteria_points):
        """Sets the notification_criteria_points of this AlarmDefinitionChild.

        Notification criteria points of the alarm child  # noqa: E501

        :param notification_criteria_points: The notification_criteria_points of this AlarmDefinitionChild.  # noqa: E501
        :type: int
        """

        self._notification_criteria_points = notification_criteria_points

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


        :return: The notification_criteria_coefficient of this AlarmDefinitionChild.  # noqa: E501
        :rtype: float
        """
        return self._notification_criteria_coefficient

    @notification_criteria_coefficient.setter
    def notification_criteria_coefficient(self, notification_criteria_coefficient):
        """Sets the notification_criteria_coefficient of this AlarmDefinitionChild.


        :param notification_criteria_coefficient: The notification_criteria_coefficient of this AlarmDefinitionChild.  # noqa: E501
        :type: float
        """

        self._notification_criteria_coefficient = notification_criteria_coefficient

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

        for attr, _ in six.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
        if issubclass(AlarmDefinitionChild, dict):
            for key, value in self.items():
                result[key] = 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, AlarmDefinitionChild):
            return False

        return self.__dict__ == other.__dict__

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