# coding: utf-8

"""
    VPlex REST API

    A defnition for the next-gen VPlex API  # noqa: E501

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


import pprint
import re  # noqa: F401

import six


class License(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 = {
        'feature_name': 'str',
        'issuer': 'str',
        'issued_date': 'datetime',
        'expiry_date': 'datetime',
        'notice': 'str',
        'valid': 'str',
        'platform': 'str',
        'uom_code': 'str',
        'uom_name': 'str',
        'plc': 'str',
        'product_line': 'str',
        'capacity': 'float',
        'usage': 'float',
        'notification': 'str'
    }

    attribute_map = {
        'feature_name': 'feature_name',
        'issuer': 'issuer',
        'issued_date': 'issued_date',
        'expiry_date': 'expiry_date',
        'notice': 'notice',
        'valid': 'valid',
        'platform': 'platform',
        'uom_code': 'uom_code',
        'uom_name': 'uom_name',
        'plc': 'plc',
        'product_line': 'product_line',
        'capacity': 'capacity',
        'usage': 'usage',
        'notification': 'notification'
    }

    def __init__(self, feature_name=None, issuer=None, issued_date=None, expiry_date=None, notice=None, valid=None, platform=None, uom_code=None, uom_name=None, plc=None, product_line=None, capacity=None, usage=None, notification=None):  # noqa: E501
        """License - a model defined in Swagger"""  # noqa: E501

        self._feature_name = None
        self._issuer = None
        self._issued_date = None
        self._expiry_date = None
        self._notice = None
        self._valid = None
        self._platform = None
        self._uom_code = None
        self._uom_name = None
        self._plc = None
        self._product_line = None
        self._capacity = None
        self._usage = None
        self._notification = None
        self.discriminator = None

        self.feature_name = feature_name
        if issuer is not None:
            self.issuer = issuer
        if issued_date is not None:
            self.issued_date = issued_date
        if expiry_date is not None:
            self.expiry_date = expiry_date
        if notice is not None:
            self.notice = notice
        if valid is not None:
            self.valid = valid
        if platform is not None:
            self.platform = platform
        if uom_code is not None:
            self.uom_code = uom_code
        if uom_name is not None:
            self.uom_name = uom_name
        if plc is not None:
            self.plc = plc
        if product_line is not None:
            self.product_line = product_line
        if capacity is not None:
            self.capacity = capacity
        if usage is not None:
            self.usage = usage
        if notification is not None:
            self.notification = notification

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


        :return: The feature_name of this License.  # noqa: E501
        :rtype: str
        """
        return self._feature_name

    @feature_name.setter
    def feature_name(self, feature_name):
        """Sets the feature_name of this License.


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

        self._feature_name = feature_name

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


        :return: The issuer of this License.  # noqa: E501
        :rtype: str
        """
        return self._issuer

    @issuer.setter
    def issuer(self, issuer):
        """Sets the issuer of this License.


        :param issuer: The issuer of this License.  # noqa: E501
        :type: str
        """

        self._issuer = issuer

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


        :return: The issued_date of this License.  # noqa: E501
        :rtype: datetime
        """
        return self._issued_date

    @issued_date.setter
    def issued_date(self, issued_date):
        """Sets the issued_date of this License.


        :param issued_date: The issued_date of this License.  # noqa: E501
        :type: datetime
        """

        self._issued_date = issued_date

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


        :return: The expiry_date of this License.  # noqa: E501
        :rtype: datetime
        """
        return self._expiry_date

    @expiry_date.setter
    def expiry_date(self, expiry_date):
        """Sets the expiry_date of this License.


        :param expiry_date: The expiry_date of this License.  # noqa: E501
        :type: datetime
        """

        self._expiry_date = expiry_date

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


        :return: The notice of this License.  # noqa: E501
        :rtype: str
        """
        return self._notice

    @notice.setter
    def notice(self, notice):
        """Sets the notice of this License.


        :param notice: The notice of this License.  # noqa: E501
        :type: str
        """

        self._notice = notice

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


        :return: The valid of this License.  # noqa: E501
        :rtype: str
        """
        return self._valid

    @valid.setter
    def valid(self, valid):
        """Sets the valid of this License.


        :param valid: The valid of this License.  # noqa: E501
        :type: str
        """

        self._valid = valid

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


        :return: The platform of this License.  # noqa: E501
        :rtype: str
        """
        return self._platform

    @platform.setter
    def platform(self, platform):
        """Sets the platform of this License.


        :param platform: The platform of this License.  # noqa: E501
        :type: str
        """

        self._platform = platform

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


        :return: The uom_code of this License.  # noqa: E501
        :rtype: str
        """
        return self._uom_code

    @uom_code.setter
    def uom_code(self, uom_code):
        """Sets the uom_code of this License.


        :param uom_code: The uom_code of this License.  # noqa: E501
        :type: str
        """

        self._uom_code = uom_code

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


        :return: The uom_name of this License.  # noqa: E501
        :rtype: str
        """
        return self._uom_name

    @uom_name.setter
    def uom_name(self, uom_name):
        """Sets the uom_name of this License.


        :param uom_name: The uom_name of this License.  # noqa: E501
        :type: str
        """

        self._uom_name = uom_name

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


        :return: The plc of this License.  # noqa: E501
        :rtype: str
        """
        return self._plc

    @plc.setter
    def plc(self, plc):
        """Sets the plc of this License.


        :param plc: The plc of this License.  # noqa: E501
        :type: str
        """

        self._plc = plc

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


        :return: The product_line of this License.  # noqa: E501
        :rtype: str
        """
        return self._product_line

    @product_line.setter
    def product_line(self, product_line):
        """Sets the product_line of this License.


        :param product_line: The product_line of this License.  # noqa: E501
        :type: str
        """

        self._product_line = product_line

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

        Capacity allowed by the license. Only applicable to capacity-based license.  # noqa: E501

        :return: The capacity of this License.  # noqa: E501
        :rtype: float
        """
        return self._capacity

    @capacity.setter
    def capacity(self, capacity):
        """Sets the capacity of this License.

        Capacity allowed by the license. Only applicable to capacity-based license.  # noqa: E501

        :param capacity: The capacity of this License.  # noqa: E501
        :type: float
        """

        self._capacity = capacity

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

        usage of the license. Only applicable to capacity-based license.  # noqa: E501

        :return: The usage of this License.  # noqa: E501
        :rtype: float
        """
        return self._usage

    @usage.setter
    def usage(self, usage):
        """Sets the usage of this License.

        usage of the license. Only applicable to capacity-based license.  # noqa: E501

        :param usage: The usage of this License.  # noqa: E501
        :type: float
        """

        self._usage = usage

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

        Notification for the license. Only applicable to capacity-based license.  # noqa: E501

        :return: The notification of this License.  # noqa: E501
        :rtype: str
        """
        return self._notification

    @notification.setter
    def notification(self, notification):
        """Sets the notification of this License.

        Notification for the license. Only applicable to capacity-based license.  # noqa: E501

        :param notification: The notification of this License.  # noqa: E501
        :type: str
        """

        self._notification = notification

    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

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

        return self.__dict__ == other.__dict__

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