[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