# coding: utf-8

"""
    Yahoo!広告 ディスプレイ広告 API リファレンス / Yahoo! JAPAN Ads Display Ads API Reference

    <div lang=\"ja\">Yahoo!広告 ディスプレイ広告 APIのWebサービスについて説明します。</div> <div lang=\"en\">Display Ads API Web Services supported in Yahoo! JAPAN Ads API.</div> <div><a target=\"_blank\" href=\"https://github.com/yahoojp-marketing/ads-display-api-documents/blob/master/design/v12/Route.yaml\">OpenAPI Specification</a></div> <div lang=\"ja\"><a target=\"_blank\" href=\"https://github.com/yahoojp-marketing/ads-display-api-documents/blob/master/bestpractice/ja\">Best Practice</a></div> <div lang=\"en\"><a target=\"_blank\" href=\"https://github.com/yahoojp-marketing/ads-display-api-documents/blob/master/bestpractice/en\">Best Practice</a></div>   # noqa: E501

    The version of the OpenAPI document: v12
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six

from yahoo_display_test.configuration import Configuration


class GuaranteedAdGroupAdServiceAd(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 = {
        'ad_type': 'GuaranteedAdGroupAdServiceAdType',
        'main_media_format': 'GuaranteedAdGroupAdServiceMainMediaFormat',
        'banner_ad': 'GuaranteedAdGroupAdServiceBannerAd',
        'carousel_ad': 'GuaranteedAdGroupAdServiceCarouselAd',
        'instream_ad': 'GuaranteedAdGroupAdServiceInstreamAd',
        'brand_panel_quintie': 'GuaranteedAdGroupAdServiceBrandPanelQuintie',
        'brand_panel_panorama': 'GuaranteedAdGroupAdServiceBrandPanelPanorama',
        'brand_panel_panorama_panel_switch': 'GuaranteedAdGroupAdServiceBrandPanelPanoramaPanelSwitchAd',
        'top_impact_square': 'GuaranteedAdGroupAdServiceTopImpactSquare',
        'top_impact_quintie': 'GuaranteedAdGroupAdServiceTopImpactQuintie',
        'top_impact_theater': 'GuaranteedAdGroupAdServiceTopImpactTheater',
        'top_impact_prime_display_double': 'GuaranteedAdGroupAdServiceTopImpactPrimeDisplayDouble',
        'top_impact_panorama': 'GuaranteedAdGroupAdServiceTopImpactPanorama',
        'top_impact_panorama_side_vision': 'GuaranteedAdGroupAdServiceTopImpactPanoramaSideVision',
        'top_impact_panorama_side_switch': 'GuaranteedAdGroupAdServiceTopImpactPanoramaSideSwitch',
        'top_impact_panorama_panel_switch': 'GuaranteedAdGroupAdServiceTopImpactPanoramaPanelSwitchAd',
        'top_page_topics_pr': 'GuaranteedAdGroupAdServiceTopPageTopicsPRAd'
    }

    attribute_map = {
        'ad_type': 'adType',
        'main_media_format': 'mainMediaFormat',
        'banner_ad': 'bannerAd',
        'carousel_ad': 'carouselAd',
        'instream_ad': 'instreamAd',
        'brand_panel_quintie': 'brandPanelQuintie',
        'brand_panel_panorama': 'brandPanelPanorama',
        'brand_panel_panorama_panel_switch': 'brandPanelPanoramaPanelSwitch',
        'top_impact_square': 'topImpactSquare',
        'top_impact_quintie': 'topImpactQuintie',
        'top_impact_theater': 'topImpactTheater',
        'top_impact_prime_display_double': 'topImpactPrimeDisplayDouble',
        'top_impact_panorama': 'topImpactPanorama',
        'top_impact_panorama_side_vision': 'topImpactPanoramaSideVision',
        'top_impact_panorama_side_switch': 'topImpactPanoramaSideSwitch',
        'top_impact_panorama_panel_switch': 'topImpactPanoramaPanelSwitch',
        'top_page_topics_pr': 'topPageTopicsPR'
    }

    def __init__(self, ad_type=None, main_media_format=None, banner_ad=None, carousel_ad=None, instream_ad=None, brand_panel_quintie=None, brand_panel_panorama=None, brand_panel_panorama_panel_switch=None, top_impact_square=None, top_impact_quintie=None, top_impact_theater=None, top_impact_prime_display_double=None, top_impact_panorama=None, top_impact_panorama_side_vision=None, top_impact_panorama_side_switch=None, top_impact_panorama_panel_switch=None, top_page_topics_pr=None, local_vars_configuration=None):  # noqa: E501
        """GuaranteedAdGroupAdServiceAd - a model defined in OpenAPI"""  # noqa: E501
        if local_vars_configuration is None:
            local_vars_configuration = Configuration()
        self.local_vars_configuration = local_vars_configuration

        self._ad_type = None
        self._main_media_format = None
        self._banner_ad = None
        self._carousel_ad = None
        self._instream_ad = None
        self._brand_panel_quintie = None
        self._brand_panel_panorama = None
        self._brand_panel_panorama_panel_switch = None
        self._top_impact_square = None
        self._top_impact_quintie = None
        self._top_impact_theater = None
        self._top_impact_prime_display_double = None
        self._top_impact_panorama = None
        self._top_impact_panorama_side_vision = None
        self._top_impact_panorama_side_switch = None
        self._top_impact_panorama_panel_switch = None
        self._top_page_topics_pr = None
        self.discriminator = None

        self.ad_type = ad_type
        self.main_media_format = main_media_format
        self.banner_ad = banner_ad
        self.carousel_ad = carousel_ad
        self.instream_ad = instream_ad
        self.brand_panel_quintie = brand_panel_quintie
        self.brand_panel_panorama = brand_panel_panorama
        self.brand_panel_panorama_panel_switch = brand_panel_panorama_panel_switch
        self.top_impact_square = top_impact_square
        self.top_impact_quintie = top_impact_quintie
        self.top_impact_theater = top_impact_theater
        self.top_impact_prime_display_double = top_impact_prime_display_double
        self.top_impact_panorama = top_impact_panorama
        self.top_impact_panorama_side_vision = top_impact_panorama_side_vision
        self.top_impact_panorama_side_switch = top_impact_panorama_side_switch
        self.top_impact_panorama_panel_switch = top_impact_panorama_panel_switch
        self.top_page_topics_pr = top_page_topics_pr

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


        :return: The ad_type of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceAdType
        """
        return self._ad_type

    @ad_type.setter
    def ad_type(self, ad_type):
        """Sets the ad_type of this GuaranteedAdGroupAdServiceAd.


        :param ad_type: The ad_type of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceAdType
        """

        self._ad_type = ad_type

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


        :return: The main_media_format of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceMainMediaFormat
        """
        return self._main_media_format

    @main_media_format.setter
    def main_media_format(self, main_media_format):
        """Sets the main_media_format of this GuaranteedAdGroupAdServiceAd.


        :param main_media_format: The main_media_format of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceMainMediaFormat
        """

        self._main_media_format = main_media_format

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


        :return: The banner_ad of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceBannerAd
        """
        return self._banner_ad

    @banner_ad.setter
    def banner_ad(self, banner_ad):
        """Sets the banner_ad of this GuaranteedAdGroupAdServiceAd.


        :param banner_ad: The banner_ad of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceBannerAd
        """

        self._banner_ad = banner_ad

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


        :return: The carousel_ad of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceCarouselAd
        """
        return self._carousel_ad

    @carousel_ad.setter
    def carousel_ad(self, carousel_ad):
        """Sets the carousel_ad of this GuaranteedAdGroupAdServiceAd.


        :param carousel_ad: The carousel_ad of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceCarouselAd
        """

        self._carousel_ad = carousel_ad

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


        :return: The instream_ad of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceInstreamAd
        """
        return self._instream_ad

    @instream_ad.setter
    def instream_ad(self, instream_ad):
        """Sets the instream_ad of this GuaranteedAdGroupAdServiceAd.


        :param instream_ad: The instream_ad of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceInstreamAd
        """

        self._instream_ad = instream_ad

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


        :return: The brand_panel_quintie of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceBrandPanelQuintie
        """
        return self._brand_panel_quintie

    @brand_panel_quintie.setter
    def brand_panel_quintie(self, brand_panel_quintie):
        """Sets the brand_panel_quintie of this GuaranteedAdGroupAdServiceAd.


        :param brand_panel_quintie: The brand_panel_quintie of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceBrandPanelQuintie
        """

        self._brand_panel_quintie = brand_panel_quintie

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


        :return: The brand_panel_panorama of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceBrandPanelPanorama
        """
        return self._brand_panel_panorama

    @brand_panel_panorama.setter
    def brand_panel_panorama(self, brand_panel_panorama):
        """Sets the brand_panel_panorama of this GuaranteedAdGroupAdServiceAd.


        :param brand_panel_panorama: The brand_panel_panorama of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceBrandPanelPanorama
        """

        self._brand_panel_panorama = brand_panel_panorama

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


        :return: The brand_panel_panorama_panel_switch of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceBrandPanelPanoramaPanelSwitchAd
        """
        return self._brand_panel_panorama_panel_switch

    @brand_panel_panorama_panel_switch.setter
    def brand_panel_panorama_panel_switch(self, brand_panel_panorama_panel_switch):
        """Sets the brand_panel_panorama_panel_switch of this GuaranteedAdGroupAdServiceAd.


        :param brand_panel_panorama_panel_switch: The brand_panel_panorama_panel_switch of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceBrandPanelPanoramaPanelSwitchAd
        """

        self._brand_panel_panorama_panel_switch = brand_panel_panorama_panel_switch

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


        :return: The top_impact_square of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceTopImpactSquare
        """
        return self._top_impact_square

    @top_impact_square.setter
    def top_impact_square(self, top_impact_square):
        """Sets the top_impact_square of this GuaranteedAdGroupAdServiceAd.


        :param top_impact_square: The top_impact_square of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceTopImpactSquare
        """

        self._top_impact_square = top_impact_square

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


        :return: The top_impact_quintie of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceTopImpactQuintie
        """
        return self._top_impact_quintie

    @top_impact_quintie.setter
    def top_impact_quintie(self, top_impact_quintie):
        """Sets the top_impact_quintie of this GuaranteedAdGroupAdServiceAd.


        :param top_impact_quintie: The top_impact_quintie of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceTopImpactQuintie
        """

        self._top_impact_quintie = top_impact_quintie

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


        :return: The top_impact_theater of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceTopImpactTheater
        """
        return self._top_impact_theater

    @top_impact_theater.setter
    def top_impact_theater(self, top_impact_theater):
        """Sets the top_impact_theater of this GuaranteedAdGroupAdServiceAd.


        :param top_impact_theater: The top_impact_theater of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceTopImpactTheater
        """

        self._top_impact_theater = top_impact_theater

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


        :return: The top_impact_prime_display_double of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceTopImpactPrimeDisplayDouble
        """
        return self._top_impact_prime_display_double

    @top_impact_prime_display_double.setter
    def top_impact_prime_display_double(self, top_impact_prime_display_double):
        """Sets the top_impact_prime_display_double of this GuaranteedAdGroupAdServiceAd.


        :param top_impact_prime_display_double: The top_impact_prime_display_double of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceTopImpactPrimeDisplayDouble
        """

        self._top_impact_prime_display_double = top_impact_prime_display_double

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


        :return: The top_impact_panorama of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceTopImpactPanorama
        """
        return self._top_impact_panorama

    @top_impact_panorama.setter
    def top_impact_panorama(self, top_impact_panorama):
        """Sets the top_impact_panorama of this GuaranteedAdGroupAdServiceAd.


        :param top_impact_panorama: The top_impact_panorama of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceTopImpactPanorama
        """

        self._top_impact_panorama = top_impact_panorama

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


        :return: The top_impact_panorama_side_vision of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceTopImpactPanoramaSideVision
        """
        return self._top_impact_panorama_side_vision

    @top_impact_panorama_side_vision.setter
    def top_impact_panorama_side_vision(self, top_impact_panorama_side_vision):
        """Sets the top_impact_panorama_side_vision of this GuaranteedAdGroupAdServiceAd.


        :param top_impact_panorama_side_vision: The top_impact_panorama_side_vision of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceTopImpactPanoramaSideVision
        """

        self._top_impact_panorama_side_vision = top_impact_panorama_side_vision

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


        :return: The top_impact_panorama_side_switch of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceTopImpactPanoramaSideSwitch
        """
        return self._top_impact_panorama_side_switch

    @top_impact_panorama_side_switch.setter
    def top_impact_panorama_side_switch(self, top_impact_panorama_side_switch):
        """Sets the top_impact_panorama_side_switch of this GuaranteedAdGroupAdServiceAd.


        :param top_impact_panorama_side_switch: The top_impact_panorama_side_switch of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceTopImpactPanoramaSideSwitch
        """

        self._top_impact_panorama_side_switch = top_impact_panorama_side_switch

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


        :return: The top_impact_panorama_panel_switch of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceTopImpactPanoramaPanelSwitchAd
        """
        return self._top_impact_panorama_panel_switch

    @top_impact_panorama_panel_switch.setter
    def top_impact_panorama_panel_switch(self, top_impact_panorama_panel_switch):
        """Sets the top_impact_panorama_panel_switch of this GuaranteedAdGroupAdServiceAd.


        :param top_impact_panorama_panel_switch: The top_impact_panorama_panel_switch of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceTopImpactPanoramaPanelSwitchAd
        """

        self._top_impact_panorama_panel_switch = top_impact_panorama_panel_switch

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


        :return: The top_page_topics_pr of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :rtype: GuaranteedAdGroupAdServiceTopPageTopicsPRAd
        """
        return self._top_page_topics_pr

    @top_page_topics_pr.setter
    def top_page_topics_pr(self, top_page_topics_pr):
        """Sets the top_page_topics_pr of this GuaranteedAdGroupAdServiceAd.


        :param top_page_topics_pr: The top_page_topics_pr of this GuaranteedAdGroupAdServiceAd.  # noqa: E501
        :type: GuaranteedAdGroupAdServiceTopPageTopicsPRAd
        """

        self._top_page_topics_pr = top_page_topics_pr

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

        return self.to_dict() == other.to_dict()

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

        return self.to_dict() != other.to_dict()
