sogo/Misc/dbd/DDatabaseManager.m
dev-unix.inverse.qc.ca f18c764ffa see ChangeLog
Monotone-Revision: 9054022ef1ca8aeba6e34842d27d9b94ce002b89

Monotone-Author: dev-unix.inverse.qc.ca
Monotone-Date: 2006-06-15T19:34:10
Monotone-Branch: ca.inverse.sogo
2006-06-15 19:34:10 +00:00

89 lines
1.7 KiB
Objective-C

// $Id: DDatabaseManager.m 46 2004-06-17 01:23:37Z helge $
#include <NGObjWeb/SoComponent.h>
@class EOAdaptorChannel;
@interface DDatabaseManager : SoComponent
{
EOAdaptorChannel *channel;
NSArray *databaseNames;
id item;
}
@end
#include "DSoHost.h"
#include "DSoDatabaseManager.h"
#include "common.h"
@interface EOAdaptorChannel(ModelFetching)
- (NSArray *)describeDatabaseNames;
@end
@implementation DDatabaseManager
- (void)dealloc {
if ([self->channel isOpen])
[self->channel closeChannel];
[self->channel release];
[self->databaseNames release];
[self->item release];
[super dealloc];
}
/* notifications */
- (void)sleep {
if ([self->channel isOpen])
[self->channel closeChannel];
[super sleep];
}
/* DB things */
- (EOAdaptor *)adaptor {
return [[(DSoDatabaseManager *)[self clientObject]
host] adaptorInContext:[self context]];
}
- (EOAdaptorChannel *)channel {
EOAdaptorContext *ctx;
if (self->channel)
return self->channel;
ctx = [[self adaptor] createAdaptorContext];
self->channel = [[ctx createAdaptorChannel] retain];
if (![self->channel openChannel]) {
[self->channel release];
self->channel = nil;
}
return self->channel;
}
/* accessors */
- (void)setItem:(id)_item {
ASSIGN(self->item, _item);
}
- (id)item {
return self->item;
}
- (NSArray *)databaseNames {
if (self->databaseNames == nil)
self->databaseNames = [[[self channel] describeDatabaseNames] copy];
return self->databaseNames;
}
- (NSString *)dbLink {
// this suxx, a) we need to write code, b) we need to attach the / manually
return [[self item] stringByAppendingString:@"/"];
}
@end /* DDatabaseManager */