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;
}
Aggregations