# coding: utf-8

"""
    XMS API

    XMS is the controller of distributed storage system  # noqa: E501

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


import pprint
import re  # noqa: F401
import six

# from xms_client.models.fs_folder_nestview import FSFolderNestview  # noqa: F401,E501
# from xms_client.models.fs_gateway_group_nestview import FSGatewayGroupNestview  # noqa: F401,E501


class FSShare(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 = {
        'acl_num': 'int',
        'action_status': 'str',
        'create': 'datetime',
        'fs_folder': 'FSFolderNestview',
        'fs_gateway_group': 'FSGatewayGroupNestview',
        'id': 'int',
        'mapping_num': 'int',
        'public': 'bool',
        'security': 'str',
        'status': 'str',
        'type': 'str',
        'update': 'datetime'
    }

    attribute_map = {
        'acl_num': 'acl_num',
        'action_status': 'action_status',
        'create': 'create',
        'fs_folder': 'fs_folder',
        'fs_gateway_group': 'fs_gateway_group',
        'id': 'id',
        'mapping_num': 'mapping_num',
        'public': 'public',
        'security': 'security',
        'status': 'status',
        'type': 'type',
        'update': 'update'
    }

    def __init__(self, acl_num=None, action_status=None, create=None, fs_folder=None, fs_gateway_group=None, id=None, mapping_num=None, public=None, security=None, status=None, type=None, update=None):  # noqa: E501
        """FSShare - a model defined in Swagger"""  # noqa: E501

        self._acl_num = None
        self._action_status = None
        self._create = None
        self._fs_folder = None
        self._fs_gateway_group = None
        self._id = None
        self._mapping_num = None
        self._public = None
        self._security = None
        self._status = None
        self._type = None
        self._update = None
        self.discriminator = None

        if acl_num is not None:
            self.acl_num = acl_num
        if action_status is not None:
            self.action_status = action_status
        if create is not None:
            self.create = create
        if fs_folder is not None:
            self.fs_folder = fs_folder
        if fs_gateway_group is not None:
            self.fs_gateway_group = fs_gateway_group
        if id is not None:
            self.id = id
        if mapping_num is not None:
            self.mapping_num = mapping_num
        if public is not None:
            self.public = public
        if security is not None:
            self.security = security
        if status is not None:
            self.status = status
        if type is not None:
            self.type = type
        if update is not None:
            self.update = update

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


        :return: The acl_num of this FSShare.  # noqa: E501
        :rtype: int
        """
        return self._acl_num

    @acl_num.setter
    def acl_num(self, acl_num):
        """Sets the acl_num of this FSShare.


        :param acl_num: The acl_num of this FSShare.  # noqa: E501
        :type: int
        """

        self._acl_num = acl_num

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


        :return: The action_status of this FSShare.  # noqa: E501
        :rtype: str
        """
        return self._action_status

    @action_status.setter
    def action_status(self, action_status):
        """Sets the action_status of this FSShare.


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

        self._action_status = action_status

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


        :return: The create of this FSShare.  # noqa: E501
        :rtype: datetime
        """
        return self._create

    @create.setter
    def create(self, create):
        """Sets the create of this FSShare.


        :param create: The create of this FSShare.  # noqa: E501
        :type: datetime
        """

        self._create = create

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


        :return: The fs_folder of this FSShare.  # noqa: E501
        :rtype: FSFolderNestview
        """
        return self._fs_folder

    @fs_folder.setter
    def fs_folder(self, fs_folder):
        """Sets the fs_folder of this FSShare.


        :param fs_folder: The fs_folder of this FSShare.  # noqa: E501
        :type: FSFolderNestview
        """

        self._fs_folder = fs_folder

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


        :return: The fs_gateway_group of this FSShare.  # noqa: E501
        :rtype: FSGatewayGroupNestview
        """
        return self._fs_gateway_group

    @fs_gateway_group.setter
    def fs_gateway_group(self, fs_gateway_group):
        """Sets the fs_gateway_group of this FSShare.


        :param fs_gateway_group: The fs_gateway_group of this FSShare.  # noqa: E501
        :type: FSGatewayGroupNestview
        """

        self._fs_gateway_group = fs_gateway_group

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


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

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


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

        self._id = id

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


        :return: The mapping_num of this FSShare.  # noqa: E501
        :rtype: int
        """
        return self._mapping_num

    @mapping_num.setter
    def mapping_num(self, mapping_num):
        """Sets the mapping_num of this FSShare.


        :param mapping_num: The mapping_num of this FSShare.  # noqa: E501
        :type: int
        """

        self._mapping_num = mapping_num

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


        :return: The public of this FSShare.  # noqa: E501
        :rtype: bool
        """
        return self._public

    @public.setter
    def public(self, public):
        """Sets the public of this FSShare.


        :param public: The public of this FSShare.  # noqa: E501
        :type: bool
        """

        self._public = public

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


        :return: The security of this FSShare.  # noqa: E501
        :rtype: str
        """
        return self._security

    @security.setter
    def security(self, security):
        """Sets the security of this FSShare.


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

        self._security = security

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


        :return: The status of this FSShare.  # noqa: E501
        :rtype: str
        """
        return self._status

    @status.setter
    def status(self, status):
        """Sets the status of this FSShare.


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

        self._status = status

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


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

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


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

        self._type = type

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


        :return: The update of this FSShare.  # noqa: E501
        :rtype: datetime
        """
        return self._update

    @update.setter
    def update(self, update):
        """Sets the update of this FSShare.


        :param update: The update of this FSShare.  # noqa: E501
        :type: datetime
        """

        self._update = update

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

        return self.__dict__ == other.__dict__

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