# coding: utf-8

"""
    herd

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    OpenAPI spec version: 0.178.0-SNAPSHOT
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six


class BusinessObjectDataStorageFilesCreateRequest(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_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.
    """
    openapi_types = {
        'namespace': 'str',
        'business_object_definition_name': 'str',
        'business_object_format_usage': 'str',
        'business_object_format_file_type': 'str',
        'business_object_format_version': 'int',
        'partition_value': 'str',
        'sub_partition_values': 'list[str]',
        'business_object_data_version': 'int',
        'storage_name': 'str',
        'storage_files': 'list[StorageFile]',
        'discover_storage_files': 'bool'
    }

    attribute_map = {
        'namespace': 'namespace',
        'business_object_definition_name': 'businessObjectDefinitionName',
        'business_object_format_usage': 'businessObjectFormatUsage',
        'business_object_format_file_type': 'businessObjectFormatFileType',
        'business_object_format_version': 'businessObjectFormatVersion',
        'partition_value': 'partitionValue',
        'sub_partition_values': 'subPartitionValues',
        'business_object_data_version': 'businessObjectDataVersion',
        'storage_name': 'storageName',
        'storage_files': 'storageFiles',
        'discover_storage_files': 'discoverStorageFiles'
    }

    def __init__(self, namespace=None, business_object_definition_name=None, business_object_format_usage=None, business_object_format_file_type=None, business_object_format_version=None, partition_value=None, sub_partition_values=None, business_object_data_version=None, storage_name=None, storage_files=None, discover_storage_files=None):  # noqa: E501
        """BusinessObjectDataStorageFilesCreateRequest - a model defined in OpenAPI"""  # noqa: E501

        self._namespace = None
        self._business_object_definition_name = None
        self._business_object_format_usage = None
        self._business_object_format_file_type = None
        self._business_object_format_version = None
        self._partition_value = None
        self._sub_partition_values = None
        self._business_object_data_version = None
        self._storage_name = None
        self._storage_files = None
        self._discover_storage_files = None
        self.discriminator = None

        self.namespace = namespace
        self.business_object_definition_name = business_object_definition_name
        self.business_object_format_usage = business_object_format_usage
        self.business_object_format_file_type = business_object_format_file_type
        if business_object_format_version is not None:
            self.business_object_format_version = business_object_format_version
        self.partition_value = partition_value
        if sub_partition_values is not None:
            self.sub_partition_values = sub_partition_values
        if business_object_data_version is not None:
            self.business_object_data_version = business_object_data_version
        self.storage_name = storage_name
        if storage_files is not None:
            self.storage_files = storage_files
        if discover_storage_files is not None:
            self.discover_storage_files = discover_storage_files

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

        The namespace of the business object data  # noqa: E501

        :return: The namespace of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :rtype: str
        """
        return self._namespace

    @namespace.setter
    def namespace(self, namespace):
        """Sets the namespace of this BusinessObjectDataStorageFilesCreateRequest.

        The namespace of the business object data  # noqa: E501

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

        self._namespace = namespace

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

        The definition name of the business object data  # noqa: E501

        :return: The business_object_definition_name of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :rtype: str
        """
        return self._business_object_definition_name

    @business_object_definition_name.setter
    def business_object_definition_name(self, business_object_definition_name):
        """Sets the business_object_definition_name of this BusinessObjectDataStorageFilesCreateRequest.

        The definition name of the business object data  # noqa: E501

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

        self._business_object_definition_name = business_object_definition_name

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

        The format usage of the business object data  # noqa: E501

        :return: The business_object_format_usage of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :rtype: str
        """
        return self._business_object_format_usage

    @business_object_format_usage.setter
    def business_object_format_usage(self, business_object_format_usage):
        """Sets the business_object_format_usage of this BusinessObjectDataStorageFilesCreateRequest.

        The format usage of the business object data  # noqa: E501

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

        self._business_object_format_usage = business_object_format_usage

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

        The format file type of the business object data  # noqa: E501

        :return: The business_object_format_file_type of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :rtype: str
        """
        return self._business_object_format_file_type

    @business_object_format_file_type.setter
    def business_object_format_file_type(self, business_object_format_file_type):
        """Sets the business_object_format_file_type of this BusinessObjectDataStorageFilesCreateRequest.

        The format file type of the business object data  # noqa: E501

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

        self._business_object_format_file_type = business_object_format_file_type

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

        The format version of the business object data  # noqa: E501

        :return: The business_object_format_version of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :rtype: int
        """
        return self._business_object_format_version

    @business_object_format_version.setter
    def business_object_format_version(self, business_object_format_version):
        """Sets the business_object_format_version of this BusinessObjectDataStorageFilesCreateRequest.

        The format version of the business object data  # noqa: E501

        :param business_object_format_version: The business_object_format_version of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :type: int
        """

        self._business_object_format_version = business_object_format_version

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

        The the primary partition value of the business object data  # noqa: E501

        :return: The partition_value of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :rtype: str
        """
        return self._partition_value

    @partition_value.setter
    def partition_value(self, partition_value):
        """Sets the partition_value of this BusinessObjectDataStorageFilesCreateRequest.

        The the primary partition value of the business object data  # noqa: E501

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

        self._partition_value = partition_value

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

        The subpartition values of the business object data  # noqa: E501

        :return: The sub_partition_values of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :rtype: list[str]
        """
        return self._sub_partition_values

    @sub_partition_values.setter
    def sub_partition_values(self, sub_partition_values):
        """Sets the sub_partition_values of this BusinessObjectDataStorageFilesCreateRequest.

        The subpartition values of the business object data  # noqa: E501

        :param sub_partition_values: The sub_partition_values of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :type: list[str]
        """

        self._sub_partition_values = sub_partition_values

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

        The version of the business object data  # noqa: E501

        :return: The business_object_data_version of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :rtype: int
        """
        return self._business_object_data_version

    @business_object_data_version.setter
    def business_object_data_version(self, business_object_data_version):
        """Sets the business_object_data_version of this BusinessObjectDataStorageFilesCreateRequest.

        The version of the business object data  # noqa: E501

        :param business_object_data_version: The business_object_data_version of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :type: int
        """

        self._business_object_data_version = business_object_data_version

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

        The name of the storage                  # noqa: E501

        :return: The storage_name of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :rtype: str
        """
        return self._storage_name

    @storage_name.setter
    def storage_name(self, storage_name):
        """Sets the storage_name of this BusinessObjectDataStorageFilesCreateRequest.

        The name of the storage                  # noqa: E501

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

        self._storage_name = storage_name

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

        The list of storage files to be added. Storage files are required, unless discovery of storage files is enabled. In that case,                   the storage                   files are not allowed to be specified                  # noqa: E501

        :return: The storage_files of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :rtype: list[StorageFile]
        """
        return self._storage_files

    @storage_files.setter
    def storage_files(self, storage_files):
        """Sets the storage_files of this BusinessObjectDataStorageFilesCreateRequest.

        The list of storage files to be added. Storage files are required, unless discovery of storage files is enabled. In that case,                   the storage                   files are not allowed to be specified                  # noqa: E501

        :param storage_files: The storage_files of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :type: list[StorageFile]
        """

        self._storage_files = storage_files

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

        If true, enables the auto-discovery of all storage files in the relative S3 storage under the relative storage directory                  # noqa: E501

        :return: The discover_storage_files of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :rtype: bool
        """
        return self._discover_storage_files

    @discover_storage_files.setter
    def discover_storage_files(self, discover_storage_files):
        """Sets the discover_storage_files of this BusinessObjectDataStorageFilesCreateRequest.

        If true, enables the auto-discovery of all storage files in the relative S3 storage under the relative storage directory                  # noqa: E501

        :param discover_storage_files: The discover_storage_files of this BusinessObjectDataStorageFilesCreateRequest.  # noqa: E501
        :type: bool
        """

        self._discover_storage_files = discover_storage_files

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.openapi_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, BusinessObjectDataStorageFilesCreateRequest):
            return False

        return self.__dict__ == other.__dict__

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