# coding: utf-8

"""
    Vidispine API

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

    The version of the OpenAPI document: 5.x
    Contact: info@vidispine.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six
from . import *

class AutoImportRuleType(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 = {
        'exclude_filter': 'list[FilenameFilterType]',
        'settings_id': 'str',
        'file_name_as_title': 'bool',
        'projection': 'str',
        'shape_tag_filter': 'list[FilenameFilterType]',
        'enabled': 'bool',
        'sequence_definition': 'SequenceDefinitionType',
        'storage': 'str',
        'disabled_sidecar_extensions': 'list[str]',
        'ignore_sidecar_import': 'bool',
        'priority': 'str',
        'jobmetadata': 'SimpleMetadataType',
        'tag': 'list[str]',
        'user': 'str',
        'resource_id': 'str',
        'metadata': 'MetadataType'
    }

    attribute_map = {
        'exclude_filter': 'excludeFilter',
        'settings_id': 'settingsId',
        'file_name_as_title': 'fileNameAsTitle',
        'projection': 'projection',
        'shape_tag_filter': 'shapeTagFilter',
        'enabled': 'enabled',
        'sequence_definition': 'sequenceDefinition',
        'storage': 'storage',
        'disabled_sidecar_extensions': 'disabledSidecarExtensions',
        'ignore_sidecar_import': 'ignoreSidecarImport',
        'priority': 'priority',
        'jobmetadata': 'jobmetadata',
        'tag': 'tag',
        'user': 'user',
        'resource_id': 'resourceId',
        'metadata': 'metadata'
    }

    def __init__(self, exclude_filter=None, settings_id=None, file_name_as_title=None, projection=None, shape_tag_filter=None, enabled=None, sequence_definition=None, storage=None, disabled_sidecar_extensions=None, ignore_sidecar_import=None, priority=None, jobmetadata=None, tag=None, user=None, resource_id=None, metadata=None):  # noqa: E501
        """AutoImportRuleType - a model defined in OpenAPI"""  # noqa: E501

        self._exclude_filter = None
        self._settings_id = None
        self._file_name_as_title = None
        self._projection = None
        self._shape_tag_filter = None
        self._enabled = None
        self._sequence_definition = None
        self._storage = None
        self._disabled_sidecar_extensions = None
        self._ignore_sidecar_import = None
        self._priority = None
        self._jobmetadata = None
        self._tag = None
        self._user = None
        self._resource_id = None
        self._metadata = None
        self.discriminator = None

        if exclude_filter is not None:
            self.exclude_filter = exclude_filter
        if settings_id is not None:
            self.settings_id = settings_id
        if file_name_as_title is not None:
            self.file_name_as_title = file_name_as_title
        if projection is not None:
            self.projection = projection
        if shape_tag_filter is not None:
            self.shape_tag_filter = shape_tag_filter
        if enabled is not None:
            self.enabled = enabled
        if sequence_definition is not None:
            self.sequence_definition = sequence_definition
        if storage is not None:
            self.storage = storage
        if disabled_sidecar_extensions is not None:
            self.disabled_sidecar_extensions = disabled_sidecar_extensions
        if ignore_sidecar_import is not None:
            self.ignore_sidecar_import = ignore_sidecar_import
        if priority is not None:
            self.priority = priority
        if jobmetadata is not None:
            self.jobmetadata = jobmetadata
        if tag is not None:
            self.tag = tag
        if user is not None:
            self.user = user
        if resource_id is not None:
            self.resource_id = resource_id
        if metadata is not None:
            self.metadata = metadata

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


        :return: The exclude_filter of this AutoImportRuleType.  # noqa: E501
        :rtype: list[FilenameFilterType]
        """
        return self._exclude_filter

    @exclude_filter.setter
    def exclude_filter(self, exclude_filter):
        """Sets the exclude_filter of this AutoImportRuleType.


        :param exclude_filter: The exclude_filter of this AutoImportRuleType.  # noqa: E501
        :type: list[FilenameFilterType]
        """

        self._exclude_filter = exclude_filter

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


        :return: The settings_id of this AutoImportRuleType.  # noqa: E501
        :rtype: str
        """
        return self._settings_id

    @settings_id.setter
    def settings_id(self, settings_id):
        """Sets the settings_id of this AutoImportRuleType.


        :param settings_id: The settings_id of this AutoImportRuleType.  # noqa: E501
        :type: str
        """
        if settings_id is not None and not re.search(r'([_A-Za-z]+-)?([A-Za-z_][A-Za-z0-9_]*-|(([A-Za-z_][A-Za-z0-9_]*)?\*))([0-9]{1}[0-9]{0,31})', settings_id):  # noqa: E501
            raise ValueError(r"Invalid value for `settings_id`, must be a follow pattern or equal to `/([_A-Za-z]+-)?([A-Za-z_][A-Za-z0-9_]*-|(([A-Za-z_][A-Za-z0-9_]*)?\*))([0-9]{1}[0-9]{0,31})/`")  # noqa: E501

        self._settings_id = settings_id

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


        :return: The file_name_as_title of this AutoImportRuleType.  # noqa: E501
        :rtype: bool
        """
        return self._file_name_as_title

    @file_name_as_title.setter
    def file_name_as_title(self, file_name_as_title):
        """Sets the file_name_as_title of this AutoImportRuleType.


        :param file_name_as_title: The file_name_as_title of this AutoImportRuleType.  # noqa: E501
        :type: bool
        """

        self._file_name_as_title = file_name_as_title

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


        :return: The projection of this AutoImportRuleType.  # noqa: E501
        :rtype: str
        """
        return self._projection

    @projection.setter
    def projection(self, projection):
        """Sets the projection of this AutoImportRuleType.


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

        self._projection = projection

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


        :return: The shape_tag_filter of this AutoImportRuleType.  # noqa: E501
        :rtype: list[FilenameFilterType]
        """
        return self._shape_tag_filter

    @shape_tag_filter.setter
    def shape_tag_filter(self, shape_tag_filter):
        """Sets the shape_tag_filter of this AutoImportRuleType.


        :param shape_tag_filter: The shape_tag_filter of this AutoImportRuleType.  # noqa: E501
        :type: list[FilenameFilterType]
        """

        self._shape_tag_filter = shape_tag_filter

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


        :return: The enabled of this AutoImportRuleType.  # noqa: E501
        :rtype: bool
        """
        return self._enabled

    @enabled.setter
    def enabled(self, enabled):
        """Sets the enabled of this AutoImportRuleType.


        :param enabled: The enabled of this AutoImportRuleType.  # noqa: E501
        :type: bool
        """

        self._enabled = enabled

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


        :return: The sequence_definition of this AutoImportRuleType.  # noqa: E501
        :rtype: SequenceDefinitionType
        """
        return self._sequence_definition

    @sequence_definition.setter
    def sequence_definition(self, sequence_definition):
        """Sets the sequence_definition of this AutoImportRuleType.


        :param sequence_definition: The sequence_definition of this AutoImportRuleType.  # noqa: E501
        :type: SequenceDefinitionType
        """

        self._sequence_definition = sequence_definition

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


        :return: The storage of this AutoImportRuleType.  # noqa: E501
        :rtype: str
        """
        return self._storage

    @storage.setter
    def storage(self, storage):
        """Sets the storage of this AutoImportRuleType.


        :param storage: The storage of this AutoImportRuleType.  # noqa: E501
        :type: str
        """
        if storage is not None and not re.search(r'([_A-Za-z]+-)?([A-Za-z_][A-Za-z0-9_]*-|(([A-Za-z_][A-Za-z0-9_]*)?\*))([0-9]{1}[0-9]{0,31})', storage):  # noqa: E501
            raise ValueError(r"Invalid value for `storage`, must be a follow pattern or equal to `/([_A-Za-z]+-)?([A-Za-z_][A-Za-z0-9_]*-|(([A-Za-z_][A-Za-z0-9_]*)?\*))([0-9]{1}[0-9]{0,31})/`")  # noqa: E501

        self._storage = storage

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


        :return: The disabled_sidecar_extensions of this AutoImportRuleType.  # noqa: E501
        :rtype: list[str]
        """
        return self._disabled_sidecar_extensions

    @disabled_sidecar_extensions.setter
    def disabled_sidecar_extensions(self, disabled_sidecar_extensions):
        """Sets the disabled_sidecar_extensions of this AutoImportRuleType.


        :param disabled_sidecar_extensions: The disabled_sidecar_extensions of this AutoImportRuleType.  # noqa: E501
        :type: list[str]
        """

        self._disabled_sidecar_extensions = disabled_sidecar_extensions

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


        :return: The ignore_sidecar_import of this AutoImportRuleType.  # noqa: E501
        :rtype: bool
        """
        return self._ignore_sidecar_import

    @ignore_sidecar_import.setter
    def ignore_sidecar_import(self, ignore_sidecar_import):
        """Sets the ignore_sidecar_import of this AutoImportRuleType.


        :param ignore_sidecar_import: The ignore_sidecar_import of this AutoImportRuleType.  # noqa: E501
        :type: bool
        """

        self._ignore_sidecar_import = ignore_sidecar_import

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


        :return: The priority of this AutoImportRuleType.  # noqa: E501
        :rtype: str
        """
        return self._priority

    @priority.setter
    def priority(self, priority):
        """Sets the priority of this AutoImportRuleType.


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

        self._priority = priority

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


        :return: The jobmetadata of this AutoImportRuleType.  # noqa: E501
        :rtype: SimpleMetadataType
        """
        return self._jobmetadata

    @jobmetadata.setter
    def jobmetadata(self, jobmetadata):
        """Sets the jobmetadata of this AutoImportRuleType.


        :param jobmetadata: The jobmetadata of this AutoImportRuleType.  # noqa: E501
        :type: SimpleMetadataType
        """

        self._jobmetadata = jobmetadata

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


        :return: The tag of this AutoImportRuleType.  # noqa: E501
        :rtype: list[str]
        """
        return self._tag

    @tag.setter
    def tag(self, tag):
        """Sets the tag of this AutoImportRuleType.


        :param tag: The tag of this AutoImportRuleType.  # noqa: E501
        :type: list[str]
        """

        self._tag = tag

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


        :return: The user of this AutoImportRuleType.  # noqa: E501
        :rtype: str
        """
        return self._user

    @user.setter
    def user(self, user):
        """Sets the user of this AutoImportRuleType.


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

        self._user = user

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


        :return: The resource_id of this AutoImportRuleType.  # noqa: E501
        :rtype: str
        """
        return self._resource_id

    @resource_id.setter
    def resource_id(self, resource_id):
        """Sets the resource_id of this AutoImportRuleType.


        :param resource_id: The resource_id of this AutoImportRuleType.  # noqa: E501
        :type: str
        """
        if resource_id is not None and not re.search(r'([_A-Za-z]+-)?([A-Za-z_][A-Za-z0-9_]*-|(([A-Za-z_][A-Za-z0-9_]*)?\*))([0-9]{1}[0-9]{0,31})', resource_id):  # noqa: E501
            raise ValueError(r"Invalid value for `resource_id`, must be a follow pattern or equal to `/([_A-Za-z]+-)?([A-Za-z_][A-Za-z0-9_]*-|(([A-Za-z_][A-Za-z0-9_]*)?\*))([0-9]{1}[0-9]{0,31})/`")  # noqa: E501

        self._resource_id = resource_id

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


        :return: The metadata of this AutoImportRuleType.  # noqa: E501
        :rtype: MetadataType
        """
        return self._metadata

    @metadata.setter
    def metadata(self, metadata):
        """Sets the metadata of this AutoImportRuleType.


        :param metadata: The metadata of this AutoImportRuleType.  # noqa: E501
        :type: MetadataType
        """

        self._metadata = metadata

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

        return self.__dict__ == other.__dict__

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