# 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 ComAdobeGraniteRepositoryImplCommitStatsConfigProperties(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 = {
        'enabled': 'ConfigNodePropertyBoolean',
        'interval_seconds': 'ConfigNodePropertyInteger',
        'commits_per_interval_threshold': 'ConfigNodePropertyInteger',
        'max_location_length': 'ConfigNodePropertyInteger',
        'max_details_shown': 'ConfigNodePropertyInteger',
        'min_details_percentage': 'ConfigNodePropertyInteger',
        'thread_matchers': 'ConfigNodePropertyArray',
        'max_greedy_depth': 'ConfigNodePropertyInteger',
        'greedy_stack_matchers': 'ConfigNodePropertyString',
        'stack_filters': 'ConfigNodePropertyArray',
        'stack_matchers': 'ConfigNodePropertyArray',
        'stack_categorizers': 'ConfigNodePropertyArray',
        'stack_shorteners': 'ConfigNodePropertyArray'
    }

    attribute_map = {
        'enabled': 'enabled',
        'interval_seconds': 'intervalSeconds',
        'commits_per_interval_threshold': 'commitsPerIntervalThreshold',
        'max_location_length': 'maxLocationLength',
        'max_details_shown': 'maxDetailsShown',
        'min_details_percentage': 'minDetailsPercentage',
        'thread_matchers': 'threadMatchers',
        'max_greedy_depth': 'maxGreedyDepth',
        'greedy_stack_matchers': 'greedyStackMatchers',
        'stack_filters': 'stackFilters',
        'stack_matchers': 'stackMatchers',
        'stack_categorizers': 'stackCategorizers',
        'stack_shorteners': 'stackShorteners'
    }

    def __init__(self, enabled=None, interval_seconds=None, commits_per_interval_threshold=None, max_location_length=None, max_details_shown=None, min_details_percentage=None, thread_matchers=None, max_greedy_depth=None, greedy_stack_matchers=None, stack_filters=None, stack_matchers=None, stack_categorizers=None, stack_shorteners=None):  # noqa: E501
        """ComAdobeGraniteRepositoryImplCommitStatsConfigProperties - a model defined in OpenAPI"""  # noqa: E501

        self._enabled = None
        self._interval_seconds = None
        self._commits_per_interval_threshold = None
        self._max_location_length = None
        self._max_details_shown = None
        self._min_details_percentage = None
        self._thread_matchers = None
        self._max_greedy_depth = None
        self._greedy_stack_matchers = None
        self._stack_filters = None
        self._stack_matchers = None
        self._stack_categorizers = None
        self._stack_shorteners = None
        self.discriminator = None

        if enabled is not None:
            self.enabled = enabled
        if interval_seconds is not None:
            self.interval_seconds = interval_seconds
        if commits_per_interval_threshold is not None:
            self.commits_per_interval_threshold = commits_per_interval_threshold
        if max_location_length is not None:
            self.max_location_length = max_location_length
        if max_details_shown is not None:
            self.max_details_shown = max_details_shown
        if min_details_percentage is not None:
            self.min_details_percentage = min_details_percentage
        if thread_matchers is not None:
            self.thread_matchers = thread_matchers
        if max_greedy_depth is not None:
            self.max_greedy_depth = max_greedy_depth
        if greedy_stack_matchers is not None:
            self.greedy_stack_matchers = greedy_stack_matchers
        if stack_filters is not None:
            self.stack_filters = stack_filters
        if stack_matchers is not None:
            self.stack_matchers = stack_matchers
        if stack_categorizers is not None:
            self.stack_categorizers = stack_categorizers
        if stack_shorteners is not None:
            self.stack_shorteners = stack_shorteners

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


        :return: The enabled of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyBoolean
        """
        return self._enabled

    @enabled.setter
    def enabled(self, enabled):
        """Sets the enabled of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param enabled: The enabled of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyBoolean
        """

        self._enabled = enabled

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


        :return: The interval_seconds of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyInteger
        """
        return self._interval_seconds

    @interval_seconds.setter
    def interval_seconds(self, interval_seconds):
        """Sets the interval_seconds of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param interval_seconds: The interval_seconds of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyInteger
        """

        self._interval_seconds = interval_seconds

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


        :return: The commits_per_interval_threshold of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyInteger
        """
        return self._commits_per_interval_threshold

    @commits_per_interval_threshold.setter
    def commits_per_interval_threshold(self, commits_per_interval_threshold):
        """Sets the commits_per_interval_threshold of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param commits_per_interval_threshold: The commits_per_interval_threshold of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyInteger
        """

        self._commits_per_interval_threshold = commits_per_interval_threshold

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


        :return: The max_location_length of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyInteger
        """
        return self._max_location_length

    @max_location_length.setter
    def max_location_length(self, max_location_length):
        """Sets the max_location_length of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param max_location_length: The max_location_length of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyInteger
        """

        self._max_location_length = max_location_length

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


        :return: The max_details_shown of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyInteger
        """
        return self._max_details_shown

    @max_details_shown.setter
    def max_details_shown(self, max_details_shown):
        """Sets the max_details_shown of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param max_details_shown: The max_details_shown of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyInteger
        """

        self._max_details_shown = max_details_shown

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


        :return: The min_details_percentage of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyInteger
        """
        return self._min_details_percentage

    @min_details_percentage.setter
    def min_details_percentage(self, min_details_percentage):
        """Sets the min_details_percentage of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param min_details_percentage: The min_details_percentage of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyInteger
        """

        self._min_details_percentage = min_details_percentage

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


        :return: The thread_matchers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._thread_matchers

    @thread_matchers.setter
    def thread_matchers(self, thread_matchers):
        """Sets the thread_matchers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param thread_matchers: The thread_matchers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._thread_matchers = thread_matchers

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


        :return: The max_greedy_depth of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyInteger
        """
        return self._max_greedy_depth

    @max_greedy_depth.setter
    def max_greedy_depth(self, max_greedy_depth):
        """Sets the max_greedy_depth of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param max_greedy_depth: The max_greedy_depth of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyInteger
        """

        self._max_greedy_depth = max_greedy_depth

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


        :return: The greedy_stack_matchers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyString
        """
        return self._greedy_stack_matchers

    @greedy_stack_matchers.setter
    def greedy_stack_matchers(self, greedy_stack_matchers):
        """Sets the greedy_stack_matchers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param greedy_stack_matchers: The greedy_stack_matchers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyString
        """

        self._greedy_stack_matchers = greedy_stack_matchers

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


        :return: The stack_filters of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._stack_filters

    @stack_filters.setter
    def stack_filters(self, stack_filters):
        """Sets the stack_filters of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param stack_filters: The stack_filters of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._stack_filters = stack_filters

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


        :return: The stack_matchers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._stack_matchers

    @stack_matchers.setter
    def stack_matchers(self, stack_matchers):
        """Sets the stack_matchers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param stack_matchers: The stack_matchers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._stack_matchers = stack_matchers

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


        :return: The stack_categorizers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._stack_categorizers

    @stack_categorizers.setter
    def stack_categorizers(self, stack_categorizers):
        """Sets the stack_categorizers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param stack_categorizers: The stack_categorizers of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._stack_categorizers = stack_categorizers

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


        :return: The stack_shorteners of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._stack_shorteners

    @stack_shorteners.setter
    def stack_shorteners(self, stack_shorteners):
        """Sets the stack_shorteners of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.


        :param stack_shorteners: The stack_shorteners of this ComAdobeGraniteRepositoryImplCommitStatsConfigProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._stack_shorteners = stack_shorteners

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

        return self.__dict__ == other.__dict__

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