public void updateStats() { numOfDaysOff = 0; ignoreExtrasNumOfDaysOff = 0; Long totalStartTime = (long) 0; Long totalEndTime = (long) 0; Long totalLengthOfDay = (long) 0; Long ieTotalStartTime = (long) 0; Long ieTotalEndTime = (long) 0; Long ieTotalLengthOfDay = (long) 0; for (int i = 1; i <= 7; i++) { Date earliestStartTime = null; Date latestEndTime = null; // ie: Ignore Extras (DGD, TUT) Date ieEarliestStartTime = null; Date ieLatestEndTime = null; boolean dayOff = true; boolean ieDayOff = true; for (CourseSelection cs : courseSelections) { for (Activity a : cs.getActivities()) { if (a.getDay() == i) { if (dayOff) { dayOff = false; earliestStartTime = a.getStartTime(); latestEndTime = a.getEndTime(); } else { if (a.getStartTime().before(earliestStartTime)) { earliestStartTime = a.getStartTime(); } if (a.getEndTime().after(latestEndTime)) { latestEndTime = a.getEndTime(); } } if (!(a.getType().equals("DGD") || a.getType().equals("TUT"))) { if (ieDayOff) { ieDayOff = false; ieEarliestStartTime = a.getStartTime(); ieLatestEndTime = a.getEndTime(); } else { if (a.getStartTime().before(ieEarliestStartTime)) { ieEarliestStartTime = a.getStartTime(); } if (a.getEndTime().after(latestEndTime)) { ieLatestEndTime = a.getEndTime(); } } } } } } if (dayOff) { numOfDaysOff++; } else { totalStartTime += earliestStartTime.getTime(); totalEndTime += latestEndTime.getTime(); totalLengthOfDay += (latestEndTime.getTime() - earliestStartTime.getTime()); } if (ieDayOff) { ignoreExtrasNumOfDaysOff++; } else { ieTotalStartTime += ieEarliestStartTime.getTime(); ieTotalEndTime += ieLatestEndTime.getTime(); ieTotalLengthOfDay += (ieLatestEndTime.getTime() - ieEarliestStartTime.getTime()); } } if (numOfDaysOff != 7) { avgStartingTime = new Date(totalStartTime / (7 - numOfDaysOff)); avgEndingTime = new Date(totalEndTime / (7 - numOfDaysOff)); avgLengthOfDay = new Date(totalLengthOfDay / (7 - numOfDaysOff)); ignoreExtrasAvgStartingTime = new Date(ieTotalStartTime / (7 - ignoreExtrasNumOfDaysOff)); ignoreExtrasAvgEndingTime = new Date(ieTotalEndTime / (7 - ignoreExtrasNumOfDaysOff)); ignoreExtrasAvgLengthOfDay = new Date(ieTotalLengthOfDay / (7 - ignoreExtrasNumOfDaysOff)); } }