public Map<String, Account> loadSourceFromDatabase( IUserConfiguration configuration, String getDataSql) throws IOException { Map<String, Account> accounts = bingUtils.loadAccounts((IBingUserConfiguration) configuration); LOGGER.info("Load data from database"); final long[] rowsCount = {0}; jdbcTemplate.query( getDataSql, (rs, rowNum) -> { long searchEngineId = rs.getLong(AdwordsConstants.SEARCH_ENGINE_ID); if (1 == searchEngineId) { String accountId = rs.getString(AdwordsConstants.SEARCH_ENGINE_ACCOUNT_ID); long campaignId = rs.getLong(AdwordsConstants.SEARCH_ENGINE_CAMPAIGN_ID); long adGroupId = rs.getLong(AdwordsConstants.SEARCH_ENGINE_AD_GROUP_ID); long keywordId = rs.getLong(AdwordsConstants.SEARCH_ENGINE_KEYWORD_ID); String keywordName = rs.getString("keyword_name"); registerSourceKeyword( accounts, accountId, campaignId, adGroupId, keywordId, keywordName); rowsCount[0]++; } return null; }); LOGGER.info("Rows count: {}", rowsCount[0]); return accounts; }
public Map<String, Account> loadSourceFromCsv(IUserConfiguration configuration) throws IOException { Map<String, Account> accounts = bingUtils.loadAccounts((IBingUserConfiguration) configuration); csvService.loadSourceFromCsv( configuration, Arrays.asList( AdwordsConstants.SEARCH_ENGINE_ID, AdwordsConstants.SEARCH_ENGINE_ACCOUNT_ID, AdwordsConstants.SEARCH_ENGINE_CAMPAIGN_ID, AdwordsConstants.SEARCH_ENGINE_AD_GROUP_ID, AdwordsConstants.SEARCH_ENGINE_KEYWORD_ID, AdwordsConstants.SEARCH_ENGINE_KEYWORD_NAME, AdwordsConstants.CLICKS, AdwordsConstants.COST, AdwordsConstants.ORDERS, AdwordsConstants.GP_USD), dataRow -> { long searchEngineId = AdwordsUtils.getLongValue(dataRow.apply(AdwordsConstants.SEARCH_ENGINE_ID)); if (2 == searchEngineId) { String accountId = dataRow.apply(AdwordsConstants.SEARCH_ENGINE_ACCOUNT_ID); long campaignId = AdwordsUtils.getLongValue( dataRow.apply(AdwordsConstants.SEARCH_ENGINE_CAMPAIGN_ID)); long adGroupId = AdwordsUtils.getLongValue( dataRow.apply(AdwordsConstants.SEARCH_ENGINE_AD_GROUP_ID)); long keywordId = AdwordsUtils.getLongValue(dataRow.apply(AdwordsConstants.SEARCH_ENGINE_KEYWORD_ID)); String keywordName = dataRow.apply(AdwordsConstants.SEARCH_ENGINE_KEYWORD_NAME); Criterion keyword = registerSourceKeyword( accounts, accountId, campaignId, adGroupId, keywordId, keywordName); if (keyword != null) { CommonMetrics metrics = new CommonMetrics(); metrics.setClicks(getLongValue(dataRow.apply(CLICKS))); metrics.setOrders(getLongValue(dataRow.apply(ORDERS))); metrics.setCost(AdwordsUtils.getDoubleValue(dataRow.apply(COST))); metrics.setGrossProfit( metrics.getClicks() > 0 ? AdwordsUtils.getDoubleValue(dataRow.apply(AdwordsConstants.GP_USD)) / metrics.getClicks() : 0); keyword.setMetrics(metrics); } } }); return accounts; }