# coding: utf-8

"""
    AristaFlowREST/LicenceManager

    No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen)  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class LicenceInformation(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 = {
        'licence_id': 'int',
        'customer_id': 'str',
        'distributor_id': 'str',
        'licence_type': 'str',
        'licensee': 'str',
        'mail_addresses': 'list[str]',
        'release_name': 'str',
        'edition': 'str',
        'act_interval': 'int',
        'time_limit': 'date',
        'transaction_limit': 'int',
        'known_user_limit': 'int',
        'using_user_limit': 'int',
        'ip_address_limit': 'str',
        'process_type_limit': 'list[str]',
        'additions': 'dict(str, str)',
        'add_features': 'list[str]'
    }

    attribute_map = {
        'licence_id': 'licenceId',
        'customer_id': 'customerId',
        'distributor_id': 'distributorId',
        'licence_type': 'licenceType',
        'licensee': 'licensee',
        'mail_addresses': 'mailAddresses',
        'release_name': 'releaseName',
        'edition': 'edition',
        'act_interval': 'actInterval',
        'time_limit': 'timeLimit',
        'transaction_limit': 'transactionLimit',
        'known_user_limit': 'knownUserLimit',
        'using_user_limit': 'usingUserLimit',
        'ip_address_limit': 'ipAddressLimit',
        'process_type_limit': 'processTypeLimit',
        'additions': 'additions',
        'add_features': 'addFeatures'
    }

    def __init__(self, licence_id=None, customer_id=None, distributor_id=None, licence_type=None, licensee=None, mail_addresses=None, release_name=None, edition=None, act_interval=None, time_limit=None, transaction_limit=None, known_user_limit=None, using_user_limit=None, ip_address_limit=None, process_type_limit=None, additions=None, add_features=None):  # noqa: E501
        """LicenceInformation - a model defined in Swagger"""  # noqa: E501
        self._licence_id = None
        self._customer_id = None
        self._distributor_id = None
        self._licence_type = None
        self._licensee = None
        self._mail_addresses = None
        self._release_name = None
        self._edition = None
        self._act_interval = None
        self._time_limit = None
        self._transaction_limit = None
        self._known_user_limit = None
        self._using_user_limit = None
        self._ip_address_limit = None
        self._process_type_limit = None
        self._additions = None
        self._add_features = None
        if not(hasattr(self, "discriminator")) or not(self.discriminator):
            self.discriminator = None
        self.licence_id = licence_id
        self.customer_id = customer_id
        if distributor_id is not None:
            self.distributor_id = distributor_id
        self.licence_type = licence_type
        self.licensee = licensee
        if mail_addresses is not None:
            self.mail_addresses = mail_addresses
        self.release_name = release_name
        self.edition = edition
        self.act_interval = act_interval
        if time_limit is not None:
            self.time_limit = time_limit
        self.transaction_limit = transaction_limit
        self.known_user_limit = known_user_limit
        self.using_user_limit = using_user_limit
        if ip_address_limit is not None:
            self.ip_address_limit = ip_address_limit
        if process_type_limit is not None:
            self.process_type_limit = process_type_limit
        if additions is not None:
            self.additions = additions
        if add_features is not None:
            self.add_features = add_features

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


        :return: The licence_id of this LicenceInformation.  # noqa: E501
        :rtype: int
        """
        return self._licence_id

    @licence_id.setter
    def licence_id(self, licence_id):
        """Sets the licence_id of this LicenceInformation.


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

        self._licence_id = licence_id

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


        :return: The customer_id of this LicenceInformation.  # noqa: E501
        :rtype: str
        """
        return self._customer_id

    @customer_id.setter
    def customer_id(self, customer_id):
        """Sets the customer_id of this LicenceInformation.


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

        self._customer_id = customer_id

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


        :return: The distributor_id of this LicenceInformation.  # noqa: E501
        :rtype: str
        """
        return self._distributor_id

    @distributor_id.setter
    def distributor_id(self, distributor_id):
        """Sets the distributor_id of this LicenceInformation.


        :param distributor_id: The distributor_id of this LicenceInformation.  # noqa: E501
        :type: str
        """

        self._distributor_id = distributor_id

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


        :return: The licence_type of this LicenceInformation.  # noqa: E501
        :rtype: str
        """
        return self._licence_type

    @licence_type.setter
    def licence_type(self, licence_type):
        """Sets the licence_type of this LicenceInformation.


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

        self._licence_type = licence_type

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


        :return: The licensee of this LicenceInformation.  # noqa: E501
        :rtype: str
        """
        return self._licensee

    @licensee.setter
    def licensee(self, licensee):
        """Sets the licensee of this LicenceInformation.


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

        self._licensee = licensee

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


        :return: The mail_addresses of this LicenceInformation.  # noqa: E501
        :rtype: list[str]
        """
        return self._mail_addresses

    @mail_addresses.setter
    def mail_addresses(self, mail_addresses):
        """Sets the mail_addresses of this LicenceInformation.


        :param mail_addresses: The mail_addresses of this LicenceInformation.  # noqa: E501
        :type: list[str]
        """

        self._mail_addresses = mail_addresses

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


        :return: The release_name of this LicenceInformation.  # noqa: E501
        :rtype: str
        """
        return self._release_name

    @release_name.setter
    def release_name(self, release_name):
        """Sets the release_name of this LicenceInformation.


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

        self._release_name = release_name

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


        :return: The edition of this LicenceInformation.  # noqa: E501
        :rtype: str
        """
        return self._edition

    @edition.setter
    def edition(self, edition):
        """Sets the edition of this LicenceInformation.


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

        self._edition = edition

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


        :return: The act_interval of this LicenceInformation.  # noqa: E501
        :rtype: int
        """
        return self._act_interval

    @act_interval.setter
    def act_interval(self, act_interval):
        """Sets the act_interval of this LicenceInformation.


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

        self._act_interval = act_interval

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


        :return: The time_limit of this LicenceInformation.  # noqa: E501
        :rtype: date
        """
        return self._time_limit

    @time_limit.setter
    def time_limit(self, time_limit):
        """Sets the time_limit of this LicenceInformation.


        :param time_limit: The time_limit of this LicenceInformation.  # noqa: E501
        :type: date
        """

        self._time_limit = time_limit

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


        :return: The transaction_limit of this LicenceInformation.  # noqa: E501
        :rtype: int
        """
        return self._transaction_limit

    @transaction_limit.setter
    def transaction_limit(self, transaction_limit):
        """Sets the transaction_limit of this LicenceInformation.


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

        self._transaction_limit = transaction_limit

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


        :return: The known_user_limit of this LicenceInformation.  # noqa: E501
        :rtype: int
        """
        return self._known_user_limit

    @known_user_limit.setter
    def known_user_limit(self, known_user_limit):
        """Sets the known_user_limit of this LicenceInformation.


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

        self._known_user_limit = known_user_limit

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


        :return: The using_user_limit of this LicenceInformation.  # noqa: E501
        :rtype: int
        """
        return self._using_user_limit

    @using_user_limit.setter
    def using_user_limit(self, using_user_limit):
        """Sets the using_user_limit of this LicenceInformation.


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

        self._using_user_limit = using_user_limit

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


        :return: The ip_address_limit of this LicenceInformation.  # noqa: E501
        :rtype: str
        """
        return self._ip_address_limit

    @ip_address_limit.setter
    def ip_address_limit(self, ip_address_limit):
        """Sets the ip_address_limit of this LicenceInformation.


        :param ip_address_limit: The ip_address_limit of this LicenceInformation.  # noqa: E501
        :type: str
        """

        self._ip_address_limit = ip_address_limit

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


        :return: The process_type_limit of this LicenceInformation.  # noqa: E501
        :rtype: list[str]
        """
        return self._process_type_limit

    @process_type_limit.setter
    def process_type_limit(self, process_type_limit):
        """Sets the process_type_limit of this LicenceInformation.


        :param process_type_limit: The process_type_limit of this LicenceInformation.  # noqa: E501
        :type: list[str]
        """

        self._process_type_limit = process_type_limit

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


        :return: The additions of this LicenceInformation.  # noqa: E501
        :rtype: dict(str, str)
        """
        return self._additions

    @additions.setter
    def additions(self, additions):
        """Sets the additions of this LicenceInformation.


        :param additions: The additions of this LicenceInformation.  # noqa: E501
        :type: dict(str, str)
        """

        self._additions = additions

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


        :return: The add_features of this LicenceInformation.  # noqa: E501
        :rtype: list[str]
        """
        return self._add_features

    @add_features.setter
    def add_features(self, add_features):
        """Sets the add_features of this LicenceInformation.


        :param add_features: The add_features of this LicenceInformation.  # noqa: E501
        :type: list[str]
        """

        self._add_features = add_features

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

        return self.__dict__ == other.__dict__

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