]> err.no Git - scalable-opengroupware.org/commitdiff
work on defaults(profile) functionality
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 12 Jul 2005 10:31:46 +0000 (10:31 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 12 Jul 2005 10:31:46 +0000 (10:31 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@716 d1b88da0-ebda-0310-925b-ed51d893ca5b

15 files changed:
SOGo/Main/SOGoUser.h
SOGo/Main/SOGoUser.m
SOGo/OGoContentStore/ChangeLog
SOGo/OGoContentStore/sql/appointment-create.psql
SOGo/OGoContentStore/sql/folderinfo-create.psql
SOGo/OGoContentStore/sql/profile-create.psql [new file with mode: 0644]
SOGo/SoObjects/SOGo/AgenorUserDefaults.h [new file with mode: 0644]
SOGo/SoObjects/SOGo/AgenorUserDefaults.m [new file with mode: 0644]
SOGo/SoObjects/SOGo/AgenorUserManager.h
SOGo/SoObjects/SOGo/AgenorUserManager.m
SOGo/SoObjects/SOGo/ChangeLog
SOGo/SoObjects/SOGo/GNUmakefile
SOGo/SoObjects/SOGo/GNUmakefile.preamble
SOGo/SoObjects/SOGo/Version
SOGo/SoObjects/SOGo/agenor_defaults.m [new file with mode: 0644]

index 6eb5e55f8eb0d799c90c143364c0a4bf4c309376..e457247911a45166f6e8ae2f851a25c1781d93d9 100644 (file)
     context.activeUser
 */
 
-@class NSString, NSArray, NSURL;
+@class NSString, NSArray, NSURL, NSUserDefaults;
 
 @interface SOGoUser : SoUser
 {
-  NSString *cn;
-  NSString *email;
+  NSString       *cn;
+  NSString       *email;
+  NSUserDefaults *userDefaults;
 }
 
 /* properties */
 - (NSArray *)additionalEMailAddresses;
 - (NSURL *)freeBusyURL;
 
+/* defaults */
+
+- (NSUserDefaults *)userDefaults;
+
 @end
 
 #endif /* __SOGoUser_H__ */
index cc131098eeee4d9c86dce8955a9991661cd53c33..0eee0aef4e45cd52f4dced4659fda520153415ff 100644 (file)
@@ -26,6 +26,7 @@
 @implementation SOGoUser
 
 - (void)dealloc {
+  [self->userDefaults release];
   [self->cn    release];
   [self->email release];
   [super dealloc];
   return [[self userManager] getFreeBusyURLForUID:[self login]];
 }
 
+/* defaults */
+
+- (NSUserDefaults *)userDefaults {
+  if (self->userDefaults == nil) {
+    self->userDefaults = 
+      [[[self userManager] getUserDefaultsForUID:[self login]] retain];
+  }
+  return self->userDefaults;
+}
+
 @end /* SOGoUser */
index 82bacc20f0f99906508718b1515e3596ac72b160..dc8f3308c2e734f566505cf46a11698b7ba178d2 100644 (file)
@@ -1,3 +1,8 @@
+2005-07-12  Helge Hess  <helge.hess@opengroupware.org>
+
+       * added sql/profile-create.psql to create the user-profile database
+         table (not strictly related to OCSContentStore)
+
 2005-07-05  Marcus Mueller  <znek@mulle-kybernetik.com>
 
        * iCalEntityObject+OCS.m: fixed stupid extraction bug (v0.9.29)
index 7b280be7731c268d9c75a8128c0a34e9f35236cc..45bb70c3304852a89c7ad7e88f4a31e66545d0ac 100644 (file)
@@ -1,6 +1,5 @@
--- $Id$
 --
--- (C) 2004 SKYRIX Software AG
+-- (C) 2004-2005 SKYRIX Software AG
 --
 
 CREATE TABLE %s_quick (
index c8f5833bc0a64760eb617d3a17a11a9355ea5740..d9df55f65e0da55b8dfff178f896ff8b89de7d73 100644 (file)
@@ -1,6 +1,5 @@
--- $Id$
 --
--- (C) 2004 SKYRIX Software AG
+-- (C) 2004-2005 SKYRIX Software AG
 --
 -- TODO:
 --   add a unique constraints on path
diff --git a/SOGo/OGoContentStore/sql/profile-create.psql b/SOGo/OGoContentStore/sql/profile-create.psql
new file mode 100644 (file)
index 0000000..3bd9c5e
--- /dev/null
@@ -0,0 +1,9 @@
+--
+-- (C) 2005 SKYRIX Software AG
+--
+
+CREATE TABLE SOGo_user_profile (
+  uid           VARCHAR(255) NOT NULL PRIMARY KEY,
+  allowinternet SMALLINT     DEFAULT 0,
+  timezonename  VARCHAR(255) DEFAULT 'MET'
+);
diff --git a/SOGo/SoObjects/SOGo/AgenorUserDefaults.h b/SOGo/SoObjects/SOGo/AgenorUserDefaults.h
new file mode 100644 (file)
index 0000000..cbffb82
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+  Copyright (C) 2005 SKYRIX Software AG
+
+  This file is part of OpenGroupware.org.
+
+  OGo is free software; you can redistribute it and/or modify it under
+  the terms of the GNU Lesser General Public License as published by the
+  Free Software Foundation; either version 2, or (at your option) any
+  later version.
+
+  OGo is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with OGo; see the file COPYING.  If not, write to the
+  Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+  02111-1307, USA.
+*/
+
+#ifndef        __AgenorUserDefaults_H_
+#define        __AgenorUserDefaults_H_
+
+#import <Foundation/NSObject.h>
+
+/*
+  AgenorUserDefaults
+  
+  An object with the same API like NSUserDefaults which retrieves profile
+  information for users in the database.
+*/
+
+@interface AgenorUserDefaults : NSObject
+{
+  NSString *uid;
+}
+
+@end
+
+#endif /* __AgenorUserDefaults_H_ */
diff --git a/SOGo/SoObjects/SOGo/AgenorUserDefaults.m b/SOGo/SoObjects/SOGo/AgenorUserDefaults.m
new file mode 100644 (file)
index 0000000..18f6980
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+  Copyright (C) 2005 SKYRIX Software AG
+
+  This file is part of OpenGroupware.org.
+
+  OGo is free software; you can redistribute it and/or modify it under
+  the terms of the GNU Lesser General Public License as published by the
+  Free Software Foundation; either version 2, or (at your option) any
+  later version.
+
+  OGo is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with OGo; see the file COPYING.  If not, write to the
+  Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+  02111-1307, USA.
+*/
+
+#include "AgenorUserDefaults.h"
+#include "common.h"
+
+@implementation AgenorUserDefaults
+
+- (void)dealloc {
+  [self->uid release];
+  [super dealloc];
+}
+
+@end /* AgenorUserDefaults */
index 7df36f4dfcc6def46594ec994215f5f74bdadc7c..aa6a3aacf415c4d2b54e2d1f7faaf493174fdb53 100644 (file)
@@ -30,7 +30,7 @@
   TODO: document
 */
 
-@class NSString, NSArray, NSURL;
+@class NSString, NSArray, NSURL, NSUserDefaults;
 @class SOGoLRUCache;
 
 @interface AgenorUserManager : NSObject
@@ -62,6 +62,8 @@
 
 - (NSURL *)getFreeBusyURLForUID:(NSString *)_uid;
 
+- (NSUserDefaults *)getUserDefaultsForUID:(NSString *)_uid;
+
 @end
 
 #endif /* __AgenorUserManager_H_ */
index c47f036518286723a179bdaba383350378a21b16..dfafce34b51a6b58f9a596ca1f1c8622e3bc961e 100644 (file)
@@ -780,6 +780,13 @@ static NSArray *fromEMailAttrs = nil;
   return nil;
 }
 
+/* defaults */
+
+- (NSUserDefaults *)getUserDefaultsForUID:(NSString *)_uid {
+  [self logWithFormat:@"TODO: implement!"];
+  return nil;
+}
+
 /* debugging */
 
 - (BOOL)isDebuggingEnabled {
index 905da61dca2ee459d3ef530cf80ec86396877cb9..131e1f43b395273d879932b2971af86fd10c1bd6 100644 (file)
@@ -1,3 +1,15 @@
+2005-07-12  Helge Hess  <helge.hess@opengroupware.org>
+
+       * v0.9.43
+
+       * added agenor_defaults tool to test defaults functionality
+
+       * AgenorUserManager.[hm]: added -getUserDefaultsForUID: method to
+         retrieve the profile of a user (incomplete)
+
+       * added AgenorUserDefaults class (incomplete) as a wrapper for the
+         profile data of Agenor users
+
 2005-07-08  Helge Hess  <helge.hess@opengroupware.org>
 
        * v0.9.42
index c8659420d52b357b369b119acdefc143e988792b..0e7bfe733f775960f9241c71ffa93a063d8e6007 100644 (file)
@@ -6,7 +6,12 @@ include $(GNUSTEP_MAKEFILES)/common.make
 -include ./Version
 
 LIBRARY_NAME = libSOGo
-TOOL_NAME = agenor_email2uid agenor_shares4uid agenor_emails4uid
+
+TOOL_NAME = \
+       agenor_email2uid        \
+       agenor_shares4uid       \
+       agenor_emails4uid       \
+       agenor_defaults
 
 libSOGo_SOVERSION=$(MAJOR_VERSION).$(MINOR_VERSION)
 
@@ -44,23 +49,19 @@ libSOGo_OBJC_FILES = \
        AgenorUserManager.m             \
        NSObject+AptComparison.m        \
        WOContext+Agenor.m              \
+       AgenorUserDefaults.m            \
 
 # tools
 
-agenor_email2uid_OBJC_FILES += \
-       agenor_email2uid.m      \
-       AgenorUserManager.m     \
-       SOGoLRUCache.m          \
-
-agenor_shares4uid_OBJC_FILES += \
-       agenor_shares4uid.m     \
+COMMON_TOOL_FILES = \
        AgenorUserManager.m     \
+       AgenorUserDefaults.m    \
        SOGoLRUCache.m          \
 
-agenor_emails4uid_OBJC_FILES += \
-       agenor_emails4uid.m     \
-       AgenorUserManager.m     \
-       SOGoLRUCache.m          \
+agenor_email2uid_OBJC_FILES  += agenor_email2uid.m  $(COMMON_TOOL_FILES)
+agenor_shares4uid_OBJC_FILES += agenor_shares4uid.m $(COMMON_TOOL_FILES)
+agenor_emails4uid_OBJC_FILES += agenor_emails4uid.m $(COMMON_TOOL_FILES)
+agenor_defaults_OBJC_FILES   += agenor_defaults.m   $(COMMON_TOOL_FILES)
 
 -include GNUmakefile.preamble
 include $(GNUSTEP_MAKEFILES)/library.make
index 59f2df9326baf5ade7a34085e05ade5634c975a9..07d977f9c2b729bf2a7e33e40ed8c9391237c8a1 100644 (file)
@@ -24,6 +24,5 @@ libSOGo_LIBRARIES_DEPEND_UPON += \
        -lXmlRpc -lDOM -lSaxObjC \
        -lNGLdap
 
-agenor_email2uid_TOOL_LIBS  += -lNGLdap
-agenor_shares4uid_TOOL_LIBS += -lNGLdap
-agenor_emails4uid_TOOL_LIBS += -lNGLdap
+ADDITIONAL_TOOL_LIBS += -lNGLdap
+
index d736dfc48639eb9dadda2f988c19e7bec2e4d115..381f32bc85064610ca4920a04d9d531bbe08af62 100644 (file)
@@ -1,6 +1,6 @@
 # version file
 
-SUBMINOR_VERSION:=42
+SUBMINOR_VERSION:=43
 
 # v0.9.34 requires libGDLContentStore v4.5.26
 # v0.9.26 requires libOGoContentStore v0.9.13
diff --git a/SOGo/SoObjects/SOGo/agenor_defaults.m b/SOGo/SoObjects/SOGo/agenor_defaults.m
new file mode 100644 (file)
index 0000000..0ba83f5
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+  Copyright (C) 2005 SKYRIX Software AG
+
+  This file is part of OpenGroupware.org.
+
+  OGo is free software; you can redistribute it and/or modify it under
+  the terms of the GNU Lesser General Public License as published by the
+  Free Software Foundation; either version 2, or (at your option) any
+  later version.
+
+  OGo is distributed in the hope that it will be useful, but WITHOUT ANY
+  WARRANTY; without even the implied warranty of MERCHANTABILITY or
+  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
+  License for more details.
+
+  You should have received a copy of the GNU Lesser General Public
+  License along with OGo; see the file COPYING.  If not, write to the
+  Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+  02111-1307, USA.
+*/
+
+#include "AgenorUserManager.h"
+#include "common.h"
+
+static void usage(NSArray *args) {
+  fprintf(stderr, "usage: %s <uid> read|write <key> [<value>]\n",
+         [[args objectAtIndex:0] cString]);
+}
+
+static void doRead(NSUserDefaults *defaults, NSString *key) {
+  NSLog(@"TODO READ: %@", key);
+}
+
+static void doWrite(NSUserDefaults *defaults, NSString *key, NSString *value) {
+  NSLog(@"TODO WRITE: %@", key, value);
+}
+
+static void doIt(NSArray *args) {
+  AgenorUserManager *userManager;
+  NSUserDefaults    *defaults;
+  NSString *uid, *op, *key, *value;
+
+  /* extract arguments */
+  
+  if ([args count] < 4) {
+    usage(args);
+    return;
+  }
+
+  uid   = [args objectAtIndex:1];
+  op    = [args objectAtIndex:2];
+  key   = [args objectAtIndex:3];
+  value = nil;
+  
+  if ([op isEqualToString:@"write"]) {
+    if ([args count] < 5) {
+      usage(args);
+      return;
+    }
+    value = [args objectAtIndex:4];
+  }
+  
+  /* run */
+  
+  userManager = [AgenorUserManager sharedUserManager];
+  defaults    = [userManager getUserDefaultsForUID:uid];
+  
+  if (![defaults isNotNull]) {
+    fprintf(stderr, "Error: found no userdefaults for UID: '%s'\n", 
+           [uid cString]);
+    exit(1);
+  }
+  
+  if ([op isEqualToString:@"read"])
+    doRead(defaults, key);
+  else if ([op isEqualToString:@"write"])
+    doWrite(defaults, key, value);
+  else
+    usage(args);
+}
+
+int main(int argc, char **argv, char **env) {
+  NSAutoreleasePool *pool;
+  
+  pool = [[NSAutoreleasePool alloc] init];
+#if LIB_FOUNDATION_LIBRARY
+  [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
+#endif
+  
+  doIt([[NSProcessInfo processInfo] argumentsWithoutDefaults]);
+  
+  [pool release];
+  return 0;
+}