@Override protected String doExportData( PortletDataContext portletDataContext, String portletId, PortletPreferences portletPreferences) throws Exception { portletDataContext.addPermissions( "com.liferay.portlet.calendar", portletDataContext.getScopeGroupId()); Element rootElement = addExportDataRootElement(portletDataContext); rootElement.addAttribute("group-id", String.valueOf(portletDataContext.getScopeGroupId())); List<CalEvent> events = CalEventUtil.findByGroupId(portletDataContext.getScopeGroupId()); for (CalEvent event : events) { exportEvent(portletDataContext, rootElement, event); } return getExportDataRootElementString(rootElement); }
protected void importEvent( PortletDataContext portletDataContext, Element eventElement, CalEvent event) throws Exception { long userId = portletDataContext.getUserId(event.getUserUuid()); Date startDate = event.getStartDate(); int startDateMonth = 0; int startDateDay = 0; int startDateYear = 0; int startDateHour = 0; int startDateMinute = 0; if (startDate != null) { Locale locale = null; TimeZone timeZone = null; if (event.getTimeZoneSensitive()) { User user = UserLocalServiceUtil.getUser(userId); locale = user.getLocale(); timeZone = user.getTimeZone(); } else { locale = LocaleUtil.getDefault(); timeZone = TimeZoneUtil.getTimeZone(StringPool.UTC); } Calendar startCal = CalendarFactoryUtil.getCalendar(timeZone, locale); startCal.setTime(startDate); startDateMonth = startCal.get(Calendar.MONTH); startDateDay = startCal.get(Calendar.DATE); startDateYear = startCal.get(Calendar.YEAR); startDateHour = startCal.get(Calendar.HOUR); startDateMinute = startCal.get(Calendar.MINUTE); if (startCal.get(Calendar.AM_PM) == Calendar.PM) { startDateHour += 12; } } ServiceContext serviceContext = portletDataContext.createServiceContext(eventElement, event, NAMESPACE); CalEvent importedEvent = null; if (portletDataContext.isDataStrategyMirror()) { CalEvent existingEvent = CalEventUtil.fetchByUUID_G(event.getUuid(), portletDataContext.getScopeGroupId()); if (existingEvent == null) { serviceContext.setUuid(event.getUuid()); importedEvent = CalEventLocalServiceUtil.addEvent( userId, event.getTitle(), event.getDescription(), event.getLocation(), startDateMonth, startDateDay, startDateYear, startDateHour, startDateMinute, event.getDurationHour(), event.getDurationMinute(), event.isAllDay(), event.isTimeZoneSensitive(), event.getType(), event.getRepeating(), event.getRecurrenceObj(), event.getRemindBy(), event.getFirstReminder(), event.getSecondReminder(), serviceContext); } else { importedEvent = CalEventLocalServiceUtil.updateEvent( userId, existingEvent.getEventId(), event.getTitle(), event.getDescription(), event.getLocation(), startDateMonth, startDateDay, startDateYear, startDateHour, startDateMinute, event.getDurationHour(), event.getDurationMinute(), event.isAllDay(), event.isTimeZoneSensitive(), event.getType(), event.getRepeating(), event.getRecurrenceObj(), event.getRemindBy(), event.getFirstReminder(), event.getSecondReminder(), serviceContext); } } else { importedEvent = CalEventLocalServiceUtil.addEvent( userId, event.getTitle(), event.getDescription(), event.getLocation(), startDateMonth, startDateDay, startDateYear, startDateHour, startDateMinute, event.getDurationHour(), event.getDurationMinute(), event.isAllDay(), event.isTimeZoneSensitive(), event.getType(), event.getRepeating(), event.getRecurrenceObj(), event.getRemindBy(), event.getFirstReminder(), event.getSecondReminder(), serviceContext); } portletDataContext.importClassedModel(event, importedEvent, NAMESPACE); }