[Bedework-commit] r420 - in trunk/calendar3: caldav/src/edu/rpi/cct/uwcal/caldav/calquery calsvc/src/org/bedework/calsvc test/src/org/bedework/tests/caldav

svnadmin at bedework.org svnadmin at bedework.org
Fri Apr 28 11:57:22 EDT 2006


Author: douglm
Date: 2006-04-28 11:57:22 -0400 (Fri, 28 Apr 2006)
New Revision: 420

Modified:
   trunk/calendar3/caldav/src/edu/rpi/cct/uwcal/caldav/calquery/FreeBusyQuery.java
   trunk/calendar3/calsvc/src/org/bedework/calsvc/CalSvc.java
   trunk/calendar3/test/src/org/bedework/tests/caldav/Req.java
Log:
Caldav-test: Add primitive token support in data
Fixes to caldav free/busy

Modified: trunk/calendar3/caldav/src/edu/rpi/cct/uwcal/caldav/calquery/FreeBusyQuery.java
===================================================================
--- trunk/calendar3/caldav/src/edu/rpi/cct/uwcal/caldav/calquery/FreeBusyQuery.java	2006-04-28 13:48:22 UTC (rev 419)
+++ trunk/calendar3/caldav/src/edu/rpi/cct/uwcal/caldav/calquery/FreeBusyQuery.java	2006-04-28 15:57:22 UTC (rev 420)
@@ -59,7 +59,6 @@
 import org.bedework.calsvci.CalSvcI;
 import org.bedework.davdefs.CaldavTags;
 
-
 import edu.rpi.cct.uwcal.caldav.CalDavParseUtil;
 import edu.rpi.cct.uwcal.caldav.CaldavBWIntf;
 import edu.rpi.cct.uwcal.caldav.TimeRange;
@@ -68,10 +67,9 @@
 import edu.rpi.cct.webdav.servlet.shared.WebdavException;
 import edu.rpi.cct.webdav.servlet.shared.WebdavNsIntf;
 
-
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
-import java.util.Vector;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.log4j.Logger;
@@ -109,7 +107,7 @@
   public int parse(Node nd) throws WebdavException {
     try {
       if (timeRanges == null) {
-        timeRanges = new Vector();
+        timeRanges = new ArrayList();
       }
 
       if (!MethodBase.nodeMatches(nd, CaldavTags.timeRange)) {
@@ -139,7 +137,7 @@
    */
   public Collection getFreeBusy(CalSvcI svci, String user) throws WebdavException {
     Iterator it = timeRanges.iterator();
-    Collection fbs = new Vector();
+    Collection fbs = new ArrayList();
 
     while (it.hasNext()) {
       TimeRange tr = (TimeRange)it.next();

Modified: trunk/calendar3/calsvc/src/org/bedework/calsvc/CalSvc.java
===================================================================
--- trunk/calendar3/calsvc/src/org/bedework/calsvc/CalSvc.java	2006-04-28 13:48:22 UTC (rev 419)
+++ trunk/calendar3/calsvc/src/org/bedework/calsvc/CalSvc.java	2006-04-28 15:57:22 UTC (rev 420)
@@ -1146,10 +1146,6 @@
         return fb;
       }
 
-      /* For the moment just build a single BwFreeBusyComponent
-       */
-      BwFreeBusyComponent fbc = new BwFreeBusyComponent();
-
       Iterator it = events.iterator();
 
       TreeSet eventPeriods = new TreeSet();
@@ -1180,8 +1176,13 @@
           dend = eend.getDtval();
         }
 
-        eventPeriods.add(new EventPeriod(new DateTime(dstart),
-                                         new DateTime(dend)));
+        DateTime psdt = new DateTime(dstart);
+        DateTime pedt = new DateTime(dend);
+
+        psdt.setUtc(true);
+        pedt.setUtc(true);
+
+        eventPeriods.add(new EventPeriod(psdt, pedt));
       }
 
       /* iterate through the sorted periods combining them where they are
@@ -1189,6 +1190,10 @@
 
       Period p = null;
 
+      /* For the moment just build a single BwFreeBusyComponent
+       */
+      BwFreeBusyComponent fbc = null;
+
       it = eventPeriods.iterator();
       while (it.hasNext()) {
         EventPeriod ep = (EventPeriod)it.next();
@@ -1197,6 +1202,9 @@
           p = new Period(ep.start, ep.end);
         } else if (ep.start.after(p.getEnd())) {
           // Non adjacent periods
+          if (fbc == null) {
+            fbc = new BwFreeBusyComponent();
+          }
           fbc.addPeriod(p);
           p = new Period(ep.start, ep.end);
         } else if (ep.end.after(p.getEnd())) {
@@ -1206,10 +1214,15 @@
       }
 
       if (p != null) {
+        if (fbc == null) {
+          fbc = new BwFreeBusyComponent();
+        }
         fbc.addPeriod(p);
       }
 
-      fb.addTime(fbc);
+      if (fbc != null) {
+        fb.addTime(fbc);
+      }
     } catch (Throwable t) {
       throw new CalFacadeException(t);
     }

Modified: trunk/calendar3/test/src/org/bedework/tests/caldav/Req.java
===================================================================
--- trunk/calendar3/test/src/org/bedework/tests/caldav/Req.java	2006-04-28 13:48:22 UTC (rev 419)
+++ trunk/calendar3/test/src/org/bedework/tests/caldav/Req.java	2006-04-28 15:57:22 UTC (rev 420)
@@ -54,12 +54,17 @@
 
 package org.bedework.tests.caldav;
 
+import org.bedework.calfacade.CalFacadeUtil;
+
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileReader;
 import java.io.LineNumberReader;
-import java.util.Vector;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.Date;
 
 import org.apache.commons.httpclient.Header;
 
@@ -101,8 +106,8 @@
       frdr = new FileReader(testFile);
       LineNumberReader lnr = new LineNumberReader(frdr);
 
-      Vector headers = null;
-      Vector cont = null;
+      Collection headers = null;
+      Collection cont = null;
 
       do {
         String ln = lnr.readLine();
@@ -150,7 +155,7 @@
                 HEADER
            */
           if (headers == null) {
-            headers = new Vector();
+            headers = new ArrayList();
           }
 
           String hdr = ln.substring(hdrHdr.length());
@@ -184,7 +189,7 @@
                 CONTENT
            */
           if (cont == null) {
-            cont = new Vector();
+            cont = new ArrayList();
           }
         } else {
           throw new Exception("Bad test data file " + testFileName);
@@ -310,7 +315,8 @@
       sb.append(content[i]);
       sb.append("\n");
     }
-    contentBytes = sb.toString().getBytes();
+    contentBytes = detokenizeContent(sb);
+
     return contentBytes;
   }
 
@@ -331,9 +337,61 @@
       baos.write(x);
     } while (true);
 
-    contentBytes = baos.toByteArray();
+    contentBytes = detokenizeContent(new StringBuffer(baos.toString()));
 
     return contentBytes;
   }
+
+  /* Replace any of our tokens with values. Pretty primitive at the moment.
+   *
+   */
+  private byte[] detokenizeContent(StringBuffer val) {
+    replaceToken(val, "@NOW@");
+
+    replaceToken(val, "@TOMORROW@");
+
+    replaceToken(val, "@NEXTWEEK@");
+
+    return val.toString().getBytes();
+  }
+
+  private void replaceToken(StringBuffer sb, String token) {
+    int len = token.length();
+    int pos = 0;
+    String val = null;
+
+    while (true) {
+      pos = sb.indexOf(token, pos);
+      if (pos < 0) {
+        return;
+      }
+
+      if (val == null) {
+        val = getTokenValue(token);
+      }
+
+      sb.replace(pos, pos + len, val);
+    }
+  }
+
+  private String getTokenValue(String token) {
+    if (token.equals("@NOW@")) {
+      return CalFacadeUtil.isoDateTimeUTC(new Date());
+    }
+
+    if (token.equals("@TOMORROW@")) {
+      Calendar cal = Calendar.getInstance();
+      cal.add(Calendar.DATE, 1);
+      return CalFacadeUtil.isoDateTimeUTC(cal.getTime());
+    }
+
+    if (token.equals("@NEXTWEEK@")) {
+      Calendar cal = Calendar.getInstance();
+      cal.add(Calendar.WEEK_OF_YEAR, 1);
+      return CalFacadeUtil.isoDateTimeUTC(cal.getTime());
+    }
+
+    return null;
+  }
 }
 



More information about the Bedework-commit mailing list