Есть ли способ удалить несколько записей STANDARD, DAYLIGHT и RDate в строке iCal? - PullRequest
0 голосов
/ 09 января 2020

Может кто-нибудь помочь, я хочу знать, как удалить все компоненты DAYLIGHT и STANDARD из VTIMEZONE, кроме самого последнего в java, когда я добавляю компонент VTimeZone в Календарь, я получаю НЕСКОЛЬКО RDate записей, что просто мусор, поскольку я должен хранить эту строку iCal в дБ

        final Calendar calendar = new Calendar();
        calendar.getProperties().add(new ProdId(Constants.ICAL_DEFAULT_PROD_ID));
        calendar.getProperties().add(Version.VERSION_2_0);
        // Create a TimeZone
        TimeZoneRegistry registry = TimeZoneRegistryFactory.getInstance().createRegistry();
        TimeZone timezone = registry.getTimeZone("America/Vancouver");
        VTimeZone tz = timezone.getVTimeZone();
        calendar.getComponents().add(tz); // This is causing multiple DAYLIGHT,STANDARD and RDATE garbage,
        final VEvent vEvent = new VEvent();
        vEvent.getProperties().add(new Uid(DUMMY_UID));
        vEvent.getProperties().add(new Summary(Constants.ICAL_DEFAULT_SUMMARY));
        vEvent.getProperties().add(new Description(Constants.ICAL_DEFAULT_DESCRIPTION));

        final DtStart dtStart = new DtStart(eventStart);
        vEvent.getProperties().add(dtStart);
       vEvent.getProperties().add(timezone.getVTimeZone().getTimeZoneId());
        final DtEnd dtEnd = new DtEnd(eventEnd);
        vEvent.getProperties().add(dtEnd);
       vEvent.getProperties().add(timezone.getVTimeZone().getTimeZoneId());
        Recur recur = null;
        final String recurrenceExpression = createRecurrenceExpression(recurrence);
        if (!StringUtils.isBlank(recurrenceExpression)) {
            try {
                recur = new Recur(recurrenceExpression);
                final RRule rule = new RRule(recur);
                vEvent.getProperties().add(rule);
            } catch (Exception e) {
                errorMessage = "Exception occurred while creating Recurrence with expression: " + recurrenceExpression + ". Exception: " + e;
                LOG.error(errorMessage);
                throw new DataException(errorMessage);
            }

        }
        calendar.getComponents().add(event);

Вывод:

BEGIN:VCALENDAR
PRODID:-//ZoneScheduleConfiguration//iCal4j 3.0//EN
VERSION:2.0
BEGIN:VTIMEZONE
TZID:America/Vancouver
TZURL:http://tzurl.org/zoneinfo/America/Vancouver
X-LIC-LOCATION:America/Vancouver
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:20070311T020000
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:20071104T020000
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU
END:STANDARD
BEGIN:STANDARD
TZOFFSETFROM:-081228
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:18840101T000000
RDATE:18840101T000000
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PDT
DTSTART:19180414T020000
RDATE:19180414T020000
RDATE:19460428T020000
RDATE:19470427T020000
RDATE:19480425T020000
RDATE:19490424T020000
RDATE:19500430T010000
RDATE:19510429T010000
RDATE:19520427T010000
RDATE:19530426T010000
RDATE:19540425T010000
RDATE:19550424T010000
RDATE:19560429T010000
RDATE:19570428T010000
RDATE:19580427T010000
RDATE:19590426T010000
RDATE:19600424T010000
RDATE:19610430T010000
RDATE:19620429T010000
RDATE:19630428T010000
RDATE:19640426T010000
RDATE:19650425T010000
RDATE:19660424T010000
RDATE:19670430T020000
RDATE:19680428T020000
RDATE:19690427T020000
RDATE:19700426T020000
RDATE:19710425T020000
RDATE:19720430T020000
RDATE:19730429T020000
RDATE:19740428T020000
RDATE:19750427T020000
RDATE:19760425T020000
RDATE:19770424T020000
RDATE:19780430T020000
RDATE:19790429T020000
RDATE:19800427T020000
RDATE:19810426T020000
RDATE:19820425T020000
RDATE:19830424T020000
RDATE:19840429T020000
RDATE:19850428T020000
RDATE:19860427T020000
RDATE:19870405T020000
RDATE:19880403T020000
RDATE:19890402T020000
RDATE:19900401T020000
RDATE:19910407T020000
RDATE:19920405T020000
RDATE:19930404T020000
RDATE:19940403T020000
RDATE:19950402T020000
RDATE:19960407T020000
RDATE:19970406T020000
RDATE:19980405T020000
RDATE:19990404T020000
RDATE:20000402T020000
RDATE:20010401T020000
RDATE:20020407T020000
RDATE:20030406T020000
RDATE:20040404T020000
RDATE:20050403T020000
RDATE:20060402T020000
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0700
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:19181027T020000
RDATE:19181027T020000
RDATE:19450930T020000
RDATE:19461013T020000
RDATE:19470928T020000
RDATE:19480926T020000
RDATE:19490925T020000
RDATE:19500924T020000
RDATE:19510930T020000
RDATE:19520928T020000
RDATE:19530927T020000
RDATE:19540926T020000
RDATE:19550925T020000
RDATE:19560930T020000
RDATE:19570929T020000
RDATE:19580928T020000
RDATE:19590927T020000
RDATE:19600925T020000
RDATE:19610924T020000
RDATE:19621028T020000
RDATE:19631027T020000
RDATE:19641025T020000
RDATE:19651031T020000
RDATE:19661030T020000
RDATE:19671029T020000
RDATE:19681027T020000
RDATE:19691026T020000
RDATE:19701025T020000
RDATE:19711031T020000
RDATE:19721029T020000
RDATE:19731028T020000
RDATE:19741027T020000
RDATE:19751026T020000
RDATE:19761031T020000
RDATE:19771030T020000
RDATE:19781029T020000
RDATE:19791028T020000
RDATE:19801026T020000
RDATE:19811025T020000
RDATE:19821031T020000
RDATE:19831030T020000
RDATE:19841028T020000
RDATE:19851027T020000
RDATE:19861026T020000
RDATE:19871025T020000
RDATE:19881030T020000
RDATE:19891029T020000
RDATE:19901028T020000
RDATE:19911027T020000
RDATE:19921025T020000
RDATE:19931031T020000
RDATE:19941030T020000
RDATE:19951029T020000
RDATE:19961027T020000
RDATE:19971026T020000
RDATE:19981025T020000
RDATE:19991031T020000
RDATE:20001029T020000
RDATE:20011028T020000
RDATE:20021027T020000
RDATE:20031026T020000
RDATE:20041031T020000
RDATE:20051030T020000
RDATE:20061029T020000
END:STANDARD
BEGIN:DAYLIGHT
TZOFFSETFROM:-0800
TZOFFSETTO:-0700
TZNAME:PWT
DTSTART:19420209T020000
RDATE:19420209T020000
END:DAYLIGHT
BEGIN:DAYLIGHT
TZOFFSETFROM:-0700
TZOFFSETTO:-0700
TZNAME:PPT
DTSTART:19450814T160000
RDATE:19450814T160000
END:DAYLIGHT
BEGIN:STANDARD
TZOFFSETFROM:-0800
TZOFFSETTO:-0800
TZNAME:PST
DTSTART:19870101T000000
RDATE:19870101T000000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTAMP:20200109T200404Z
UID:DUMMY_UID
SUMMARY:ZoneScheduleConfiguration Event
DESCRIPTION:This is an event created for ZoneScheduleConfiguration
DTSTART:20200101T000000
DTEND:20200101T235959
RRULE:FREQ=WEEKLY;BYDAY=SU,MO,TU,WE,TH,FR,SA
END:VEVENT
END:VCALENDAR
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...