[Bedework-commit] caldav r127 -
trunk/server/src/org/bedework/caldav/server
svnadmin at bedework.org
svnadmin at bedework.org
Thu Mar 15 21:36:43 EDT 2007
Author: douglm
Date: 2007-03-15 21:36:41 -0400 (Thu, 15 Mar 2007)
New Revision: 127
Modified:
trunk/server/src/org/bedework/caldav/server/CaldavBWIntf.java
trunk/server/src/org/bedework/caldav/server/CaldavBwNode.java
trunk/server/src/org/bedework/caldav/server/CaldavCalNode.java
trunk/server/src/org/bedework/caldav/server/CaldavReportMethod.java
trunk/server/src/org/bedework/caldav/server/SysIntf.java
Log:
Partial fixes to enable storing of freebusy information
Modified: trunk/server/src/org/bedework/caldav/server/CaldavBWIntf.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/CaldavBWIntf.java 2007-03-15 03:16:47 UTC (rev 126)
+++ trunk/server/src/org/bedework/caldav/server/CaldavBWIntf.java 2007-03-16 01:36:41 UTC (rev 127)
@@ -95,6 +95,7 @@
import edu.rpi.cmt.access.WhoDefs;
import edu.rpi.cmt.access.Acl.CurrentAccess;
import edu.rpi.sss.util.xml.QName;
+import edu.rpi.sss.util.xml.XmlEmit;
import net.fortuna.ical4j.model.TimeZone;
@@ -254,8 +255,11 @@
return true;
}
- public void addNamespace() throws WebdavException {
- super.addNamespace();
+ /* (non-Javadoc)
+ * @see edu.rpi.cct.webdav.servlet.shared.WebdavNsIntf#addNamespace(edu.rpi.sss.util.xml.XmlEmit)
+ */
+ public void addNamespace(XmlEmit xml) throws WebdavException {
+ super.addNamespace(xml);
try {
xml.addNs(CaldavDefs.caldavNamespace);
@@ -567,67 +571,24 @@
pcr.created = create;
CaldavComponentNode bwnode = (CaldavComponentNode)getBwnode(node);
- String entityName = bwnode.getEntityName();
BwCalendar cal = bwnode.getCalendar();
Icalendar ic = sysi.fromIcal(cal, new MyReader(contentRdr));
/** We can only put a single resource - that resource will be an ics file
- * containing an event and possible overrides. The calendar may contain
- * timezones which we can ignore.
+ * containing freebusy information or an event or todo and possible overrides.
+ * The calendar may contain timezones which we can ignore.
*/
Iterator it = ic.iterator();
- String guid = null;
boolean fail = false;
while (it.hasNext()) {
Object o = it.next();
if (o instanceof EventInfo) {
- EventInfo evinfo = (EventInfo)o;
- BwEvent ev = evinfo.getEvent();
-
- if (guid == null) {
- guid = ev.getUid();
- } else if (!guid.equals(ev.getUid())) {
- fail = true;
- break;
- }
-
- if (debug) {
- debugMsg("putContent: intf has event with name " + entityName +
- " and summary " + ev.getSummary());
- }
-
- if (evinfo.getNewEvent()) {
- pcr.created = true;
- ev.setName(entityName);
-
- /* Collection<BwEventProxy>failedOverrides = */
- sysi.addEvent(cal, ev, evinfo.getOverrideProxies(), true);
-
- /*StringBuffer sb = new StringBuffer(cdUri.getPath());
- sb.append("/");
- sb.append(entityName);
- if (!entityName.toLowerCase().endsWith(".ics")) {
- sb.append(".ics");
- }*/
-
- bwnode.setEventInfo(evinfo);
- } else {
- if (!entityName.equals(ev.getName())) {
- throw new WebdavBadRequest("Mismatched names");
- }
-
- /* XXX check calendar not changed */
-
- if (debug) {
- debugMsg("putContent: update event " + ev);
- }
- sysi.updateEvent(ev, evinfo.getOverrideProxies(),
- evinfo.getChangeset());
- }
+ pcr.created = putEvent(bwnode, (EventInfo)o);
+ } else if (o instanceof BwFreeBusy) {
} else {
fail = true;
break;
@@ -648,6 +609,49 @@
}
}
+ private boolean putEvent(CaldavComponentNode bwnode,
+ EventInfo evinfo) throws WebdavException {
+ BwEvent ev = evinfo.getEvent();
+ String entityName = bwnode.getEntityName();
+ BwCalendar cal = bwnode.getCalendar();
+ boolean created = false;
+
+ if (debug) {
+ debugMsg("putContent: intf has event with name " + entityName +
+ " and summary " + ev.getSummary());
+ }
+
+ if (evinfo.getNewEvent()) {
+ created = true;
+ ev.setName(entityName);
+
+ /* Collection<BwEventProxy>failedOverrides = */
+ sysi.addEvent(cal, ev, evinfo.getOverrideProxies(), true);
+
+ /*StringBuffer sb = new StringBuffer(cdUri.getPath());
+ sb.append("/");
+ sb.append(entityName);
+ if (!entityName.toLowerCase().endsWith(".ics")) {
+ sb.append(".ics");
+ }*/
+
+ bwnode.setEventInfo(evinfo);
+ } else {
+ if (!entityName.equals(ev.getName())) {
+ throw new WebdavBadRequest("Mismatched names");
+ }
+
+ /* XXX check calendar not changed */
+
+ if (debug) {
+ debugMsg("putContent: update event " + ev);
+ }
+ sysi.updateEvent(ev, evinfo.getOverrideProxies(), evinfo.getChangeset());
+ }
+
+ return created;
+ }
+
/* (non-Javadoc)
* @see edu.rpi.cct.webdav.servlet.shared.WebdavNsIntf#create(edu.rpi.cct.webdav.servlet.shared.WebdavNsNode)
*/
Modified: trunk/server/src/org/bedework/caldav/server/CaldavBwNode.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/CaldavBwNode.java 2007-03-15 03:16:47 UTC (rev 126)
+++ trunk/server/src/org/bedework/caldav/server/CaldavBwNode.java 2007-03-16 01:36:41 UTC (rev 127)
@@ -63,6 +63,13 @@
}
}
+ CaldavBwNode(boolean collection, SysIntf sysi, boolean debug) {
+ super(sysi.getUrlPrefix(), null, collection, debug);
+
+ //this.cdURI = cdURI;
+ this.sysi = sysi;
+ }
+
/* ====================================================================
* Public methods
* ==================================================================== */
Modified: trunk/server/src/org/bedework/caldav/server/CaldavCalNode.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/CaldavCalNode.java 2007-03-15 03:16:47 UTC (rev 126)
+++ trunk/server/src/org/bedework/caldav/server/CaldavCalNode.java 2007-03-16 01:36:41 UTC (rev 127)
@@ -118,12 +118,13 @@
/** Place holder for status
*
+ * @param sysi
* @param status
* @param uri
* @param debug
*/
- public CaldavCalNode(int status, String uri, boolean debug) {
- super(null, null, debug);
+ public CaldavCalNode(SysIntf sysi, int status, String uri, boolean debug) {
+ super(true, sysi, debug);
setStatus(status);
this.uri = uri;
}
Modified: trunk/server/src/org/bedework/caldav/server/CaldavReportMethod.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/CaldavReportMethod.java 2007-03-15 03:16:47 UTC (rev 126)
+++ trunk/server/src/org/bedework/caldav/server/CaldavReportMethod.java 2007-03-16 01:36:41 UTC (rev 127)
@@ -393,7 +393,8 @@
WebdavNsIntf.existanceMust,
WebdavNsIntf.nodeTypeUnknown));
} catch (WebdavException we) {
- nodes.add((WebdavNsNode)new CaldavCalNode(we.getStatusCode(),
+ nodes.add((WebdavNsNode)new CaldavCalNode(intf.getSysi(),
+ we.getStatusCode(),
intf.getUri(hr), debug));
}
}
Modified: trunk/server/src/org/bedework/caldav/server/SysIntf.java
===================================================================
--- trunk/server/src/org/bedework/caldav/server/SysIntf.java 2007-03-15 03:16:47 UTC (rev 126)
+++ trunk/server/src/org/bedework/caldav/server/SysIntf.java 2007-03-16 01:36:41 UTC (rev 127)
@@ -325,7 +325,8 @@
ChangeTable changes) throws WebdavException;
/** Return the events for the current user in the given calendar within the
- * given date and time range.
+ * given date and time range. Stored freebusy objects are returned as BwEvent
+ * objects with the appropriate entity type.
*
* <p>We flag the desired entity types.
*
@@ -380,7 +381,9 @@
public ScheduleResult requestFreeBusy(BwFreeBusy val)
throws WebdavException;
- /**
+ /** Generate a free busy object for the given time period which reflects
+ * the state of the given calendar.
+ *
* @param cal
* @param account
* @param start
More information about the Bedework-commit
mailing list