]> err.no Git - scalable-opengroupware.org/commitdiff
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@243 d1b88da0-ebda-0310-925b-ed51d...
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Sun, 15 Aug 2004 23:55:43 +0000 (23:55 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Sun, 15 Aug 2004 23:55:43 +0000 (23:55 +0000)
SOGo/SoObjects/Appointments/ChangeLog
SOGo/SoObjects/Appointments/SOGoAppointmentObject.h
SOGo/SoObjects/Appointments/SOGoAppointmentObject.m
SOGo/SoObjects/Appointments/Version
SOGo/SoObjects/SOGo/ChangeLog
SOGo/SoObjects/SOGo/SOGoContentObject.m
SOGo/SoObjects/SOGo/Version

index 6fc2d0523d8d602a53002b4664f9d30065e80995..1d9e3e0dac5402b77e9887c8376fcbcce0c9a154 100644 (file)
@@ -1,3 +1,7 @@
+2004-08-16  Helge Hess  <helge.hess@skyrix.com>
+
+       * SOGoAppointmentObject.m: added new multi folder methods (v0.9.7)
+
 2004-08-14  Helge Hess  <helge.hess@skyrix.com>
 
        * SOGoGroupAppointmentFolder.m: implemented proper URL generation for
index adea357bc6a8b7b233d05b6d7078891c65f07664..e4d5beeea51e1f7a8104ca159aaf78ce5a0d3b47 100644 (file)
 
 #include <SOGo/SOGoContentObject.h>
 
+/*
+  SOGoAppointmentObject
+  
+  Represents a single appointment. This SOPE controller object manages all the
+  attendee storages (that is, it might store into multiple folders for meeting
+  appointments!).
+
+  Note: SOGoAppointmentObject do not need to exist yet. They can also be "new"
+        appointments with an externally generated unique key.
+*/
+
+@class NSString, NSException;
+
 @interface SOGoAppointmentObject : SOGoContentObject
 {
 }
 
+/* accessors */
+
+- (NSString *)iCalString;
+
+/* raw saving */
+
+- (NSException *)primarySaveContentString:(NSString *)_iCalString;
+- (NSException *)primaryDelete;
+
+/* "iCal multifolder saves" */
+
+- (NSException *)saveContentString:(NSString *)_iCal baseSequence:(int)_v;
+- (NSException *)deleteWithBaseSequence:(int)_v;
+
+- (NSException *)saveContentString:(NSString *)_iCalString;
+- (NSException *)delete;
+
 @end
 
 #endif /* __Appointments_SOGoAppointmentObject_H__ */
index 1e60daba51ae696bc48fc927cc5914a3671bfcc2..345c51d22cf3db872036a803b8782ba49db41f6f 100644 (file)
   return [self contentAsString];
 }
 
+/* raw saving */
+
+- (NSException *)primarySaveContentString:(NSString *)_iCalString {
+  return [super saveContentString:_iCalString];
+}
+- (NSException *)primaryDelete {
+  return [super delete];
+}
+
+/* "iCal multifolder saves" */
+
+- (NSException *)saveContentString:(NSString *)_iCal baseSequence:(int)_v {
+  /* 
+     Note: we need to delete in all participants folders and send iMIP messages
+           for all external accounts.
+     
+     Steps:
+     - fetch stored content
+     - parse old content
+     - check if sequence matches (or if 0=ignore)
+     - extract old attendee list + organizer (make unique)
+     - parse new content (ensure that sequence is increased!)
+     - extract new attendee list + organizer (make unique)
+     - make a diff => new, same, removed
+     - write to new, same
+     - delete in removed folders
+     - send iMIP mail for all folders not found
+  */
+#warning TODO: implement proper "multi-saves"
+  return [self primarySaveContentString:_iCal];
+}
+
+- (NSException *)deleteWithBaseSequence:(int)_v {
+  /* 
+     Note: We need to delete in all participants folders and send iMIP messages
+           for all external accounts.
+          Delete is basically identical to save with all attendees and the
+          organizer being deleted.
+  */
+#warning TODO: implement proper "multi-saves"
+  return [self primaryDelete];
+}
+
+- (NSException *)saveContentString:(NSString *)_iCalString {
+  return [self saveContentString:_iCalString baseSequence:0];
+}
+- (NSException *)delete {
+  return [self deleteWithBaseSequence:0];
+}
+
 @end /* SOGoAppointmentObject */
index c49415d6d6b53b3e01afb7b4f8de69f27486dba2..a4628e907da75903d767394c66c4f44740108726 100644 (file)
@@ -1,3 +1,3 @@
 # $Id: Version,v 1.9 2004/05/19 14:30:45 helge Exp $
 
-SUBMINOR_VERSION:=6
+SUBMINOR_VERSION:=7
index e6d25a5558d524df4b05beb0768e3813b5cc28f3..f205a43a67b72f9d781720ff2d9c334aae545808 100644 (file)
@@ -1,3 +1,9 @@
+2004-08-16  Helge Hess  <helge.hess@skyrix.com>
+
+       * SOGoContentObject.m: updated multi-save things (which belong into the
+         SOGoAppointmentObject class), implement -sleep to release the content
+         (v0.9.10)
+
 2004-08-15  Helge Hess  <helge.hess@skyrix.com>
 
        * SOGoContentObject.m: implement first version of -delete (v0.9.9)
index 69fb7b3434f0cb0c166fbcbf66600ec20c6bbbd0..f82d031d128f033505508977dcb5671f7c5eef67 100644 (file)
   [super dealloc];
 }
 
+/* notifications */
+
+- (void)sleep {
+  [self->content release]; self->content = nil;
+  [super sleep];
+}
+
 /* accessors */
 
 - (BOOL)isFolderish {
@@ -82,7 +89,7 @@
 
   if (self->content != nil)
     return self->content;
-
+  
   if ((folder = [self ocsFolder]) == nil) {
     [self logWithFormat:@"did not find folder of appointment."];
     return nil;
 }
 
 - (NSException *)saveContentString:(NSString *)_str {
+  /* Note: "iCal multifolder saves" are implemented in the apt subclass! */
   OCSFolder   *folder;
   NSException *ex;
 
-#warning TODO: implement proper "multi-saves"
-  
   if ((folder = [self ocsFolder]) == nil) {
     [self logWithFormat:@"did not find folder of appointment."];
     return nil;
   }
-  
   if ((ex = [folder writeContent:_str toName:[self nameInContainer]])) {
     [self logWithFormat:@"write failed: %@", ex];
     return ex;
   }
-  
   return nil;
 }
 
 - (NSException *)delete {
+  /* Note: "iCal multifolder saves" are implemented in the apt subclass! */
   OCSFolder   *folder;
   NSException *ex;
-
-#warning TODO: implement proper "multi-saves"
   
   if ((folder = [self ocsFolder]) == nil) {
     [self logWithFormat:@"did not find folder of appointment."];
     [self logWithFormat:@"delete failed: %@", ex];
     return ex;
   }
-  
   return nil;
 }
 
index f77de926a0dbf088a9ecc8229e89d22b86de7e3e..177ef7b7236a1480a2391c08b34d2a004a299959 100644 (file)
@@ -1,3 +1,3 @@
 # $Id: Version 170 2004-08-11 10:45:40Z helge $
 
-SUBMINOR_VERSION:=9
+SUBMINOR_VERSION:=10