public class ImportCalendarPstFormatProcess {
public static final String PST_CL = "/CalendarOffice.pst";
private CalendarItem event;
@Before
public void init() {
Calendar cal = Calendar.getInstance();
cal.set(2021, Calendar.MAY, 26, 0, 0, 0);
cal.set(2021, Calendar.MAY, 26, 0, 0, 0);
event = new CalendarItem();
event.setRecurrenceRule("RRULE:FREQ=DAILY;UNTIL=20210814T060000Z;INTERVAL=1");
event.setSubject("RRULE");
event.setStart(cal.getTime());
event.setEnd(cal.getTime());
}
@Test
public void testCalendarWithRRule() {
Locale.setDefault(new Locale("en-us"));
PersonalStorage pst = PersonalStorage.create(System.getProperty("user.dir") + PST_CL, FileFormatVersion.Unicode);
FolderInfo fi = pst.createPredefinedFolder("Calendar", StandardIpmFolder.Appointments);
FolderInfo subFolder = fi.addSubFolder("Calendar RRULE", fi.getContainerClass());
DateFormat formatter = new SimpleDateFormat("yyyyMMdd'T'HHmmss");
String pattern = String.format("DTSTART:%s\r\nDTEND:%s\r\n%s",
formatter.format(event.getStart()),
formatter.format(event.getEnd()),
event.getRecurrenceRule()
);
MapiCalendar appointment = new MapiCalendar(
"LAKE ARGYLE WA 6743",
event.getSubject(),
"Description",
event.getStart(),
event.getEnd()
);
var recurrence = new MapiCalendarEventRecurrence();
recurrence.setRecurrencePattern(MapiCalendarRecurrencePatternFactory.fromString(pattern));
appointment.setRecurrence(recurrence);
subFolder.addMapiMessageItem(appointment);
Assert.assertTrue(new File(System.getProperty("user.dir") + PST_CL).exists());
}
}