package com.microsoft.bingads.v10.bulk.entities;
import com.microsoft.bingads.internal.functionalinterfaces.Consumer;
import com.microsoft.bingads.v10.campaignmanagement.ArrayOfGenderTargetBid;
import com.microsoft.bingads.v10.campaignmanagement.GenderTarget;
import com.microsoft.bingads.v10.campaignmanagement.GenderTargetBid;
import java.util.ArrayList;
import java.util.List;
/**
* This abstract base class provides properties that are shared by all bulk gender target classes.
*
* @param <TBid> see {@link BulkGenderTargetBid}
*/
abstract class BulkGenderTarget<TBid extends BulkGenderTargetBid> extends BulkSubTarget<TBid> {
private GenderTarget genderTarget;
public BulkGenderTarget(Class<TBid> classOfTBid) {
super(classOfTBid);
}
/**
* Reserved for internal use.
*/
@Override
void reconstructSubTargets() {
setGenderTarget(new GenderTarget());
ArrayOfGenderTargetBid bids = new ArrayOfGenderTargetBid();
getGenderTarget().setBids(bids);
for (TBid bid : getBids()) {
bids.getGenderTargetBids().add(bid.getGenderTargetBid());
}
}
/**
* Reserved for internal use.
*/
@Override
List<TBid> convertApiToBulkBids() {
List<TBid> bulkBids = new ArrayList<TBid>();
if (getGenderTarget() == null || getGenderTarget().getBids() == null) {
return bulkBids;
}
for (final GenderTargetBid apiBid : getGenderTarget().getBids().getGenderTargetBids()) {
TBid bulkBid = createAndPopulateBid(new Consumer<TBid>() {
@Override
public void accept(TBid t) {
t.setGenderTargetBid(apiBid);
}
});
bulkBids.add(bulkBid);
}
return bulkBids;
}
/**
* Reserved for internal use.
*/
@Override
void validatePropertiesNotNull() {
validatePropertyNotNull(getGenderTarget(), "GenderTarget");
}
/**
* Reserved for internal use.
*/
@Override
void validateBidsNotNullOrEmpty() {
if (getGenderTarget() != null) {
validateListNotNullOrEmpty(getGenderTarget().getBids(), getGenderTarget().getBids().getGenderTargetBids(), "GenderTarget.Bids");
}
}
/**
* Gets a list of genders to target with bid adjustments.
*/
public GenderTarget getGenderTarget() {
return genderTarget;
}
/**
* Sets a list of genders to target with bid adjustments.
*/
public void setGenderTarget(GenderTarget ageTarget) {
this.genderTarget = ageTarget;
}
}