# coding: utf-8

"""
    Component Database API

    The API that provides access to Component Database data.  # noqa: E501

    The version of the OpenAPI document: 3.14.0
    Contact: djarosz@anl.gov
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from cdbApi.configuration import Configuration


class SearchEntitiesResults(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'item_domain_catalog_results': 'list[SearchResult]',
        'item_domain_inventory_results': 'list[SearchResult]',
        'item_domain_machine_design_results': 'list[SearchResult]',
        'item_domain_cable_catalog_results': 'list[SearchResult]',
        'item_domain_cable_inventory_results': 'list[SearchResult]',
        'item_domain_cable_design_results': 'list[SearchResult]',
        'item_domain_location_results': 'list[SearchResult]',
        'item_domain_maarc_results': 'list[SearchResult]',
        'item_element_results': 'list[SearchResult]',
        'item_type_results': 'list[SearchResult]',
        'item_category_results': 'list[SearchResult]',
        'property_type_results': 'list[SearchResult]',
        'property_type_category_results': 'list[SearchResult]',
        'source_results': 'list[SearchResult]',
        'user_results': 'list[SearchResult]',
        'user_group_results': 'list[SearchResult]'
    }

    attribute_map = {
        'item_domain_catalog_results': 'itemDomainCatalogResults',
        'item_domain_inventory_results': 'itemDomainInventoryResults',
        'item_domain_machine_design_results': 'itemDomainMachineDesignResults',
        'item_domain_cable_catalog_results': 'itemDomainCableCatalogResults',
        'item_domain_cable_inventory_results': 'itemDomainCableInventoryResults',
        'item_domain_cable_design_results': 'itemDomainCableDesignResults',
        'item_domain_location_results': 'itemDomainLocationResults',
        'item_domain_maarc_results': 'itemDomainMAARCResults',
        'item_element_results': 'itemElementResults',
        'item_type_results': 'itemTypeResults',
        'item_category_results': 'itemCategoryResults',
        'property_type_results': 'propertyTypeResults',
        'property_type_category_results': 'propertyTypeCategoryResults',
        'source_results': 'sourceResults',
        'user_results': 'userResults',
        'user_group_results': 'userGroupResults'
    }

    def __init__(self, item_domain_catalog_results=None, item_domain_inventory_results=None, item_domain_machine_design_results=None, item_domain_cable_catalog_results=None, item_domain_cable_inventory_results=None, item_domain_cable_design_results=None, item_domain_location_results=None, item_domain_maarc_results=None, item_element_results=None, item_type_results=None, item_category_results=None, property_type_results=None, property_type_category_results=None, source_results=None, user_results=None, user_group_results=None, local_vars_configuration=None):  # noqa: E501
        """SearchEntitiesResults - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._item_domain_catalog_results = None
        self._item_domain_inventory_results = None
        self._item_domain_machine_design_results = None
        self._item_domain_cable_catalog_results = None
        self._item_domain_cable_inventory_results = None
        self._item_domain_cable_design_results = None
        self._item_domain_location_results = None
        self._item_domain_maarc_results = None
        self._item_element_results = None
        self._item_type_results = None
        self._item_category_results = None
        self._property_type_results = None
        self._property_type_category_results = None
        self._source_results = None
        self._user_results = None
        self._user_group_results = None
        self.discriminator = None

        if item_domain_catalog_results is not None:
            self.item_domain_catalog_results = item_domain_catalog_results
        if item_domain_inventory_results is not None:
            self.item_domain_inventory_results = item_domain_inventory_results
        if item_domain_machine_design_results is not None:
            self.item_domain_machine_design_results = item_domain_machine_design_results
        if item_domain_cable_catalog_results is not None:
            self.item_domain_cable_catalog_results = item_domain_cable_catalog_results
        if item_domain_cable_inventory_results is not None:
            self.item_domain_cable_inventory_results = item_domain_cable_inventory_results
        if item_domain_cable_design_results is not None:
            self.item_domain_cable_design_results = item_domain_cable_design_results
        if item_domain_location_results is not None:
            self.item_domain_location_results = item_domain_location_results
        if item_domain_maarc_results is not None:
            self.item_domain_maarc_results = item_domain_maarc_results
        if item_element_results is not None:
            self.item_element_results = item_element_results
        if item_type_results is not None:
            self.item_type_results = item_type_results
        if item_category_results is not None:
            self.item_category_results = item_category_results
        if property_type_results is not None:
            self.property_type_results = property_type_results
        if property_type_category_results is not None:
            self.property_type_category_results = property_type_category_results
        if source_results is not None:
            self.source_results = source_results
        if user_results is not None:
            self.user_results = user_results
        if user_group_results is not None:
            self.user_group_results = user_group_results

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


        :return: The item_domain_catalog_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._item_domain_catalog_results

    @item_domain_catalog_results.setter
    def item_domain_catalog_results(self, item_domain_catalog_results):
        """Sets the item_domain_catalog_results of this SearchEntitiesResults.


        :param item_domain_catalog_results: The item_domain_catalog_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._item_domain_catalog_results = item_domain_catalog_results

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


        :return: The item_domain_inventory_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._item_domain_inventory_results

    @item_domain_inventory_results.setter
    def item_domain_inventory_results(self, item_domain_inventory_results):
        """Sets the item_domain_inventory_results of this SearchEntitiesResults.


        :param item_domain_inventory_results: The item_domain_inventory_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._item_domain_inventory_results = item_domain_inventory_results

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


        :return: The item_domain_machine_design_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._item_domain_machine_design_results

    @item_domain_machine_design_results.setter
    def item_domain_machine_design_results(self, item_domain_machine_design_results):
        """Sets the item_domain_machine_design_results of this SearchEntitiesResults.


        :param item_domain_machine_design_results: The item_domain_machine_design_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._item_domain_machine_design_results = item_domain_machine_design_results

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


        :return: The item_domain_cable_catalog_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._item_domain_cable_catalog_results

    @item_domain_cable_catalog_results.setter
    def item_domain_cable_catalog_results(self, item_domain_cable_catalog_results):
        """Sets the item_domain_cable_catalog_results of this SearchEntitiesResults.


        :param item_domain_cable_catalog_results: The item_domain_cable_catalog_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._item_domain_cable_catalog_results = item_domain_cable_catalog_results

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


        :return: The item_domain_cable_inventory_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._item_domain_cable_inventory_results

    @item_domain_cable_inventory_results.setter
    def item_domain_cable_inventory_results(self, item_domain_cable_inventory_results):
        """Sets the item_domain_cable_inventory_results of this SearchEntitiesResults.


        :param item_domain_cable_inventory_results: The item_domain_cable_inventory_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._item_domain_cable_inventory_results = item_domain_cable_inventory_results

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


        :return: The item_domain_cable_design_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._item_domain_cable_design_results

    @item_domain_cable_design_results.setter
    def item_domain_cable_design_results(self, item_domain_cable_design_results):
        """Sets the item_domain_cable_design_results of this SearchEntitiesResults.


        :param item_domain_cable_design_results: The item_domain_cable_design_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._item_domain_cable_design_results = item_domain_cable_design_results

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


        :return: The item_domain_location_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._item_domain_location_results

    @item_domain_location_results.setter
    def item_domain_location_results(self, item_domain_location_results):
        """Sets the item_domain_location_results of this SearchEntitiesResults.


        :param item_domain_location_results: The item_domain_location_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._item_domain_location_results = item_domain_location_results

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


        :return: The item_domain_maarc_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._item_domain_maarc_results

    @item_domain_maarc_results.setter
    def item_domain_maarc_results(self, item_domain_maarc_results):
        """Sets the item_domain_maarc_results of this SearchEntitiesResults.


        :param item_domain_maarc_results: The item_domain_maarc_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._item_domain_maarc_results = item_domain_maarc_results

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


        :return: The item_element_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._item_element_results

    @item_element_results.setter
    def item_element_results(self, item_element_results):
        """Sets the item_element_results of this SearchEntitiesResults.


        :param item_element_results: The item_element_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._item_element_results = item_element_results

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


        :return: The item_type_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._item_type_results

    @item_type_results.setter
    def item_type_results(self, item_type_results):
        """Sets the item_type_results of this SearchEntitiesResults.


        :param item_type_results: The item_type_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._item_type_results = item_type_results

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


        :return: The item_category_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._item_category_results

    @item_category_results.setter
    def item_category_results(self, item_category_results):
        """Sets the item_category_results of this SearchEntitiesResults.


        :param item_category_results: The item_category_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._item_category_results = item_category_results

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


        :return: The property_type_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._property_type_results

    @property_type_results.setter
    def property_type_results(self, property_type_results):
        """Sets the property_type_results of this SearchEntitiesResults.


        :param property_type_results: The property_type_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._property_type_results = property_type_results

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


        :return: The property_type_category_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._property_type_category_results

    @property_type_category_results.setter
    def property_type_category_results(self, property_type_category_results):
        """Sets the property_type_category_results of this SearchEntitiesResults.


        :param property_type_category_results: The property_type_category_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._property_type_category_results = property_type_category_results

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


        :return: The source_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._source_results

    @source_results.setter
    def source_results(self, source_results):
        """Sets the source_results of this SearchEntitiesResults.


        :param source_results: The source_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._source_results = source_results

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


        :return: The user_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._user_results

    @user_results.setter
    def user_results(self, user_results):
        """Sets the user_results of this SearchEntitiesResults.


        :param user_results: The user_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._user_results = user_results

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


        :return: The user_group_results of this SearchEntitiesResults.  # noqa: E501
        :rtype: list[SearchResult]
        """
        return self._user_group_results

    @user_group_results.setter
    def user_group_results(self, user_group_results):
        """Sets the user_group_results of this SearchEntitiesResults.


        :param user_group_results: The user_group_results of this SearchEntitiesResults.  # noqa: E501
        :type: list[SearchResult]
        """

        self._user_group_results = user_group_results

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

        for attr, _ in six.iteritems(self.openapi_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

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

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
