# coding: utf-8

"""
    ThingsBoard REST API

     ThingsBoard open-source IoT platform REST API documentation.  # noqa: E501

    OpenAPI spec version: 3.6.2
    Contact: info@thingsboard.io
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""

#  Copyright 2024. ThingsBoard
#
#  Licensed under the Apache License, Version 2.0 (the "License");
#  you may not use this file except in compliance with the License.
#  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.

import pprint
import re  # noqa: F401

import six

class AssetProfile(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': 'AssetProfileId',
        'created_time': 'int',
        'tenant_id': 'TenantId',
        'name': 'str',
        'default': 'bool',
        'default_dashboard_id': 'DashboardId',
        'default_rule_chain_id': 'RuleChainId',
        'default_queue_name': 'str',
        'description': 'str',
        'image': 'str',
        'default_edge_rule_chain_id': 'RuleChainId'
    }

    attribute_map = {
        'id': 'id',
        'created_time': 'createdTime',
        'tenant_id': 'tenantId',
        'name': 'name',
        'default': 'default',
        'default_dashboard_id': 'defaultDashboardId',
        'default_rule_chain_id': 'defaultRuleChainId',
        'default_queue_name': 'defaultQueueName',
        'description': 'description',
        'image': 'image',
        'default_edge_rule_chain_id': 'defaultEdgeRuleChainId'
    }

    def __init__(self, id=None, created_time=None, tenant_id=None, name=None, default=None, default_dashboard_id=None, default_rule_chain_id=None, default_queue_name=None, description=None, image=None, default_edge_rule_chain_id=None):  # noqa: E501
        """AssetProfile - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._created_time = None
        self._tenant_id = None
        self._name = None
        self._default = None
        self._default_dashboard_id = None
        self._default_rule_chain_id = None
        self._default_queue_name = None
        self._description = None
        self._image = None
        self._default_edge_rule_chain_id = None
        self.discriminator = None
        if id is not None:
            self.id = id
        if created_time is not None:
            self.created_time = created_time
        if tenant_id is not None:
            self.tenant_id = tenant_id
        if name is not None:
            self.name = name
        if default is not None:
            self.default = default
        if default_dashboard_id is not None:
            self.default_dashboard_id = default_dashboard_id
        if default_rule_chain_id is not None:
            self.default_rule_chain_id = default_rule_chain_id
        if default_queue_name is not None:
            self.default_queue_name = default_queue_name
        if description is not None:
            self.description = description
        if image is not None:
            self.image = image
        if default_edge_rule_chain_id is not None:
            self.default_edge_rule_chain_id = default_edge_rule_chain_id

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


        :return: The id of this AssetProfile.  # noqa: E501
        :rtype: AssetProfileId
        """
        return self._id

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


        :param id: The id of this AssetProfile.  # noqa: E501
        :type: AssetProfileId
        """

        self._id = id

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

        Timestamp of the profile creation, in milliseconds  # noqa: E501

        :return: The created_time of this AssetProfile.  # noqa: E501
        :rtype: int
        """
        return self._created_time

    @created_time.setter
    def created_time(self, created_time):
        """Sets the created_time of this AssetProfile.

        Timestamp of the profile creation, in milliseconds  # noqa: E501

        :param created_time: The created_time of this AssetProfile.  # noqa: E501
        :type: int
        """

        self._created_time = created_time

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


        :return: The tenant_id of this AssetProfile.  # noqa: E501
        :rtype: TenantId
        """
        return self._tenant_id

    @tenant_id.setter
    def tenant_id(self, tenant_id):
        """Sets the tenant_id of this AssetProfile.


        :param tenant_id: The tenant_id of this AssetProfile.  # noqa: E501
        :type: TenantId
        """

        self._tenant_id = tenant_id

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

        Unique Asset Profile Name in scope of Tenant.  # noqa: E501

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

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

        Unique Asset Profile Name in scope of Tenant.  # noqa: E501

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

        self._name = name

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

        Used to mark the default profile. Default profile is used when the asset profile is not specified during asset creation.  # noqa: E501

        :return: The default of this AssetProfile.  # noqa: E501
        :rtype: bool
        """
        return self._default

    @default.setter
    def default(self, default):
        """Sets the default of this AssetProfile.

        Used to mark the default profile. Default profile is used when the asset profile is not specified during asset creation.  # noqa: E501

        :param default: The default of this AssetProfile.  # noqa: E501
        :type: bool
        """

        self._default = default

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


        :return: The default_dashboard_id of this AssetProfile.  # noqa: E501
        :rtype: DashboardId
        """
        return self._default_dashboard_id

    @default_dashboard_id.setter
    def default_dashboard_id(self, default_dashboard_id):
        """Sets the default_dashboard_id of this AssetProfile.


        :param default_dashboard_id: The default_dashboard_id of this AssetProfile.  # noqa: E501
        :type: DashboardId
        """

        self._default_dashboard_id = default_dashboard_id

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


        :return: The default_rule_chain_id of this AssetProfile.  # noqa: E501
        :rtype: RuleChainId
        """
        return self._default_rule_chain_id

    @default_rule_chain_id.setter
    def default_rule_chain_id(self, default_rule_chain_id):
        """Sets the default_rule_chain_id of this AssetProfile.


        :param default_rule_chain_id: The default_rule_chain_id of this AssetProfile.  # noqa: E501
        :type: RuleChainId
        """

        self._default_rule_chain_id = default_rule_chain_id

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

        Rule engine queue name. If present, the specified queue will be used to store all unprocessed messages related to asset, including asset updates, telemetry, attribute updates, etc. Otherwise, the 'Main' queue will be used to store those messages.  # noqa: E501

        :return: The default_queue_name of this AssetProfile.  # noqa: E501
        :rtype: str
        """
        return self._default_queue_name

    @default_queue_name.setter
    def default_queue_name(self, default_queue_name):
        """Sets the default_queue_name of this AssetProfile.

        Rule engine queue name. If present, the specified queue will be used to store all unprocessed messages related to asset, including asset updates, telemetry, attribute updates, etc. Otherwise, the 'Main' queue will be used to store those messages.  # noqa: E501

        :param default_queue_name: The default_queue_name of this AssetProfile.  # noqa: E501
        :type: str
        """

        self._default_queue_name = default_queue_name

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

        Asset Profile description.   # noqa: E501

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

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

        Asset Profile description.   # noqa: E501

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

        self._description = description

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

        Either URL or Base64 data of the icon. Used in the mobile application to visualize set of asset profiles in the grid view.   # noqa: E501

        :return: The image of this AssetProfile.  # noqa: E501
        :rtype: str
        """
        return self._image

    @image.setter
    def image(self, image):
        """Sets the image of this AssetProfile.

        Either URL or Base64 data of the icon. Used in the mobile application to visualize set of asset profiles in the grid view.   # noqa: E501

        :param image: The image of this AssetProfile.  # noqa: E501
        :type: str
        """

        self._image = image

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


        :return: The default_edge_rule_chain_id of this AssetProfile.  # noqa: E501
        :rtype: RuleChainId
        """
        return self._default_edge_rule_chain_id

    @default_edge_rule_chain_id.setter
    def default_edge_rule_chain_id(self, default_edge_rule_chain_id):
        """Sets the default_edge_rule_chain_id of this AssetProfile.


        :param default_edge_rule_chain_id: The default_edge_rule_chain_id of this AssetProfile.  # noqa: E501
        :type: RuleChainId
        """

        self._default_edge_rule_chain_id = default_edge_rule_chain_id

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

        return self.__dict__ == other.__dict__

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