# coding: utf-8

"""
    Adobe Experience Manager OSGI config (AEM) API

    Swagger AEM OSGI is an OpenAPI specification for Adobe Experience Manager (AEM) OSGI Configurations API  # noqa: E501

    OpenAPI spec version: 1.0.0-pre.0
    Contact: opensource@shinesolutions.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six


class OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties(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 = {
        'handler_name': 'ConfigNodePropertyString',
        'user_expiration_time': 'ConfigNodePropertyString',
        'user_auto_membership': 'ConfigNodePropertyArray',
        'user_property_mapping': 'ConfigNodePropertyArray',
        'user_path_prefix': 'ConfigNodePropertyString',
        'user_membership_exp_time': 'ConfigNodePropertyString',
        'user_membership_nesting_depth': 'ConfigNodePropertyInteger',
        'user_dynamic_membership': 'ConfigNodePropertyBoolean',
        'user_disable_missing': 'ConfigNodePropertyBoolean',
        'group_expiration_time': 'ConfigNodePropertyString',
        'group_auto_membership': 'ConfigNodePropertyArray',
        'group_property_mapping': 'ConfigNodePropertyArray',
        'group_path_prefix': 'ConfigNodePropertyString',
        'enable_rfc7613_usercase_mapped_profile': 'ConfigNodePropertyBoolean'
    }

    attribute_map = {
        'handler_name': 'handler.name',
        'user_expiration_time': 'user.expirationTime',
        'user_auto_membership': 'user.autoMembership',
        'user_property_mapping': 'user.propertyMapping',
        'user_path_prefix': 'user.pathPrefix',
        'user_membership_exp_time': 'user.membershipExpTime',
        'user_membership_nesting_depth': 'user.membershipNestingDepth',
        'user_dynamic_membership': 'user.dynamicMembership',
        'user_disable_missing': 'user.disableMissing',
        'group_expiration_time': 'group.expirationTime',
        'group_auto_membership': 'group.autoMembership',
        'group_property_mapping': 'group.propertyMapping',
        'group_path_prefix': 'group.pathPrefix',
        'enable_rfc7613_usercase_mapped_profile': 'enableRFC7613UsercaseMappedProfile'
    }

    def __init__(self, handler_name=None, user_expiration_time=None, user_auto_membership=None, user_property_mapping=None, user_path_prefix=None, user_membership_exp_time=None, user_membership_nesting_depth=None, user_dynamic_membership=None, user_disable_missing=None, group_expiration_time=None, group_auto_membership=None, group_property_mapping=None, group_path_prefix=None, enable_rfc7613_usercase_mapped_profile=None):  # noqa: E501
        """OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties - a model defined in OpenAPI"""  # noqa: E501

        self._handler_name = None
        self._user_expiration_time = None
        self._user_auto_membership = None
        self._user_property_mapping = None
        self._user_path_prefix = None
        self._user_membership_exp_time = None
        self._user_membership_nesting_depth = None
        self._user_dynamic_membership = None
        self._user_disable_missing = None
        self._group_expiration_time = None
        self._group_auto_membership = None
        self._group_property_mapping = None
        self._group_path_prefix = None
        self._enable_rfc7613_usercase_mapped_profile = None
        self.discriminator = None

        if handler_name is not None:
            self.handler_name = handler_name
        if user_expiration_time is not None:
            self.user_expiration_time = user_expiration_time
        if user_auto_membership is not None:
            self.user_auto_membership = user_auto_membership
        if user_property_mapping is not None:
            self.user_property_mapping = user_property_mapping
        if user_path_prefix is not None:
            self.user_path_prefix = user_path_prefix
        if user_membership_exp_time is not None:
            self.user_membership_exp_time = user_membership_exp_time
        if user_membership_nesting_depth is not None:
            self.user_membership_nesting_depth = user_membership_nesting_depth
        if user_dynamic_membership is not None:
            self.user_dynamic_membership = user_dynamic_membership
        if user_disable_missing is not None:
            self.user_disable_missing = user_disable_missing
        if group_expiration_time is not None:
            self.group_expiration_time = group_expiration_time
        if group_auto_membership is not None:
            self.group_auto_membership = group_auto_membership
        if group_property_mapping is not None:
            self.group_property_mapping = group_property_mapping
        if group_path_prefix is not None:
            self.group_path_prefix = group_path_prefix
        if enable_rfc7613_usercase_mapped_profile is not None:
            self.enable_rfc7613_usercase_mapped_profile = enable_rfc7613_usercase_mapped_profile

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


        :return: The handler_name of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._handler_name

    @handler_name.setter
    def handler_name(self, handler_name):
        """Sets the handler_name of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param handler_name: The handler_name of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._handler_name = handler_name

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


        :return: The user_expiration_time of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._user_expiration_time

    @user_expiration_time.setter
    def user_expiration_time(self, user_expiration_time):
        """Sets the user_expiration_time of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param user_expiration_time: The user_expiration_time of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._user_expiration_time = user_expiration_time

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


        :return: The user_auto_membership of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._user_auto_membership

    @user_auto_membership.setter
    def user_auto_membership(self, user_auto_membership):
        """Sets the user_auto_membership of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param user_auto_membership: The user_auto_membership of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._user_auto_membership = user_auto_membership

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


        :return: The user_property_mapping of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._user_property_mapping

    @user_property_mapping.setter
    def user_property_mapping(self, user_property_mapping):
        """Sets the user_property_mapping of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param user_property_mapping: The user_property_mapping of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._user_property_mapping = user_property_mapping

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


        :return: The user_path_prefix of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._user_path_prefix

    @user_path_prefix.setter
    def user_path_prefix(self, user_path_prefix):
        """Sets the user_path_prefix of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param user_path_prefix: The user_path_prefix of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._user_path_prefix = user_path_prefix

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


        :return: The user_membership_exp_time of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._user_membership_exp_time

    @user_membership_exp_time.setter
    def user_membership_exp_time(self, user_membership_exp_time):
        """Sets the user_membership_exp_time of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param user_membership_exp_time: The user_membership_exp_time of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._user_membership_exp_time = user_membership_exp_time

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


        :return: The user_membership_nesting_depth of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyInteger
        """
        return self._user_membership_nesting_depth

    @user_membership_nesting_depth.setter
    def user_membership_nesting_depth(self, user_membership_nesting_depth):
        """Sets the user_membership_nesting_depth of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param user_membership_nesting_depth: The user_membership_nesting_depth of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyInteger
        """

        self._user_membership_nesting_depth = user_membership_nesting_depth

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


        :return: The user_dynamic_membership of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyBoolean
        """
        return self._user_dynamic_membership

    @user_dynamic_membership.setter
    def user_dynamic_membership(self, user_dynamic_membership):
        """Sets the user_dynamic_membership of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param user_dynamic_membership: The user_dynamic_membership of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyBoolean
        """

        self._user_dynamic_membership = user_dynamic_membership

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


        :return: The user_disable_missing of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyBoolean
        """
        return self._user_disable_missing

    @user_disable_missing.setter
    def user_disable_missing(self, user_disable_missing):
        """Sets the user_disable_missing of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param user_disable_missing: The user_disable_missing of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyBoolean
        """

        self._user_disable_missing = user_disable_missing

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


        :return: The group_expiration_time of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._group_expiration_time

    @group_expiration_time.setter
    def group_expiration_time(self, group_expiration_time):
        """Sets the group_expiration_time of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param group_expiration_time: The group_expiration_time of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._group_expiration_time = group_expiration_time

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


        :return: The group_auto_membership of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._group_auto_membership

    @group_auto_membership.setter
    def group_auto_membership(self, group_auto_membership):
        """Sets the group_auto_membership of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param group_auto_membership: The group_auto_membership of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._group_auto_membership = group_auto_membership

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


        :return: The group_property_mapping of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._group_property_mapping

    @group_property_mapping.setter
    def group_property_mapping(self, group_property_mapping):
        """Sets the group_property_mapping of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param group_property_mapping: The group_property_mapping of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._group_property_mapping = group_property_mapping

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


        :return: The group_path_prefix of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._group_path_prefix

    @group_path_prefix.setter
    def group_path_prefix(self, group_path_prefix):
        """Sets the group_path_prefix of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param group_path_prefix: The group_path_prefix of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._group_path_prefix = group_path_prefix

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


        :return: The enable_rfc7613_usercase_mapped_profile of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :rtype: ConfigNodePropertyBoolean
        """
        return self._enable_rfc7613_usercase_mapped_profile

    @enable_rfc7613_usercase_mapped_profile.setter
    def enable_rfc7613_usercase_mapped_profile(self, enable_rfc7613_usercase_mapped_profile):
        """Sets the enable_rfc7613_usercase_mapped_profile of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.


        :param enable_rfc7613_usercase_mapped_profile: The enable_rfc7613_usercase_mapped_profile of this OrgApacheJackrabbitOakSpiSecurityAuthenticationExternalImplDeProperties.  # noqa: E501
        :type: ConfigNodePropertyBoolean
        """

        self._enable_rfc7613_usercase_mapped_profile = enable_rfc7613_usercase_mapped_profile

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

        return self.__dict__ == other.__dict__

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