public void handleInitialCampaignMessage(InitialCampaignMessage campaignMessage) {
    System.out.println(campaignMessage.toString());
    /**
     * ***********************************Open and read the camplog
     * file******************************************************
     */
    String str = null;
    try {
      //  int count = 0;
      FileReader file = new FileReader("camLog.txt");
      BufferedReader reader = new BufferedReader(file);

      str = reader.readLine();

      campaignData.count = Integer.parseInt(str);

    } catch (IOException e) {

    }

    System.out.println("********^^^^^^^^^^^^^^^^^^^^******************" + campaignData.count);

    /**
     * ***********************************end
     * file****************************************************************************
     */
    w.day = 0;

    initialCampaignMessage = campaignMessage;
    demandAgentAddress = campaignMessage.getDemandAgentAddress();
    adxAgentAddress = campaignMessage.getAdxAgentAddress();

    CampaignData campaignData = new CampaignData(initialCampaignMessage);
    campaignData.setBudget(initialCampaignMessage.getBudgetMillis() / 1000.0);
    d.currCampaign = campaignData;
    initTotalPopularity(campaignData);
    genCampaignQueries(campaignData);

    /*
     * The initial campaign is already allocated to our agent so we add it
     * to our allocated-campaigns list.
     */
    System.out.println("Day " + w.day + ": Allocated campaign - " + campaignData);
    d.campaigns.put(initialCampaignMessage.getId(), campaignData);
    for (int i = 0; i < 60; i++) {
      d.campTrack.add(new ArrayList<Integer>());
      d.otherCampTrack.add(new ArrayList<Integer>());
    }
    for (int i = (int) d.currCampaign.dayStart; i <= (int) d.currCampaign.dayEnd; i++) {
      d.campTrack.get(i).add(d.currCampaign.id);
    }
  }
  /*
   * genarates the campaign queries relevant for the specific campaign, and assign them as the campaigns campaignQueries field
   */
  private void genCampaignQueries(CampaignData campaignData) {
    Set<AdxQuery> campaignQueriesSet = new HashSet<AdxQuery>();
    for (String PublisherName : w.publisherNames) {
      campaignQueriesSet.add(
          new AdxQuery(PublisherName, campaignData.targetSegment, Device.mobile, AdType.text));
      campaignQueriesSet.add(
          new AdxQuery(PublisherName, campaignData.targetSegment, Device.mobile, AdType.video));
      campaignQueriesSet.add(
          new AdxQuery(PublisherName, campaignData.targetSegment, Device.pc, AdType.text));
      campaignQueriesSet.add(
          new AdxQuery(PublisherName, campaignData.targetSegment, Device.pc, AdType.video));
    }

    campaignData.campaignQueries = new AdxQuery[campaignQueriesSet.size()];
    campaignQueriesSet.toArray(campaignData.campaignQueries);
    System.out.println(
        "!!!!!!!!!!!!!!!!!!!!!!"
            + Arrays.toString(campaignData.campaignQueries)
            + "!!!!!!!!!!!!!!!!");
  }