[Bedework-commit] calendarapi r282 - in trunk: calFacade/src/org/bedework/calfacade calsvc/src/org/bedework/calsvc

svnadmin at bedework.org svnadmin at bedework.org
Thu May 10 14:28:57 EDT 2007


Author: douglm
Date: 2007-05-10 14:28:44 -0400 (Thu, 10 May 2007)
New Revision: 282

Modified:
   trunk/calFacade/src/org/bedework/calfacade/BwEvent.java
   trunk/calsvc/src/org/bedework/calsvc/CalSvc.java
Log:
First go at making calendars visible for external subscription e.g. google

Has "cat" request parameter to specify category.

Modified: trunk/calFacade/src/org/bedework/calfacade/BwEvent.java
===================================================================
--- trunk/calFacade/src/org/bedework/calfacade/BwEvent.java	2007-05-09 16:42:19 UTC (rev 281)
+++ trunk/calFacade/src/org/bedework/calfacade/BwEvent.java	2007-05-10 18:28:44 UTC (rev 282)
@@ -69,6 +69,7 @@
 import org.bedework.calfacade.util.CalFacadeUtil;
 
 import net.fortuna.ical4j.model.DateTime;
+import net.fortuna.ical4j.model.Period;
 import net.fortuna.ical4j.model.property.Created;
 import net.fortuna.ical4j.model.property.DtStamp;
 import net.fortuna.ical4j.model.property.LastModified;
@@ -2108,6 +2109,55 @@
    *                   Convenience methods
    * ==================================================================== */
 
+  /** Return all timezone ids this event uses. This is used when an event is
+   * added by another user to ensure that the target user has a copy of user
+   * specific timezones.
+   *
+   * @return Collection of timezone ids.
+   * @throws CalFacadeException
+   */
+  public Collection<String> getTimeZoneIds() throws CalFacadeException {
+    Collection<String> ids = new TreeSet<String>();
+
+    BwDateTime dt = getDtstart();
+    if ((dt != null) && (dt.getTzid() != null)) {
+      ids.add(dt.getTzid());
+    }
+
+    dt = getDtend();
+    if ((dt != null) && (dt.getTzid() != null)) {
+      ids.add(dt.getTzid());
+    }
+
+    for (BwDateTime rdt: getRdates()) {
+      if (rdt.getTzid() != null) {
+        ids.add(rdt.getTzid());
+      }
+    }
+
+    for (BwDateTime rdt: getExdates()) {
+      if (rdt.getTzid() != null) {
+        ids.add(rdt.getTzid());
+      }
+    }
+
+    for (BwFreeBusyComponent fbc: getFreeBusyPeriods()) {
+      for (Period p: fbc.getPeriods()) {
+        DateTime fdt = p.getStart();
+        if (fdt.getTimeZone() != null) {
+          ids.add(fdt.getTimeZone().getID());
+        }
+
+        fdt = p.getEnd();
+        if (fdt.getTimeZone() != null) {
+          ids.add(fdt.getTimeZone().getID());
+        }
+      }
+    }
+
+    return ids;
+  }
+
   /** Can this event be moved into the trash or does it have to be deleted?
    *
    * @return boolean

Modified: trunk/calsvc/src/org/bedework/calsvc/CalSvc.java
===================================================================
--- trunk/calsvc/src/org/bedework/calsvc/CalSvc.java	2007-05-09 16:42:19 UTC (rev 281)
+++ trunk/calsvc/src/org/bedework/calsvc/CalSvc.java	2007-05-10 18:28:44 UTC (rev 282)
@@ -3077,10 +3077,10 @@
    * ==================================================================== */
 
   private EventUpdateResult addEvent(BwCalendar cal,
-                                      BwEvent event,
-                                      Collection<BwEventProxy> overrides,
-                                      boolean scheduling,
-                                      boolean rollbackOnError) throws CalFacadeException {
+                                     BwEvent event,
+                                     Collection<BwEventProxy> overrides,
+                                     boolean scheduling,
+                                     boolean rollbackOnError) throws CalFacadeException {
     EventUpdateResult updResult = new EventUpdateResult();
     BwEventProxy proxy = null;
     BwEvent override = null;
@@ -3093,6 +3093,18 @@
       setupSharableEntity(event);
     }
 
+    if (!cal.getOwner().equals(getUser())) {
+      /* This event is being added to another users calendar. Ensure we add any
+       * timezones the target user does not already own.
+       */
+
+/*      CalTimezones ctz = getTimezones();
+
+      for (String tzid: event.getTimeZoneIds()) {
+
+      }*/
+    }
+
     BwLocation loc = event.getLocation();
     BwContact sp = event.getContact();
 
@@ -3228,7 +3240,8 @@
 
       return postProcess(getCal(sub).getEvents(sub.getCalendar(), filter,
                                                startDate, endDate,
-                                               recurRetrieval, freeBusy, true),
+                                               recurRetrieval, freeBusy,
+                                               !freeBusy),
                          sub);
     }
 



More information about the Bedework-commit mailing list