Package com.google.api.adwords.v201008

Source Code of com.google.api.adwords.v201008.TestUtils

// Copyright 2010 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.adwords.v201008;

import com.google.api.adwords.lib.AdWordsService;
import com.google.api.adwords.lib.AdWordsUser;
import com.google.api.adwords.v201008.cm.AdExtension;
import com.google.api.adwords.v201008.cm.AdExtensionOverride;
import com.google.api.adwords.v201008.cm.AdExtensionOverrideOperation;
import com.google.api.adwords.v201008.cm.AdExtensionOverrideReturnValue;
import com.google.api.adwords.v201008.cm.AdExtensionOverrideServiceInterface;
import com.google.api.adwords.v201008.cm.AdGroup;
import com.google.api.adwords.v201008.cm.AdGroupAd;
import com.google.api.adwords.v201008.cm.AdGroupAdOperation;
import com.google.api.adwords.v201008.cm.AdGroupAdServiceInterface;
import com.google.api.adwords.v201008.cm.AdGroupCriterionOperation;
import com.google.api.adwords.v201008.cm.AdGroupCriterionServiceInterface;
import com.google.api.adwords.v201008.cm.AdGroupOperation;
import com.google.api.adwords.v201008.cm.AdGroupServiceInterface;
import com.google.api.adwords.v201008.cm.AdGroupStatus;
import com.google.api.adwords.v201008.cm.AdParam;
import com.google.api.adwords.v201008.cm.AdParamOperation;
import com.google.api.adwords.v201008.cm.AdParamServiceInterface;
import com.google.api.adwords.v201008.cm.Address;
import com.google.api.adwords.v201008.cm.Bid;
import com.google.api.adwords.v201008.cm.BiddableAdGroupCriterion;
import com.google.api.adwords.v201008.cm.Budget;
import com.google.api.adwords.v201008.cm.BudgetBudgetDeliveryMethod;
import com.google.api.adwords.v201008.cm.BudgetBudgetPeriod;
import com.google.api.adwords.v201008.cm.Campaign;
import com.google.api.adwords.v201008.cm.CampaignAdExtension;
import com.google.api.adwords.v201008.cm.CampaignAdExtensionOperation;
import com.google.api.adwords.v201008.cm.CampaignAdExtensionServiceInterface;
import com.google.api.adwords.v201008.cm.CampaignCriterionOperation;
import com.google.api.adwords.v201008.cm.CampaignCriterionServiceInterface;
import com.google.api.adwords.v201008.cm.CampaignOperation;
import com.google.api.adwords.v201008.cm.CampaignReturnValue;
import com.google.api.adwords.v201008.cm.CampaignServiceInterface;
import com.google.api.adwords.v201008.cm.CampaignStatus;
import com.google.api.adwords.v201008.cm.GeoLocation;
import com.google.api.adwords.v201008.cm.GeoLocationSelector;
import com.google.api.adwords.v201008.cm.GeoLocationServiceInterface;
import com.google.api.adwords.v201008.cm.Keyword;
import com.google.api.adwords.v201008.cm.KeywordMatchType;
import com.google.api.adwords.v201008.cm.LocationExtension;
import com.google.api.adwords.v201008.cm.LocationExtensionSource;
import com.google.api.adwords.v201008.cm.ManualCPC;
import com.google.api.adwords.v201008.cm.ManualCPCAdGroupBids;
import com.google.api.adwords.v201008.cm.Money;
import com.google.api.adwords.v201008.cm.NegativeCampaignCriterion;
import com.google.api.adwords.v201008.cm.Operator;
import com.google.api.adwords.v201008.cm.Placement;
import com.google.api.adwords.v201008.cm.TextAd;

import junit.framework.TestCase;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
* A collection of utility methods used within the testing suite.
*
* @author api.naoki.ishihara@gmail.com (Naoki Ishihara)
*/
public final class TestUtils extends com.google.api.adwords.TestUtils {
  private AdWordsUser user;
  private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");

  /**
   * Constructor
   *
   * @param user user of AdWords API
   */
  public TestUtils(AdWordsUser user) {
    this.user = user;
  }

  /**
   * Creates a new AdWordsUser from the properties file.
   *
   * @param the properties file name
   * @return a new {@code AdWordsUser}
   */
  public static AdWordsUser createUser(String properties) throws Exception {
    // Get AdWordsUser from properties.
    return new AdWordsUser(properties);
  }

  /**
   * Create a new Campaign Object
   *
   * @return the ID of the created campaign
   */
  public long createCampaign() throws Exception {
    // Get CampaignService
    CampaignServiceInterface campaignService =
        user.getService(AdWordsService.V201008.CAMPAIGN_SERVICE);

    // Create campaign.
    Campaign campaign = new Campaign();
    campaign.setName("Test Campaign #" + System.currentTimeMillis());
    campaign.setBiddingStrategy(new ManualCPC());
    campaign.setStatus(CampaignStatus.PAUSED);

    // Create budget
    Budget budget = new Budget();
    budget.setPeriod(BudgetBudgetPeriod.DAILY);
    budget.setAmount(new Money(null, 50000000L));
    budget.setDeliveryMethod(BudgetBudgetDeliveryMethod.STANDARD);
    campaign.setBudget(budget);

    // Create operations.
    CampaignOperation operation = new CampaignOperation();
    operation.setOperand(campaign);
    operation.setOperator(Operator.ADD);

    CampaignOperation[] operations = new CampaignOperation[] {operation};

    // Add campaign and return campaign ID
    return campaignService.mutate(operations).getValue()[0].getId();
  }

  /**
   * Delete a campaign specified by campaign ID.
   *
   * @param campaignId the id of the campaign
   */
  public void deleteCampaign(long campaignId) throws Exception {
    // Get CampaignService
    CampaignServiceInterface campaignService;

    campaignService = user.getService(AdWordsService.V201008.CAMPAIGN_SERVICE);

    // Create campaign with DELETED status.
    Campaign campaign = new Campaign();
    campaign.setId(campaignId);
    campaign.setStatus(CampaignStatus.DELETED);

    // Create operations.
    CampaignOperation operation = new CampaignOperation();
    operation.setOperand(campaign);
    operation.setOperator(Operator.SET);

    CampaignOperation[] operations = new CampaignOperation[] {operation};

    // Delete campaign.
    CampaignReturnValue result = campaignService.mutate(operations);
  }

  /**
   * Creates a new adgroup under the campaign.
   *
   * @param campaignId the id of the parent campaign
   * @return the ID of the created ad group
   */
  public long createAdGroup(long campaignId) throws Exception {
    // Get the AdGroupService.
    AdGroupServiceInterface adGroupService;
    adGroupService = user.getService(AdWordsService.V201008.ADGROUP_SERVICE);

    // Create ad group.
    AdGroup adGroup = new AdGroup();
    adGroup.setName("Earth to Mars Cruises #" + System.currentTimeMillis());
    adGroup.setStatus(AdGroupStatus.ENABLED);
    adGroup.setCampaignId(campaignId);

    // Create ad group bid.
    ManualCPCAdGroupBids adGroupBids = new ManualCPCAdGroupBids();
    adGroupBids.setKeywordMaxCpc(new Bid(new Money(null, 10000000L)));
    adGroup.setBids(adGroupBids);

    // Create operations.
    AdGroupOperation operation = new AdGroupOperation();
    operation.setOperand(adGroup);
    operation.setOperator(Operator.ADD);

    AdGroupOperation[] operations = new AdGroupOperation[] {operation};

    // Add ad group and return AdGroup ID.
    return adGroupService.mutate(operations).getValue()[0].getId();
  }

  /**
   * Creates a new TextAd
   *
   * @param adGroupId the id of the parent ad group
   * @return the id of the created ad
   */
  public long createTextAd(long adGroupId) throws Exception {
    // Get the AdGroupAdService.
    AdGroupAdServiceInterface adGroupAdService =
        user.getService(AdWordsService.V201008.ADGROUP_AD_SERVICE);

    // Create text ad.
    TextAd textAd = new TextAd();
    textAd.setHeadline("Luxury Cruise to Mars");
    textAd.setDescription1("Visit the Red Planet in style.");
    textAd.setDescription2("Low-gravity fun for everyone!");
    textAd.setDisplayUrl("www.example.com");
    textAd.setUrl("http://www.example.com");

    // Create ad group ad.
    AdGroupAd textAdGroupAd = new AdGroupAd();
    textAdGroupAd.setAdGroupId(adGroupId);
    textAdGroupAd.setAd(textAd);

    // Create operations.
    AdGroupAdOperation textAdGroupAdOperation = new AdGroupAdOperation();
    textAdGroupAdOperation.setOperand(textAdGroupAd);
    textAdGroupAdOperation.setOperator(Operator.ADD);
    AdGroupAdOperation[] operations = new AdGroupAdOperation[] {textAdGroupAdOperation};

    // Add new TextAd and return its ID.
    return adGroupAdService.mutate(operations).getValue()[0].getAd().getId();
  }

  /**
   * Creates a new keyword
   *
   * @param adGroupId the id of the parent ad group
   * @return the id of the created criterion
   */
  public long createKeyword(long adGroupId) throws Exception {
    // Get the AdGroupCriterionService.
    AdGroupCriterionServiceInterface adGroupCriterionService =
        user.getService(AdWordsService.V201008.ADGROUP_CRITERION_SERVICE);

    // Create keyword.
    Keyword keyword = new Keyword();
    keyword.setText("mars cruise");
    keyword.setMatchType(KeywordMatchType.BROAD);

    // Create biddable ad group criterion.
    BiddableAdGroupCriterion keywordBiddableAdGroupCriterion = new BiddableAdGroupCriterion();
    keywordBiddableAdGroupCriterion.setAdGroupId(adGroupId);
    keywordBiddableAdGroupCriterion.setCriterion(keyword);

    // Create placement.
    Placement placement = new Placement();
    placement.setUrl("http://mars.google.com");

    // Create biddable ad group criterion for placement.
    BiddableAdGroupCriterion placementBiddableAdGroupCriterion = new BiddableAdGroupCriterion();
    placementBiddableAdGroupCriterion.setAdGroupId(adGroupId);
    placementBiddableAdGroupCriterion.setCriterion(placement);

    // Create operations.
    AdGroupCriterionOperation keywordAdGroupCriterionOperation = new AdGroupCriterionOperation();
    keywordAdGroupCriterionOperation.setOperand(keywordBiddableAdGroupCriterion);
    keywordAdGroupCriterionOperation.setOperator(Operator.ADD);

    AdGroupCriterionOperation placementAdGroupCriterionOperation = new AdGroupCriterionOperation();
    placementAdGroupCriterionOperation.setOperand(placementBiddableAdGroupCriterion);
    placementAdGroupCriterionOperation.setOperator(Operator.ADD);

    AdGroupCriterionOperation[] operations = new AdGroupCriterionOperation[] {
        keywordAdGroupCriterionOperation, placementAdGroupCriterionOperation};

    // Add ad group criteria and return Criterion ID.
    return adGroupCriterionService.mutate(operations).getValue()[0].getCriterion().getId();
  }

  /**
   * Creates negative campaign keyword criterion
   *
   * @param campaignId the id of the parent campaign
   * @return the id of the created criterion
   */
  public long createNegativeCampaignKeyword(long campaignId) throws Exception {
    // Get the CampaignCriterionService.
    CampaignCriterionServiceInterface campaignCriterionService =
        user.getService(AdWordsService.V201008.CAMPAIGN_CRITERION_SERVICE);

    // Create keyword.
    Keyword keyword = new Keyword();
    keyword.setText("jupiter cruise");
    keyword.setMatchType(KeywordMatchType.BROAD);

    // Create negative campaign criterion.
    NegativeCampaignCriterion negativeCampaignCriterion = new NegativeCampaignCriterion();
    negativeCampaignCriterion.setCampaignId(campaignId);
    negativeCampaignCriterion.setCriterion(keyword);

    // Create operations.
    CampaignCriterionOperation operation = new CampaignCriterionOperation();
    operation.setOperand(negativeCampaignCriterion);
    operation.setOperator(Operator.ADD);

    // Add campaign criteria and return Criterion ID
    return campaignCriterionService.mutate(new CampaignCriterionOperation[] {operation})
      .getValue()[0].getCriterion().getId();
  }

  /**
   * Sets an ad parameter on a keyword criterion.
   *
   * @param adGroupId the id of the ad group
   * @param keywordId the id of the keyword criterion
   */
  public void setAdParam(long adGroupId, long keywordId) throws Exception {
    // Get the AdParamService.
    AdParamServiceInterface adParamService =
        user.getService(AdWordsService.V201008.AD_PARAM_SERVICE);

    // Create ad params.
    AdParam adParam1 = new AdParam();
    adParam1.setAdGroupId(adGroupId);
    adParam1.setCriterionId(keywordId);
    adParam1.setInsertionText("100");
    adParam1.setParamIndex(1);

    AdParam adParam2 = new AdParam();
    adParam2.setAdGroupId(adGroupId);
    adParam2.setCriterionId(keywordId);
    adParam2.setInsertionText("$40");
    adParam2.setParamIndex(2);

    // Create operations.
    AdParamOperation adParamOperation1 = new AdParamOperation();
    adParamOperation1.setOperand(adParam1);
    adParamOperation1.setOperator(Operator.SET);

    AdParamOperation adParamOperation2 = new AdParamOperation();
    adParamOperation2.setOperand(adParam2);
    adParamOperation2.setOperator(Operator.SET);

    AdParamOperation[] operations = new AdParamOperation[] {adParamOperation1, adParamOperation2};

    // Set ad parameters.
    AdParam[] adParams = adParamService.mutate(operations);
  }

  /**
   * Creates a location extension.
   *
   * @param campaignId the id of the campaign
   * @return the id of the created ad extension
   */
  public long createLocationExtension(long campaignId) throws Exception {
    // Get the CampaignAdExtensionService.
    CampaignAdExtensionServiceInterface campaignAdExtensionService =
        user.getService(AdWordsService.V201008.CAMPAIGN_AD_EXTENSION_SERVICE);

    // Get the GeoLocationService.
    GeoLocationServiceInterface geoLocationService =
        user.getService(AdWordsService.V201008.GEO_LOCATION_SERVICE);

    // Create address.
    Address address = new Address();
    address.setStreetAddress("1600 Amphitheatre Parkway");
    address.setCityName("Mountain View");
    address.setProvinceCode("US-CA");
    address.setPostalCode("94043");
    address.setCountryCode("US");

    // Create geo location selector.
    GeoLocationSelector selector = new GeoLocationSelector();
    selector.setAddresses(new Address[] {address});

    // Get geo location.
    GeoLocation[] geoLocationResult = geoLocationService.get(selector);
    GeoLocation geoLocation = geoLocationResult[0];

    // Create location extension.
    LocationExtension locationExtension = new LocationExtension();
    locationExtension.setAddress(geoLocation.getAddress());
    locationExtension.setGeoPoint(geoLocation.getGeoPoint());
    locationExtension.setEncodedLocation(geoLocation.getEncodedLocation());
    locationExtension.setCompanyName("Google");
    locationExtension.setPhoneNumber("650-253-0000");
    locationExtension.setSource(LocationExtensionSource.ADWORDS_FRONTEND);

    // Create campaign ad extension.
    CampaignAdExtension campaignAdExtension = new CampaignAdExtension();
    campaignAdExtension.setCampaignId(campaignId);
    campaignAdExtension.setAdExtension(locationExtension);

    // Create operations.
    CampaignAdExtensionOperation operation = new CampaignAdExtensionOperation();
    operation.setOperand(campaignAdExtension);
    operation.setOperator(Operator.ADD);

    CampaignAdExtensionOperation[] operations = new CampaignAdExtensionOperation[] {operation};

    // Add campaign ad extension and retrun AdExtension ID.
    return campaignAdExtensionService.mutate(operations).getValue()[0].getAdExtension().getId();
  }

  /**
   * Creates an ad extension override.
   *
   * @param adId the id of the ad
   * @param campaignAdExtensionId the id of the ad extension
   */
  public void createAdExtensionOverride(long adId, long campaignAdExtensionId) throws Exception {
    // Get the AdExtensionOverrideService.
    AdExtensionOverrideServiceInterface adExtensionOverrideService =
        user.getService(AdWordsService.V201008.AD_EXTENSION_OVERRIDE_SERVICE);

    // Create ad extension override.
    AdExtensionOverride adExtensionOverride = new AdExtensionOverride();
    adExtensionOverride.setAdId(adId);

    // Create ad extension using existing id.
    AdExtension adExtension = new AdExtension();
    adExtension.setId(campaignAdExtensionId);
    adExtensionOverride.setAdExtension(adExtension);

    // Create operations.
    AdExtensionOverrideOperation operation = new AdExtensionOverrideOperation();
    operation.setOperand(adExtensionOverride);
    operation.setOperator(Operator.ADD);

    AdExtensionOverrideOperation[] operations = new AdExtensionOverrideOperation[] {operation};

    // Add ad extension override.
    AdExtensionOverrideReturnValue result = adExtensionOverrideService.mutate(operations);
  }

  /**
   * Removes an ad extension override.
   *
   * @param adId the id of the ad
   * @param campaignAdExtensionId the id of the ad extension
   */
  public void removeAdExtensionOverride(long adId, long campaignAdExtensionId) throws Exception {
    // Get the AdExtensionOverrideService.
    AdExtensionOverrideServiceInterface adExtensionOverrideService =
        user.getService(AdWordsService.V201008.AD_EXTENSION_OVERRIDE_SERVICE);

    // Create ad extension override.
    AdExtensionOverride adExtensionOverride = new AdExtensionOverride();
    adExtensionOverride.setAdId(adId);

    // Create ad extension using existing id.
    AdExtension adExtension = new AdExtension();
    adExtension.setId(campaignAdExtensionId);
    adExtensionOverride.setAdExtension(adExtension);

    // Create operations.
    AdExtensionOverrideOperation operation = new AdExtensionOverrideOperation();
    operation.setOperand(adExtensionOverride);
    operation.setOperator(Operator.REMOVE);

    AdExtensionOverrideOperation[] operations = new AdExtensionOverrideOperation[] {operation};

    // Add ad extension override.
    AdExtensionOverrideReturnValue result = adExtensionOverrideService.mutate(operations);
  }

  /**
   * Get the string for the first day of the month in the format of "yyyyMMdd"
   * This format can be used for
   * {@link com.google.api.adwords.v201008.cm.DateRange DateRange}.
   *
   * @return the string for the first day of the month
   */
  static public String firstDayOfMonth() {
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    return dateFormat.format(calendar.getTime());
  }

  /**
   * Get the string for today in the format of "yyyyMMdd" This format can be
   * used for {@link com.google.api.adwords.v201008.cm.DateRange DateRange}.
   *
   * @return the string of today
   */
  static public String today() {
    return dateFormat.format(new Date());
  }
}
TOP

Related Classes of com.google.api.adwords.v201008.TestUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.