# coding: utf-8

"""
    Internal API

    SmartDiagnostics REST API for internal users only  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class AssetResponse(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 = {
        'supplier': 'str',
        'manufacturer': 'str',
        'model_name': 'str',
        'location_notes': 'str',
        'notes': 'str',
        'metadata': 'str',
        'is_operator_view': 'bool',
        'type': 'AssetTypeChild',
        'category': 'AssetCategoryChild',
        'size': 'AssetSizeChild',
        'economics': 'AssetEconomicsChild',
        'running_speed': 'AssetRunningSpeedChild',
        'criticality': 'AssetCriticalityChild',
        'drum_roll': 'AssetDrumRollChild',
        'hierarchy': 'list[HierarchyChild]',
        'parent': 'ParentChild',
        'children': 'list[DescendantChild]',
        'tags': 'list[AssetTagChild]',
        'analytics_models': 'list[AssetAnalyticsModelChild]',
        'id': 'str',
        'name': 'str',
        'abbreviation': 'str',
        'active': 'bool',
        'is_paused': 'bool',
        'is_snoozed': 'bool',
        'created': 'datetime',
        'corporation': 'CorporationChild',
        'location': 'LocationChild'
    }

    attribute_map = {
        'supplier': 'Supplier',
        'manufacturer': 'Manufacturer',
        'model_name': 'ModelName',
        'location_notes': 'LocationNotes',
        'notes': 'Notes',
        'metadata': 'Metadata',
        'is_operator_view': 'IsOperatorView',
        'type': 'Type',
        'category': 'Category',
        'size': 'Size',
        'economics': 'Economics',
        'running_speed': 'RunningSpeed',
        'criticality': 'Criticality',
        'drum_roll': 'DrumRoll',
        'hierarchy': 'Hierarchy',
        'parent': 'Parent',
        'children': 'Children',
        'tags': 'Tags',
        'analytics_models': 'AnalyticsModels',
        'id': 'Id',
        'name': 'Name',
        'abbreviation': 'Abbreviation',
        'active': 'Active',
        'is_paused': 'IsPaused',
        'is_snoozed': 'IsSnoozed',
        'created': 'Created',
        'corporation': 'Corporation',
        'location': 'Location'
    }

    def __init__(self, supplier=None, manufacturer=None, model_name=None, location_notes=None, notes=None, metadata=None, is_operator_view=None, type=None, category=None, size=None, economics=None, running_speed=None, criticality=None, drum_roll=None, hierarchy=None, parent=None, children=None, tags=None, analytics_models=None, id=None, name=None, abbreviation=None, active=None, is_paused=None, is_snoozed=None, created=None, corporation=None, location=None):  # noqa: E501
        """AssetResponse - a model defined in Swagger"""  # noqa: E501
        self._supplier = None
        self._manufacturer = None
        self._model_name = None
        self._location_notes = None
        self._notes = None
        self._metadata = None
        self._is_operator_view = None
        self._type = None
        self._category = None
        self._size = None
        self._economics = None
        self._running_speed = None
        self._criticality = None
        self._drum_roll = None
        self._hierarchy = None
        self._parent = None
        self._children = None
        self._tags = None
        self._analytics_models = None
        self._id = None
        self._name = None
        self._abbreviation = None
        self._active = None
        self._is_paused = None
        self._is_snoozed = None
        self._created = None
        self._corporation = None
        self._location = None
        self.discriminator = None
        if supplier is not None:
            self.supplier = supplier
        if manufacturer is not None:
            self.manufacturer = manufacturer
        if model_name is not None:
            self.model_name = model_name
        if location_notes is not None:
            self.location_notes = location_notes
        if notes is not None:
            self.notes = notes
        if metadata is not None:
            self.metadata = metadata
        self.is_operator_view = is_operator_view
        if type is not None:
            self.type = type
        if category is not None:
            self.category = category
        if size is not None:
            self.size = size
        if economics is not None:
            self.economics = economics
        if running_speed is not None:
            self.running_speed = running_speed
        if criticality is not None:
            self.criticality = criticality
        if drum_roll is not None:
            self.drum_roll = drum_roll
        self.hierarchy = hierarchy
        self.parent = parent
        self.children = children
        self.tags = tags
        self.analytics_models = analytics_models
        self.id = id
        self.name = name
        self.abbreviation = abbreviation
        self.active = active
        self.is_paused = is_paused
        self.is_snoozed = is_snoozed
        self.created = created
        self.corporation = corporation
        self.location = location

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


        :return: The supplier of this AssetResponse.  # noqa: E501
        :rtype: str
        """
        return self._supplier

    @supplier.setter
    def supplier(self, supplier):
        """Sets the supplier of this AssetResponse.


        :param supplier: The supplier of this AssetResponse.  # noqa: E501
        :type: str
        """

        self._supplier = supplier

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


        :return: The manufacturer of this AssetResponse.  # noqa: E501
        :rtype: str
        """
        return self._manufacturer

    @manufacturer.setter
    def manufacturer(self, manufacturer):
        """Sets the manufacturer of this AssetResponse.


        :param manufacturer: The manufacturer of this AssetResponse.  # noqa: E501
        :type: str
        """

        self._manufacturer = manufacturer

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


        :return: The model_name of this AssetResponse.  # noqa: E501
        :rtype: str
        """
        return self._model_name

    @model_name.setter
    def model_name(self, model_name):
        """Sets the model_name of this AssetResponse.


        :param model_name: The model_name of this AssetResponse.  # noqa: E501
        :type: str
        """

        self._model_name = model_name

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


        :return: The location_notes of this AssetResponse.  # noqa: E501
        :rtype: str
        """
        return self._location_notes

    @location_notes.setter
    def location_notes(self, location_notes):
        """Sets the location_notes of this AssetResponse.


        :param location_notes: The location_notes of this AssetResponse.  # noqa: E501
        :type: str
        """

        self._location_notes = location_notes

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


        :return: The notes of this AssetResponse.  # noqa: E501
        :rtype: str
        """
        return self._notes

    @notes.setter
    def notes(self, notes):
        """Sets the notes of this AssetResponse.


        :param notes: The notes of this AssetResponse.  # noqa: E501
        :type: str
        """

        self._notes = notes

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


        :return: The metadata of this AssetResponse.  # noqa: E501
        :rtype: str
        """
        return self._metadata

    @metadata.setter
    def metadata(self, metadata):
        """Sets the metadata of this AssetResponse.


        :param metadata: The metadata of this AssetResponse.  # noqa: E501
        :type: str
        """

        self._metadata = metadata

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


        :return: The is_operator_view of this AssetResponse.  # noqa: E501
        :rtype: bool
        """
        return self._is_operator_view

    @is_operator_view.setter
    def is_operator_view(self, is_operator_view):
        """Sets the is_operator_view of this AssetResponse.


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

        self._is_operator_view = is_operator_view

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


        :return: The type of this AssetResponse.  # noqa: E501
        :rtype: AssetTypeChild
        """
        return self._type

    @type.setter
    def type(self, type):
        """Sets the type of this AssetResponse.


        :param type: The type of this AssetResponse.  # noqa: E501
        :type: AssetTypeChild
        """

        self._type = type

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


        :return: The category of this AssetResponse.  # noqa: E501
        :rtype: AssetCategoryChild
        """
        return self._category

    @category.setter
    def category(self, category):
        """Sets the category of this AssetResponse.


        :param category: The category of this AssetResponse.  # noqa: E501
        :type: AssetCategoryChild
        """

        self._category = category

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


        :return: The size of this AssetResponse.  # noqa: E501
        :rtype: AssetSizeChild
        """
        return self._size

    @size.setter
    def size(self, size):
        """Sets the size of this AssetResponse.


        :param size: The size of this AssetResponse.  # noqa: E501
        :type: AssetSizeChild
        """

        self._size = size

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


        :return: The economics of this AssetResponse.  # noqa: E501
        :rtype: AssetEconomicsChild
        """
        return self._economics

    @economics.setter
    def economics(self, economics):
        """Sets the economics of this AssetResponse.


        :param economics: The economics of this AssetResponse.  # noqa: E501
        :type: AssetEconomicsChild
        """

        self._economics = economics

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


        :return: The running_speed of this AssetResponse.  # noqa: E501
        :rtype: AssetRunningSpeedChild
        """
        return self._running_speed

    @running_speed.setter
    def running_speed(self, running_speed):
        """Sets the running_speed of this AssetResponse.


        :param running_speed: The running_speed of this AssetResponse.  # noqa: E501
        :type: AssetRunningSpeedChild
        """

        self._running_speed = running_speed

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


        :return: The criticality of this AssetResponse.  # noqa: E501
        :rtype: AssetCriticalityChild
        """
        return self._criticality

    @criticality.setter
    def criticality(self, criticality):
        """Sets the criticality of this AssetResponse.


        :param criticality: The criticality of this AssetResponse.  # noqa: E501
        :type: AssetCriticalityChild
        """

        self._criticality = criticality

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


        :return: The drum_roll of this AssetResponse.  # noqa: E501
        :rtype: AssetDrumRollChild
        """
        return self._drum_roll

    @drum_roll.setter
    def drum_roll(self, drum_roll):
        """Sets the drum_roll of this AssetResponse.


        :param drum_roll: The drum_roll of this AssetResponse.  # noqa: E501
        :type: AssetDrumRollChild
        """

        self._drum_roll = drum_roll

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


        :return: The hierarchy of this AssetResponse.  # noqa: E501
        :rtype: list[HierarchyChild]
        """
        return self._hierarchy

    @hierarchy.setter
    def hierarchy(self, hierarchy):
        """Sets the hierarchy of this AssetResponse.


        :param hierarchy: The hierarchy of this AssetResponse.  # noqa: E501
        :type: list[HierarchyChild]
        """
        if hierarchy is None:
            raise ValueError("Invalid value for `hierarchy`, must not be `None`")  # noqa: E501

        self._hierarchy = hierarchy

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


        :return: The parent of this AssetResponse.  # noqa: E501
        :rtype: ParentChild
        """
        return self._parent

    @parent.setter
    def parent(self, parent):
        """Sets the parent of this AssetResponse.


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

        self._parent = parent

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


        :return: The children of this AssetResponse.  # noqa: E501
        :rtype: list[DescendantChild]
        """
        return self._children

    @children.setter
    def children(self, children):
        """Sets the children of this AssetResponse.


        :param children: The children of this AssetResponse.  # noqa: E501
        :type: list[DescendantChild]
        """
        if children is None:
            raise ValueError("Invalid value for `children`, must not be `None`")  # noqa: E501

        self._children = children

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


        :return: The tags of this AssetResponse.  # noqa: E501
        :rtype: list[AssetTagChild]
        """
        return self._tags

    @tags.setter
    def tags(self, tags):
        """Sets the tags of this AssetResponse.


        :param tags: The tags of this AssetResponse.  # noqa: E501
        :type: list[AssetTagChild]
        """
        if tags is None:
            raise ValueError("Invalid value for `tags`, must not be `None`")  # noqa: E501

        self._tags = tags

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


        :return: The analytics_models of this AssetResponse.  # noqa: E501
        :rtype: list[AssetAnalyticsModelChild]
        """
        return self._analytics_models

    @analytics_models.setter
    def analytics_models(self, analytics_models):
        """Sets the analytics_models of this AssetResponse.


        :param analytics_models: The analytics_models of this AssetResponse.  # noqa: E501
        :type: list[AssetAnalyticsModelChild]
        """
        if analytics_models is None:
            raise ValueError("Invalid value for `analytics_models`, must not be `None`")  # noqa: E501

        self._analytics_models = analytics_models

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


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

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


        :param id: The id of this AssetResponse.  # 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 name(self):
        """Gets the name of this AssetResponse.  # noqa: E501


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

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


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

        self._name = name

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


        :return: The abbreviation of this AssetResponse.  # noqa: E501
        :rtype: str
        """
        return self._abbreviation

    @abbreviation.setter
    def abbreviation(self, abbreviation):
        """Sets the abbreviation of this AssetResponse.


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

        self._abbreviation = abbreviation

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


        :return: The active of this AssetResponse.  # noqa: E501
        :rtype: bool
        """
        return self._active

    @active.setter
    def active(self, active):
        """Sets the active of this AssetResponse.


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

        self._active = active

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


        :return: The is_paused of this AssetResponse.  # noqa: E501
        :rtype: bool
        """
        return self._is_paused

    @is_paused.setter
    def is_paused(self, is_paused):
        """Sets the is_paused of this AssetResponse.


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

        self._is_paused = is_paused

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


        :return: The is_snoozed of this AssetResponse.  # noqa: E501
        :rtype: bool
        """
        return self._is_snoozed

    @is_snoozed.setter
    def is_snoozed(self, is_snoozed):
        """Sets the is_snoozed of this AssetResponse.


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

        self._is_snoozed = is_snoozed

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


        :return: The created of this AssetResponse.  # noqa: E501
        :rtype: datetime
        """
        return self._created

    @created.setter
    def created(self, created):
        """Sets the created of this AssetResponse.


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

        self._created = created

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


        :return: The corporation of this AssetResponse.  # noqa: E501
        :rtype: CorporationChild
        """
        return self._corporation

    @corporation.setter
    def corporation(self, corporation):
        """Sets the corporation of this AssetResponse.


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

        self._corporation = corporation

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


        :return: The location of this AssetResponse.  # noqa: E501
        :rtype: LocationChild
        """
        return self._location

    @location.setter
    def location(self, location):
        """Sets the location of this AssetResponse.


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

        self._location = location

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

        return self.__dict__ == other.__dict__

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