From b2067063b8ad8ccc69126e9139d2151b3d0a881b Mon Sep 17 00:00:00 2001 From: helge Date: Tue, 19 Jul 2005 10:48:43 +0000 Subject: [PATCH] added methods to expose a string table object git-svn-id: http://svn.opengroupware.org/SOPE/trunk@915 e4a50df8-12e2-0310-a44c-efbce7f8a7e3 --- sope-appserver/NGObjWeb/ChangeLog | 10 +++++ .../NGObjWeb/NGObjWeb/WOResourceManager.h | 6 +++ sope-appserver/NGObjWeb/Version | 2 +- sope-appserver/NGObjWeb/WOResourceManager.m | 44 ++++++++++++------- sope-appserver/NGObjWeb/_WOStringTable.m | 33 ++++++++++++++ 5 files changed, 78 insertions(+), 17 deletions(-) diff --git a/sope-appserver/NGObjWeb/ChangeLog b/sope-appserver/NGObjWeb/ChangeLog index fbe97e3c..1a4d16b5 100644 --- a/sope-appserver/NGObjWeb/ChangeLog +++ b/sope-appserver/NGObjWeb/ChangeLog @@ -1,3 +1,13 @@ +2005-07-19 Helge Hess + + * v4.5.174 + + * WOResourceManager.m: added method to retrieve a string-table object + with a given name/framework/language + + * _WOStringTable.m: added methods to access a table like a dictionary, + added -valueForKey: + 2005-07-18 Helge Hess * v4.5.173 diff --git a/sope-appserver/NGObjWeb/NGObjWeb/WOResourceManager.h b/sope-appserver/NGObjWeb/NGObjWeb/WOResourceManager.h index fd5ffb93..d3734ff0 100644 --- a/sope-appserver/NGObjWeb/NGObjWeb/WOResourceManager.h +++ b/sope-appserver/NGObjWeb/NGObjWeb/WOResourceManager.h @@ -95,6 +95,12 @@ - (void)setCachingEnabled:(BOOL)_flag; - (BOOL)isCachingEnabled; +/* string tables */ + +- (id)stringTableWithName:(NSString *)_tableName + inFramework:(NSString *)_framework + languages:(NSArray *)_languages; + @end @interface WOResourceManager(DeprecatedMethods) diff --git a/sope-appserver/NGObjWeb/Version b/sope-appserver/NGObjWeb/Version index cc693a19..801a3cc8 100644 --- a/sope-appserver/NGObjWeb/Version +++ b/sope-appserver/NGObjWeb/Version @@ -1,6 +1,6 @@ # version file -SUBMINOR_VERSION:=173 +SUBMINOR_VERSION:=174 # v4.5.122 requires libNGExtensions v4.5.153 # v4.5.91 requires libNGExtensions v4.5.134 diff --git a/sope-appserver/NGObjWeb/WOResourceManager.m b/sope-appserver/NGObjWeb/WOResourceManager.m index 9284a63e..6427de47 100644 --- a/sope-appserver/NGObjWeb/WOResourceManager.m +++ b/sope-appserver/NGObjWeb/WOResourceManager.m @@ -537,12 +537,11 @@ _pathExists(WOResourceManager *self, NSFileManager *fm, NSString *path) /* string tables */ -- (NSString *)stringForKey:(NSString *)_key - inTableNamed:(NSString *)_tableName - withDefaultValue:(NSString *)_defaultValue +- (id)stringTableWithName:(NSString *)_tableName inFramework:(NSString *)_framework - languages:(NSArray *)_languages; + languages:(NSArray *)_languages { + /* side effect: tables are cached (currently not affected by default!) */ NSFileManager *fm; _WOStringTable *table = nil; NSString *path = nil; @@ -558,21 +557,34 @@ _pathExists(WOResourceManager *self, NSFileManager *fm, NSString *path) path = [self pathForResourceNamed:path inFramework:_framework languages:_languages]; - if (path != nil) { - if ((table = NSMapGet(self->stringTables, path)) == NULL) { - if ([fm fileExistsAtPath:path]) { - table = [_WOStringTable allocWithZone:[self zone]]; /* for gcc */ - table = [table initWithPath:path]; - NSMapInsert(self->stringTables, path, table); - [table release]; - } + if (path == nil) + return nil; + + if ((table = NSMapGet(self->stringTables, path)) == NULL) { + if ([fm fileExistsAtPath:path]) { + table = [_WOStringTable allocWithZone:[self zone]]; /* for gcc */ + table = [table initWithPath:path]; + NSMapInsert(self->stringTables, path, table); + [table release]; } - if (table != nil) - return [table stringForKey:_key withDefaultValue:_defaultValue]; } - /* didn't found table in cache */ + return table; +} + +- (NSString *)stringForKey:(NSString *)_key + inTableNamed:(NSString *)_tableName + withDefaultValue:(NSString *)_defaultValue + inFramework:(NSString *)_framework + languages:(NSArray *)_languages +{ + _WOStringTable *table = nil; + + table = [self stringTableWithName:_tableName inFramework:_framework + languages:_languages]; - return _defaultValue; + return (table != nil) + ? [table stringForKey:_key withDefaultValue:_defaultValue] + : _defaultValue; } - (NSString *)stringForKey:(NSString *)_key diff --git a/sope-appserver/NGObjWeb/_WOStringTable.m b/sope-appserver/NGObjWeb/_WOStringTable.m index 2602ef74..8d3c5277 100644 --- a/sope-appserver/NGObjWeb/_WOStringTable.m +++ b/sope-appserver/NGObjWeb/_WOStringTable.m @@ -120,6 +120,39 @@ static NSStringEncoding stringFilesEncoding = NSUTF8StringEncoding; return value != nil ? value : _def; } +/* fake being a dictionary */ + +- (NSEnumerator *)keyEnumerator { + [self checkState]; + return [self->data keyEnumerator]; +} +- (NSEnumerator *)objectEnumerator { + [self checkState]; + return [self->data objectEnumerator]; +} +- (id)objectForKey:(id)_key { + [self checkState]; + return [self->data objectForKey:_key]; +} +- (unsigned int)count { + [self checkState]; + return [self->data count]; +} +- (NSArray *)allKeys { + [self checkState]; + return [self->data allKeys]; +} +- (NSArray *)allValues { + [self checkState]; + return [self->data allValues]; +} + +/* KVC */ + +- (id)valueForKey:(NSString *)_key { + return [self objectForKey:_key]; +} + /* description */ - (NSString *)description { -- 2.39.5