# coding: utf-8

"""
    Isilon SDK

    Isilon SDK - Language bindings for the OneFS API  # noqa: E501

    OpenAPI spec version: 8
    Contact: sdk@isilon.com
    Generated by: https://github.com/swagger-api/swagger-codegen.git
"""


import pprint
import re  # noqa: F401

import six


class NamespaceObject(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 = {
        'access_time': 'str',
        'atime_val': 'int',
        'block_size': 'int',
        'blocks': 'int',
        'btime_val': 'int',
        'change_time': 'str',
        'container': 'str',
        'container_path': 'str',
        'create_time': 'str',
        'ctime_val': 'int',
        'gid': 'int',
        'group': 'str',
        'id': 'int',
        'is_hidden': 'bool',
        'last_modified': 'str',
        'mode': 'str',
        'mtime_val': 'int',
        'name': 'str',
        'nlink': 'int',
        'owner': 'str',
        'size': 'int',
        'stub': 'bool',
        'type': 'str',
        'uid': 'int'
    }

    attribute_map = {
        'access_time': 'access_time',
        'atime_val': 'atime_val',
        'block_size': 'block_size',
        'blocks': 'blocks',
        'btime_val': 'btime_val',
        'change_time': 'change_time',
        'container': 'container',
        'container_path': 'container_path',
        'create_time': 'create_time',
        'ctime_val': 'ctime_val',
        'gid': 'gid',
        'group': 'group',
        'id': 'id',
        'is_hidden': 'is_hidden',
        'last_modified': 'last_modified',
        'mode': 'mode',
        'mtime_val': 'mtime_val',
        'name': 'name',
        'nlink': 'nlink',
        'owner': 'owner',
        'size': 'size',
        'stub': 'stub',
        'type': 'type',
        'uid': 'uid'
    }

    def __init__(self, access_time=None, atime_val=None, block_size=None, blocks=None, btime_val=None, change_time=None, container=None, container_path=None, create_time=None, ctime_val=None, gid=None, group=None, id=None, is_hidden=None, last_modified=None, mode=None, mtime_val=None, name=None, nlink=None, owner=None, size=None, stub=None, type=None, uid=None):  # noqa: E501
        """NamespaceObject - a model defined in Swagger"""  # noqa: E501

        self._access_time = None
        self._atime_val = None
        self._block_size = None
        self._blocks = None
        self._btime_val = None
        self._change_time = None
        self._container = None
        self._container_path = None
        self._create_time = None
        self._ctime_val = None
        self._gid = None
        self._group = None
        self._id = None
        self._is_hidden = None
        self._last_modified = None
        self._mode = None
        self._mtime_val = None
        self._name = None
        self._nlink = None
        self._owner = None
        self._size = None
        self._stub = None
        self._type = None
        self._uid = None
        self.discriminator = None

        if access_time is not None:
            self.access_time = access_time
        if atime_val is not None:
            self.atime_val = atime_val
        if block_size is not None:
            self.block_size = block_size
        if blocks is not None:
            self.blocks = blocks
        if btime_val is not None:
            self.btime_val = btime_val
        if change_time is not None:
            self.change_time = change_time
        if container is not None:
            self.container = container
        if container_path is not None:
            self.container_path = container_path
        if create_time is not None:
            self.create_time = create_time
        if ctime_val is not None:
            self.ctime_val = ctime_val
        if gid is not None:
            self.gid = gid
        if group is not None:
            self.group = group
        if id is not None:
            self.id = id
        if is_hidden is not None:
            self.is_hidden = is_hidden
        if last_modified is not None:
            self.last_modified = last_modified
        if mode is not None:
            self.mode = mode
        if mtime_val is not None:
            self.mtime_val = mtime_val
        if name is not None:
            self.name = name
        if nlink is not None:
            self.nlink = nlink
        if owner is not None:
            self.owner = owner
        if size is not None:
            self.size = size
        if stub is not None:
            self.stub = stub
        if type is not None:
            self.type = type
        if uid is not None:
            self.uid = uid

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

        Specifies the date when the object was last accessed in HTTP date/time format.  # noqa: E501

        :return: The access_time of this NamespaceObject.  # noqa: E501
        :rtype: str
        """
        return self._access_time

    @access_time.setter
    def access_time(self, access_time):
        """Sets the access_time of this NamespaceObject.

        Specifies the date when the object was last accessed in HTTP date/time format.  # noqa: E501

        :param access_time: The access_time of this NamespaceObject.  # noqa: E501
        :type: str
        """

        self._access_time = access_time

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

        Specifies the time when the object was last accessed in UNIX Epoch format.  # noqa: E501

        :return: The atime_val of this NamespaceObject.  # noqa: E501
        :rtype: int
        """
        return self._atime_val

    @atime_val.setter
    def atime_val(self, atime_val):
        """Sets the atime_val of this NamespaceObject.

        Specifies the time when the object was last accessed in UNIX Epoch format.  # noqa: E501

        :param atime_val: The atime_val of this NamespaceObject.  # noqa: E501
        :type: int
        """

        self._atime_val = atime_val

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

        Specifies the block size of the object.  # noqa: E501

        :return: The block_size of this NamespaceObject.  # noqa: E501
        :rtype: int
        """
        return self._block_size

    @block_size.setter
    def block_size(self, block_size):
        """Sets the block_size of this NamespaceObject.

        Specifies the block size of the object.  # noqa: E501

        :param block_size: The block_size of this NamespaceObject.  # noqa: E501
        :type: int
        """

        self._block_size = block_size

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

        Specifies the number of blocks that compose the object.  # noqa: E501

        :return: The blocks of this NamespaceObject.  # noqa: E501
        :rtype: int
        """
        return self._blocks

    @blocks.setter
    def blocks(self, blocks):
        """Sets the blocks of this NamespaceObject.

        Specifies the number of blocks that compose the object.  # noqa: E501

        :param blocks: The blocks of this NamespaceObject.  # noqa: E501
        :type: int
        """

        self._blocks = blocks

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

        Specifies the time when the object data was created in UNIX Epoch format.  # noqa: E501

        :return: The btime_val of this NamespaceObject.  # noqa: E501
        :rtype: int
        """
        return self._btime_val

    @btime_val.setter
    def btime_val(self, btime_val):
        """Sets the btime_val of this NamespaceObject.

        Specifies the time when the object data was created in UNIX Epoch format.  # noqa: E501

        :param btime_val: The btime_val of this NamespaceObject.  # noqa: E501
        :type: int
        """

        self._btime_val = btime_val

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

        Specifies the date when the object was last changed (including data and metadata changes) in HTTP date/time format.  # noqa: E501

        :return: The change_time of this NamespaceObject.  # noqa: E501
        :rtype: str
        """
        return self._change_time

    @change_time.setter
    def change_time(self, change_time):
        """Sets the change_time of this NamespaceObject.

        Specifies the date when the object was last changed (including data and metadata changes) in HTTP date/time format.  # noqa: E501

        :param change_time: The change_time of this NamespaceObject.  # noqa: E501
        :type: str
        """

        self._change_time = change_time

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

        Specifies the name of the queried container.  # noqa: E501

        :return: The container of this NamespaceObject.  # noqa: E501
        :rtype: str
        """
        return self._container

    @container.setter
    def container(self, container):
        """Sets the container of this NamespaceObject.

        Specifies the name of the queried container.  # noqa: E501

        :param container: The container of this NamespaceObject.  # noqa: E501
        :type: str
        """

        self._container = container

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

        Specifies the container path on the file system.  # noqa: E501

        :return: The container_path of this NamespaceObject.  # noqa: E501
        :rtype: str
        """
        return self._container_path

    @container_path.setter
    def container_path(self, container_path):
        """Sets the container_path of this NamespaceObject.

        Specifies the container path on the file system.  # noqa: E501

        :param container_path: The container_path of this NamespaceObject.  # noqa: E501
        :type: str
        """

        self._container_path = container_path

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

        Specifies the date when the object data was created in HTTP date/time format.  # noqa: E501

        :return: The create_time of this NamespaceObject.  # noqa: E501
        :rtype: str
        """
        return self._create_time

    @create_time.setter
    def create_time(self, create_time):
        """Sets the create_time of this NamespaceObject.

        Specifies the date when the object data was created in HTTP date/time format.  # noqa: E501

        :param create_time: The create_time of this NamespaceObject.  # noqa: E501
        :type: str
        """

        self._create_time = create_time

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

        Specifies the time when the object was last changed (including data and metadata changes) in UNIX Epoch format.  # noqa: E501

        :return: The ctime_val of this NamespaceObject.  # noqa: E501
        :rtype: int
        """
        return self._ctime_val

    @ctime_val.setter
    def ctime_val(self, ctime_val):
        """Sets the ctime_val of this NamespaceObject.

        Specifies the time when the object was last changed (including data and metadata changes) in UNIX Epoch format.  # noqa: E501

        :param ctime_val: The ctime_val of this NamespaceObject.  # noqa: E501
        :type: int
        """

        self._ctime_val = ctime_val

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

        Specifies the GID for the owner.  # noqa: E501

        :return: The gid of this NamespaceObject.  # noqa: E501
        :rtype: int
        """
        return self._gid

    @gid.setter
    def gid(self, gid):
        """Sets the gid of this NamespaceObject.

        Specifies the GID for the owner.  # noqa: E501

        :param gid: The gid of this NamespaceObject.  # noqa: E501
        :type: int
        """

        self._gid = gid

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

        Specifies the group name for the owner of the object.  # noqa: E501

        :return: The group of this NamespaceObject.  # noqa: E501
        :rtype: str
        """
        return self._group

    @group.setter
    def group(self, group):
        """Sets the group of this NamespaceObject.

        Specifies the group name for the owner of the object.  # noqa: E501

        :param group: The group of this NamespaceObject.  # noqa: E501
        :type: str
        """

        self._group = group

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

        Specifies the object ID, which is also the INODE number.  # noqa: E501

        :return: The id of this NamespaceObject.  # noqa: E501
        :rtype: int
        """
        return self._id

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

        Specifies the object ID, which is also the INODE number.  # noqa: E501

        :param id: The id of this NamespaceObject.  # noqa: E501
        :type: int
        """

        self._id = id

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

        Specifies whether the file is hidden or not.  # noqa: E501

        :return: The is_hidden of this NamespaceObject.  # noqa: E501
        :rtype: bool
        """
        return self._is_hidden

    @is_hidden.setter
    def is_hidden(self, is_hidden):
        """Sets the is_hidden of this NamespaceObject.

        Specifies whether the file is hidden or not.  # noqa: E501

        :param is_hidden: The is_hidden of this NamespaceObject.  # noqa: E501
        :type: bool
        """

        self._is_hidden = is_hidden

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

        Specifies the time when the object data was last modified in HTTP date/time format.  # noqa: E501

        :return: The last_modified of this NamespaceObject.  # noqa: E501
        :rtype: str
        """
        return self._last_modified

    @last_modified.setter
    def last_modified(self, last_modified):
        """Sets the last_modified of this NamespaceObject.

        Specifies the time when the object data was last modified in HTTP date/time format.  # noqa: E501

        :param last_modified: The last_modified of this NamespaceObject.  # noqa: E501
        :type: str
        """

        self._last_modified = last_modified

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

        Specifies the UNIX mode octal number.  # noqa: E501

        :return: The mode of this NamespaceObject.  # noqa: E501
        :rtype: str
        """
        return self._mode

    @mode.setter
    def mode(self, mode):
        """Sets the mode of this NamespaceObject.

        Specifies the UNIX mode octal number.  # noqa: E501

        :param mode: The mode of this NamespaceObject.  # noqa: E501
        :type: str
        """

        self._mode = mode

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

        Specifies the time when the object data was last modified in UNIX Epoch format.  # noqa: E501

        :return: The mtime_val of this NamespaceObject.  # noqa: E501
        :rtype: int
        """
        return self._mtime_val

    @mtime_val.setter
    def mtime_val(self, mtime_val):
        """Sets the mtime_val of this NamespaceObject.

        Specifies the time when the object data was last modified in UNIX Epoch format.  # noqa: E501

        :param mtime_val: The mtime_val of this NamespaceObject.  # noqa: E501
        :type: int
        """

        self._mtime_val = mtime_val

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

        Specifies the name of the object.  # noqa: E501

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

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

        Specifies the name of the object.  # noqa: E501

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

        self._name = name

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

        Specifies the number of hard links to the object.  # noqa: E501

        :return: The nlink of this NamespaceObject.  # noqa: E501
        :rtype: int
        """
        return self._nlink

    @nlink.setter
    def nlink(self, nlink):
        """Sets the nlink of this NamespaceObject.

        Specifies the number of hard links to the object.  # noqa: E501

        :param nlink: The nlink of this NamespaceObject.  # noqa: E501
        :type: int
        """

        self._nlink = nlink

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

        Specifies the user name for the owner of the object.  # noqa: E501

        :return: The owner of this NamespaceObject.  # noqa: E501
        :rtype: str
        """
        return self._owner

    @owner.setter
    def owner(self, owner):
        """Sets the owner of this NamespaceObject.

        Specifies the user name for the owner of the object.  # noqa: E501

        :param owner: The owner of this NamespaceObject.  # noqa: E501
        :type: str
        """

        self._owner = owner

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

        Specifies the size of the object in bytes.  # noqa: E501

        :return: The size of this NamespaceObject.  # noqa: E501
        :rtype: int
        """
        return self._size

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

        Specifies the size of the object in bytes.  # noqa: E501

        :param size: The size of this NamespaceObject.  # noqa: E501
        :type: int
        """

        self._size = size

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

        Specifies whether the file is a stub or not.  # noqa: E501

        :return: The stub of this NamespaceObject.  # noqa: E501
        :rtype: bool
        """
        return self._stub

    @stub.setter
    def stub(self, stub):
        """Sets the stub of this NamespaceObject.

        Specifies whether the file is a stub or not.  # noqa: E501

        :param stub: The stub of this NamespaceObject.  # noqa: E501
        :type: bool
        """

        self._stub = stub

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

        Specifies the object type, which can be one of the following values: container, object, pipe, character_device, block_device, symbolic_link, socket, or whiteout_file.  # noqa: E501

        :return: The type of this NamespaceObject.  # noqa: E501
        :rtype: str
        """
        return self._type

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

        Specifies the object type, which can be one of the following values: container, object, pipe, character_device, block_device, symbolic_link, socket, or whiteout_file.  # noqa: E501

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

        self._type = type

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

        Specifies the UID for the owner.  # noqa: E501

        :return: The uid of this NamespaceObject.  # noqa: E501
        :rtype: int
        """
        return self._uid

    @uid.setter
    def uid(self, uid):
        """Sets the uid of this NamespaceObject.

        Specifies the UID for the owner.  # noqa: E501

        :param uid: The uid of this NamespaceObject.  # noqa: E501
        :type: int
        """

        self._uid = uid

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

        return self.__dict__ == other.__dict__

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