/*!
@header FTConfig
@abstract Module of FT
@availability OS X, GNUstep
@copyright 2004, 2005, 2006 Free Software Foundation, Inc.
This library 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.1 of the License, or (at your option) any later version.
This library 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 this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-------------------------------------------------------------------------
Modification history
01.12.05 ola initial version
23.08.06 ola license changed
-------------------------------------------------------------------------
*/
#include
@implementation FTConfig
- init {
self = [super init];
self->databaseNames = nil;
self->services = nil;
self->baseDataDir = nil;
self->classObjectFactory = nil;
return self;
}
- (void) dealloc {
[self->databaseNames release];
[self->services release];
[self->classObjectFactory release];
[super dealloc];
}
- (NSString *) baseDataDir {
return self->baseDataDir;
}
- (FTClassObjectFactory *) classObjectFactory {
return self->classObjectFactory;
}
- (FTConfigDatabaseNames *) databaseNames {
return self->databaseNames;
}
- (FTConfigServices *) services {
return self->services;
}
- setBaseDataDir: (NSString *) theBaseDir {
if( nil != self->baseDataDir ) {
[self->baseDataDir release];
}
self->baseDataDir = [theBaseDir retain];
return self;
}
- setDatabaseNames: (FTConfigDatabaseNames *) theDatabaseNames {
if( nil != self->databaseNames ) {
[self->databaseNames release];
}
self->databaseNames = [theDatabaseNames retain];
return self;
}
- setFTClassObjectFactory: (FTClassObjectFactory *) aClassObjectFactory {
id tmp = [aClassObjectFactory retain];
[self->classObjectFactory release];
self->classObjectFactory = tmp;
return self;
}
- setServices: (FTConfigServices *) theServices {
if( nil != self->services ) {
[self->services release];
}
self->services = [theServices retain];
return self;
}
@end
// --------------------------------------------- FTDatabaseNames
@implementation FTConfigDatabaseNames
- init {
self = [super init];
self->entryToDatabaseName = [[NSMutableDictionary alloc] init];
return self;
}
- (void) dealloc {
if( nil != self->entryToDatabaseName ) {
[self->entryToDatabaseName release];
}
[super dealloc];
}
- addDatabaseName: (FTConfigDatabaseName *) dbNameToAdd {
[self->entryToDatabaseName
setObject: [dbNameToAdd databaseName]
forKey: [dbNameToAdd entry]];
return self;
}
- (id ) allDatabaseNames {
id toReturn;
EC_AUTORELEASEPOOL_BEGIN
NSArray *values = [self->entryToDatabaseName allValues];
toReturn = [[ECArrayIterator alloc]
initWithArray: values];
EC_AUTORELEASEPOOL_END
return [toReturn autorelease];
}
- (NSString *) databaseNameForEntry: (NSString *) anEntry {
return [self->entryToDatabaseName objectForKey: anEntry];
}
@end
// --------------------------------------------- FTDatabaseName
@implementation FTConfigDatabaseName
- init {
self = [super init];
self->entry = nil;
self->databaseName = nil;
return self;
}
- (void) dealloc {
if( nil != self->entry ) {
[self->entry release];
}
if( nil != self->databaseName ) {
[self->databaseName release];
}
[super dealloc];
}
- (NSString *) databaseName {
return self->databaseName;
}
- (NSString *) entry {
return self->entry;
}
- setDatabaseName: (NSString *) aDatabaseName {
if( nil != self->databaseName ) {
[self->databaseName release];
}
self->databaseName = [aDatabaseName retain];
return self;
}
- setEntry: (NSString *) anEntry {
id tmp;
tmp = self->entry;
self->entry = [anEntry retain];
if( nil != tmp ) {
[tmp release];
}
return self;
}
@end
// --------------------------------------- FTConfigServices
@implementation FTConfigServices
- init {
self = [super init];
self->serviceLoaders = nil;
return self;
}
- (void) dealloc {
if( nil != self->serviceLoaders ) {
[self->serviceLoaders release];
}
[super dealloc];
}
- setServiceLoaders: (FTConfigServiceLoaders *) serviceLoadersToSet {
if( nil != self->serviceLoaders ) {
[self->serviceLoaders release];
}
self->serviceLoaders = [[serviceLoadersToSet serviceLoaders] retain];
return self;
}
- (NSMutableDictionary *) serviceLoaders {
if( nil == self->serviceLoaders ) {
self->serviceLoaders = [[NSMutableDictionary alloc] init];
}
return self->serviceLoaders;
}
@end
// --------------------------------------- FTConfigServices
@implementation FTConfigServiceLoaders : ECObject
- init {
self = [super init];
self->serviceLoaders = [[NSMutableDictionary alloc] init];
return self;
}
- (void) dealloc {
if( nil != self->serviceLoaders ) {
[self->serviceLoaders release];
}
[super dealloc];
}
- addServiceLoader: (id ) serviceLoader {
[self->serviceLoaders
setObject: serviceLoader
forKey: [serviceLoader serviceId]];
return self;
}
- (NSMutableDictionary *) serviceLoaders {
return self->serviceLoaders;
}
@end
// --------------------------------------- FTRegisterClassObject
@implementation FTRegisterClassObject
- init {
self = [super init];
self->classObject = nil;
self->key = nil;
return self;
}
- (void) dealloc {
[self->classObject release];
[self->key release];
[super dealloc];
}
- (NSString *) classObject {
return self->classObject;
}
- (NSString *) key {
return self->key;
}
- setClassObject: (NSString *) aClassObject {
id tmp = [aClassObject retain];
[self->classObject release];
self->classObject = tmp;
return self;
}
- setKey: (NSString *) aKey {
id tmp = [aKey retain];
[self->key release];
self->key = tmp;
return self;
}
@end
// --------------------------------------- FTClassObjectFactory
@implementation FTClassObjectFactory
- init {
self = [super init];
self->keyToClassObject = [[NSMutableDictionary alloc] init];
return self;
}
- (void) dealloc {
[self->keyToClassObject release];
[super dealloc];
}
- addFTRegisterClassObject: (FTRegisterClassObject *) toRegister {
[self->keyToClassObject
setObject: [toRegister classObject]
forKey: [toRegister key]];
return self;
}
- (Class) classObjectForKey: (NSString *) key {
return NSClassFromString( [self->keyToClassObject
objectForKey: key] );
}
@end