# coding: utf-8

"""
    Collibra Data Governance Center Core API

    <p>The Core REST API allows you to create your own integrations with Collibra Data Governance Center.</p><p><i>Create custom applications to help users get access to the right data.</i></p>  # 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 ChangeAttributeTypeRequest(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': 'str',
        'public_id': 'str',
        'name': 'str',
        'description': 'str',
        'language': 'str',
        'statistics_enabled': 'bool',
        'is_integer': 'bool',
        'allowed_values': 'list[str]'
    }

    attribute_map = {
        'id': 'id',
        'public_id': 'publicId',
        'name': 'name',
        'description': 'description',
        'language': 'language',
        'statistics_enabled': 'statisticsEnabled',
        'is_integer': 'isInteger',
        'allowed_values': 'allowedValues'
    }

    def __init__(self, id=None, public_id=None, name=None, description=None, language=None, statistics_enabled=None, is_integer=None, allowed_values=None):  # noqa: E501
        """ChangeAttributeTypeRequest - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._public_id = None
        self._name = None
        self._description = None
        self._language = None
        self._statistics_enabled = None
        self._is_integer = None
        self._allowed_values = None
        self.discriminator = None
        self.id = id
        if public_id is not None:
            self.public_id = public_id
        if name is not None:
            self.name = name
        if description is not None:
            self.description = description
        if language is not None:
            self.language = language
        if statistics_enabled is not None:
            self.statistics_enabled = statistics_enabled
        if is_integer is not None:
            self.is_integer = is_integer
        if allowed_values is not None:
            self.allowed_values = allowed_values

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

        The ID of the Attribute Type to be changed. Silently ignored if the ID is provided as path parameter of the request.  # noqa: E501

        :return: The id of this ChangeAttributeTypeRequest.  # noqa: E501
        :rtype: str
        """
        return self._id

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

        The ID of the Attribute Type to be changed. Silently ignored if the ID is provided as path parameter of the request.  # noqa: E501

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

        self._id = id

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

        The new public id for the Attribute Type. It must be unique within all Attribute Types. It should contain only ASCII letters and digits. It must start with an uppercase ASCII character. It must end with \"_C\". WARNING : The public id should only be changed with extreme caution, since it can break existing customizations. The only valid use case is to change it after creation of the type, if no public id was specified, and the generated proposal is not acceptable.  # noqa: E501

        :return: The public_id of this ChangeAttributeTypeRequest.  # noqa: E501
        :rtype: str
        """
        return self._public_id

    @public_id.setter
    def public_id(self, public_id):
        """Sets the public_id of this ChangeAttributeTypeRequest.

        The new public id for the Attribute Type. It must be unique within all Attribute Types. It should contain only ASCII letters and digits. It must start with an uppercase ASCII character. It must end with \"_C\". WARNING : The public id should only be changed with extreme caution, since it can break existing customizations. The only valid use case is to change it after creation of the type, if no public id was specified, and the generated proposal is not acceptable.  # noqa: E501

        :param public_id: The public_id of this ChangeAttributeTypeRequest.  # noqa: E501
        :type: str
        """

        self._public_id = public_id

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

        The new name for the Attribute Type.  # noqa: E501

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

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

        The new name for the Attribute Type.  # noqa: E501

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

        self._name = name

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

        The new description for the Attribute Type.  # noqa: E501

        :return: The description of this ChangeAttributeTypeRequest.  # noqa: E501
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """Sets the description of this ChangeAttributeTypeRequest.

        The new description for the Attribute Type.  # noqa: E501

        :param description: The description of this ChangeAttributeTypeRequest.  # noqa: E501
        :type: str
        """

        self._description = description

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

        The new language for the Attribute Type. This property is only applicable to Attribute Types of kind \"Script\", and specifies the language of the script.  # noqa: E501

        :return: The language of this ChangeAttributeTypeRequest.  # noqa: E501
        :rtype: str
        """
        return self._language

    @language.setter
    def language(self, language):
        """Sets the language of this ChangeAttributeTypeRequest.

        The new language for the Attribute Type. This property is only applicable to Attribute Types of kind \"Script\", and specifies the language of the script.  # noqa: E501

        :param language: The language of this ChangeAttributeTypeRequest.  # noqa: E501
        :type: str
        """

        self._language = language

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

        Whether statistics should be enabled. This property is only applicable to Attribute Types of kind \"Numeric\" or \"Boolean\".  # noqa: E501

        :return: The statistics_enabled of this ChangeAttributeTypeRequest.  # noqa: E501
        :rtype: bool
        """
        return self._statistics_enabled

    @statistics_enabled.setter
    def statistics_enabled(self, statistics_enabled):
        """Sets the statistics_enabled of this ChangeAttributeTypeRequest.

        Whether statistics should be enabled. This property is only applicable to Attribute Types of kind \"Numeric\" or \"Boolean\".  # noqa: E501

        :param statistics_enabled: The statistics_enabled of this ChangeAttributeTypeRequest.  # noqa: E501
        :type: bool
        """

        self._statistics_enabled = statistics_enabled

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

        Whether Attribute Type holds integer value. This property is only applicable to Attribute Types of kind \"Numeric\".  # noqa: E501

        :return: The is_integer of this ChangeAttributeTypeRequest.  # noqa: E501
        :rtype: bool
        """
        return self._is_integer

    @is_integer.setter
    def is_integer(self, is_integer):
        """Sets the is_integer of this ChangeAttributeTypeRequest.

        Whether Attribute Type holds integer value. This property is only applicable to Attribute Types of kind \"Numeric\".  # noqa: E501

        :param is_integer: The is_integer of this ChangeAttributeTypeRequest.  # noqa: E501
        :type: bool
        """

        self._is_integer = is_integer

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

        List of allowed values. This property is only applicable to Attribute Types of kind \"Single Value List\" or \"Multi Value List\".  # noqa: E501

        :return: The allowed_values of this ChangeAttributeTypeRequest.  # noqa: E501
        :rtype: list[str]
        """
        return self._allowed_values

    @allowed_values.setter
    def allowed_values(self, allowed_values):
        """Sets the allowed_values of this ChangeAttributeTypeRequest.

        List of allowed values. This property is only applicable to Attribute Types of kind \"Single Value List\" or \"Multi Value List\".  # noqa: E501

        :param allowed_values: The allowed_values of this ChangeAttributeTypeRequest.  # noqa: E501
        :type: list[str]
        """

        self._allowed_values = allowed_values

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

        return self.__dict__ == other.__dict__

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