!7 lib 1400446 // caldav4j import net.fortuna.ical4j.model.Calendar; import net.fortuna.ical4j.model.Component; import net.fortuna.ical4j.model.ComponentList; import net.fortuna.ical4j.model.component.VEvent; import net.fortuna.ical4j.model.Date; import net.fortuna.ical4j.util.UidGenerator; import org.apache.commons.httpclient.HostConfiguration; import org.apache.commons.httpclient.UsernamePasswordCredentials; import org.apache.commons.httpclient.auth.AuthScope; import org.osaf.caldav4j.CalDAVCollection; import org.osaf.caldav4j.CalDAVConstants; import org.osaf.caldav4j.exceptions.CalDAV4JException; import org.osaf.caldav4j.methods.CalDAV4JMethodFactory; import org.osaf.caldav4j.methods.HttpClient; import org.osaf.caldav4j.model.request.CalendarQuery; import org.osaf.caldav4j.util.GenerateQuery; cprint { transient Calendar mainCalendar; transient CalDAVCollection collection; transient HttpClient httpClient; double calcDuration(VEvent ve) { return ( ve.getEndDate().getDate().getTime() - ve.getStartDate().getDate().getTime()) / (1000. * 60. * 60.); } start-thread { httpClient = new HttpClient; httpClient.getHostConfiguration().setHost("localhost", 5232, "http"); String username = "stefan"; UsernamePasswordCredentials httpCredentials = new(username, "bla"); httpClient.getState().setCredentials(AuthScope.ANY, httpCredentials); httpClient.getParams().setAuthenticationPreemptive(true); collection = new CalDAVCollection( //"/dav/"+ username +"/Calendar", "/stefan/cbedc050-528e-3102-6f59-2bda1287cb87/", (HostConfiguration) httpClient.getHostConfiguration().clone(), new CalDAV4JMethodFactory(), CalDAVConstants.PROC_ID_DEFAULT ); new GenerateQuery gq; // filter by date gq.setFilter("VEVENT [20201001T000000Z;20211010T000000Z] : STATUS!=CANCELLED"); // Get the raw caldav query // System.out.println("Query: "+ gq.prettyPrint()); CalendarQuery calendarQuery = gq.generate(); L calendars = collection.queryCalendars(httpClient, calendarQuery); print("Have " + n2(calendars, "calendar")); mainCalendar = first(calendars); for (Calendar calendar : calendars) { ComponentList componentList = calendar.getComponents().getComponents(Component.VEVENT); Iterator eventIterator = componentList.iterator(); while (eventIterator.hasNext()) { VEvent ve = eventIterator.next(); print("Event: "+ ve.toString()); print("Duration (h): "+ String.format("%.2f", calcDuration(ve))); print("\n\n"); } } print("done"); } void createChristmas ctex { java.util.Calendar calendar = java.util.Calendar.getInstance(); calendar.set(java.util.Calendar.MONTH, java.util.Calendar.DECEMBER); calendar.set(java.util.Calendar.DAY_OF_MONTH, 25); // initialise as an all-day event.. VEvent christmas = new VEvent(new Date(calendar.getTime()), "Christmas Day"); // Generate a UID for the event.. UidGenerator ug = new("1"); christmas.getProperties().add(ug.generateUid()); mainCalendar.getComponents().add(christmas); print("Christmas added: " + christmas); } void createCalendar ctex { collection.createCalendar(httpClient); } }