[Bedework-commit] webapps r426 - in
trunk/webcommon/src/org/bedework/webcommon: . event
svnadmin at bedework.org
svnadmin at bedework.org
Mon Jun 25 00:29:36 EDT 2007
Author: douglm
Date: 2007-06-25 00:29:34 -0400 (Mon, 25 Jun 2007)
New Revision: 426
Modified:
trunk/webcommon/src/org/bedework/webcommon/Attendees.java
trunk/webcommon/src/org/bedework/webcommon/BwWebUtil.java
trunk/webcommon/src/org/bedework/webcommon/event/AttendeeAction.java
trunk/webcommon/src/org/bedework/webcommon/event/DeleteEventAction.java
trunk/webcommon/src/org/bedework/webcommon/event/UpdateEventAction.java
Log:
Itip cancel partially works.
Modified: trunk/webcommon/src/org/bedework/webcommon/Attendees.java
===================================================================
--- trunk/webcommon/src/org/bedework/webcommon/Attendees.java 2007-06-22 14:50:21 UTC (rev 425)
+++ trunk/webcommon/src/org/bedework/webcommon/Attendees.java 2007-06-25 04:29:34 UTC (rev 426)
@@ -45,6 +45,8 @@
private Collection<String> recipients;
+ private Collection<BwAttendee> deletedAttendees;
+
/**
* @param val
*/
@@ -62,6 +64,15 @@
return queriedExternalAttendees;
}
+ /** Get collection of attendees that were deleted from the list. These must
+ * be sent a cancel.
+ *
+ * @return Collection<BwAttendee>
+ */
+ public Collection<BwAttendee> getDeletedAttendees() {
+ return deletedAttendees;
+ }
+
/* ====================================================================
* AttendeesEntity interface methods
* ==================================================================== */
@@ -105,6 +116,10 @@
if (!as.contains(val)) {
as.add(val);
}
+
+ if ((deletedAttendees != null) && deletedAttendees.contains(val)) {
+ deletedAttendees.remove(val);
+ }
}
/* (non-Javadoc)
@@ -116,7 +131,17 @@
return false;
}
- return as.remove(val);
+ if (!as.remove(val)) {
+ return false;
+ }
+
+ if (deletedAttendees == null) {
+ deletedAttendees = new TreeSet<BwAttendee>();
+ }
+
+ deletedAttendees.add(val);
+
+ return true;
}
/* (non-Javadoc)
Modified: trunk/webcommon/src/org/bedework/webcommon/BwWebUtil.java
===================================================================
--- trunk/webcommon/src/org/bedework/webcommon/BwWebUtil.java 2007-06-22 14:50:21 UTC (rev 425)
+++ trunk/webcommon/src/org/bedework/webcommon/BwWebUtil.java 2007-06-25 04:29:34 UTC (rev 426)
@@ -55,6 +55,8 @@
package org.bedework.webcommon;
import org.bedework.appcommon.CheckData;
+import org.bedework.appcommon.ClientError;
+import org.bedework.appcommon.ClientMessage;
import org.bedework.appcommon.ValidationError;
import org.bedework.calfacade.BwAttendee;
import org.bedework.calfacade.BwDateTime;
@@ -321,23 +323,31 @@
*
* @param form Action form
* @param event BwEvent object to be added
+ * @return boolean true for deleted
* @throws Throwable
*/
- public static void deleteEvent(BwActionFormBase form,
- BwEvent event) throws Throwable {
+ public static boolean deleteEvent(BwActionFormBase form,
+ BwEvent event) throws Throwable {
CalSvcI svci = form.fetchSvci();
- svci.deleteEvent(event, false);
+ CalSvcI.DelEventResult delResult = svci.deleteEvent(event, false);
+ if (!delResult.eventDeleted) {
+ form.getErr().emit(ClientError.unknownEvent);
+ return false;
+ }
/* If we auto delete and if any contacts are no longer in use, then delete
*/
if (form.retrieveConfig().getAutoDeleteContacts() &&
(event.getNumContacts() > 0)) {
+ int numDel = 0;
for (BwContact c: event.getContacts()) {
if (svci.getContactRefsCount(c) == 0) {
svci.deleteContact(c);
+ numDel++;
}
}
+ form.getMsg().emit(ClientMessage.deletedContact, numDel);
}
/* If we auto delete and if location id no longer exists in events
@@ -346,7 +356,10 @@
if (form.retrieveConfig().getAutoDeleteLocations() &&
svci.getLocationRefsCount(event.getLocation()) == 0) {
svci.deleteLocation(event.getLocation());
+ form.getMsg().emit(ClientMessage.deletedLocations, 1);
}
+
+ return true;
}
/** */
Modified: trunk/webcommon/src/org/bedework/webcommon/event/AttendeeAction.java
===================================================================
--- trunk/webcommon/src/org/bedework/webcommon/event/AttendeeAction.java 2007-06-22 14:50:21 UTC (rev 425)
+++ trunk/webcommon/src/org/bedework/webcommon/event/AttendeeAction.java 2007-06-25 04:29:34 UTC (rev 426)
@@ -152,12 +152,8 @@
return forwardNoAction;
}
- if (recipient) {
- if (delete) {
- atts.removeRecipient(calAddr);
- } else {
- atts.addRecipient(calAddr);
- }
+ if (recipient && !delete) {
+ atts.addRecipient(calAddr);
}
if (!attendee) {
@@ -169,6 +165,7 @@
att.setAttendeeUri(calAddr);
if (delete) {
+ atts.removeRecipient(calAddr);
atts.removeAttendee(att);
return forwardSuccess;
}
Modified: trunk/webcommon/src/org/bedework/webcommon/event/DeleteEventAction.java
===================================================================
--- trunk/webcommon/src/org/bedework/webcommon/event/DeleteEventAction.java 2007-06-22 14:50:21 UTC (rev 425)
+++ trunk/webcommon/src/org/bedework/webcommon/event/DeleteEventAction.java 2007-06-25 04:29:34 UTC (rev 426)
@@ -34,6 +34,7 @@
import org.bedework.webcommon.BwAbstractAction;
import org.bedework.webcommon.BwActionFormBase;
import org.bedework.webcommon.BwRequest;
+import org.bedework.webcommon.BwWebUtil;
/**
* Action to delete an event
@@ -76,18 +77,10 @@
if (getPublicAdmin(form) || request.present("remove") || !ev.getTrashable()) {
// Really delete
- // XXX What about synch?
- CalSvcI.DelEventResult delResult = svci.deleteEvent(ev, true);
-
- if (!delResult.eventDeleted) {
- form.getErr().emit(ClientError.unknownEvent);
+ if (!BwWebUtil.deleteEvent(form, ev)) {
return forwardNoAction;
}
-
- if (delResult.locationDeleted) {
- form.getMsg().emit(ClientMessage.deletedLocations, 1);
- }
} else {
// Mark deleted and move to trash
svci.markDeleted(ev);
Modified: trunk/webcommon/src/org/bedework/webcommon/event/UpdateEventAction.java
===================================================================
--- trunk/webcommon/src/org/bedework/webcommon/event/UpdateEventAction.java 2007-06-22 14:50:21 UTC (rev 425)
+++ trunk/webcommon/src/org/bedework/webcommon/event/UpdateEventAction.java 2007-06-25 04:29:34 UTC (rev 426)
@@ -29,6 +29,7 @@
import org.bedework.appcommon.ClientError;
import org.bedework.appcommon.ClientMessage;
import org.bedework.appcommon.ValidationError;
+import org.bedework.calfacade.BwAttendee;
import org.bedework.calfacade.BwCalendar;
import org.bedework.calfacade.BwCategory;
import org.bedework.calfacade.BwContact;
@@ -40,6 +41,7 @@
import org.bedework.calfacade.CalFacadeDefs;
import org.bedework.calfacade.ScheduleResult;
import org.bedework.calfacade.exc.CalFacadeException;
+import org.bedework.calfacade.util.CalFacadeUtil;
import org.bedework.calsvci.CalSvcI;
import org.bedework.calsvci.CalSvcI.EnsureEntityExistsResult;
import org.bedework.icalendar.Icalendar;
@@ -672,6 +674,27 @@
if (send) {
ScheduleResult sr = svci.getScheduler().schedule(ev);
emitScheduleStatus(form, sr);
+
+ if (!adding &&
+ !CalFacadeUtil.isEmpty(form.getAttendees().getDeletedAttendees())) {
+ /* Send cancel to removed attendees */
+ for (BwAttendee att: form.getAttendees().getDeletedAttendees()) {
+ BwEvent cncl = (BwEvent)ev.clone();
+
+ cncl.setAttendees(null);
+ cncl.addAttendee(att);
+
+ cncl.setRecipients(null);
+ cncl.addRecipient(att.getAttendeeUri());
+
+ cncl.setScheduleMethod(Icalendar.methodTypeCancel);
+
+ ScheduleResult cnclr = svci.getScheduler().schedule(cncl);
+ if (debug) {
+ debugMsg(cnclr.toString());
+ }
+ }
+ }
}
return forwardSuccess;
More information about the Bedework-commit
mailing list