Search in sources :

Example 1 with Recurrence

use of biweekly.util.Recurrence in project common by zenlunatics.

the class Event method newVEvent.

// --------------------------------------------------------------------------
public VEvent newVEvent(Request request) {
    VEvent vevent = new VEvent();
    StringBuilder summary = new StringBuilder();
    for (String item : m_event_provider.getDisplayItems()) appendItem(item, true, false, true, null, summary, request);
    vevent.setSummary(summary.toString());
    int length = getLength();
    int day_of_week = m_start.get(Calendar.DAY_OF_WEEK);
    int week_num = m_start.get(Calendar.DAY_OF_WEEK_IN_MONTH);
    m_start.setTimeZone(TimeZone.getTimeZone("GMT"));
    if (m_has_start_time) {
        vevent.setDateStart(m_start.getTime(), true);
        if (m_end_time != null) {
            m_end_time.setTimeZone(TimeZone.getTimeZone("GMT"));
            vevent.setDuration(Duration.builder().minutes(length).build());
        }
    } else
        vevent.setDateStart(m_start.getTime(), false);
    if (isRepeating()) {
        Recurrence.Builder recurrence;
        String repeat = getRepeat();
        if (repeat.equals("every day")) {
            if (m_has_start_time)
                recurrence = new Recurrence.Builder(Frequency.DAILY);
            else {
                m_end_date.add(Calendar.DATE, 1);
                vevent.setDateEnd(m_end_date.getTime(), false);
                return vevent;
            }
        } else if (repeat.endsWith("week"))
            recurrence = new Recurrence.Builder(Frequency.WEEKLY);
        else if (repeat.indexOf("year") != -1)
            recurrence = new Recurrence.Builder(Frequency.YEARLY);
        else if (repeat.equals("every month (same week and day)")) {
            recurrence = new Recurrence.Builder(Frequency.MONTHLY);
            recurrence.byDay(week_num, day_of_week == Calendar.MONDAY ? DayOfWeek.MONDAY : day_of_week == Calendar.TUESDAY ? DayOfWeek.TUESDAY : day_of_week == Calendar.WEDNESDAY ? DayOfWeek.WEDNESDAY : day_of_week == Calendar.THURSDAY ? DayOfWeek.THURSDAY : day_of_week == Calendar.FRIDAY ? DayOfWeek.FRIDAY : day_of_week == Calendar.SATURDAY ? DayOfWeek.SATURDAY : DayOfWeek.SUNDAY);
        } else
            recurrence = new Recurrence.Builder(Frequency.MONTHLY);
        if (m_end_date != null)
            if (m_has_start_time)
                recurrence.until(new Date(m_end_date.getTimeInMillis() + m_start.get(Calendar.HOUR_OF_DAY) * 60 * 60 * 1000 + m_start.get(Calendar.MINUTE) * 60 * 1000));
            else
                recurrence.until(m_end_date.getTime(), true);
        if (repeat.equals("every other week") || repeat.equals("every 2 months") || repeat.equals("every 2 years"))
            recurrence.interval(2);
        else if (repeat.equals("every 3 months"))
            recurrence.interval(3);
        else if (repeat.equals("every 4 months"))
            recurrence.interval(4);
        else if (repeat.equals("every 6 months"))
            recurrence.interval(6);
        vevent.setRecurrenceRule(recurrence.build());
    }
    if (m_location != null)
        vevent.setLocation(m_location.getText());
    return vevent;
}
Also used : VEvent(biweekly.component.VEvent) Recurrence(biweekly.util.Recurrence) Date(java.sql.Date) LocalDate(java.time.LocalDate)

Aggregations

VEvent (biweekly.component.VEvent)1 Recurrence (biweekly.util.Recurrence)1 Date (java.sql.Date)1 LocalDate (java.time.LocalDate)1