# coding: utf-8

"""
    ARLAS Exploration API

    Explore the content of ARLAS collections  # noqa: E501

    OpenAPI spec version: 22.0.0-beta.3
    Contact: contact@gisaia.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class Inspire(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 = {
        'keywords': 'list[Keyword]',
        'topic_categories': 'list[str]',
        'lineage': 'str',
        'languages': 'list[str]',
        'spatial_resolution': 'InspireSpatialResolution',
        'inspire_uri': 'InspireURI',
        'inspire_limitation_access': 'InspireLimitationAccess',
        'inspire_use_conditions': 'str'
    }

    attribute_map = {
        'keywords': 'keywords',
        'topic_categories': 'topic_categories',
        'lineage': 'lineage',
        'languages': 'languages',
        'spatial_resolution': 'spatial_resolution',
        'inspire_uri': 'inspire_uri',
        'inspire_limitation_access': 'inspire_limitation_access',
        'inspire_use_conditions': 'inspire_use_conditions'
    }

    def __init__(self, keywords=None, topic_categories=None, lineage=None, languages=None, spatial_resolution=None, inspire_uri=None, inspire_limitation_access=None, inspire_use_conditions=None):  # noqa: E501
        """Inspire - a model defined in Swagger"""  # noqa: E501

        self._keywords = None
        self._topic_categories = None
        self._lineage = None
        self._languages = None
        self._spatial_resolution = None
        self._inspire_uri = None
        self._inspire_limitation_access = None
        self._inspire_use_conditions = None
        self.discriminator = None

        if keywords is not None:
            self.keywords = keywords
        if topic_categories is not None:
            self.topic_categories = topic_categories
        if lineage is not None:
            self.lineage = lineage
        if languages is not None:
            self.languages = languages
        if spatial_resolution is not None:
            self.spatial_resolution = spatial_resolution
        if inspire_uri is not None:
            self.inspire_uri = inspire_uri
        if inspire_limitation_access is not None:
            self.inspire_limitation_access = inspire_limitation_access
        if inspire_use_conditions is not None:
            self.inspire_use_conditions = inspire_use_conditions

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


        :return: The keywords of this Inspire.  # noqa: E501
        :rtype: list[Keyword]
        """
        return self._keywords

    @keywords.setter
    def keywords(self, keywords):
        """Sets the keywords of this Inspire.


        :param keywords: The keywords of this Inspire.  # noqa: E501
        :type: list[Keyword]
        """

        self._keywords = keywords

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


        :return: The topic_categories of this Inspire.  # noqa: E501
        :rtype: list[str]
        """
        return self._topic_categories

    @topic_categories.setter
    def topic_categories(self, topic_categories):
        """Sets the topic_categories of this Inspire.


        :param topic_categories: The topic_categories of this Inspire.  # noqa: E501
        :type: list[str]
        """

        self._topic_categories = topic_categories

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


        :return: The lineage of this Inspire.  # noqa: E501
        :rtype: str
        """
        return self._lineage

    @lineage.setter
    def lineage(self, lineage):
        """Sets the lineage of this Inspire.


        :param lineage: The lineage of this Inspire.  # noqa: E501
        :type: str
        """

        self._lineage = lineage

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


        :return: The languages of this Inspire.  # noqa: E501
        :rtype: list[str]
        """
        return self._languages

    @languages.setter
    def languages(self, languages):
        """Sets the languages of this Inspire.


        :param languages: The languages of this Inspire.  # noqa: E501
        :type: list[str]
        """

        self._languages = languages

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


        :return: The spatial_resolution of this Inspire.  # noqa: E501
        :rtype: InspireSpatialResolution
        """
        return self._spatial_resolution

    @spatial_resolution.setter
    def spatial_resolution(self, spatial_resolution):
        """Sets the spatial_resolution of this Inspire.


        :param spatial_resolution: The spatial_resolution of this Inspire.  # noqa: E501
        :type: InspireSpatialResolution
        """

        self._spatial_resolution = spatial_resolution

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


        :return: The inspire_uri of this Inspire.  # noqa: E501
        :rtype: InspireURI
        """
        return self._inspire_uri

    @inspire_uri.setter
    def inspire_uri(self, inspire_uri):
        """Sets the inspire_uri of this Inspire.


        :param inspire_uri: The inspire_uri of this Inspire.  # noqa: E501
        :type: InspireURI
        """

        self._inspire_uri = inspire_uri

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


        :return: The inspire_limitation_access of this Inspire.  # noqa: E501
        :rtype: InspireLimitationAccess
        """
        return self._inspire_limitation_access

    @inspire_limitation_access.setter
    def inspire_limitation_access(self, inspire_limitation_access):
        """Sets the inspire_limitation_access of this Inspire.


        :param inspire_limitation_access: The inspire_limitation_access of this Inspire.  # noqa: E501
        :type: InspireLimitationAccess
        """

        self._inspire_limitation_access = inspire_limitation_access

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


        :return: The inspire_use_conditions of this Inspire.  # noqa: E501
        :rtype: str
        """
        return self._inspire_use_conditions

    @inspire_use_conditions.setter
    def inspire_use_conditions(self, inspire_use_conditions):
        """Sets the inspire_use_conditions of this Inspire.


        :param inspire_use_conditions: The inspire_use_conditions of this Inspire.  # noqa: E501
        :type: str
        """

        self._inspire_use_conditions = inspire_use_conditions

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

        return self.__dict__ == other.__dict__

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