Uses 21956K of libraries. Click here for Pure Java version (2230L/12K).
1 | !7 |
2 | |
3 | lib 1400446 // caldav4j |
4 | |
5 | import net.fortuna.ical4j.model.Calendar; |
6 | import net.fortuna.ical4j.model.Component; |
7 | import net.fortuna.ical4j.model.ComponentList; |
8 | import net.fortuna.ical4j.model.component.VEvent; |
9 | import net.fortuna.ical4j.model.Date; |
10 | import net.fortuna.ical4j.util.UidGenerator; |
11 | import org.apache.commons.httpclient.HostConfiguration; |
12 | import org.apache.commons.httpclient.UsernamePasswordCredentials; |
13 | import org.apache.commons.httpclient.auth.AuthScope; |
14 | import org.osaf.caldav4j.CalDAVCollection; |
15 | import org.osaf.caldav4j.CalDAVConstants; |
16 | import org.osaf.caldav4j.exceptions.CalDAV4JException; |
17 | import org.osaf.caldav4j.methods.CalDAV4JMethodFactory; |
18 | import org.osaf.caldav4j.methods.HttpClient; |
19 | import org.osaf.caldav4j.model.request.CalendarQuery; |
20 | import org.osaf.caldav4j.util.GenerateQuery; |
21 | |
22 | cprint {
|
23 | transient Calendar mainCalendar; |
24 | transient CalDAVCollection collection; |
25 | transient HttpClient httpClient; |
26 | |
27 | double calcDuration(VEvent ve) {
|
28 | return ( ve.getEndDate().getDate().getTime() |
29 | - ve.getStartDate().getDate().getTime()) |
30 | / (1000. * 60. * 60.); |
31 | } |
32 | |
33 | start-thread {
|
34 | httpClient = new HttpClient; |
35 | httpClient.getHostConfiguration().setHost("localhost", 5232, "http");
|
36 | String username = "stefan"; |
37 | UsernamePasswordCredentials httpCredentials = new(username, "bla"); |
38 | httpClient.getState().setCredentials(AuthScope.ANY, httpCredentials); |
39 | httpClient.getParams().setAuthenticationPreemptive(true); |
40 | |
41 | collection = new CalDAVCollection( |
42 | //"/dav/"+ username +"/Calendar", |
43 | "/stefan/cbedc050-528e-3102-6f59-2bda1287cb87/", |
44 | (HostConfiguration) httpClient.getHostConfiguration().clone(), |
45 | new CalDAV4JMethodFactory(), |
46 | CalDAVConstants.PROC_ID_DEFAULT |
47 | ); |
48 | |
49 | new GenerateQuery gq; |
50 | // filter by date |
51 | gq.setFilter("VEVENT [20201001T000000Z;20211010T000000Z] : STATUS!=CANCELLED");
|
52 | // Get the raw caldav query |
53 | // System.out.println("Query: "+ gq.prettyPrint());
|
54 | CalendarQuery calendarQuery = gq.generate(); |
55 | L<Calendar> calendars = collection.queryCalendars(httpClient, calendarQuery); |
56 | print("Have " + n2(calendars, "calendar"));
|
57 | mainCalendar = first(calendars); |
58 | |
59 | for (Calendar calendar : calendars) {
|
60 | ComponentList componentList = calendar.getComponents().getComponents(Component.VEVENT); |
61 | Iterator<VEvent> eventIterator = componentList.iterator(); |
62 | while (eventIterator.hasNext()) {
|
63 | VEvent ve = eventIterator.next(); |
64 | print("Event: "+ ve.toString());
|
65 | print("Duration (h): "+ String.format("%.2f", calcDuration(ve)));
|
66 | print("\n\n");
|
67 | } |
68 | } |
69 | |
70 | print("done");
|
71 | } |
72 | |
73 | void createChristmas ctex {
|
74 | java.util.Calendar calendar = java.util.Calendar.getInstance(); |
75 | calendar.set(java.util.Calendar.MONTH, java.util.Calendar.DECEMBER); |
76 | calendar.set(java.util.Calendar.DAY_OF_MONTH, 25); |
77 | |
78 | // initialise as an all-day event.. |
79 | VEvent christmas = new VEvent(new Date(calendar.getTime()), "Christmas Day"); |
80 | |
81 | // Generate a UID for the event.. |
82 | UidGenerator ug = new("1");
|
83 | christmas.getProperties().add(ug.generateUid()); |
84 | |
85 | mainCalendar.getComponents().add(christmas); |
86 | print("Christmas added: " + christmas);
|
87 | } |
88 | |
89 | void createCalendar ctex {
|
90 | collection.createCalendar(httpClient); |
91 | } |
92 | } |
download show line numbers debug dex old transpilations
Travelled to 4 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, vouqrxazstgt
No comments. add comment
| Snippet ID: | #1030397 |
| Snippet name: | caldav4j test for local Radicale server |
| Eternal ID of this version: | #1030397/11 |
| Text MD5: | 18deea8b4fdcc8f19477827f55abc779 |
| Transpilation MD5: | 3281001411859da33224627c6eea0eef |
| Author: | stefan |
| Category: | javax / stefan's os |
| Type: | JavaX source code (Dynamic Module) |
| Public (visible to everyone): | Yes |
| Archived (hidden from active list): | No |
| Created/modified: | 2020-12-11 17:06:16 |
| Source code size: | 3432 bytes / 92 lines |
| Pitched / IR pitched: | No / No |
| Views / Downloads: | 708 / 880 |
| Version history: | 10 change(s) |
| Referenced in: | [show references] |