# 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 BoundaryMetrics(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 = {
        'arvi': 'float',
        'category': 'str',
        'chire': 'float',
        'cloud_coverage': 'float',
        'evi': 'float',
        'lai1': 'float',
        'lai2': 'float',
        'lswi': 'float',
        'ndre': 'float',
        'ndvi': 'float',
        'rgi_high': 'float',
        'rgi_low': 'float',
        'rgi_medium': 'float',
        'savi': 'float',
        'vis': 'float'
    }

    attribute_map = {
        'arvi': 'arvi',
        'category': 'category',
        'chire': 'chire',
        'cloud_coverage': 'cloudCoverage',
        'evi': 'evi',
        'lai1': 'lai1',
        'lai2': 'lai2',
        'lswi': 'lswi',
        'ndre': 'ndre',
        'ndvi': 'ndvi',
        'rgi_high': 'rgiHigh',
        'rgi_low': 'rgiLow',
        'rgi_medium': 'rgiMedium',
        'savi': 'savi',
        'vis': 'vis'
    }

    def __init__(self, arvi=None, category=None, chire=None, cloud_coverage=None, evi=None, lai1=None, lai2=None, lswi=None, ndre=None, ndvi=None, rgi_high=None, rgi_low=None, rgi_medium=None, savi=None, vis=None):  # noqa: E501
        """BoundaryMetrics - a model defined in Swagger"""  # noqa: E501
        self._arvi = None
        self._category = None
        self._chire = None
        self._cloud_coverage = None
        self._evi = None
        self._lai1 = None
        self._lai2 = None
        self._lswi = None
        self._ndre = None
        self._ndvi = None
        self._rgi_high = None
        self._rgi_low = None
        self._rgi_medium = None
        self._savi = None
        self._vis = None
        self.discriminator = None
        if arvi is not None:
            self.arvi = arvi
        if category is not None:
            self.category = category
        if chire is not None:
            self.chire = chire
        if cloud_coverage is not None:
            self.cloud_coverage = cloud_coverage
        if evi is not None:
            self.evi = evi
        if lai1 is not None:
            self.lai1 = lai1
        if lai2 is not None:
            self.lai2 = lai2
        if lswi is not None:
            self.lswi = lswi
        if ndre is not None:
            self.ndre = ndre
        if ndvi is not None:
            self.ndvi = ndvi
        if rgi_high is not None:
            self.rgi_high = rgi_high
        if rgi_low is not None:
            self.rgi_low = rgi_low
        if rgi_medium is not None:
            self.rgi_medium = rgi_medium
        if savi is not None:
            self.savi = savi
        if vis is not None:
            self.vis = vis

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


        :return: The arvi of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._arvi

    @arvi.setter
    def arvi(self, arvi):
        """Sets the arvi of this BoundaryMetrics.


        :param arvi: The arvi of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._arvi = arvi

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


        :return: The category of this BoundaryMetrics.  # noqa: E501
        :rtype: str
        """
        return self._category

    @category.setter
    def category(self, category):
        """Sets the category of this BoundaryMetrics.


        :param category: The category of this BoundaryMetrics.  # noqa: E501
        :type: str
        """
        allowed_values = ["CMK", "PARTIAL", "COMPLETE", "ALL_DARK_PIXELS"]  # noqa: E501
        if category not in allowed_values:
            raise ValueError(
                "Invalid value for `category` ({0}), must be one of {1}"  # noqa: E501
                .format(category, allowed_values)
            )

        self._category = category

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


        :return: The chire of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._chire

    @chire.setter
    def chire(self, chire):
        """Sets the chire of this BoundaryMetrics.


        :param chire: The chire of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._chire = chire

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


        :return: The cloud_coverage of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._cloud_coverage

    @cloud_coverage.setter
    def cloud_coverage(self, cloud_coverage):
        """Sets the cloud_coverage of this BoundaryMetrics.


        :param cloud_coverage: The cloud_coverage of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._cloud_coverage = cloud_coverage

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


        :return: The evi of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._evi

    @evi.setter
    def evi(self, evi):
        """Sets the evi of this BoundaryMetrics.


        :param evi: The evi of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._evi = evi

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


        :return: The lai1 of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._lai1

    @lai1.setter
    def lai1(self, lai1):
        """Sets the lai1 of this BoundaryMetrics.


        :param lai1: The lai1 of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._lai1 = lai1

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


        :return: The lai2 of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._lai2

    @lai2.setter
    def lai2(self, lai2):
        """Sets the lai2 of this BoundaryMetrics.


        :param lai2: The lai2 of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._lai2 = lai2

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


        :return: The lswi of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._lswi

    @lswi.setter
    def lswi(self, lswi):
        """Sets the lswi of this BoundaryMetrics.


        :param lswi: The lswi of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._lswi = lswi

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


        :return: The ndre of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._ndre

    @ndre.setter
    def ndre(self, ndre):
        """Sets the ndre of this BoundaryMetrics.


        :param ndre: The ndre of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._ndre = ndre

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


        :return: The ndvi of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._ndvi

    @ndvi.setter
    def ndvi(self, ndvi):
        """Sets the ndvi of this BoundaryMetrics.


        :param ndvi: The ndvi of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._ndvi = ndvi

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


        :return: The rgi_high of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._rgi_high

    @rgi_high.setter
    def rgi_high(self, rgi_high):
        """Sets the rgi_high of this BoundaryMetrics.


        :param rgi_high: The rgi_high of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._rgi_high = rgi_high

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


        :return: The rgi_low of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._rgi_low

    @rgi_low.setter
    def rgi_low(self, rgi_low):
        """Sets the rgi_low of this BoundaryMetrics.


        :param rgi_low: The rgi_low of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._rgi_low = rgi_low

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


        :return: The rgi_medium of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._rgi_medium

    @rgi_medium.setter
    def rgi_medium(self, rgi_medium):
        """Sets the rgi_medium of this BoundaryMetrics.


        :param rgi_medium: The rgi_medium of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._rgi_medium = rgi_medium

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


        :return: The savi of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._savi

    @savi.setter
    def savi(self, savi):
        """Sets the savi of this BoundaryMetrics.


        :param savi: The savi of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._savi = savi

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


        :return: The vis of this BoundaryMetrics.  # noqa: E501
        :rtype: float
        """
        return self._vis

    @vis.setter
    def vis(self, vis):
        """Sets the vis of this BoundaryMetrics.


        :param vis: The vis of this BoundaryMetrics.  # noqa: E501
        :type: float
        """

        self._vis = vis

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

        return self.__dict__ == other.__dict__

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