# coding: utf-8

"""
    farm API

    farm API documentation  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class CropMetric(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 = {
        'attention_req_ndre': 'float',
        'attention_req_ndvi': 'float',
        'crop_id': 'str',
        'crop_name': 'str',
        'crop_rank': 'int',
        'crop_stage': 'str',
        'mild_stress': 'float',
        'no_stress': 'float',
        'normal_ndre': 'float',
        'normal_ndvi': 'float',
        'wilting_stress': 'float'
    }

    attribute_map = {
        'attention_req_ndre': 'attentionReqNDRE',
        'attention_req_ndvi': 'attentionReqNDVI',
        'crop_id': 'cropId',
        'crop_name': 'cropName',
        'crop_rank': 'cropRank',
        'crop_stage': 'cropStage',
        'mild_stress': 'mildStress',
        'no_stress': 'noStress',
        'normal_ndre': 'normalNDRE',
        'normal_ndvi': 'normalNDVI',
        'wilting_stress': 'wiltingStress'
    }

    def __init__(self, attention_req_ndre=None, attention_req_ndvi=None, crop_id=None, crop_name=None, crop_rank=None, crop_stage=None, mild_stress=None, no_stress=None, normal_ndre=None, normal_ndvi=None, wilting_stress=None):  # noqa: E501
        """CropMetric - a model defined in Swagger"""  # noqa: E501
        self._attention_req_ndre = None
        self._attention_req_ndvi = None
        self._crop_id = None
        self._crop_name = None
        self._crop_rank = None
        self._crop_stage = None
        self._mild_stress = None
        self._no_stress = None
        self._normal_ndre = None
        self._normal_ndvi = None
        self._wilting_stress = None
        self.discriminator = None
        if attention_req_ndre is not None:
            self.attention_req_ndre = attention_req_ndre
        if attention_req_ndvi is not None:
            self.attention_req_ndvi = attention_req_ndvi
        if crop_id is not None:
            self.crop_id = crop_id
        if crop_name is not None:
            self.crop_name = crop_name
        if crop_rank is not None:
            self.crop_rank = crop_rank
        if crop_stage is not None:
            self.crop_stage = crop_stage
        if mild_stress is not None:
            self.mild_stress = mild_stress
        if no_stress is not None:
            self.no_stress = no_stress
        if normal_ndre is not None:
            self.normal_ndre = normal_ndre
        if normal_ndvi is not None:
            self.normal_ndvi = normal_ndvi
        if wilting_stress is not None:
            self.wilting_stress = wilting_stress

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


        :return: The attention_req_ndre of this CropMetric.  # noqa: E501
        :rtype: float
        """
        return self._attention_req_ndre

    @attention_req_ndre.setter
    def attention_req_ndre(self, attention_req_ndre):
        """Sets the attention_req_ndre of this CropMetric.


        :param attention_req_ndre: The attention_req_ndre of this CropMetric.  # noqa: E501
        :type: float
        """

        self._attention_req_ndre = attention_req_ndre

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


        :return: The attention_req_ndvi of this CropMetric.  # noqa: E501
        :rtype: float
        """
        return self._attention_req_ndvi

    @attention_req_ndvi.setter
    def attention_req_ndvi(self, attention_req_ndvi):
        """Sets the attention_req_ndvi of this CropMetric.


        :param attention_req_ndvi: The attention_req_ndvi of this CropMetric.  # noqa: E501
        :type: float
        """

        self._attention_req_ndvi = attention_req_ndvi

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


        :return: The crop_id of this CropMetric.  # noqa: E501
        :rtype: str
        """
        return self._crop_id

    @crop_id.setter
    def crop_id(self, crop_id):
        """Sets the crop_id of this CropMetric.


        :param crop_id: The crop_id of this CropMetric.  # noqa: E501
        :type: str
        """

        self._crop_id = crop_id

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


        :return: The crop_name of this CropMetric.  # noqa: E501
        :rtype: str
        """
        return self._crop_name

    @crop_name.setter
    def crop_name(self, crop_name):
        """Sets the crop_name of this CropMetric.


        :param crop_name: The crop_name of this CropMetric.  # noqa: E501
        :type: str
        """

        self._crop_name = crop_name

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


        :return: The crop_rank of this CropMetric.  # noqa: E501
        :rtype: int
        """
        return self._crop_rank

    @crop_rank.setter
    def crop_rank(self, crop_rank):
        """Sets the crop_rank of this CropMetric.


        :param crop_rank: The crop_rank of this CropMetric.  # noqa: E501
        :type: int
        """

        self._crop_rank = crop_rank

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


        :return: The crop_stage of this CropMetric.  # noqa: E501
        :rtype: str
        """
        return self._crop_stage

    @crop_stage.setter
    def crop_stage(self, crop_stage):
        """Sets the crop_stage of this CropMetric.


        :param crop_stage: The crop_stage of this CropMetric.  # noqa: E501
        :type: str
        """

        self._crop_stage = crop_stage

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


        :return: The mild_stress of this CropMetric.  # noqa: E501
        :rtype: float
        """
        return self._mild_stress

    @mild_stress.setter
    def mild_stress(self, mild_stress):
        """Sets the mild_stress of this CropMetric.


        :param mild_stress: The mild_stress of this CropMetric.  # noqa: E501
        :type: float
        """

        self._mild_stress = mild_stress

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


        :return: The no_stress of this CropMetric.  # noqa: E501
        :rtype: float
        """
        return self._no_stress

    @no_stress.setter
    def no_stress(self, no_stress):
        """Sets the no_stress of this CropMetric.


        :param no_stress: The no_stress of this CropMetric.  # noqa: E501
        :type: float
        """

        self._no_stress = no_stress

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


        :return: The normal_ndre of this CropMetric.  # noqa: E501
        :rtype: float
        """
        return self._normal_ndre

    @normal_ndre.setter
    def normal_ndre(self, normal_ndre):
        """Sets the normal_ndre of this CropMetric.


        :param normal_ndre: The normal_ndre of this CropMetric.  # noqa: E501
        :type: float
        """

        self._normal_ndre = normal_ndre

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


        :return: The normal_ndvi of this CropMetric.  # noqa: E501
        :rtype: float
        """
        return self._normal_ndvi

    @normal_ndvi.setter
    def normal_ndvi(self, normal_ndvi):
        """Sets the normal_ndvi of this CropMetric.


        :param normal_ndvi: The normal_ndvi of this CropMetric.  # noqa: E501
        :type: float
        """

        self._normal_ndvi = normal_ndvi

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


        :return: The wilting_stress of this CropMetric.  # noqa: E501
        :rtype: float
        """
        return self._wilting_stress

    @wilting_stress.setter
    def wilting_stress(self, wilting_stress):
        """Sets the wilting_stress of this CropMetric.


        :param wilting_stress: The wilting_stress of this CropMetric.  # noqa: E501
        :type: float
        """

        self._wilting_stress = wilting_stress

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

        return self.__dict__ == other.__dict__

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