# 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 StatsServiceTarget(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_schedule_target': 'StatsServiceAdScheduleTarget',
        'age_target': 'StatsServiceAgeTarget',
        'app_target': 'StatsServiceAppTarget',
        'audience_category_target': 'StatsServiceAudienceCategoryTarget',
        'device_target': 'StatsServiceDeviceTarget',
        'gender_target': 'StatsServiceGenderTarget',
        'geo_target': 'StatsServiceGeoTarget',
        'os_target': 'StatsServiceOsTarget',
        'os_version_target': 'StatsServiceOsVersionTarget',
        'placement_target': 'StatsServicePlacementTarget',
        'search_target': 'StatsServiceSearchTarget',
        'site_category_target': 'StatsServiceSiteCategoryTarget',
        'audience_list_target': 'StatsServiceAudienceListTarget',
        'placement_category_detail_target': 'StatsServicePlacementCategoryDetailTarget',
        'contents_target': 'StatsServiceContentsTarget',
        'target_id': 'str',
        'target_setting': 'StatsServiceTargetSetting',
        'target_type': 'StatsServiceTargetType'
    }

    attribute_map = {
        'ad_schedule_target': 'adScheduleTarget',
        'age_target': 'ageTarget',
        'app_target': 'appTarget',
        'audience_category_target': 'audienceCategoryTarget',
        'device_target': 'deviceTarget',
        'gender_target': 'genderTarget',
        'geo_target': 'geoTarget',
        'os_target': 'osTarget',
        'os_version_target': 'osVersionTarget',
        'placement_target': 'placementTarget',
        'search_target': 'searchTarget',
        'site_category_target': 'siteCategoryTarget',
        'audience_list_target': 'audienceListTarget',
        'placement_category_detail_target': 'placementCategoryDetailTarget',
        'contents_target': 'contentsTarget',
        'target_id': 'targetId',
        'target_setting': 'targetSetting',
        'target_type': 'targetType'
    }

    def __init__(self, ad_schedule_target=None, age_target=None, app_target=None, audience_category_target=None, device_target=None, gender_target=None, geo_target=None, os_target=None, os_version_target=None, placement_target=None, search_target=None, site_category_target=None, audience_list_target=None, placement_category_detail_target=None, contents_target=None, target_id=None, target_setting=None, target_type=None, local_vars_configuration=None):  # noqa: E501
        """StatsServiceTarget - 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_schedule_target = None
        self._age_target = None
        self._app_target = None
        self._audience_category_target = None
        self._device_target = None
        self._gender_target = None
        self._geo_target = None
        self._os_target = None
        self._os_version_target = None
        self._placement_target = None
        self._search_target = None
        self._site_category_target = None
        self._audience_list_target = None
        self._placement_category_detail_target = None
        self._contents_target = None
        self._target_id = None
        self._target_setting = None
        self._target_type = None
        self.discriminator = None

        self.ad_schedule_target = ad_schedule_target
        self.age_target = age_target
        self.app_target = app_target
        self.audience_category_target = audience_category_target
        self.device_target = device_target
        self.gender_target = gender_target
        self.geo_target = geo_target
        self.os_target = os_target
        self.os_version_target = os_version_target
        self.placement_target = placement_target
        self.search_target = search_target
        self.site_category_target = site_category_target
        self.audience_list_target = audience_list_target
        self.placement_category_detail_target = placement_category_detail_target
        self.contents_target = contents_target
        self.target_id = target_id
        self.target_setting = target_setting
        self.target_type = target_type

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


        :return: The ad_schedule_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceAdScheduleTarget
        """
        return self._ad_schedule_target

    @ad_schedule_target.setter
    def ad_schedule_target(self, ad_schedule_target):
        """Sets the ad_schedule_target of this StatsServiceTarget.


        :param ad_schedule_target: The ad_schedule_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceAdScheduleTarget
        """

        self._ad_schedule_target = ad_schedule_target

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


        :return: The age_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceAgeTarget
        """
        return self._age_target

    @age_target.setter
    def age_target(self, age_target):
        """Sets the age_target of this StatsServiceTarget.


        :param age_target: The age_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceAgeTarget
        """

        self._age_target = age_target

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


        :return: The app_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceAppTarget
        """
        return self._app_target

    @app_target.setter
    def app_target(self, app_target):
        """Sets the app_target of this StatsServiceTarget.


        :param app_target: The app_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceAppTarget
        """

        self._app_target = app_target

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


        :return: The audience_category_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceAudienceCategoryTarget
        """
        return self._audience_category_target

    @audience_category_target.setter
    def audience_category_target(self, audience_category_target):
        """Sets the audience_category_target of this StatsServiceTarget.


        :param audience_category_target: The audience_category_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceAudienceCategoryTarget
        """

        self._audience_category_target = audience_category_target

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


        :return: The device_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceDeviceTarget
        """
        return self._device_target

    @device_target.setter
    def device_target(self, device_target):
        """Sets the device_target of this StatsServiceTarget.


        :param device_target: The device_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceDeviceTarget
        """

        self._device_target = device_target

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


        :return: The gender_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceGenderTarget
        """
        return self._gender_target

    @gender_target.setter
    def gender_target(self, gender_target):
        """Sets the gender_target of this StatsServiceTarget.


        :param gender_target: The gender_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceGenderTarget
        """

        self._gender_target = gender_target

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


        :return: The geo_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceGeoTarget
        """
        return self._geo_target

    @geo_target.setter
    def geo_target(self, geo_target):
        """Sets the geo_target of this StatsServiceTarget.


        :param geo_target: The geo_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceGeoTarget
        """

        self._geo_target = geo_target

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


        :return: The os_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceOsTarget
        """
        return self._os_target

    @os_target.setter
    def os_target(self, os_target):
        """Sets the os_target of this StatsServiceTarget.


        :param os_target: The os_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceOsTarget
        """

        self._os_target = os_target

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


        :return: The os_version_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceOsVersionTarget
        """
        return self._os_version_target

    @os_version_target.setter
    def os_version_target(self, os_version_target):
        """Sets the os_version_target of this StatsServiceTarget.


        :param os_version_target: The os_version_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceOsVersionTarget
        """

        self._os_version_target = os_version_target

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


        :return: The placement_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServicePlacementTarget
        """
        return self._placement_target

    @placement_target.setter
    def placement_target(self, placement_target):
        """Sets the placement_target of this StatsServiceTarget.


        :param placement_target: The placement_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServicePlacementTarget
        """

        self._placement_target = placement_target

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


        :return: The search_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceSearchTarget
        """
        return self._search_target

    @search_target.setter
    def search_target(self, search_target):
        """Sets the search_target of this StatsServiceTarget.


        :param search_target: The search_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceSearchTarget
        """

        self._search_target = search_target

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


        :return: The site_category_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceSiteCategoryTarget
        """
        return self._site_category_target

    @site_category_target.setter
    def site_category_target(self, site_category_target):
        """Sets the site_category_target of this StatsServiceTarget.


        :param site_category_target: The site_category_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceSiteCategoryTarget
        """

        self._site_category_target = site_category_target

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


        :return: The audience_list_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceAudienceListTarget
        """
        return self._audience_list_target

    @audience_list_target.setter
    def audience_list_target(self, audience_list_target):
        """Sets the audience_list_target of this StatsServiceTarget.


        :param audience_list_target: The audience_list_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceAudienceListTarget
        """

        self._audience_list_target = audience_list_target

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


        :return: The placement_category_detail_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServicePlacementCategoryDetailTarget
        """
        return self._placement_category_detail_target

    @placement_category_detail_target.setter
    def placement_category_detail_target(self, placement_category_detail_target):
        """Sets the placement_category_detail_target of this StatsServiceTarget.


        :param placement_category_detail_target: The placement_category_detail_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServicePlacementCategoryDetailTarget
        """

        self._placement_category_detail_target = placement_category_detail_target

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


        :return: The contents_target of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceContentsTarget
        """
        return self._contents_target

    @contents_target.setter
    def contents_target(self, contents_target):
        """Sets the contents_target of this StatsServiceTarget.


        :param contents_target: The contents_target of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceContentsTarget
        """

        self._contents_target = contents_target

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

        <div lang=\"ja\">ターゲットID</div> <div lang=\"en\">StatsServiceTarget ID</div>   # noqa: E501

        :return: The target_id of this StatsServiceTarget.  # noqa: E501
        :rtype: str
        """
        return self._target_id

    @target_id.setter
    def target_id(self, target_id):
        """Sets the target_id of this StatsServiceTarget.

        <div lang=\"ja\">ターゲットID</div> <div lang=\"en\">StatsServiceTarget ID</div>   # noqa: E501

        :param target_id: The target_id of this StatsServiceTarget.  # noqa: E501
        :type: str
        """

        self._target_id = target_id

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


        :return: The target_setting of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceTargetSetting
        """
        return self._target_setting

    @target_setting.setter
    def target_setting(self, target_setting):
        """Sets the target_setting of this StatsServiceTarget.


        :param target_setting: The target_setting of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceTargetSetting
        """

        self._target_setting = target_setting

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


        :return: The target_type of this StatsServiceTarget.  # noqa: E501
        :rtype: StatsServiceTargetType
        """
        return self._target_type

    @target_type.setter
    def target_type(self, target_type):
        """Sets the target_type of this StatsServiceTarget.


        :param target_type: The target_type of this StatsServiceTarget.  # noqa: E501
        :type: StatsServiceTargetType
        """

        self._target_type = target_type

    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, StatsServiceTarget):
            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, StatsServiceTarget):
            return True

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