package com.microsoft.bingads.v10.bulk.entities; import com.microsoft.bingads.internal.functionalinterfaces.Consumer; import com.microsoft.bingads.v10.campaignmanagement.ArrayOfDayTimeTargetBid; import com.microsoft.bingads.v10.campaignmanagement.DayTimeTarget; import com.microsoft.bingads.v10.campaignmanagement.DayTimeTargetBid; import java.util.ArrayList; import java.util.List; /** * This abstract base class provides properties that are shared by all bulk day and time target classes. * * @param <TBid> see {@link BulkDayTimeTargetBid} */ abstract class BulkDayTimeTarget<TBid extends BulkDayTimeTargetBid> extends BulkSubTarget<TBid> { private DayTimeTarget dayTimeTarget; public BulkDayTimeTarget(Class<TBid> classOfTBid) { super(classOfTBid); } /** * Reserved for internal use. */ @Override void reconstructSubTargets() { setDayTimeTarget(new DayTimeTarget()); ArrayOfDayTimeTargetBid bids = new ArrayOfDayTimeTargetBid(); getDayTimeTarget().setBids(bids); for (TBid bid : getBids()) { bids.getDayTimeTargetBids().add(bid.getDayTimeTargetBid()); } } /** * Reserved for internal use. */ @Override List<TBid> convertApiToBulkBids() { List<TBid> bulkBids = new ArrayList<TBid>(); if (getDayTimeTarget() == null || getDayTimeTarget().getBids() == null) { return bulkBids; } for (final DayTimeTargetBid apiBid : getDayTimeTarget().getBids().getDayTimeTargetBids()) { TBid bulkBid = createAndPopulateBid(new Consumer<TBid>() { @Override public void accept(TBid t) { t.setDayTimeTargetBid(apiBid); } }); bulkBids.add(bulkBid); } return bulkBids; } /** * Reserved for internal use. */ @Override void validatePropertiesNotNull() { validatePropertyNotNull(getDayTimeTarget(), "DayTimeTarget"); } /** * Reserved for internal use. */ @Override void validateBidsNotNullOrEmpty() { if (getDayTimeTarget() != null) { validateListNotNullOrEmpty(getDayTimeTarget().getBids(), getDayTimeTarget().getBids().getDayTimeTargetBids(), "DayTimeTarget.Bids"); } } /** * Gets a list of days of the week and time ranges to target with bid adjustments. */ public DayTimeTarget getDayTimeTarget() { return dayTimeTarget; } /** * Sets a list of days of the week and time ranges to target with bid adjustments. */ public void setDayTimeTarget(DayTimeTarget dayTimeTarget) { this.dayTimeTarget = dayTimeTarget; } }