# coding: utf-8

"""
    DataDomain Rest API Documentation

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

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


import pprint
import re  # noqa: F401

import six

from dd_sdk_1_0.configuration import Configuration


class LicInfos20(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 = {
        'scheme': 'LicScheme20',
        'locking_id': 'str',
        'system_software_id': 'str',
        'instance_software_id': 'str',
        'license_file_last_modified_epoch': 'int',
        'license': 'list[LicInfo20]',
        'paging_info': 'Paging',
        'link': 'list[RestLinkRep]'
    }

    attribute_map = {
        'scheme': 'scheme',
        'locking_id': 'locking_id',
        'system_software_id': 'system_software_id',
        'instance_software_id': 'instance_software_id',
        'license_file_last_modified_epoch': 'license_file_last_modified_epoch',
        'license': 'license',
        'paging_info': 'paging_info',
        'link': 'link'
    }

    def __init__(self, scheme=None, locking_id=None, system_software_id=None, instance_software_id=None, license_file_last_modified_epoch=None, license=None, paging_info=None, link=None, _configuration=None):  # noqa: E501
        """LicInfos20 - a model defined in Swagger"""  # noqa: E501
        if _configuration is None:
            _configuration = Configuration()
        self._configuration = _configuration

        self._scheme = None
        self._locking_id = None
        self._system_software_id = None
        self._instance_software_id = None
        self._license_file_last_modified_epoch = None
        self._license = None
        self._paging_info = None
        self._link = None
        self.discriminator = None

        if scheme is not None:
            self.scheme = scheme
        if locking_id is not None:
            self.locking_id = locking_id
        if system_software_id is not None:
            self.system_software_id = system_software_id
        if instance_software_id is not None:
            self.instance_software_id = instance_software_id
        if license_file_last_modified_epoch is not None:
            self.license_file_last_modified_epoch = license_file_last_modified_epoch
        if license is not None:
            self.license = license
        if paging_info is not None:
            self.paging_info = paging_info
        if link is not None:
            self.link = link

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


        :return: The scheme of this LicInfos20.  # noqa: E501
        :rtype: LicScheme20
        """
        return self._scheme

    @scheme.setter
    def scheme(self, scheme):
        """Sets the scheme of this LicInfos20.


        :param scheme: The scheme of this LicInfos20.  # noqa: E501
        :type: LicScheme20
        """

        self._scheme = scheme

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


        :return: The locking_id of this LicInfos20.  # noqa: E501
        :rtype: str
        """
        return self._locking_id

    @locking_id.setter
    def locking_id(self, locking_id):
        """Sets the locking_id of this LicInfos20.


        :param locking_id: The locking_id of this LicInfos20.  # noqa: E501
        :type: str
        """

        self._locking_id = locking_id

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

        entitlement software id in the license file  # noqa: E501

        :return: The system_software_id of this LicInfos20.  # noqa: E501
        :rtype: str
        """
        return self._system_software_id

    @system_software_id.setter
    def system_software_id(self, system_software_id):
        """Sets the system_software_id of this LicInfos20.

        entitlement software id in the license file  # noqa: E501

        :param system_software_id: The system_software_id of this LicInfos20.  # noqa: E501
        :type: str
        """

        self._system_software_id = system_software_id

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

        instance software id after registering to ESRS gateway  # noqa: E501

        :return: The instance_software_id of this LicInfos20.  # noqa: E501
        :rtype: str
        """
        return self._instance_software_id

    @instance_software_id.setter
    def instance_software_id(self, instance_software_id):
        """Sets the instance_software_id of this LicInfos20.

        instance software id after registering to ESRS gateway  # noqa: E501

        :param instance_software_id: The instance_software_id of this LicInfos20.  # noqa: E501
        :type: str
        """

        self._instance_software_id = instance_software_id

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


        :return: The license_file_last_modified_epoch of this LicInfos20.  # noqa: E501
        :rtype: int
        """
        return self._license_file_last_modified_epoch

    @license_file_last_modified_epoch.setter
    def license_file_last_modified_epoch(self, license_file_last_modified_epoch):
        """Sets the license_file_last_modified_epoch of this LicInfos20.


        :param license_file_last_modified_epoch: The license_file_last_modified_epoch of this LicInfos20.  # noqa: E501
        :type: int
        """
        if (self._configuration.client_side_validation and
                license_file_last_modified_epoch is not None and license_file_last_modified_epoch < 0):  # noqa: E501
            raise ValueError("Invalid value for `license_file_last_modified_epoch`, must be a value greater than or equal to `0`")  # noqa: E501

        self._license_file_last_modified_epoch = license_file_last_modified_epoch

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


        :return: The license of this LicInfos20.  # noqa: E501
        :rtype: list[LicInfo20]
        """
        return self._license

    @license.setter
    def license(self, license):
        """Sets the license of this LicInfos20.


        :param license: The license of this LicInfos20.  # noqa: E501
        :type: list[LicInfo20]
        """

        self._license = license

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


        :return: The paging_info of this LicInfos20.  # noqa: E501
        :rtype: Paging
        """
        return self._paging_info

    @paging_info.setter
    def paging_info(self, paging_info):
        """Sets the paging_info of this LicInfos20.


        :param paging_info: The paging_info of this LicInfos20.  # noqa: E501
        :type: Paging
        """

        self._paging_info = paging_info

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


        :return: The link of this LicInfos20.  # noqa: E501
        :rtype: list[RestLinkRep]
        """
        return self._link

    @link.setter
    def link(self, link):
        """Sets the link of this LicInfos20.


        :param link: The link of this LicInfos20.  # noqa: E501
        :type: list[RestLinkRep]
        """

        self._link = link

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

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
