package com.github.andlyticsproject.model; import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.Set; public class AdmobStatsSummary extends StatsSummary<AdmobStats> { private Set<Date> dates = new HashSet<Date>(); public AdmobStatsSummary() { overallStats = new AdmobStats(); } @Override public void addStat(AdmobStats stat) { // hack to ignore empty Admob stats after migration if (stat.getRequests() == 0 && stat.getFillRate() == 0) { return; } // XXX hack to ignore duplicate dates after migration if (dates.contains(stat.getDate())) { return; } dates.add(stat.getDate()); stats.add(stat); overallStats.setClicks(overallStats.getClicks() + stat.getClicks()); overallStats.setCpcRevenue(overallStats.getCpcRevenue() + stat.getCpcRevenue()); overallStats.setCpmRevenue(overallStats.getCpmRevenue() + stat.getCpmRevenue()); overallStats.setCtr(overallStats.getCtr() + stat.getCtr()); overallStats.setEcpm(overallStats.getEcpm() + stat.getEcpm()); overallStats.setExchangeDownloads(overallStats.getExchangeDownloads() + stat.getExchangeDownloads()); overallStats.setFillRate(overallStats.getFillRate() + stat.getFillRate()); overallStats.setHouseAdClicks(overallStats.getHouseAdClicks() + stat.getHouseAdClicks()); overallStats.setHouseadFillRate(overallStats.getHouseadFillRate() + stat.getHouseadFillRate()); overallStats.setHouseadRequests(overallStats.getHouseadRequests() + stat.getHouseadRequests()); overallStats.setImpressions(overallStats.getImpressions() + stat.getImpressions()); overallStats.setInterstitialRequests(overallStats.getInterstitialRequests() + stat.getInterstitialRequests()); overallStats.setOverallFillRate(overallStats.getOverallFillRate() + stat.getOverallFillRate()); overallStats.setRequests(overallStats.getRequests() + stat.getRequests()); overallStats.setRevenue(overallStats.getRevenue() + stat.getRevenue()); } @Override public void calculateOverallStats(int limit, boolean smoothEnabled) { Collections.reverse(stats); int count = stats.size(); if (count > 0) { overallStats.setCtr(overallStats.getCtr() / count); overallStats.setFillRate(overallStats.getFillRate() / count); overallStats.setEcpm(overallStats.getEcpm() / count); } } @Override public boolean applySmoothedValues() { return false; } }