public ActionForward presentation( ActionMapping mapping, ActionForm actionForm, HttpServletRequest request, HttpServletResponse response) { Unit unit = getUnit(request); UnitSite site = unit.getSite(); AnnouncementBoard announcementsBoard = null; AnnouncementBoard eventsBoard = null; for (AnnouncementBoard unitBoard : unit.getBoards()) { if (unitBoard.isPublicToRead() && unitBoard.getName().equalInAnyLanguage(ANNOUNCEMENTS_NAME)) { announcementsBoard = unitBoard; } if (unitBoard.isPublicToRead() && unitBoard.getName().equalInAnyLanguage(EVENTS_NAME)) { eventsBoard = unitBoard; } } if (announcementsBoard != null) { List<Announcement> announcements = announcementsBoard.getActiveAnnouncements(); announcements = announcements.subList(0, Math.min(announcements.size(), ANNOUNCEMENTS_NUMBER)); request.setAttribute("announcements", announcements); } if (eventsBoard != null) { request.setAttribute("announcementBoard", eventsBoard); YearMonthDay currentDay = new YearMonthDay(); List<Announcement> currentDayAnnouncements = eventsBoard.getActiveAnnouncementsFor(currentDay); List<Announcement> futureAnnouncements = eventsBoard.getActiveAnnouncementsAfter(currentDay); Collections.sort(futureAnnouncements, Announcement.SUBJECT_BEGIN_DATE); request.setAttribute("today-events", currentDayAnnouncements); request.setAttribute("future-events", futureAnnouncements); int eventCount = currentDayAnnouncements.size() + futureAnnouncements.size(); if (eventCount < ANNOUNCEMENTS_NUMBER) { List<Announcement> announcements = eventsBoard.getActiveAnnouncementsBefore(currentDay); announcements = announcements.subList( 0, Math.min(announcements.size(), ANNOUNCEMENTS_NUMBER - eventCount)); request.setAttribute("eventAnnouncements", announcements); } } return mapping.findForward("frontPage-" + site.getLayout()); }