@Override
  public boolean setOperations(String[] lineRay, long currentLineNumber) {
    this.lineRay = lineRay;
    this.currentLineNumber = currentLineNumber;

    if (validate()) {
      // extract all the required fields from the row/line
      String clientAccountId =
          FieldExtractor.getFieldValue(lineRay, FieldExtractor.ClientAccountId);
      String campaignId = FieldExtractor.getFieldValue(lineRay, FieldExtractor.CampaignId);
      String advertisingChannelType =
          FieldExtractor.getFieldValue(lineRay, FieldExtractor.ChannelType);
      String googleSearch = FieldExtractor.getFieldValue(lineRay, FieldExtractor.GoogleSearch);
      String searchNetwork = FieldExtractor.getFieldValue(lineRay, FieldExtractor.SearchNetwork);
      String contentNetwork = FieldExtractor.getFieldValue(lineRay, FieldExtractor.ContentNetwork);
      String partnerSearchNetwork =
          FieldExtractor.getFieldValue(lineRay, FieldExtractor.PartnerSearchNetwork);
      String displaySelect = FieldExtractor.getFieldValue(lineRay, FieldExtractor.DisplaySelect);

      try {

        lineProcessor.awapi.addSession(clientAccountId);
        Campaign campaign = new Campaign();
        campaign.setId(Long.decode(campaignId));
        campaign.setAdvertisingChannelType(
            AdvertisingChannelType.fromString(advertisingChannelType));
        // Set the campaign network options to Search and Search Network.
        NetworkSetting networkSetting = new NetworkSetting();
        networkSetting.setTargetGoogleSearch(Boolean.valueOf(googleSearch));
        networkSetting.setTargetSearchNetwork(Boolean.valueOf(searchNetwork));
        networkSetting.setTargetContentNetwork(Boolean.valueOf(contentNetwork));
        networkSetting.setTargetPartnerSearchNetwork(Boolean.valueOf(partnerSearchNetwork));
        campaign.setNetworkSetting(networkSetting);
        if (displaySelect.equalsIgnoreCase("TRUE")) {
          campaign.setDisplaySelect(true);
        } else if (displaySelect.equalsIgnoreCase("FALSE")) {
          campaign.setDisplaySelect(false);
        }

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

        operations[operationsIterator++] = operation;

        return true;

      } catch (Exception generalException) {
        // catch general failures...
        reportError(campaignId, generalException);
        return false;
      }
    } else {
      return false;
    }
  }
 /**
  * Check the numeric fields from the CSV are in fact numeric
  *
  * @return did they all check out OK?
  */
 public boolean validate() {
   FieldExtractor[] numericValueCheck = {
     FieldExtractor.ClientAccountId, FieldExtractor.CampaignId
   };
   for (FieldExtractor numericField : numericValueCheck) {
     String value = FieldExtractor.getFieldValue(lineRay, numericField);
     try {
       Long.parseLong(value);
     } catch (Exception e) {
       lineProcessor.errorSummaryMessage =
           String.format(
               "Problem parsing data in row #%d. Field value was expected to be numeric",
               currentLineNumber);
       lineProcessor.errorCauseMessage =
           String.format("'%s' contains value of '%s'", numericField.getFieldName(), value);
       lineProcessor.handleFailure((int) currentLineNumber, lineProcessor.errorSummaryMessage);
       return false;
     }
   }
   return true;
 }