Changeset 420

Show
Ignore:
Timestamp:
04/28/06 11:57:22
Author:
douglm
Message:

Caldav-test: Add primitive token support in data
Fixes to caldav free/busy

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/calendar3/caldav/src/edu/rpi/cct/uwcal/caldav/calquery/FreeBusyQuery.java

    r369 r420  
    6060import org.bedework.davdefs.CaldavTags; 
    6161 
    62  
    6362import edu.rpi.cct.uwcal.caldav.CalDavParseUtil; 
    6463import edu.rpi.cct.uwcal.caldav.CaldavBWIntf; 
     
    6968import edu.rpi.cct.webdav.servlet.shared.WebdavNsIntf; 
    7069 
    71  
     70import java.util.ArrayList; 
    7271import java.util.Collection; 
    7372import java.util.Iterator; 
    74 import java.util.Vector; 
    7573import javax.servlet.http.HttpServletResponse; 
    7674 
     
    110108    try { 
    111109      if (timeRanges == null) { 
    112         timeRanges = new Vector(); 
     110        timeRanges = new ArrayList(); 
    113111      } 
    114112 
     
    140138  public Collection getFreeBusy(CalSvcI svci, String user) throws WebdavException { 
    141139    Iterator it = timeRanges.iterator(); 
    142     Collection fbs = new Vector(); 
     140    Collection fbs = new ArrayList(); 
    143141 
    144142    while (it.hasNext()) { 
  • trunk/calendar3/calsvc/src/org/bedework/calsvc/CalSvc.java

    r415 r420  
    11471147      } 
    11481148 
    1149       /* For the moment just build a single BwFreeBusyComponent 
    1150        */ 
    1151       BwFreeBusyComponent fbc = new BwFreeBusyComponent(); 
    1152  
    11531149      Iterator it = events.iterator(); 
    11541150 
     
    11811177        } 
    11821178 
    1183         eventPeriods.add(new EventPeriod(new DateTime(dstart), 
    1184                                          new DateTime(dend))); 
     1179        DateTime psdt = new DateTime(dstart); 
     1180        DateTime pedt = new DateTime(dend); 
     1181 
     1182        psdt.setUtc(true); 
     1183        pedt.setUtc(true); 
     1184 
     1185        eventPeriods.add(new EventPeriod(psdt, pedt)); 
    11851186      } 
    11861187 
     
    11891190 
    11901191      Period p = null; 
     1192 
     1193      /* For the moment just build a single BwFreeBusyComponent 
     1194       */ 
     1195      BwFreeBusyComponent fbc = null; 
    11911196 
    11921197      it = eventPeriods.iterator(); 
     
    11981203        } else if (ep.start.after(p.getEnd())) { 
    11991204          // Non adjacent periods 
     1205          if (fbc == null) { 
     1206            fbc = new BwFreeBusyComponent(); 
     1207          } 
    12001208          fbc.addPeriod(p); 
    12011209          p = new Period(ep.start, ep.end); 
     
    12071215 
    12081216      if (p != null) { 
     1217        if (fbc == null) { 
     1218          fbc = new BwFreeBusyComponent(); 
     1219        } 
    12091220        fbc.addPeriod(p); 
    12101221      } 
    12111222 
    1212       fb.addTime(fbc); 
     1223      if (fbc != null) { 
     1224        fb.addTime(fbc); 
     1225      } 
    12131226    } catch (Throwable t) { 
    12141227      throw new CalFacadeException(t); 
  • trunk/calendar3/test/src/org/bedework/tests/caldav/Req.java

    r2 r420  
    5555package org.bedework.tests.caldav; 
    5656 
     57import org.bedework.calfacade.CalFacadeUtil; 
     58 
    5759import java.io.ByteArrayOutputStream; 
    5860import java.io.File; 
     
    6062import java.io.FileReader; 
    6163import java.io.LineNumberReader; 
    62 import java.util.Vector; 
     64import java.util.ArrayList; 
     65import java.util.Calendar; 
     66import java.util.Collection; 
     67import java.util.Date; 
    6368 
    6469import org.apache.commons.httpclient.Header; 
     
    102107      LineNumberReader lnr = new LineNumberReader(frdr); 
    103108 
    104       Vector headers = null; 
    105       Vector cont = null; 
     109      Collection headers = null; 
     110      Collection cont = null; 
    106111 
    107112      do { 
     
    151156           */ 
    152157          if (headers == null) { 
    153             headers = new Vector(); 
     158            headers = new ArrayList(); 
    154159          } 
    155160 
     
    185190           */ 
    186191          if (cont == null) { 
    187             cont = new Vector(); 
     192            cont = new ArrayList(); 
    188193          } 
    189194        } else { 
     
    311316      sb.append("\n"); 
    312317    } 
    313     contentBytes = sb.toString().getBytes(); 
     318    contentBytes = detokenizeContent(sb); 
     319 
    314320    return contentBytes; 
    315321  } 
     
    332338    } while (true); 
    333339 
    334     contentBytes = baos.toByteArray(); 
     340    contentBytes = detokenizeContent(new StringBuffer(baos.toString())); 
    335341 
    336342    return contentBytes; 
    337343  } 
     344 
     345  /* Replace any of our tokens with values. Pretty primitive at the moment. 
     346   * 
     347   */ 
     348  private byte[] detokenizeContent(StringBuffer val) { 
     349    replaceToken(val, "@NOW@"); 
     350 
     351    replaceToken(val, "@TOMORROW@"); 
     352 
     353    replaceToken(val, "@NEXTWEEK@"); 
     354 
     355    return val.toString().getBytes(); 
     356  } 
     357 
     358  private void replaceToken(StringBuffer sb, String token) { 
     359    int len = token.length(); 
     360    int pos = 0; 
     361    String val = null; 
     362 
     363    while (true) { 
     364      pos = sb.indexOf(token, pos); 
     365      if (pos < 0) { 
     366        return; 
     367      } 
     368 
     369      if (val == null) { 
     370        val = getTokenValue(token); 
     371      } 
     372 
     373      sb.replace(pos, pos + len, val); 
     374    } 
     375  } 
     376 
     377  private String getTokenValue(String token) { 
     378    if (token.equals("@NOW@")) { 
     379      return CalFacadeUtil.isoDateTimeUTC(new Date()); 
     380    } 
     381 
     382    if (token.equals("@TOMORROW@")) { 
     383      Calendar cal = Calendar.getInstance(); 
     384      cal.add(Calendar.DATE, 1); 
     385      return CalFacadeUtil.isoDateTimeUTC(cal.getTime()); 
     386    } 
     387 
     388    if (token.equals("@NEXTWEEK@")) { 
     389      Calendar cal = Calendar.getInstance(); 
     390      cal.add(Calendar.WEEK_OF_YEAR, 1); 
     391      return CalFacadeUtil.isoDateTimeUTC(cal.getTime()); 
     392    } 
     393 
     394    return null; 
     395  } 
    338396} 
    339397