]> err.no Git - scalable-opengroupware.org/commitdiff
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@77 d1b88da0-ebda-0310-925b-ed51d8...
authorhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 29 Jun 2004 16:00:39 +0000 (16:00 +0000)
committerhelge <helge@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Tue, 29 Jun 2004 16:00:39 +0000 (16:00 +0000)
OGoContentStore/GNUmakefile
OGoContentStore/GNUmakefile.preamble
OGoContentStore/OCSFolderManager.h
OGoContentStore/OCSFolderManager.m
OGoContentStore/ocs_mkdir.m [new file with mode: 0644]

index e79f9b016483e3c1e77f95f95eef464bb93cd029..dc7ed786150f29b20b6f7b6fa6acac16bc4a44b6 100644 (file)
@@ -4,7 +4,7 @@ include $(GNUSTEP_MAKEFILES)/common.make
 include ./Version
 
 LIBRARY_NAME = libOGoContentStore
-TOOL_NAME = ocs_ls
+TOOL_NAME = ocs_ls ocs_mkdir
 
 libOGoContentStore_HEADER_FILES += \
        NSURL+OCS.h             \
@@ -28,8 +28,8 @@ libOGoContentStore_OBJC_FILES += \
        OCSFolderType.m         \
        OCSChannelManager.m     \
 
-ocs_ls_OBJC_FILES += \
-       ocs_ls.m
+ocs_ls_OBJC_FILES    += ocs_ls.m
+ocs_mkdir_OBJC_FILES += ocs_mkdir.m
 
 -include GNUmakefile.preamble
 include $(GNUSTEP_MAKEFILES)/library.make
index d4882dd7a4aedef56a35a54db619e866385e60c0..176803b0fecdd5830abde76afda0dbda7712f30d 100644 (file)
@@ -4,11 +4,14 @@ libOGoContentStore_LIBRARIES_DEPEND_UPON += \
        -lGDLAccess     \
        -lEOControl
 
-ocs_ls_TOOL_LIBS += \
+OCS_TOOL_LIBS += \
        -lOGoContentStore       \
        -lGDLAccess             \
        -lNGExtensions -lEOControl
 
+ocs_ls_TOOL_LIBS    += $(OCS_TOOL_LIBS)
+ocs_mkdir_TOOL_LIBS += $(OCS_TOOL_LIBS)
+
 ADDITIONAL_INCLUDE_DIRS += -I. -I..
 
 ifeq ($(FOUNDATION_LIB),apple)
index dc2117e3d67c2eab7ab5a9f79ebd68b4740bbc9a..7fc7339ee98afccec98b9658ceb08cc14c53804b 100644 (file)
@@ -32,7 +32,7 @@
   model and manage the tables required for a folder.
 */
 
-@class NSString, NSArray, NSURL, NSDictionary;
+@class NSString, NSArray, NSURL, NSDictionary, NSException;
 @class OCSChannelManager, OCSFolder, OCSFolderType;
 
 @interface OCSFolderManager : NSObject
@@ -67,6 +67,8 @@
 
 - (OCSFolder *)folderAtPath:(NSString *)_path;
 
+- (NSException *)createFolderOfType:(NSString *)_type atPath:(NSString *)_path;
+
 /* folder types */
 
 - (OCSFolderType *)folderTypeWithName:(NSString *)_name;
index 560544f4ba9f1caa445720eac6c0f95e173152b3..bbdef2a02eb5e3b06ed0ab3f63ad66718f453b95 100644 (file)
@@ -536,6 +536,13 @@ static const char *OCSPathColumnPattern     = "c_path%i";
   return [self folderForRecord:record];
 }
 
+- (NSException *)createFolderOfType:(NSString *)_type atPath:(NSString *)_path{
+  // TODO: implement folder create
+  return [NSException exceptionWithName:@"NotYetImplemented"
+                     reason:@"no money, no time, ..."
+                     userInfo:nil];
+}
+
 /* folder types */
 
 - (OCSFolderType *)folderTypeWithName:(NSString *)_name {
diff --git a/OGoContentStore/ocs_mkdir.m b/OGoContentStore/ocs_mkdir.m
new file mode 100644 (file)
index 0000000..faa72c8
--- /dev/null
@@ -0,0 +1,105 @@
+// $Id$
+
+#import <Foundation/NSObject.h>
+
+@class NSUserDefaults;
+@class OCSFolderManager;
+
+@interface Tool : NSObject
+{
+  NSUserDefaults   *ud;
+  OCSFolderManager *folderManager;
+}
+
++ (int)run;
+
+@end
+
+#include <OGoContentStore/OCSFolder.h>
+#include <OGoContentStore/OCSFolderManager.h>
+#include "common.h"
+
+@implementation Tool
+
+- (id)init {
+  if ((self = [super init])) {
+    self->ud            = [[NSUserDefaults standardUserDefaults]   retain];
+    self->folderManager = [[OCSFolderManager defaultFolderManager] retain];
+  }
+  return self;
+}
+- (void)dealloc {
+  [self->ud            release];
+  [self->folderManager release];
+  [super dealloc];
+}
+
+/* operation */
+
+- (int)runOnPath:(NSString *)_path type:(NSString *)_type {
+  NSException *error;
+  
+  [self logWithFormat:@"mkdir %@ at path: '%@'", _type, _path];
+  
+  if ([self->folderManager folderExistsAtPath:_path]) {
+    [self logWithFormat:@"folder already exist at path: '%@'", _path];
+    return 1;
+  }
+  
+  if ((error = [self->folderManager createFolderOfType:_type atPath:_path])) {
+    [self logWithFormat:@"creation of folder %@ at %@ failed: %@",
+           _type, _path, error];
+    return 1;
+  }
+  
+  if ([self->folderManager folderExistsAtPath:_path])
+    [self logWithFormat:@"CREATED."];
+  else
+    [self logWithFormat:@"cannot find fresh folder?"];
+  
+  return 0;
+}
+
+- (int)run {
+  NSEnumerator *e;
+  NSString *type;
+  NSString *path;
+  
+  [self logWithFormat:@"manager: %@", self->folderManager];
+  
+  if (![self->folderManager canConnect]) {
+    [self logWithFormat:@"cannot connect folder-info database!"];
+    return 1;
+  }
+  
+  e = [[[NSProcessInfo processInfo] argumentsWithoutDefaults] 
+                       objectEnumerator];
+  [e nextObject]; // skip tool name
+  
+  type = [[[e nextObject] copy] autorelease];
+  
+  while ((path = [e nextObject]))
+    [self runOnPath:path type:type];
+  
+  return 0;
+}
++ (int)run {
+  return [(Tool *)[[[self alloc] init] autorelease] run];
+}
+
+@end /* Tool */
+
+int main(int argc, char **argv, char **env) {
+  NSAutoreleasePool *pool;
+  int rc;
+
+  pool = [[NSAutoreleasePool alloc] init];
+#if LIB_FOUNDATION_LIBRARY  
+  [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
+#endif
+
+  rc = [Tool run];
+  
+  [pool release];
+  return rc;
+}