/** * Returns a new AdGroupCriterion configured for an ADD operation. * * @param node the node whose criterion should be added * @param adGroupId the ad group ID of the criterion * @param biddingConfig the bidding strategy configuration of the criterion */ static AdGroupCriterion createCriterionForAdd( ProductPartitionNode node, long adGroupId, BiddingStrategyConfiguration biddingConfig) { Preconditions.checkNotNull(node, "Null node"); Preconditions.checkNotNull(biddingConfig, "Null bidding configuration"); AdGroupCriterion adGroupCriterion; if (node.isExcludedUnit()) { adGroupCriterion = new NegativeAdGroupCriterion(); } else { adGroupCriterion = new BiddableAdGroupCriterion(); if (node.isUnit() && node.getBid() != null) { Money bidMoney = new Money(); bidMoney.setMicroAmount(node.getBid()); CpcBid cpcBid = new CpcBid(); cpcBid.setBid(bidMoney); cpcBid.setCpcBidSource(BidSource.CRITERION); biddingConfig.setBids(new Bids[] {cpcBid}); ((BiddableAdGroupCriterion) adGroupCriterion) .setBiddingStrategyConfiguration(biddingConfig); } } adGroupCriterion.setAdGroupId(adGroupId); ProductPartition partition = new ProductPartition(); partition.setId(node.getProductPartitionId()); if (node.getParent() != null) { partition.setParentCriterionId(node.getParent().getProductPartitionId()); } partition.setCaseValue(node.getDimension()); partition.setPartitionType( node.isUnit() ? ProductPartitionType.UNIT : ProductPartitionType.SUBDIVISION); adGroupCriterion.setCriterion(partition); return adGroupCriterion; }
/** * Returns a new AdGroupCriterion configured for a REMOVE operation. * * @param node the node whose criterion should be removed * @param adGroupId the ad group ID of the criterion */ static AdGroupCriterion createCriterionForRemove(ProductPartitionNode node, long adGroupId) { Preconditions.checkNotNull(node, "Null node"); AdGroupCriterion adGroupCriterion = new AdGroupCriterion(); adGroupCriterion.setAdGroupId(adGroupId); adGroupCriterion.setCriterion(new ProductPartition()); adGroupCriterion.getCriterion().setId(node.getProductPartitionId()); return adGroupCriterion; }