# coding: utf-8

"""
    Teleagronom

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class DeterminantDisease(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 = {
        'id': 'int',
        'name': 'str',
        'causes_of_occurrence': 'str',
        'manifestations_shoots': 'str',
        'manifestations_leaves': 'str',
        'manifestations_stems': 'str',
        'manifestations_root_system': 'str',
        'manifestations_roots': 'str',
        'manifestations_reproductive_organs': 'str',
        'pathogen_morphology': 'str',
        'biology_spread_pathogen': 'str',
        'ecology_of_disease': 'str',
        'disease_harmfulness': 'str',
        'fight_ways': 'str',
        'economic_threshold_of_harmfulness': 'str',
        'subgroup': 'int',
        'causative_agent': 'int'
    }

    attribute_map = {
        'id': 'id',
        'name': 'name',
        'causes_of_occurrence': 'causes_of_occurrence',
        'manifestations_shoots': 'manifestations_shoots',
        'manifestations_leaves': 'manifestations_leaves',
        'manifestations_stems': 'manifestations_stems',
        'manifestations_root_system': 'manifestations_root_system',
        'manifestations_roots': 'manifestations_roots',
        'manifestations_reproductive_organs': 'manifestations_reproductive_organs',
        'pathogen_morphology': 'pathogen_morphology',
        'biology_spread_pathogen': 'biology_spread_pathogen',
        'ecology_of_disease': 'ecology_of_disease',
        'disease_harmfulness': 'disease_harmfulness',
        'fight_ways': 'fight_ways',
        'economic_threshold_of_harmfulness': 'economic_threshold_of_harmfulness',
        'subgroup': 'subgroup',
        'causative_agent': 'causative_agent'
    }

    def __init__(self, id=None, name=None, causes_of_occurrence=None, manifestations_shoots=None, manifestations_leaves=None, manifestations_stems=None, manifestations_root_system=None, manifestations_roots=None, manifestations_reproductive_organs=None, pathogen_morphology=None, biology_spread_pathogen=None, ecology_of_disease=None, disease_harmfulness=None, fight_ways=None, economic_threshold_of_harmfulness=None, subgroup=None, causative_agent=None):  # noqa: E501
        """DeterminantDisease - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._name = None
        self._causes_of_occurrence = None
        self._manifestations_shoots = None
        self._manifestations_leaves = None
        self._manifestations_stems = None
        self._manifestations_root_system = None
        self._manifestations_roots = None
        self._manifestations_reproductive_organs = None
        self._pathogen_morphology = None
        self._biology_spread_pathogen = None
        self._ecology_of_disease = None
        self._disease_harmfulness = None
        self._fight_ways = None
        self._economic_threshold_of_harmfulness = None
        self._subgroup = None
        self._causative_agent = None
        self.discriminator = None
        self.id = id
        self.name = name
        if causes_of_occurrence is not None:
            self.causes_of_occurrence = causes_of_occurrence
        if manifestations_shoots is not None:
            self.manifestations_shoots = manifestations_shoots
        if manifestations_leaves is not None:
            self.manifestations_leaves = manifestations_leaves
        if manifestations_stems is not None:
            self.manifestations_stems = manifestations_stems
        if manifestations_root_system is not None:
            self.manifestations_root_system = manifestations_root_system
        if manifestations_roots is not None:
            self.manifestations_roots = manifestations_roots
        if manifestations_reproductive_organs is not None:
            self.manifestations_reproductive_organs = manifestations_reproductive_organs
        if pathogen_morphology is not None:
            self.pathogen_morphology = pathogen_morphology
        if biology_spread_pathogen is not None:
            self.biology_spread_pathogen = biology_spread_pathogen
        if ecology_of_disease is not None:
            self.ecology_of_disease = ecology_of_disease
        if disease_harmfulness is not None:
            self.disease_harmfulness = disease_harmfulness
        if fight_ways is not None:
            self.fight_ways = fight_ways
        if economic_threshold_of_harmfulness is not None:
            self.economic_threshold_of_harmfulness = economic_threshold_of_harmfulness
        self.subgroup = subgroup
        self.causative_agent = causative_agent

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


        :return: The id of this DeterminantDisease.  # noqa: E501
        :rtype: int
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this DeterminantDisease.


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

        self._id = id

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


        :return: The name of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this DeterminantDisease.


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

        self._name = name

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


        :return: The causes_of_occurrence of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._causes_of_occurrence

    @causes_of_occurrence.setter
    def causes_of_occurrence(self, causes_of_occurrence):
        """Sets the causes_of_occurrence of this DeterminantDisease.


        :param causes_of_occurrence: The causes_of_occurrence of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._causes_of_occurrence = causes_of_occurrence

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


        :return: The manifestations_shoots of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._manifestations_shoots

    @manifestations_shoots.setter
    def manifestations_shoots(self, manifestations_shoots):
        """Sets the manifestations_shoots of this DeterminantDisease.


        :param manifestations_shoots: The manifestations_shoots of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._manifestations_shoots = manifestations_shoots

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


        :return: The manifestations_leaves of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._manifestations_leaves

    @manifestations_leaves.setter
    def manifestations_leaves(self, manifestations_leaves):
        """Sets the manifestations_leaves of this DeterminantDisease.


        :param manifestations_leaves: The manifestations_leaves of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._manifestations_leaves = manifestations_leaves

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


        :return: The manifestations_stems of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._manifestations_stems

    @manifestations_stems.setter
    def manifestations_stems(self, manifestations_stems):
        """Sets the manifestations_stems of this DeterminantDisease.


        :param manifestations_stems: The manifestations_stems of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._manifestations_stems = manifestations_stems

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


        :return: The manifestations_root_system of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._manifestations_root_system

    @manifestations_root_system.setter
    def manifestations_root_system(self, manifestations_root_system):
        """Sets the manifestations_root_system of this DeterminantDisease.


        :param manifestations_root_system: The manifestations_root_system of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._manifestations_root_system = manifestations_root_system

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


        :return: The manifestations_roots of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._manifestations_roots

    @manifestations_roots.setter
    def manifestations_roots(self, manifestations_roots):
        """Sets the manifestations_roots of this DeterminantDisease.


        :param manifestations_roots: The manifestations_roots of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._manifestations_roots = manifestations_roots

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


        :return: The manifestations_reproductive_organs of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._manifestations_reproductive_organs

    @manifestations_reproductive_organs.setter
    def manifestations_reproductive_organs(self, manifestations_reproductive_organs):
        """Sets the manifestations_reproductive_organs of this DeterminantDisease.


        :param manifestations_reproductive_organs: The manifestations_reproductive_organs of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._manifestations_reproductive_organs = manifestations_reproductive_organs

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


        :return: The pathogen_morphology of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._pathogen_morphology

    @pathogen_morphology.setter
    def pathogen_morphology(self, pathogen_morphology):
        """Sets the pathogen_morphology of this DeterminantDisease.


        :param pathogen_morphology: The pathogen_morphology of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._pathogen_morphology = pathogen_morphology

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


        :return: The biology_spread_pathogen of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._biology_spread_pathogen

    @biology_spread_pathogen.setter
    def biology_spread_pathogen(self, biology_spread_pathogen):
        """Sets the biology_spread_pathogen of this DeterminantDisease.


        :param biology_spread_pathogen: The biology_spread_pathogen of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._biology_spread_pathogen = biology_spread_pathogen

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


        :return: The ecology_of_disease of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._ecology_of_disease

    @ecology_of_disease.setter
    def ecology_of_disease(self, ecology_of_disease):
        """Sets the ecology_of_disease of this DeterminantDisease.


        :param ecology_of_disease: The ecology_of_disease of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._ecology_of_disease = ecology_of_disease

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


        :return: The disease_harmfulness of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._disease_harmfulness

    @disease_harmfulness.setter
    def disease_harmfulness(self, disease_harmfulness):
        """Sets the disease_harmfulness of this DeterminantDisease.


        :param disease_harmfulness: The disease_harmfulness of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._disease_harmfulness = disease_harmfulness

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


        :return: The fight_ways of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._fight_ways

    @fight_ways.setter
    def fight_ways(self, fight_ways):
        """Sets the fight_ways of this DeterminantDisease.


        :param fight_ways: The fight_ways of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._fight_ways = fight_ways

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


        :return: The economic_threshold_of_harmfulness of this DeterminantDisease.  # noqa: E501
        :rtype: str
        """
        return self._economic_threshold_of_harmfulness

    @economic_threshold_of_harmfulness.setter
    def economic_threshold_of_harmfulness(self, economic_threshold_of_harmfulness):
        """Sets the economic_threshold_of_harmfulness of this DeterminantDisease.


        :param economic_threshold_of_harmfulness: The economic_threshold_of_harmfulness of this DeterminantDisease.  # noqa: E501
        :type: str
        """

        self._economic_threshold_of_harmfulness = economic_threshold_of_harmfulness

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


        :return: The subgroup of this DeterminantDisease.  # noqa: E501
        :rtype: int
        """
        return self._subgroup

    @subgroup.setter
    def subgroup(self, subgroup):
        """Sets the subgroup of this DeterminantDisease.


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

        self._subgroup = subgroup

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


        :return: The causative_agent of this DeterminantDisease.  # noqa: E501
        :rtype: int
        """
        return self._causative_agent

    @causative_agent.setter
    def causative_agent(self, causative_agent):
        """Sets the causative_agent of this DeterminantDisease.


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

        self._causative_agent = causative_agent

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

        return self.__dict__ == other.__dict__

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