!!! Listings zum Artikel "Zur Erinnerung" !!! von Christoph Baeni in iX 2/2011, S. 126 !!! Listing 1: Termine auslesen import java.io.*; import java.net.*; import com.google.gdata.client.calendar.*; import com.google.gdata.data.*; import com.google.gdata.data.calendar.*; import com.google.gdata.data.extensions.*; import com.google.gdata.data.extensions.BaseEventEntry.*; import com.google.gdata.util.*; public class ReadEvents { private static boolean isBusy(CalendarEventEntry event) { Transparency transparency = event.getTransparency(); return Transparency.TRANSPARENT.equals(transparency); } public static void main(String[] args) throws IOException, ServiceException { CalendarService service = new CalendarService("iX-exampleApp-1"); service.setUserCredentials("xy@gmail.com", "secret"); String feedUrl = "https://www.google.com" + "/calendar/feeds/default/private/full"; CalendarQuery query = new CalendarQuery(new URL(feedUrl)); query.setMinimumStartTime( DateTime.parseDateTime("2011-01-01T00:00:00")); query.setMaximumStartTime( DateTime.parseDateTime("2011-01-31T23:59:59")); query.setStringCustomParameter("singleevents", "true"); query.setMaxResults(1024); CalendarEventFeed results = service.query(query, CalendarEventFeed.class); String calTitle = results.getTitle().getPlainText(); System.out.println("Kalender-Titel: " + calTitle); System.out.println("Termine:"); for (CalendarEventEntry event : results.getEntries()) { String title = event.getTitle().getPlainText(); System.out.println(title); for (When time : event.getTimes()) { DateTime start = time.getStartTime(); DateTime end = time.getEndTime(); String freeBusy = isBusy(event) ? "verfügbar" : "beschäftigt"; if (!start.isDateOnly() && !end.isDateOnly()) { System.out.println(" " + start.toUiString() + " - " + end.toUiString() + ": " + freeBusy); } else { System.out.println(" ganztags " + start.toUiString() + " - " + end.toUiString() + ": " + freeBusy); } } } } } !!! Listing 2: Mehrere Kalender abfragen import java.io.*; import java.net.*; import com.google.gdata.client.calendar.*; import com.google.gdata.data.calendar.*; import com.google.gdata.util.*; public class MultiCalendar { private static boolean isWritable(CalendarEntry entry) { AccessLevelProperty level = entry.getAccessLevel(); return level.equals(AccessLevelProperty.OWNER) || level.equals(AccessLevelProperty.ROOT) || level.equals(AccessLevelProperty.EDITOR); } public static void main( String[] args ) throws IOException, ServiceException { CalendarService service = new CalendarService("iX-exampleApp-1"); service.setUserCredentials("xy@gmail.com", "secret"); String feedUrl = "https://www.google.com" + "/calendar/feeds/default/allcalendars/full"; CalendarFeed resultFeed = service.getFeed(new URL(feedUrl), CalendarFeed.class); System.out.println("Ihre Kalender:"); boolean primary = true; for (CalendarEntry calendar: resultFeed.getEntries()) { String title = calendar.getTitle().getPlainText(); Boolean writable = isWritable(calendar); URL calFeedUrl = new URL(calendar.getLinks().get(0).getHref()); System.out.print(title + (primary ? " * " : " ")); System.out.println(writable ? "r/w" : "r"); System.out.println(" " + calFeedUrl); primary = false; } } } !!! Listing 3: Termine eintragen import java.io.*; import java.net.*; import com.google.gdata.client.calendar.*; import com.google.gdata.client.calendar.CalendarQuery.*; import com.google.gdata.data.*; import com.google.gdata.data.calendar.*; import com.google.gdata.data.extensions.*; import com.google.gdata.util.*; public class WriteEvents { public static void main(String[] args) throws IOException, ServiceException { String feedUrl = "https://www.google.com" + "/calendar/feeds/default/private/full"; CalendarService service = new CalendarService("iX-exampleApp-1"); service.setUserCredentials("xy@gmail.com", "secret"); CalendarEventEntry entry = new CalendarEventEntry(); entry.setTitle( new PlainTextConstruct("Abendessen mit Hans")); entry.setContent( new PlainTextConstruct("Zur Feier des Release")); DateTime startTime = DateTime.parseDateTime("2011-01-17T17:00:00"); DateTime endTime = DateTime.parseDateTime("2011-01-17T18:00:00"); When eventTimes = new When(); eventTimes.setStartTime(startTime); eventTimes.setEndTime(endTime); entry.addTime(eventTimes); ExtendedProperty property = new ExtendedProperty(); property.setName("de.ix.creator"); property.setValue("iX-exampleApp"); entry.addExtension(property); CalendarEventEntry insertedEvent = service.insert(new URL(feedUrl), entry); System.out.println("Event hinzugefuegt, id=" + insertedEvent.getId()); CalendarQuery query = new CalendarQuery(new URL(feedUrl)); query.setMinimumStartTime( DateTime.parseDateTime("2011-01-01T00:00:00")); query.setMaximumStartTime( DateTime.parseDateTime("2011-12-31T23:59:59")); query.setStringCustomParameter("singleevents", "true"); query.setExtendedPropertyQuery( new ExtendedPropertyMatch( "de.ix.creator", "iX-exampleApp")); CalendarEventFeed results = service.query(query, CalendarEventFeed.class); System.out.println("Events anpassen..."); for (CalendarEventEntry event : results.getEntries()) { String title = event.getTitle().getPlainText(); System.out.println(" * " + title); title = title.replaceAll("Hans", "Fritz"); event.setTitle(new PlainTextConstruct(title)); URL editUrl = new URL(event.getEditLink().getHref()); CalendarEventEntry updatedEvent = service.update(editUrl, event, event.getEtag()); } CalendarQuery query2 = new CalendarQuery(new URL(feedUrl)); query2.setExtendedPropertyQuery( new ExtendedPropertyMatch( "de.ix.creator", "iX-exampleApp")); CalendarEventFeed toDel = service.query(query2, CalendarEventFeed.class); System.out.println("Events loeschen..."); for (CalendarEventEntry event : toDel.getEntries()) { String title = event.getTitle().getPlainText(); System.out.println(" * " + title); URL deleteUrl = new URL(event.getEditLink().getHref()); service.delete(deleteUrl, event.getEtag()); } } }