private CalendarFolder createCalendar(String calendarName) { try { LOG.info(String.format("Trying to create new calendar with name '%s'", calendarName)); CalendarFolder folder = new CalendarFolder(exchangeService); folder.setDisplayName(calendarName); folder.save(WellKnownFolderName.Calendar); LOG.info(String.format("New calendar folder '%s' created.", calendarName)); return CalendarFolder.bind(exchangeService, folder.getId()); } catch (Exception ex) { // NOSONAR - EWS Java API throws Exception, that's life throw new CalendarNotCreatedException(String.format("Exchange calendar '%s' could not be created", calendarName), ex); } }
@Override public Optional<String> add(Absence absence, CalendarSettings calendarSettings) { ExchangeCalendarSettings exchangeCalendarSettings = calendarSettings.getExchangeCalendarSettings(); String calendarName = exchangeCalendarSettings.getCalendar(); connectToExchange(exchangeCalendarSettings); try { CalendarFolder calendarFolder = findOrCreateCalendar(calendarName); Appointment appointment = new Appointment(exchangeService); fillAppointment(absence, appointment); SendInvitationsMode invitationsMode = SendInvitationsMode.SendToNone; if (exchangeCalendarSettings.isSendInvitationActive()) { invitationsMode = SendInvitationsMode.SendToAllAndSaveCopy; } appointment.save(calendarFolder.getId(), invitationsMode); LOG.info(String.format("Appointment %s for '%s' added to exchange calendar '%s'.", appointment.getId(), absence.getPerson().getNiceName(), calendarFolder.getDisplayName())); return Optional.ofNullable(appointment.getId().getUniqueId()); } catch (Exception ex) { // NOSONAR - EWS Java API throws Exception, that's life LOG.warn("An error occurred while trying to add appointment to Exchange calendar"); mailService.sendCalendarSyncErrorNotification(calendarName, absence, ExceptionUtils.getStackTrace(ex)); } return Optional.empty(); }