* @return the UsageMetricSummaryDTO
*/
@Override
public Serializable execute(final PrincipalActionContext inActionContext)
{
UsageMetricStreamSummaryRequest request = (UsageMetricStreamSummaryRequest) inActionContext.getParams();
List<DailyUsageSummary> results = summaryDataMapper.execute(request);
logger.info("Found " + results.size() + " summary results");
UsageMetricSummaryDTO result = new UsageMetricSummaryDTO();
// can't build the list directly - build up a temporary list so we can fill in the holes later
List<DailyUsageSummary> dailyStats = new ArrayList<DailyUsageSummary>();
// short-circuit if no results.
if (results.size() == 0)
{
return result;
}
long msgCount = 0;
long pageViewCount = 0;
long streamContributorCount = 0;
long streamViewCount = 0;
long streamViewerCount = 0;
long uniqueVisitorCount = 0;
long avgActivityResponseTime = 0;
long startingCommentCount = 0, finalCommentCount = 0;
long startingActivityCount = 0, finalActivityCount = 0;
Long totalActivityCount = null;
Long totalCommentCount = null;
Long totalContributorCount = null;
Calendar day = Calendar.getInstance();
day.add(Calendar.DATE, -request.getNumberOfDays());
Date oldestAllowableReportDate = DateDayExtractor.getStartOfDay(new Date(day.getTimeInMillis()));
day = Calendar.getInstance();
day.add(Calendar.DATE, -1);
Date latestReportDate = DateDayExtractor.getStartOfDay(new Date(day.getTimeInMillis()));