Subversion Repositories SmartDukaan

Rev

Rev 9308 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.googleadwords.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.thrift.TException;
import org.apache.thrift.transport.TTransportException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import adwords.axis.v201309.basicoperations.GetCampaigns;

import in.shop2020.googleadwords.AdwordsCampaign;
import in.shop2020.googleadwords.AdwordsCampaignStatus;
import in.shop2020.googleadwords.GoogleAdwordsServiceException;
import in.shop2020.googleadwords.GoogleAdwordsService.Client;
import in.shop2020.googleadwords.NetworkSettingType;
import in.shop2020.thrift.clients.AdwordsClient;

/*
 * Class AdwordsSaholicCampaignSync - To Sync Campaigns between Google Adwords and our Database.
 */

public class AdwordsSaholicCampaignSync{
        private static Logger logger = LoggerFactory.getLogger(AdwordsSaholicCampaignSync.class);
        
        public static void main(String[] args) {
                try {
                        AdwordsClient adwordsServiceClient = new AdwordsClient();
                        List<Map<String,String>> campaignDataMainList =null;
                        try{
                                campaignDataMainList = GetCampaigns.runExample();
                        }
                        catch (Exception e) {
                                System.out.println("Exception at Google Adwords End.. "+e.getMessage());
                                logger.error("Exception at Google Adwords End.. "+e.getMessage());
                        }
                        Client client = adwordsServiceClient.getClient();
                        for(int i=0; i< campaignDataMainList.size(); i++){
                                Map<String,String> campaignDataMap = campaignDataMainList.get(i);
                                if(campaignDataMap!=null){
                                        System.out.println("Null Comes after This 1");
                                        if("DELETED".equalsIgnoreCase(campaignDataMap.get("Status"))){
                                                continue;
                                        }
                                        AdwordsCampaign campaignFromDB = null;
                                        campaignFromDB = client.getAdwordsCampaignByCampaignId(Long.parseLong(campaignDataMap.get("CampaignId")));
                                        AdwordsCampaign campaign = new AdwordsCampaign();
                                        System.out.println("Null Comes after This 2");
                                        System.out.println(campaignDataMap.get("CampaignId")+" "+campaignDataMap.get("Status")+" "+campaignDataMap.get("Amount")
                                                        +campaignDataMap.get("StartDate")+" "+campaignDataMap.get("EndDate")+" "
                                                        +campaignDataMap.get("TargetGoogleSearch")+" "
                                                        +campaignDataMap.get("TargetSearchNetwork") +" "
                                                        +campaignDataMap.get("TargetPartnerSearchNetwork")+ " "
                                                        +campaignDataMap.get("TargetContentNetwork"));
                                        System.out.println("Null Comes after This 3");
                                        campaign.setCampaignId(Long.parseLong(campaignDataMap.get("CampaignId")));
                                        campaign.setName(campaignDataMap.get("Name"));
                                        AdwordsCampaignStatus status;
                                        if("PAUSED".equalsIgnoreCase(campaignDataMap.get("Status"))){
                                                status= AdwordsCampaignStatus.PAUSED;
                                        }
                                        else if("ACTIVE".equalsIgnoreCase(campaignDataMap.get("Status"))){
                                                status= AdwordsCampaignStatus.ACTIVE;
                                        }
                                        else{
                                                status= AdwordsCampaignStatus.DELETED;
                                        }
                                        double amount= Double.parseDouble(campaignDataMap.get("Amount"));
                                        amount = amount * Math.pow(10, -6);
                                        campaign.setStatus(status);
                                        campaign.setBudgetAmount(amount);
                                        SimpleDateFormat timestmapFormat = new SimpleDateFormat("yyyyMMdd");
                                        Date date= timestmapFormat.parse(campaignDataMap.get("StartDate"));
                                        campaign.setStartDate(date.getTime());  
                                        date= timestmapFormat.parse(campaignDataMap.get("EndDate"));
                                        campaign.setEndDate(date.getTime());
                                        if(Boolean.parseBoolean(campaignDataMap.get("TargetGoogleSearch")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetSearchNetwork")) 
                                                        && !Boolean.parseBoolean(campaignDataMap.get("TargetPartnerSearchNetwork")) 
                                                        && !Boolean.parseBoolean(campaignDataMap.get("TargetContentNetwork"))){
                                                campaign.setNetworkType(NetworkSettingType.GOOGLE_SEARCH_AND_SEARCH_NETWORK);
                                        }
                                        else if(Boolean.parseBoolean(campaignDataMap.get("TargetGoogleSearch")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetSearchNetwork")) 
                                                        && !Boolean.parseBoolean(campaignDataMap.get("TargetPartnerSearchNetwork")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetContentNetwork"))){
                                                campaign.setNetworkType(NetworkSettingType.SEARCH_AND_DISPLAY_NETWORK);
                                        }
                                        else if(!Boolean.parseBoolean(campaignDataMap.get("TargetGoogleSearch")) 
                                                        && !Boolean.parseBoolean(campaignDataMap.get("TargetSearchNetwork")) 
                                                        && !Boolean.parseBoolean(campaignDataMap.get("TargetPartnerSearchNetwork")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetContentNetwork"))){
                                                campaign.setNetworkType(NetworkSettingType.DISPLAY_NETWORK);
                                        }
                                        else if(!Boolean.parseBoolean(campaignDataMap.get("TargetGoogleSearch")) 
                                                        && !Boolean.parseBoolean(campaignDataMap.get("TargetSearchNetwork")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetPartnerSearchNetwork")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetContentNetwork"))){
                                                campaign.setNetworkType(NetworkSettingType.DISPLAY_AND_PARTNER_NETWORK);
                                        }
                                        else if(Boolean.parseBoolean(campaignDataMap.get("TargetGoogleSearch")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetSearchNetwork")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetPartnerSearchNetwork")) 
                                                        && !Boolean.parseBoolean(campaignDataMap.get("TargetContentNetwork"))){
                                                campaign.setNetworkType(NetworkSettingType.SEARCH_AND_PARTNER_NETWORK);
                                        }
                                        else if(!Boolean.parseBoolean(campaignDataMap.get("TargetGoogleSearch")) 
                                                        && !Boolean.parseBoolean(campaignDataMap.get("TargetSearchNetwork")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetPartnerSearchNetwork")) 
                                                        && !Boolean.parseBoolean(campaignDataMap.get("TargetContentNetwork"))){
                                                campaign.setNetworkType(NetworkSettingType.GOOGLE_PARTNER_SEARCH_NETWORK);
                                        }
                                        else if(Boolean.parseBoolean(campaignDataMap.get("TargetGoogleSearch")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetSearchNetwork")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetPartnerSearchNetwork")) 
                                                        && Boolean.parseBoolean(campaignDataMap.get("TargetContentNetwork"))){
                                                campaign.setNetworkType(NetworkSettingType.ALL_AVALIABLE_SOURCES);
                                        }
                                        else{
                                                campaign.setNetworkType(NetworkSettingType.GOOGLE_SEARCH_AND_SEARCH_NETWORK);                   
                                        }                                       
                                        
                                        if(campaignFromDB.getCampaignId()>0l){
                                                campaign.setId(campaignFromDB.getId());
                                                client.updateAdwordsCampaign(campaign);
                                        }
                                        else{
                                                client.addAdwordsCampaign(campaign);
                                        }

                                }
                        }
                        
                        
                } catch (TTransportException e) {
                        System.out.println("Error while Connecting to Adwords Client..");
                        e.printStackTrace();
                        logger.error("Error while Connecting to Adwords Client.."+e.getMessage());
                }catch (GoogleAdwordsServiceException e) {
                        System.out.println("Error while Requesting Proper Data Google Adwords Service..");
                        e.printStackTrace();
                        logger.error("Error while Requesting Proper Data Google Adwords Service.."+e.getMessage());
                } catch (TException e) {
                        System.out.println("Error while Getting Proper Data Google Adwords Service..");
                        e.printStackTrace();
                        logger.error("Error while Getting Proper Data Google Adwords Service.."+e.getMessage());
                } catch (ParseException e) {
                        System.out.println("Error while Parsing Data.."+e.getMessage());
                        logger.error("Error while Parsing Data.."+e.getMessage());
                } 
        }
        
}