⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icalparser.java

📁 本系统有十分强大的功能
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    }     
                    else
                        event.setStartDate(new DateTime(comp.getProperties().getProperty(Property.DTSTART).getValue()));
                if(comp.getProperties().getProperty((Property.DTEND)) != null)
                    if(comp.getProperties().getProperty(Property.DTEND).getParameter("VALUE") != null 
                            && comp.getProperties().getProperty(Property.DTEND).getParameter("VALUE").getValue().equals("DATE"))
                         {
                             event.setEndDate(new Date(comp.getProperties().getProperty(Property.DTEND).getValue()));
                         }     
                         else
                             event.setEndDate(new DateTime(comp.getProperties().getProperty(Property.DTEND).getValue()));
                else
                    event.setEndDate(event.getStartDate());
                if(comp.getProperties().getProperty(Property.RRULE) != null)
                    readRecur(comp.getProperties().getProperty(Property.RRULE).getValue(),event);
                else
                    event.setRecurrenceType(RecurrenceType.NONE);
                if(comp.getProperties().getProperty("X-OC-ID") != null)
                    event.setId(Integer.parseInt(comp.getProperties().getProperty("X-OC-ID").getValue()));
                else if(comp.getProperties().getProperty(Property.UID) != null && comp.getProperties().getProperty(Property.UID).getValue().endsWith("@opencustomner"))
                    event.setId(Integer.parseInt(comp.getProperties().getProperty(Property.UID).getValue().split("@")[0]));
                events.add(event);
                if(log.isDebugEnabled())
                    log.debug("event parsed: " + event);
            }
            else
                if(log.isDebugEnabled())
                    log.debug("component ignored");
        }
        
        return events;
    }
    
    /**
     * private method to parse the recurreces
     * @param event the given event
     * @return a RRule generated by the event
     * @throws ParseException
     */
    private RRule getRRule(EventVO event) throws ParseException
    {
        CalendarVO mainCalendar = null;
        
        for(EventCalendarVO vo : event.getEventCalendars()) {
            if(EventCalendarVO.ParticipiantType.HOST.equals(vo.getParticipiantType())) {
                mainCalendar = vo.getCalendar();
            }
        }
        
        Recur recur = new Recur("");
        if(event.getRecurrenceCycleUnit() == EventVO.RecurrenceUnit.DAY)
            recur.setFrequency(Recur.DAILY);
        else if(event.getRecurrenceCycleUnit() == EventVO.RecurrenceUnit.WEEK)
            recur.setFrequency(Recur.WEEKLY);
        else if(event.getRecurrenceCycleUnit() == EventVO.RecurrenceUnit.MONTH)
            recur.setFrequency(Recur.MONTHLY);
        else if(event.getRecurrenceCycleUnit() == EventVO.RecurrenceUnit.YEAR)
            recur.setFrequency(Recur.YEARLY);
        
        if(event.getRecurrenceCycle() != null)
            recur.setInterval(event.getRecurrenceCycle());
        
        if(event.getRecurrenceType() == RecurrenceType.UNTIL_DATE)
            recur.setUntil(new Date(event.getRecurrenceEndDate()));
        else if(event.getRecurrenceType() == RecurrenceType.NUMBER_OF_TIMES)
            recur.setCount(event.getRecurrenceNumberOfTimes());
        
        for(RecurrenceInWeek day : event.getRecurrenceInWeek())
        {
            if (day.getCalendarValue() == java.util.Calendar.MONDAY)
                recur.getDayList().add(new WeekDay("MO"));
            if (day.getCalendarValue() == java.util.Calendar.TUESDAY)
                recur.getDayList().add(new WeekDay("TU"));
            if (day.getCalendarValue() == java.util.Calendar.WEDNESDAY)
                recur.getDayList().add(new WeekDay("WE"));
            if (day.getCalendarValue() == java.util.Calendar.THURSDAY)
                recur.getDayList().add(new WeekDay("TH"));
            if (day.getCalendarValue() == java.util.Calendar.FRIDAY)
                recur.getDayList().add(new WeekDay("FR"));
            if (day.getCalendarValue() == java.util.Calendar.SATURDAY)
                recur.getDayList().add(new WeekDay("SA"));
            if (day.getCalendarValue() == java.util.Calendar.SUNDAY)
                recur.getDayList().add(new WeekDay("SU"));
        }
         
        if(event.getRecurrenceInMonth() == EventVO.RecurrenceInMonth.DAY_OF_MONTH)
        {
            java.util.Calendar cal = GregorianCalendar.getInstance();
            cal.setFirstDayOfWeek(mainCalendar.getFirstDayOfWeek().getDay());
            cal.setTime(event.getStartDate());
            recur.getMonthDayList().add(cal.get(java.util.Calendar.DAY_OF_MONTH));
        }
        else if(event.getRecurrenceInMonth() == EventVO.RecurrenceInMonth.DAY_OF_WEEK)
        {
            java.util.Calendar cal = GregorianCalendar.getInstance();
            cal.setFirstDayOfWeek(mainCalendar.getFirstDayOfWeek().getDay());
            cal.setTime(event.getStartDate());
            int week = cal.get(java.util.Calendar.WEEK_OF_MONTH);
            int day = cal.get(java.util.Calendar.DAY_OF_WEEK);
            if (day== java.util.Calendar.MONDAY)
                recur.getDayList().add(new WeekDay(week + "MO"));
            if (day == java.util.Calendar.TUESDAY)
                recur.getDayList().add(new WeekDay(week + "TU"));
            if (day == java.util.Calendar.WEDNESDAY)
                recur.getDayList().add(new WeekDay(week + "WE"));
            if (day == java.util.Calendar.THURSDAY)
                recur.getDayList().add(new WeekDay(week + "TH"));
            if (day == java.util.Calendar.FRIDAY)
                recur.getDayList().add(new WeekDay(week + "FR"));
            if (day == java.util.Calendar.SATURDAY)
                recur.getDayList().add(new WeekDay(week + "SA"));
            if (day == java.util.Calendar.SUNDAY)
                recur.getDayList().add(new WeekDay(week + "SU"));
        }
        
        recur.setWeekStartDay("MO");
        return new RRule(recur);
    }
    
    /**
     * this method parses a given rrule and write the reccurences to the event
     * @param rrule the given rrule
     * @param event the event to save the reccurences
     * @throws ParseException
     */
    private void readRecur(String rrule, EventVO event) throws ParseException
    {
        Recur recur = new Recur(rrule);
        
        if(recur.getInterval() > 0)
            event.setRecurrenceCycle(recur.getInterval());
        
        if(recur.getUntil() != null)
        {
            event.setRecurrenceUntilDate(recur.getUntil());
            event.setRecurrenceType(RecurrenceType.UNTIL_DATE);
        }
        else if(recur.getCount() != -1)
        {
            event.setRecurrenceNumberOfTimes(recur.getCount());
            event.setRecurrenceType(RecurrenceType.NUMBER_OF_TIMES);
        }
        else
            event.setRecurrenceType(RecurrenceType.FOREVER);
            
        if(recur.getFrequency().equals(Recur.DAILY))
        {
            event.setRecurrenceCycleUnit(RecurrenceUnit.DAY);
        }      
        else if(recur.getFrequency().equals(Recur.WEEKLY))
        {
            event.setRecurrenceCycleUnit(RecurrenceUnit.WEEK);
            if(recur.getDayList().contains(new WeekDay("MO")))
                event.getRecurrenceInWeek().add(RecurrenceInWeek.MONDAY);
            if(recur.getDayList().contains(new WeekDay("TU")))
                event.getRecurrenceInWeek().add(RecurrenceInWeek.TUESDAY);
            if(recur.getDayList().contains(new WeekDay("WE")))
                event.getRecurrenceInWeek().add(RecurrenceInWeek.WEDNESDAY);
            if(recur.getDayList().contains(new WeekDay("TH")))
                event.getRecurrenceInWeek().add(RecurrenceInWeek.THURSDAY);
            if(recur.getDayList().contains(new WeekDay("FR")))
                event.getRecurrenceInWeek().add(RecurrenceInWeek.FRIDAY);
            if(recur.getDayList().contains(new WeekDay("SA")))
                event.getRecurrenceInWeek().add(RecurrenceInWeek.SATURDAY);
            if(recur.getDayList().contains(new WeekDay("SU")))
                event.getRecurrenceInWeek().add(RecurrenceInWeek.SUNDAY);
        }
        else if(recur.getFrequency().equals(Recur.MONTHLY))
        {
            event.setRecurrenceCycleUnit(RecurrenceUnit.MONTH);
            if(recur.getDayList().isEmpty())
                event.setRecurrenceInMonth(RecurrenceInMonth.DAY_OF_MONTH);
            else
                event.setRecurrenceInMonth(RecurrenceInMonth.DAY_OF_WEEK);
        }
        else if(recur.getFrequency().equals(Recur.YEARLY))
        {
            event.setRecurrenceCycleUnit(RecurrenceUnit.YEAR);
        }     
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -