@Override public void refresh() throws Exception { init(); eventData_.clear(); allDayEvent.clear(); int i = 0; Calendar c = getBeginDateOfWeek(); int maxDay = 7; if (isShowCustomView_) maxDay = 5; while (i++ < maxDay) { List<CalendarEvent> list = new ArrayList<CalendarEvent>(); String key = keyGen(c.get(Calendar.DATE), c.get(Calendar.MONTH), c.get(Calendar.YEAR)); eventData_.put(key, list); c.add(Calendar.DATE, 1); } CalendarService calendarService = CalendarUtils.getCalendarService(); String username = CalendarUtils.getCurrentUser(); EventQuery eventQuery = new EventQuery(); eventQuery.setFromDate(getBeginDateOfWeek()); Calendar endDateOfWeek = getEndDateOfWeek(); Date toDate = endDateOfWeek.getTime(); toDate.setTime(toDate.getTime() - 1); endDateOfWeek.setTime(toDate); eventQuery.setToDate(endDateOfWeek); eventQuery.setExcludeRepeatEvent(true); /** get all norepeat events */ List<CalendarEvent> allEvents; String[] publicCalendars = getPublicCalendars(); String[] privateCalendars = getPrivateCalendars().toArray(new String[] {}); if (isInSpace()) { eventQuery.setCalendarId(publicCalendars); allEvents = calendarService.getPublicEvents(eventQuery); } else { allEvents = calendarService.getAllNoRepeatEventsSQL( username, eventQuery, privateCalendars, publicCalendars, emptyEventCalendars); } /** get exception occurrences, exclude original recurrence events */ List<CalendarEvent> originalRecurEvents = calendarService.getHighLightOriginalRecurrenceEventsSQL( username, eventQuery.getFromDate(), eventQuery.getToDate(), eventQuery, privateCalendars, publicCalendars, emptyRecurrentEventCalendars); String timezone = CalendarUtils.getCurrentUserCalendarSetting().getTimeZone(); if (originalRecurEvents != null && originalRecurEvents.size() > 0) { Iterator<CalendarEvent> recurEventsIter = originalRecurEvents.iterator(); while (recurEventsIter.hasNext()) { CalendarEvent recurEvent = recurEventsIter.next(); Map<String, CalendarEvent> tempMap = calendarService.getOccurrenceEvents( recurEvent, eventQuery.getFromDate(), eventQuery.getToDate(), timezone); if (tempMap != null) { recurrenceEventsMap.put(recurEvent.getId(), tempMap); allEvents.addAll(tempMap.values()); } } } Iterator<CalendarEvent> iter = allEvents.iterator(); while (iter.hasNext()) { CalendarEvent event = iter.next(); Date beginEvent = event.getFromDateTime(); Date endEvent = event.getToDateTime(); long eventAmount = endEvent.getTime() - beginEvent.getTime(); i = 0; c = getBeginDateOfWeek(); while (i++ < maxDay) { String key = keyGen(c.get(Calendar.DATE), c.get(Calendar.MONTH), c.get(Calendar.YEAR)); if (isSameDate(c.getTime(), beginEvent) && (isSameDate(c.getTime(), endEvent)) && eventAmount < CalendarUtils.MILISECONS_OF_DAY) { eventData_.get(key).add(event); iter.remove(); } c.add(Calendar.DATE, 1); } } for (CalendarEvent ce : allEvents) { allDayEvent.add(ce); } }