# coding: utf-8

from __future__ import absolute_import
from swagger_server.models.downloadable_data_file_content_interface import DownloadableDataFileContentInterface
from .base_model_ import Model
from datetime import date, datetime
from typing import List, Dict
from ..util import deserialize_model


class DownloadableDataSampleInterface(Model):
    """
    NOTE: This class is auto generated by the swagger code generator program.
    Do not edit the class manually.
    """
    def __init__(self, id: int=None, title: str=None, sort_order: int=None, sample_type: str=None, sample_file: str=None, sample_file_content: DownloadableDataFileContentInterface=None, sample_url: str=None):
        """
        DownloadableDataSampleInterface - a model defined in Swagger

        :param id: The id of this DownloadableDataSampleInterface.
        :type id: int
        :param title: The title of this DownloadableDataSampleInterface.
        :type title: str
        :param sort_order: The sort_order of this DownloadableDataSampleInterface.
        :type sort_order: int
        :param sample_type: The sample_type of this DownloadableDataSampleInterface.
        :type sample_type: str
        :param sample_file: The sample_file of this DownloadableDataSampleInterface.
        :type sample_file: str
        :param sample_file_content: The sample_file_content of this DownloadableDataSampleInterface.
        :type sample_file_content: DownloadableDataFileContentInterface
        :param sample_url: The sample_url of this DownloadableDataSampleInterface.
        :type sample_url: str
        """
        self.swagger_types = {
            'id': int,
            'title': str,
            'sort_order': int,
            'sample_type': str,
            'sample_file': str,
            'sample_file_content': DownloadableDataFileContentInterface,
            'sample_url': str
        }

        self.attribute_map = {
            'id': 'id',
            'title': 'title',
            'sort_order': 'sort_order',
            'sample_type': 'sample_type',
            'sample_file': 'sample_file',
            'sample_file_content': 'sample_file_content',
            'sample_url': 'sample_url'
        }

        self._id = id
        self._title = title
        self._sort_order = sort_order
        self._sample_type = sample_type
        self._sample_file = sample_file
        self._sample_file_content = sample_file_content
        self._sample_url = sample_url

    @classmethod
    def from_dict(cls, dikt) -> 'DownloadableDataSampleInterface':
        """
        Returns the dict as a model

        :param dikt: A dict.
        :type: dict
        :return: The downloadable-data-sample-interface of this DownloadableDataSampleInterface.
        :rtype: DownloadableDataSampleInterface
        """
        return deserialize_model(dikt, cls)

    @property
    def id(self) -> int:
        """
        Gets the id of this DownloadableDataSampleInterface.
        Sample(or link) id

        :return: The id of this DownloadableDataSampleInterface.
        :rtype: int
        """
        return self._id

    @id.setter
    def id(self, id: int):
        """
        Sets the id of this DownloadableDataSampleInterface.
        Sample(or link) id

        :param id: The id of this DownloadableDataSampleInterface.
        :type id: int
        """

        self._id = id

    @property
    def title(self) -> str:
        """
        Gets the title of this DownloadableDataSampleInterface.
        Title

        :return: The title of this DownloadableDataSampleInterface.
        :rtype: str
        """
        return self._title

    @title.setter
    def title(self, title: str):
        """
        Sets the title of this DownloadableDataSampleInterface.
        Title

        :param title: The title of this DownloadableDataSampleInterface.
        :type title: str
        """
        if title is None:
            raise ValueError("Invalid value for `title`, must not be `None`")

        self._title = title

    @property
    def sort_order(self) -> int:
        """
        Gets the sort_order of this DownloadableDataSampleInterface.
        Order index for sample

        :return: The sort_order of this DownloadableDataSampleInterface.
        :rtype: int
        """
        return self._sort_order

    @sort_order.setter
    def sort_order(self, sort_order: int):
        """
        Sets the sort_order of this DownloadableDataSampleInterface.
        Order index for sample

        :param sort_order: The sort_order of this DownloadableDataSampleInterface.
        :type sort_order: int
        """
        if sort_order is None:
            raise ValueError("Invalid value for `sort_order`, must not be `None`")

        self._sort_order = sort_order

    @property
    def sample_type(self) -> str:
        """
        Gets the sample_type of this DownloadableDataSampleInterface.

        :return: The sample_type of this DownloadableDataSampleInterface.
        :rtype: str
        """
        return self._sample_type

    @sample_type.setter
    def sample_type(self, sample_type: str):
        """
        Sets the sample_type of this DownloadableDataSampleInterface.

        :param sample_type: The sample_type of this DownloadableDataSampleInterface.
        :type sample_type: str
        """
        if sample_type is None:
            raise ValueError("Invalid value for `sample_type`, must not be `None`")

        self._sample_type = sample_type

    @property
    def sample_file(self) -> str:
        """
        Gets the sample_file of this DownloadableDataSampleInterface.
        relative file path

        :return: The sample_file of this DownloadableDataSampleInterface.
        :rtype: str
        """
        return self._sample_file

    @sample_file.setter
    def sample_file(self, sample_file: str):
        """
        Sets the sample_file of this DownloadableDataSampleInterface.
        relative file path

        :param sample_file: The sample_file of this DownloadableDataSampleInterface.
        :type sample_file: str
        """

        self._sample_file = sample_file

    @property
    def sample_file_content(self) -> DownloadableDataFileContentInterface:
        """
        Gets the sample_file_content of this DownloadableDataSampleInterface.

        :return: The sample_file_content of this DownloadableDataSampleInterface.
        :rtype: DownloadableDataFileContentInterface
        """
        return self._sample_file_content

    @sample_file_content.setter
    def sample_file_content(self, sample_file_content: DownloadableDataFileContentInterface):
        """
        Sets the sample_file_content of this DownloadableDataSampleInterface.

        :param sample_file_content: The sample_file_content of this DownloadableDataSampleInterface.
        :type sample_file_content: DownloadableDataFileContentInterface
        """

        self._sample_file_content = sample_file_content

    @property
    def sample_url(self) -> str:
        """
        Gets the sample_url of this DownloadableDataSampleInterface.
        file URL

        :return: The sample_url of this DownloadableDataSampleInterface.
        :rtype: str
        """
        return self._sample_url

    @sample_url.setter
    def sample_url(self, sample_url: str):
        """
        Sets the sample_url of this DownloadableDataSampleInterface.
        file URL

        :param sample_url: The sample_url of this DownloadableDataSampleInterface.
        :type sample_url: str
        """

        self._sample_url = sample_url

