# coding: utf-8

"""
    Laserfiche API

    Welcome to the Laserfiche API Swagger Playground. You can try out any of our API calls against your live Laserfiche Cloud account. Visit the developer center for more details: <a href=\"https://developer.laserfiche.com\">https://developer.laserfiche.com</a><p><strong>Build# : </strong>561590</p>  # noqa: E501

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

import pprint
import re  # noqa: F401

import six

class Entry(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': 'int',
        'name': 'str',
        'parent_id': 'int',
        'full_path': 'str',
        'folder_path': 'str',
        'creator': 'str',
        'creation_time': 'datetime',
        'last_modified_time': 'datetime',
        'entry_type': 'OneOfEntryEntryType',
        'is_container': 'bool',
        'is_leaf': 'bool',
        'template_name': 'str',
        'template_id': 'int',
        'template_field_names': 'list[str]',
        'volume_name': 'str',
        'fields': 'list[FieldValue]',
        'tags': 'list[WTagInfo]',
        'links': 'list[WEntryLinkInfo]',
        'row_number': 'int',
        'properties': 'dict(str, Object)'
    }

    attribute_map = {
        'id': 'id',
        'name': 'name',
        'parent_id': 'parentId',
        'full_path': 'fullPath',
        'folder_path': 'folderPath',
        'creator': 'creator',
        'creation_time': 'creationTime',
        'last_modified_time': 'lastModifiedTime',
        'entry_type': 'entryType',
        'is_container': 'isContainer',
        'is_leaf': 'isLeaf',
        'template_name': 'templateName',
        'template_id': 'templateId',
        'template_field_names': 'templateFieldNames',
        'volume_name': 'volumeName',
        'fields': 'fields',
        'tags': 'tags',
        'links': 'links',
        'row_number': 'rowNumber',
        'properties': 'properties'
    }

    def __init__(self, id=None, name=None, parent_id=None, full_path=None, folder_path=None, creator=None, creation_time=None, last_modified_time=None, entry_type=None, is_container=None, is_leaf=None, template_name=None, template_id=None, template_field_names=None, volume_name=None, fields=None, tags=None, links=None, row_number=None, properties=None):  # noqa: E501
        """Entry - a model defined in Swagger"""  # noqa: E501
        self._id = None
        self._name = None
        self._parent_id = None
        self._full_path = None
        self._folder_path = None
        self._creator = None
        self._creation_time = None
        self._last_modified_time = None
        self._entry_type = None
        self._is_container = None
        self._is_leaf = None
        self._template_name = None
        self._template_id = None
        self._template_field_names = None
        self._volume_name = None
        self._fields = None
        self._tags = None
        self._links = None
        self._row_number = None
        self._properties = None
        self.discriminator = None
        if id is not None:
            self.id = id
        if name is not None:
            self.name = name
        if parent_id is not None:
            self.parent_id = parent_id
        if full_path is not None:
            self.full_path = full_path
        if folder_path is not None:
            self.folder_path = folder_path
        if creator is not None:
            self.creator = creator
        if creation_time is not None:
            self.creation_time = creation_time
        if last_modified_time is not None:
            self.last_modified_time = last_modified_time
        if entry_type is not None:
            self.entry_type = entry_type
        if is_container is not None:
            self.is_container = is_container
        if is_leaf is not None:
            self.is_leaf = is_leaf
        if template_name is not None:
            self.template_name = template_name
        if template_id is not None:
            self.template_id = template_id
        if template_field_names is not None:
            self.template_field_names = template_field_names
        if volume_name is not None:
            self.volume_name = volume_name
        if fields is not None:
            self.fields = fields
        if tags is not None:
            self.tags = tags
        if links is not None:
            self.links = links
        if row_number is not None:
            self.row_number = row_number
        if properties is not None:
            self.properties = properties

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

        The ID of the entry.  # noqa: E501

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

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

        The ID of the entry.  # noqa: E501

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

        self._id = id

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

        The name of the entry.  # noqa: E501

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

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

        The name of the entry.  # noqa: E501

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

        self._name = name

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

        The ID of the parent entry.  # noqa: E501

        :return: The parent_id of this Entry.  # noqa: E501
        :rtype: int
        """
        return self._parent_id

    @parent_id.setter
    def parent_id(self, parent_id):
        """Sets the parent_id of this Entry.

        The ID of the parent entry.  # noqa: E501

        :param parent_id: The parent_id of this Entry.  # noqa: E501
        :type: int
        """

        self._parent_id = parent_id

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

        The full path in the Laserfiche repository to the entry.  # noqa: E501

        :return: The full_path of this Entry.  # noqa: E501
        :rtype: str
        """
        return self._full_path

    @full_path.setter
    def full_path(self, full_path):
        """Sets the full_path of this Entry.

        The full path in the Laserfiche repository to the entry.  # noqa: E501

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

        self._full_path = full_path

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

        The path in the Laserfiche repository to the parent folder.  # noqa: E501

        :return: The folder_path of this Entry.  # noqa: E501
        :rtype: str
        """
        return self._folder_path

    @folder_path.setter
    def folder_path(self, folder_path):
        """Sets the folder_path of this Entry.

        The path in the Laserfiche repository to the parent folder.  # noqa: E501

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

        self._folder_path = folder_path

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

        The name of the user that created this entry.  # noqa: E501

        :return: The creator of this Entry.  # noqa: E501
        :rtype: str
        """
        return self._creator

    @creator.setter
    def creator(self, creator):
        """Sets the creator of this Entry.

        The name of the user that created this entry.  # noqa: E501

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

        self._creator = creator

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

        The creation time of the entry.  # noqa: E501

        :return: The creation_time of this Entry.  # noqa: E501
        :rtype: datetime
        """
        return self._creation_time

    @creation_time.setter
    def creation_time(self, creation_time):
        """Sets the creation_time of this Entry.

        The creation time of the entry.  # noqa: E501

        :param creation_time: The creation_time of this Entry.  # noqa: E501
        :type: datetime
        """

        self._creation_time = creation_time

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

        The last modification time of the entry.  # noqa: E501

        :return: The last_modified_time of this Entry.  # noqa: E501
        :rtype: datetime
        """
        return self._last_modified_time

    @last_modified_time.setter
    def last_modified_time(self, last_modified_time):
        """Sets the last_modified_time of this Entry.

        The last modification time of the entry.  # noqa: E501

        :param last_modified_time: The last_modified_time of this Entry.  # noqa: E501
        :type: datetime
        """

        self._last_modified_time = last_modified_time

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

        The type of the entry.  # noqa: E501

        :return: The entry_type of this Entry.  # noqa: E501
        :rtype: OneOfEntryEntryType
        """
        return self._entry_type

    @entry_type.setter
    def entry_type(self, entry_type):
        """Sets the entry_type of this Entry.

        The type of the entry.  # noqa: E501

        :param entry_type: The entry_type of this Entry.  # noqa: E501
        :type: OneOfEntryEntryType
        """

        self._entry_type = entry_type

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

        A boolean indicating if this entry is a container object; it can have other entries as children.  # noqa: E501

        :return: The is_container of this Entry.  # noqa: E501
        :rtype: bool
        """
        return self._is_container

    @is_container.setter
    def is_container(self, is_container):
        """Sets the is_container of this Entry.

        A boolean indicating if this entry is a container object; it can have other entries as children.  # noqa: E501

        :param is_container: The is_container of this Entry.  # noqa: E501
        :type: bool
        """

        self._is_container = is_container

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

        A boolean indicating if this entry is a leaf object; it cannot have other entries as children.  # noqa: E501

        :return: The is_leaf of this Entry.  # noqa: E501
        :rtype: bool
        """
        return self._is_leaf

    @is_leaf.setter
    def is_leaf(self, is_leaf):
        """Sets the is_leaf of this Entry.

        A boolean indicating if this entry is a leaf object; it cannot have other entries as children.  # noqa: E501

        :param is_leaf: The is_leaf of this Entry.  # noqa: E501
        :type: bool
        """

        self._is_leaf = is_leaf

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

        The name of the template assigned to this entry.  # noqa: E501

        :return: The template_name of this Entry.  # noqa: E501
        :rtype: str
        """
        return self._template_name

    @template_name.setter
    def template_name(self, template_name):
        """Sets the template_name of this Entry.

        The name of the template assigned to this entry.  # noqa: E501

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

        self._template_name = template_name

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

        The id of the template assigned to this entry.  # noqa: E501

        :return: The template_id of this Entry.  # noqa: E501
        :rtype: int
        """
        return self._template_id

    @template_id.setter
    def template_id(self, template_id):
        """Sets the template_id of this Entry.

        The id of the template assigned to this entry.  # noqa: E501

        :param template_id: The template_id of this Entry.  # noqa: E501
        :type: int
        """

        self._template_id = template_id

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

        The names of the fields assigned to the template assigned to this entry.  # noqa: E501

        :return: The template_field_names of this Entry.  # noqa: E501
        :rtype: list[str]
        """
        return self._template_field_names

    @template_field_names.setter
    def template_field_names(self, template_field_names):
        """Sets the template_field_names of this Entry.

        The names of the fields assigned to the template assigned to this entry.  # noqa: E501

        :param template_field_names: The template_field_names of this Entry.  # noqa: E501
        :type: list[str]
        """

        self._template_field_names = template_field_names

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

        The name of the volume that this entry is associated with.  # noqa: E501

        :return: The volume_name of this Entry.  # noqa: E501
        :rtype: str
        """
        return self._volume_name

    @volume_name.setter
    def volume_name(self, volume_name):
        """Sets the volume_name of this Entry.

        The name of the volume that this entry is associated with.  # noqa: E501

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

        self._volume_name = volume_name

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

        The fields assigned to this entry.  # noqa: E501

        :return: The fields of this Entry.  # noqa: E501
        :rtype: list[FieldValue]
        """
        return self._fields

    @fields.setter
    def fields(self, fields):
        """Sets the fields of this Entry.

        The fields assigned to this entry.  # noqa: E501

        :param fields: The fields of this Entry.  # noqa: E501
        :type: list[FieldValue]
        """

        self._fields = fields

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

        The tags assigned to this entry.  # noqa: E501

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

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

        The tags assigned to this entry.  # noqa: E501

        :param tags: The tags of this Entry.  # noqa: E501
        :type: list[WTagInfo]
        """

        self._tags = tags

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

        The links assigned to this entry.  # noqa: E501

        :return: The links of this Entry.  # noqa: E501
        :rtype: list[WEntryLinkInfo]
        """
        return self._links

    @links.setter
    def links(self, links):
        """Sets the links of this Entry.

        The links assigned to this entry.  # noqa: E501

        :param links: The links of this Entry.  # noqa: E501
        :type: list[WEntryLinkInfo]
        """

        self._links = links

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

        Row number assigned to this entry in the listing.  # noqa: E501

        :return: The row_number of this Entry.  # noqa: E501
        :rtype: int
        """
        return self._row_number

    @row_number.setter
    def row_number(self, row_number):
        """Sets the row_number of this Entry.

        Row number assigned to this entry in the listing.  # noqa: E501

        :param row_number: The row_number of this Entry.  # noqa: E501
        :type: int
        """

        self._row_number = row_number

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


        :return: The properties of this Entry.  # noqa: E501
        :rtype: dict(str, Object)
        """
        return self._properties

    @properties.setter
    def properties(self, properties):
        """Sets the properties of this Entry.


        :param properties: The properties of this Entry.  # noqa: E501
        :type: dict(str, Object)
        """

        self._properties = properties

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

        return self.__dict__ == other.__dict__

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