// Copyright 2017 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.api.ads.dfp.jaxws.v201702;
import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlType;
/**
*
* Segmentations used to create products. Within a product template, for each segmentation,
* a product will be created for the combination of all other segments within other segmentations.
* <p>
* For example, a product with 3 segmentations with only 1 segment for each will produce
* {@code 1 x 1 x 1 = 1} product.
* A product with 3 segmentations with 2 segments for each will produce {@code 2 x 2 x 2 = 8}
* products.
*
*
* <p>Java class for ProductSegmentation complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="ProductSegmentation">
* <complexContent>
* <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
* <sequence>
* <element name="geoSegment" type="{https://www.google.com/apis/ads/publisher/v201702}GeoTargeting" minOccurs="0"/>
* <element name="adUnitSegments" type="{https://www.google.com/apis/ads/publisher/v201702}AdUnitTargeting" maxOccurs="unbounded" minOccurs="0"/>
* <element name="placementSegment" type="{https://www.google.com/apis/ads/publisher/v201702}PlacementTargeting" minOccurs="0"/>
* <element name="customTargetingSegment" type="{https://www.google.com/apis/ads/publisher/v201702}CustomCriteria" maxOccurs="unbounded" minOccurs="0"/>
* <element name="userDomainSegment" type="{https://www.google.com/apis/ads/publisher/v201702}UserDomainTargeting" minOccurs="0"/>
* <element name="bandwidthSegment" type="{https://www.google.com/apis/ads/publisher/v201702}BandwidthGroupTargeting" minOccurs="0"/>
* <element name="browserSegment" type="{https://www.google.com/apis/ads/publisher/v201702}BrowserTargeting" minOccurs="0"/>
* <element name="browserLanguageSegment" type="{https://www.google.com/apis/ads/publisher/v201702}BrowserLanguageTargeting" minOccurs="0"/>
* <element name="operatingSystemSegment" type="{https://www.google.com/apis/ads/publisher/v201702}OperatingSystemTargeting" minOccurs="0"/>
* <element name="mobileCarrierSegment" type="{https://www.google.com/apis/ads/publisher/v201702}MobileCarrierTargeting" minOccurs="0"/>
* <element name="deviceCapabilitySegment" type="{https://www.google.com/apis/ads/publisher/v201702}DeviceCapabilityTargeting" minOccurs="0"/>
* <element name="deviceCategorySegment" type="{https://www.google.com/apis/ads/publisher/v201702}DeviceCategoryTargeting" minOccurs="0"/>
* <element name="deviceManufacturerSegment" type="{https://www.google.com/apis/ads/publisher/v201702}DeviceManufacturerTargeting" minOccurs="0"/>
* <element name="mobileDeviceSegment" type="{https://www.google.com/apis/ads/publisher/v201702}MobileDeviceTargeting" minOccurs="0"/>
* <element name="mobileDeviceSubmodelSegment" type="{https://www.google.com/apis/ads/publisher/v201702}MobileDeviceSubmodelTargeting" minOccurs="0"/>
* <element name="videoPositionSegment" type="{https://www.google.com/apis/ads/publisher/v201702}VideoPositionTargeting" minOccurs="0"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ProductSegmentation", propOrder = {
"geoSegment",
"adUnitSegments",
"placementSegment",
"customTargetingSegment",
"userDomainSegment",
"bandwidthSegment",
"browserSegment",
"browserLanguageSegment",
"operatingSystemSegment",
"mobileCarrierSegment",
"deviceCapabilitySegment",
"deviceCategorySegment",
"deviceManufacturerSegment",
"mobileDeviceSegment",
"mobileDeviceSubmodelSegment",
"videoPositionSegment"
})
public class ProductSegmentation {
protected GeoTargeting geoSegment;
protected List<AdUnitTargeting> adUnitSegments;
protected PlacementTargeting placementSegment;
protected List<CustomCriteria> customTargetingSegment;
protected UserDomainTargeting userDomainSegment;
protected BandwidthGroupTargeting bandwidthSegment;
protected BrowserTargeting browserSegment;
protected BrowserLanguageTargeting browserLanguageSegment;
protected OperatingSystemTargeting operatingSystemSegment;
protected MobileCarrierTargeting mobileCarrierSegment;
protected DeviceCapabilityTargeting deviceCapabilitySegment;
protected DeviceCategoryTargeting deviceCategorySegment;
protected DeviceManufacturerTargeting deviceManufacturerSegment;
protected MobileDeviceTargeting mobileDeviceSegment;
protected MobileDeviceSubmodelTargeting mobileDeviceSubmodelSegment;
protected VideoPositionTargeting videoPositionSegment;
/**
* Gets the value of the geoSegment property.
*
* @return
* possible object is
* {@link GeoTargeting }
*
*/
public GeoTargeting getGeoSegment() {
return geoSegment;
}
/**
* Sets the value of the geoSegment property.
*
* @param value
* allowed object is
* {@link GeoTargeting }
*
*/
public void setGeoSegment(GeoTargeting value) {
this.geoSegment = value;
}
/**
* Gets the value of the adUnitSegments property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the adUnitSegments property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getAdUnitSegments().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link AdUnitTargeting }
*
*
*/
public List<AdUnitTargeting> getAdUnitSegments() {
if (adUnitSegments == null) {
adUnitSegments = new ArrayList<AdUnitTargeting>();
}
return this.adUnitSegments;
}
/**
* Gets the value of the placementSegment property.
*
* @return
* possible object is
* {@link PlacementTargeting }
*
*/
public PlacementTargeting getPlacementSegment() {
return placementSegment;
}
/**
* Sets the value of the placementSegment property.
*
* @param value
* allowed object is
* {@link PlacementTargeting }
*
*/
public void setPlacementSegment(PlacementTargeting value) {
this.placementSegment = value;
}
/**
* Gets the value of the customTargetingSegment property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the customTargetingSegment property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getCustomTargetingSegment().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link CustomCriteria }
*
*
*/
public List<CustomCriteria> getCustomTargetingSegment() {
if (customTargetingSegment == null) {
customTargetingSegment = new ArrayList<CustomCriteria>();
}
return this.customTargetingSegment;
}
/**
* Gets the value of the userDomainSegment property.
*
* @return
* possible object is
* {@link UserDomainTargeting }
*
*/
public UserDomainTargeting getUserDomainSegment() {
return userDomainSegment;
}
/**
* Sets the value of the userDomainSegment property.
*
* @param value
* allowed object is
* {@link UserDomainTargeting }
*
*/
public void setUserDomainSegment(UserDomainTargeting value) {
this.userDomainSegment = value;
}
/**
* Gets the value of the bandwidthSegment property.
*
* @return
* possible object is
* {@link BandwidthGroupTargeting }
*
*/
public BandwidthGroupTargeting getBandwidthSegment() {
return bandwidthSegment;
}
/**
* Sets the value of the bandwidthSegment property.
*
* @param value
* allowed object is
* {@link BandwidthGroupTargeting }
*
*/
public void setBandwidthSegment(BandwidthGroupTargeting value) {
this.bandwidthSegment = value;
}
/**
* Gets the value of the browserSegment property.
*
* @return
* possible object is
* {@link BrowserTargeting }
*
*/
public BrowserTargeting getBrowserSegment() {
return browserSegment;
}
/**
* Sets the value of the browserSegment property.
*
* @param value
* allowed object is
* {@link BrowserTargeting }
*
*/
public void setBrowserSegment(BrowserTargeting value) {
this.browserSegment = value;
}
/**
* Gets the value of the browserLanguageSegment property.
*
* @return
* possible object is
* {@link BrowserLanguageTargeting }
*
*/
public BrowserLanguageTargeting getBrowserLanguageSegment() {
return browserLanguageSegment;
}
/**
* Sets the value of the browserLanguageSegment property.
*
* @param value
* allowed object is
* {@link BrowserLanguageTargeting }
*
*/
public void setBrowserLanguageSegment(BrowserLanguageTargeting value) {
this.browserLanguageSegment = value;
}
/**
* Gets the value of the operatingSystemSegment property.
*
* @return
* possible object is
* {@link OperatingSystemTargeting }
*
*/
public OperatingSystemTargeting getOperatingSystemSegment() {
return operatingSystemSegment;
}
/**
* Sets the value of the operatingSystemSegment property.
*
* @param value
* allowed object is
* {@link OperatingSystemTargeting }
*
*/
public void setOperatingSystemSegment(OperatingSystemTargeting value) {
this.operatingSystemSegment = value;
}
/**
* Gets the value of the mobileCarrierSegment property.
*
* @return
* possible object is
* {@link MobileCarrierTargeting }
*
*/
public MobileCarrierTargeting getMobileCarrierSegment() {
return mobileCarrierSegment;
}
/**
* Sets the value of the mobileCarrierSegment property.
*
* @param value
* allowed object is
* {@link MobileCarrierTargeting }
*
*/
public void setMobileCarrierSegment(MobileCarrierTargeting value) {
this.mobileCarrierSegment = value;
}
/**
* Gets the value of the deviceCapabilitySegment property.
*
* @return
* possible object is
* {@link DeviceCapabilityTargeting }
*
*/
public DeviceCapabilityTargeting getDeviceCapabilitySegment() {
return deviceCapabilitySegment;
}
/**
* Sets the value of the deviceCapabilitySegment property.
*
* @param value
* allowed object is
* {@link DeviceCapabilityTargeting }
*
*/
public void setDeviceCapabilitySegment(DeviceCapabilityTargeting value) {
this.deviceCapabilitySegment = value;
}
/**
* Gets the value of the deviceCategorySegment property.
*
* @return
* possible object is
* {@link DeviceCategoryTargeting }
*
*/
public DeviceCategoryTargeting getDeviceCategorySegment() {
return deviceCategorySegment;
}
/**
* Sets the value of the deviceCategorySegment property.
*
* @param value
* allowed object is
* {@link DeviceCategoryTargeting }
*
*/
public void setDeviceCategorySegment(DeviceCategoryTargeting value) {
this.deviceCategorySegment = value;
}
/**
* Gets the value of the deviceManufacturerSegment property.
*
* @return
* possible object is
* {@link DeviceManufacturerTargeting }
*
*/
public DeviceManufacturerTargeting getDeviceManufacturerSegment() {
return deviceManufacturerSegment;
}
/**
* Sets the value of the deviceManufacturerSegment property.
*
* @param value
* allowed object is
* {@link DeviceManufacturerTargeting }
*
*/
public void setDeviceManufacturerSegment(DeviceManufacturerTargeting value) {
this.deviceManufacturerSegment = value;
}
/**
* Gets the value of the mobileDeviceSegment property.
*
* @return
* possible object is
* {@link MobileDeviceTargeting }
*
*/
public MobileDeviceTargeting getMobileDeviceSegment() {
return mobileDeviceSegment;
}
/**
* Sets the value of the mobileDeviceSegment property.
*
* @param value
* allowed object is
* {@link MobileDeviceTargeting }
*
*/
public void setMobileDeviceSegment(MobileDeviceTargeting value) {
this.mobileDeviceSegment = value;
}
/**
* Gets the value of the mobileDeviceSubmodelSegment property.
*
* @return
* possible object is
* {@link MobileDeviceSubmodelTargeting }
*
*/
public MobileDeviceSubmodelTargeting getMobileDeviceSubmodelSegment() {
return mobileDeviceSubmodelSegment;
}
/**
* Sets the value of the mobileDeviceSubmodelSegment property.
*
* @param value
* allowed object is
* {@link MobileDeviceSubmodelTargeting }
*
*/
public void setMobileDeviceSubmodelSegment(MobileDeviceSubmodelTargeting value) {
this.mobileDeviceSubmodelSegment = value;
}
/**
* Gets the value of the videoPositionSegment property.
*
* @return
* possible object is
* {@link VideoPositionTargeting }
*
*/
public VideoPositionTargeting getVideoPositionSegment() {
return videoPositionSegment;
}
/**
* Sets the value of the videoPositionSegment property.
*
* @param value
* allowed object is
* {@link VideoPositionTargeting }
*
*/
public void setVideoPositionSegment(VideoPositionTargeting value) {
this.videoPositionSegment = value;
}
}