# coding: utf-8

"""
    XTRF Home Portal API

    XTRF Home Portal API enables you to perform operations on Projects, Quotes, Customers, Vendors etc. as a XTRF Home Portal user. <br>The documentation is generated from OpenAPI specification 3.0 available <a href=\"/home-api/openapi.json\">here</a> <br>   The API client/consumer code may be easily generated in 60+ programming languages using an open source code generator available at the time of writing this documentation at <a href='https://editor.swagger.io/'>https://editor.swagger.io/</a> Thank you for using XTRF Application Programming interface (XTRF API). By using the API you agree to the terms below. If you disagree with any of these terms, XTRF does not grant you a license to use the XTRF API. XTRF reserves the right to update and change these terms from time to time without a prior notice of API users. You can always find the most recent version of these terms here:   # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class DictionaryEntity(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',
        'version': 'int',
        'last_modification_date': 'datetime',
        'audit_path': 'str',
        'class_simple_name': 'str',
        'active': 'bool',
        'name': 'str',
        'prefered_entity': 'bool',
        'default_entity': 'bool',
        'preferred': 'bool',
        'display_name': 'str',
        'packed_compound_id': 'str',
        'compound_id': 'str',
        'audit_display_name': 'str',
        'entity_marked_as_not_supposed_to_be_persisted': 'bool',
        'class_name_key': 'str',
        'internal_description': 'str',
        'and_clear_events_queue': 'EventsQueue',
        'events_queue_ready_to_be_dispatched': 'bool',
        'identifier': 'Identifier'
    }

    attribute_map = {
        'id': 'id',
        'version': 'version',
        'last_modification_date': 'lastModificationDate',
        'audit_path': 'auditPath',
        'class_simple_name': 'classSimpleName',
        'active': 'active',
        'name': 'name',
        'prefered_entity': 'preferedEntity',
        'default_entity': 'defaultEntity',
        'preferred': 'preferred',
        'display_name': 'displayName',
        'packed_compound_id': 'packedCompoundId',
        'compound_id': 'compoundId',
        'audit_display_name': 'auditDisplayName',
        'entity_marked_as_not_supposed_to_be_persisted': 'entityMarkedAsNotSupposedToBePersisted',
        'class_name_key': 'classNameKey',
        'internal_description': 'internalDescription',
        'and_clear_events_queue': 'andClearEventsQueue',
        'events_queue_ready_to_be_dispatched': 'eventsQueueReadyToBeDispatched',
        'identifier': 'identifier'
    }

    def __init__(self, id=None, version=None, last_modification_date=None, audit_path=None, class_simple_name=None, active=None, name=None, prefered_entity=None, default_entity=None, preferred=None, display_name=None, packed_compound_id=None, compound_id=None, audit_display_name=None, entity_marked_as_not_supposed_to_be_persisted=None, class_name_key=None, internal_description=None, and_clear_events_queue=None, events_queue_ready_to_be_dispatched=None, identifier=None):  # noqa: E501
        """DictionaryEntity - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._version = None
        self._last_modification_date = None
        self._audit_path = None
        self._class_simple_name = None
        self._active = None
        self._name = None
        self._prefered_entity = None
        self._default_entity = None
        self._preferred = None
        self._display_name = None
        self._packed_compound_id = None
        self._compound_id = None
        self._audit_display_name = None
        self._entity_marked_as_not_supposed_to_be_persisted = None
        self._class_name_key = None
        self._internal_description = None
        self._and_clear_events_queue = None
        self._events_queue_ready_to_be_dispatched = None
        self._identifier = None
        self.discriminator = None
        if id is not None:
            self.id = id
        if version is not None:
            self.version = version
        if last_modification_date is not None:
            self.last_modification_date = last_modification_date
        if audit_path is not None:
            self.audit_path = audit_path
        if class_simple_name is not None:
            self.class_simple_name = class_simple_name
        if active is not None:
            self.active = active
        if name is not None:
            self.name = name
        self.prefered_entity = prefered_entity
        if default_entity is not None:
            self.default_entity = default_entity
        if preferred is not None:
            self.preferred = preferred
        if display_name is not None:
            self.display_name = display_name
        if packed_compound_id is not None:
            self.packed_compound_id = packed_compound_id
        if compound_id is not None:
            self.compound_id = compound_id
        if audit_display_name is not None:
            self.audit_display_name = audit_display_name
        if entity_marked_as_not_supposed_to_be_persisted is not None:
            self.entity_marked_as_not_supposed_to_be_persisted = entity_marked_as_not_supposed_to_be_persisted
        if class_name_key is not None:
            self.class_name_key = class_name_key
        if internal_description is not None:
            self.internal_description = internal_description
        if and_clear_events_queue is not None:
            self.and_clear_events_queue = and_clear_events_queue
        if events_queue_ready_to_be_dispatched is not None:
            self.events_queue_ready_to_be_dispatched = events_queue_ready_to_be_dispatched
        if identifier is not None:
            self.identifier = identifier

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


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

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


        :param id: The id of this DictionaryEntity.  # noqa: E501
        :type: int
        """

        self._id = id

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


        :return: The version of this DictionaryEntity.  # noqa: E501
        :rtype: int
        """
        return self._version

    @version.setter
    def version(self, version):
        """Sets the version of this DictionaryEntity.


        :param version: The version of this DictionaryEntity.  # noqa: E501
        :type: int
        """

        self._version = version

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


        :return: The last_modification_date of this DictionaryEntity.  # noqa: E501
        :rtype: datetime
        """
        return self._last_modification_date

    @last_modification_date.setter
    def last_modification_date(self, last_modification_date):
        """Sets the last_modification_date of this DictionaryEntity.


        :param last_modification_date: The last_modification_date of this DictionaryEntity.  # noqa: E501
        :type: datetime
        """

        self._last_modification_date = last_modification_date

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


        :return: The audit_path of this DictionaryEntity.  # noqa: E501
        :rtype: str
        """
        return self._audit_path

    @audit_path.setter
    def audit_path(self, audit_path):
        """Sets the audit_path of this DictionaryEntity.


        :param audit_path: The audit_path of this DictionaryEntity.  # noqa: E501
        :type: str
        """

        self._audit_path = audit_path

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


        :return: The class_simple_name of this DictionaryEntity.  # noqa: E501
        :rtype: str
        """
        return self._class_simple_name

    @class_simple_name.setter
    def class_simple_name(self, class_simple_name):
        """Sets the class_simple_name of this DictionaryEntity.


        :param class_simple_name: The class_simple_name of this DictionaryEntity.  # noqa: E501
        :type: str
        """

        self._class_simple_name = class_simple_name

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


        :return: The active of this DictionaryEntity.  # noqa: E501
        :rtype: bool
        """
        return self._active

    @active.setter
    def active(self, active):
        """Sets the active of this DictionaryEntity.


        :param active: The active of this DictionaryEntity.  # noqa: E501
        :type: bool
        """

        self._active = active

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


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

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


        :param name: The name of this DictionaryEntity.  # noqa: E501
        :type: str
        """

        self._name = name

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


        :return: The prefered_entity of this DictionaryEntity.  # noqa: E501
        :rtype: bool
        """
        return self._prefered_entity

    @prefered_entity.setter
    def prefered_entity(self, prefered_entity):
        """Sets the prefered_entity of this DictionaryEntity.


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

        self._prefered_entity = prefered_entity

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


        :return: The default_entity of this DictionaryEntity.  # noqa: E501
        :rtype: bool
        """
        return self._default_entity

    @default_entity.setter
    def default_entity(self, default_entity):
        """Sets the default_entity of this DictionaryEntity.


        :param default_entity: The default_entity of this DictionaryEntity.  # noqa: E501
        :type: bool
        """

        self._default_entity = default_entity

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


        :return: The preferred of this DictionaryEntity.  # noqa: E501
        :rtype: bool
        """
        return self._preferred

    @preferred.setter
    def preferred(self, preferred):
        """Sets the preferred of this DictionaryEntity.


        :param preferred: The preferred of this DictionaryEntity.  # noqa: E501
        :type: bool
        """

        self._preferred = preferred

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


        :return: The display_name of this DictionaryEntity.  # noqa: E501
        :rtype: str
        """
        return self._display_name

    @display_name.setter
    def display_name(self, display_name):
        """Sets the display_name of this DictionaryEntity.


        :param display_name: The display_name of this DictionaryEntity.  # noqa: E501
        :type: str
        """

        self._display_name = display_name

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


        :return: The packed_compound_id of this DictionaryEntity.  # noqa: E501
        :rtype: str
        """
        return self._packed_compound_id

    @packed_compound_id.setter
    def packed_compound_id(self, packed_compound_id):
        """Sets the packed_compound_id of this DictionaryEntity.


        :param packed_compound_id: The packed_compound_id of this DictionaryEntity.  # noqa: E501
        :type: str
        """

        self._packed_compound_id = packed_compound_id

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


        :return: The compound_id of this DictionaryEntity.  # noqa: E501
        :rtype: str
        """
        return self._compound_id

    @compound_id.setter
    def compound_id(self, compound_id):
        """Sets the compound_id of this DictionaryEntity.


        :param compound_id: The compound_id of this DictionaryEntity.  # noqa: E501
        :type: str
        """

        self._compound_id = compound_id

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


        :return: The audit_display_name of this DictionaryEntity.  # noqa: E501
        :rtype: str
        """
        return self._audit_display_name

    @audit_display_name.setter
    def audit_display_name(self, audit_display_name):
        """Sets the audit_display_name of this DictionaryEntity.


        :param audit_display_name: The audit_display_name of this DictionaryEntity.  # noqa: E501
        :type: str
        """

        self._audit_display_name = audit_display_name

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


        :return: The entity_marked_as_not_supposed_to_be_persisted of this DictionaryEntity.  # noqa: E501
        :rtype: bool
        """
        return self._entity_marked_as_not_supposed_to_be_persisted

    @entity_marked_as_not_supposed_to_be_persisted.setter
    def entity_marked_as_not_supposed_to_be_persisted(self, entity_marked_as_not_supposed_to_be_persisted):
        """Sets the entity_marked_as_not_supposed_to_be_persisted of this DictionaryEntity.


        :param entity_marked_as_not_supposed_to_be_persisted: The entity_marked_as_not_supposed_to_be_persisted of this DictionaryEntity.  # noqa: E501
        :type: bool
        """

        self._entity_marked_as_not_supposed_to_be_persisted = entity_marked_as_not_supposed_to_be_persisted

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


        :return: The class_name_key of this DictionaryEntity.  # noqa: E501
        :rtype: str
        """
        return self._class_name_key

    @class_name_key.setter
    def class_name_key(self, class_name_key):
        """Sets the class_name_key of this DictionaryEntity.


        :param class_name_key: The class_name_key of this DictionaryEntity.  # noqa: E501
        :type: str
        """

        self._class_name_key = class_name_key

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


        :return: The internal_description of this DictionaryEntity.  # noqa: E501
        :rtype: str
        """
        return self._internal_description

    @internal_description.setter
    def internal_description(self, internal_description):
        """Sets the internal_description of this DictionaryEntity.


        :param internal_description: The internal_description of this DictionaryEntity.  # noqa: E501
        :type: str
        """

        self._internal_description = internal_description

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


        :return: The and_clear_events_queue of this DictionaryEntity.  # noqa: E501
        :rtype: EventsQueue
        """
        return self._and_clear_events_queue

    @and_clear_events_queue.setter
    def and_clear_events_queue(self, and_clear_events_queue):
        """Sets the and_clear_events_queue of this DictionaryEntity.


        :param and_clear_events_queue: The and_clear_events_queue of this DictionaryEntity.  # noqa: E501
        :type: EventsQueue
        """

        self._and_clear_events_queue = and_clear_events_queue

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


        :return: The events_queue_ready_to_be_dispatched of this DictionaryEntity.  # noqa: E501
        :rtype: bool
        """
        return self._events_queue_ready_to_be_dispatched

    @events_queue_ready_to_be_dispatched.setter
    def events_queue_ready_to_be_dispatched(self, events_queue_ready_to_be_dispatched):
        """Sets the events_queue_ready_to_be_dispatched of this DictionaryEntity.


        :param events_queue_ready_to_be_dispatched: The events_queue_ready_to_be_dispatched of this DictionaryEntity.  # noqa: E501
        :type: bool
        """

        self._events_queue_ready_to_be_dispatched = events_queue_ready_to_be_dispatched

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


        :return: The identifier of this DictionaryEntity.  # noqa: E501
        :rtype: Identifier
        """
        return self._identifier

    @identifier.setter
    def identifier(self, identifier):
        """Sets the identifier of this DictionaryEntity.


        :param identifier: The identifier of this DictionaryEntity.  # noqa: E501
        :type: Identifier
        """

        self._identifier = identifier

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

        return self.__dict__ == other.__dict__

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