# 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 JobRequestChoiceType(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 = {
        'hash_request': 'HashJobType',
        'shape_deduction_request': 'ShapeDeductionJobType',
        'transfer_request': 'TransferJobType',
        'xmp_request': 'XMPJobType',
        'queue_request': 'QueueJobType',
        'timeline_request': 'TimelineJobRequestType',
        'aaf_generator_request': 'AAFGeneratorJobType',
        'mov_index_request': 'MOVIndexJobType',
        'mxf_timecode_extraction_request': 'MXFTimecodeExtractionJobType',
        'mxf_op1b_request': 'MXFOp1bJobType',
        'duration_request': 'DurationJobType',
        'complex_request': 'ComplexJobType',
        'nle_request': 'NLEJobType',
        'segmentation_request': 'SegmentationJobType'
    }

    attribute_map = {
        'hash_request': 'hashRequest',
        'shape_deduction_request': 'shapeDeductionRequest',
        'transfer_request': 'transferRequest',
        'xmp_request': 'xmpRequest',
        'queue_request': 'queueRequest',
        'timeline_request': 'timelineRequest',
        'aaf_generator_request': 'aafGeneratorRequest',
        'mov_index_request': 'movIndexRequest',
        'mxf_timecode_extraction_request': 'mxfTimecodeExtractionRequest',
        'mxf_op1b_request': 'mxfOp1bRequest',
        'duration_request': 'durationRequest',
        'complex_request': 'complexRequest',
        'nle_request': 'nleRequest',
        'segmentation_request': 'segmentationRequest'
    }

    def __init__(self, hash_request=None, shape_deduction_request=None, transfer_request=None, xmp_request=None, queue_request=None, timeline_request=None, aaf_generator_request=None, mov_index_request=None, mxf_timecode_extraction_request=None, mxf_op1b_request=None, duration_request=None, complex_request=None, nle_request=None, segmentation_request=None):  # noqa: E501
        """JobRequestChoiceType - a model defined in OpenAPI"""  # noqa: E501

        self._hash_request = None
        self._shape_deduction_request = None
        self._transfer_request = None
        self._xmp_request = None
        self._queue_request = None
        self._timeline_request = None
        self._aaf_generator_request = None
        self._mov_index_request = None
        self._mxf_timecode_extraction_request = None
        self._mxf_op1b_request = None
        self._duration_request = None
        self._complex_request = None
        self._nle_request = None
        self._segmentation_request = None
        self.discriminator = None

        if hash_request is not None:
            self.hash_request = hash_request
        if shape_deduction_request is not None:
            self.shape_deduction_request = shape_deduction_request
        if transfer_request is not None:
            self.transfer_request = transfer_request
        if xmp_request is not None:
            self.xmp_request = xmp_request
        if queue_request is not None:
            self.queue_request = queue_request
        if timeline_request is not None:
            self.timeline_request = timeline_request
        if aaf_generator_request is not None:
            self.aaf_generator_request = aaf_generator_request
        if mov_index_request is not None:
            self.mov_index_request = mov_index_request
        if mxf_timecode_extraction_request is not None:
            self.mxf_timecode_extraction_request = mxf_timecode_extraction_request
        if mxf_op1b_request is not None:
            self.mxf_op1b_request = mxf_op1b_request
        if duration_request is not None:
            self.duration_request = duration_request
        if complex_request is not None:
            self.complex_request = complex_request
        if nle_request is not None:
            self.nle_request = nle_request
        if segmentation_request is not None:
            self.segmentation_request = segmentation_request

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


        :return: The hash_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: HashJobType
        """
        return self._hash_request

    @hash_request.setter
    def hash_request(self, hash_request):
        """Sets the hash_request of this JobRequestChoiceType.


        :param hash_request: The hash_request of this JobRequestChoiceType.  # noqa: E501
        :type: HashJobType
        """

        self._hash_request = hash_request

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


        :return: The shape_deduction_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: ShapeDeductionJobType
        """
        return self._shape_deduction_request

    @shape_deduction_request.setter
    def shape_deduction_request(self, shape_deduction_request):
        """Sets the shape_deduction_request of this JobRequestChoiceType.


        :param shape_deduction_request: The shape_deduction_request of this JobRequestChoiceType.  # noqa: E501
        :type: ShapeDeductionJobType
        """

        self._shape_deduction_request = shape_deduction_request

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


        :return: The transfer_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: TransferJobType
        """
        return self._transfer_request

    @transfer_request.setter
    def transfer_request(self, transfer_request):
        """Sets the transfer_request of this JobRequestChoiceType.


        :param transfer_request: The transfer_request of this JobRequestChoiceType.  # noqa: E501
        :type: TransferJobType
        """

        self._transfer_request = transfer_request

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


        :return: The xmp_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: XMPJobType
        """
        return self._xmp_request

    @xmp_request.setter
    def xmp_request(self, xmp_request):
        """Sets the xmp_request of this JobRequestChoiceType.


        :param xmp_request: The xmp_request of this JobRequestChoiceType.  # noqa: E501
        :type: XMPJobType
        """

        self._xmp_request = xmp_request

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


        :return: The queue_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: QueueJobType
        """
        return self._queue_request

    @queue_request.setter
    def queue_request(self, queue_request):
        """Sets the queue_request of this JobRequestChoiceType.


        :param queue_request: The queue_request of this JobRequestChoiceType.  # noqa: E501
        :type: QueueJobType
        """

        self._queue_request = queue_request

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


        :return: The timeline_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: TimelineJobRequestType
        """
        return self._timeline_request

    @timeline_request.setter
    def timeline_request(self, timeline_request):
        """Sets the timeline_request of this JobRequestChoiceType.


        :param timeline_request: The timeline_request of this JobRequestChoiceType.  # noqa: E501
        :type: TimelineJobRequestType
        """

        self._timeline_request = timeline_request

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


        :return: The aaf_generator_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: AAFGeneratorJobType
        """
        return self._aaf_generator_request

    @aaf_generator_request.setter
    def aaf_generator_request(self, aaf_generator_request):
        """Sets the aaf_generator_request of this JobRequestChoiceType.


        :param aaf_generator_request: The aaf_generator_request of this JobRequestChoiceType.  # noqa: E501
        :type: AAFGeneratorJobType
        """

        self._aaf_generator_request = aaf_generator_request

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


        :return: The mov_index_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: MOVIndexJobType
        """
        return self._mov_index_request

    @mov_index_request.setter
    def mov_index_request(self, mov_index_request):
        """Sets the mov_index_request of this JobRequestChoiceType.


        :param mov_index_request: The mov_index_request of this JobRequestChoiceType.  # noqa: E501
        :type: MOVIndexJobType
        """

        self._mov_index_request = mov_index_request

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


        :return: The mxf_timecode_extraction_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: MXFTimecodeExtractionJobType
        """
        return self._mxf_timecode_extraction_request

    @mxf_timecode_extraction_request.setter
    def mxf_timecode_extraction_request(self, mxf_timecode_extraction_request):
        """Sets the mxf_timecode_extraction_request of this JobRequestChoiceType.


        :param mxf_timecode_extraction_request: The mxf_timecode_extraction_request of this JobRequestChoiceType.  # noqa: E501
        :type: MXFTimecodeExtractionJobType
        """

        self._mxf_timecode_extraction_request = mxf_timecode_extraction_request

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


        :return: The mxf_op1b_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: MXFOp1bJobType
        """
        return self._mxf_op1b_request

    @mxf_op1b_request.setter
    def mxf_op1b_request(self, mxf_op1b_request):
        """Sets the mxf_op1b_request of this JobRequestChoiceType.


        :param mxf_op1b_request: The mxf_op1b_request of this JobRequestChoiceType.  # noqa: E501
        :type: MXFOp1bJobType
        """

        self._mxf_op1b_request = mxf_op1b_request

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


        :return: The duration_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: DurationJobType
        """
        return self._duration_request

    @duration_request.setter
    def duration_request(self, duration_request):
        """Sets the duration_request of this JobRequestChoiceType.


        :param duration_request: The duration_request of this JobRequestChoiceType.  # noqa: E501
        :type: DurationJobType
        """

        self._duration_request = duration_request

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


        :return: The complex_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: ComplexJobType
        """
        return self._complex_request

    @complex_request.setter
    def complex_request(self, complex_request):
        """Sets the complex_request of this JobRequestChoiceType.


        :param complex_request: The complex_request of this JobRequestChoiceType.  # noqa: E501
        :type: ComplexJobType
        """

        self._complex_request = complex_request

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


        :return: The nle_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: NLEJobType
        """
        return self._nle_request

    @nle_request.setter
    def nle_request(self, nle_request):
        """Sets the nle_request of this JobRequestChoiceType.


        :param nle_request: The nle_request of this JobRequestChoiceType.  # noqa: E501
        :type: NLEJobType
        """

        self._nle_request = nle_request

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


        :return: The segmentation_request of this JobRequestChoiceType.  # noqa: E501
        :rtype: SegmentationJobType
        """
        return self._segmentation_request

    @segmentation_request.setter
    def segmentation_request(self, segmentation_request):
        """Sets the segmentation_request of this JobRequestChoiceType.


        :param segmentation_request: The segmentation_request of this JobRequestChoiceType.  # noqa: E501
        :type: SegmentationJobType
        """

        self._segmentation_request = segmentation_request

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

        return self.__dict__ == other.__dict__

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