/*!
@header FTAbstractTool
@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
27.07.06 ola initial version
23.08.06 ola license changed
-------------------------------------------------------------------------
*/
#include
#include
@implementation FTAbstractTool
+ (void) startTool: (FTAbstractTool *) tool {
if( [tool cmdLineArgumentsOK] ) {
[tool run];
} else {
[tool cmdLineArgumentsOverview];
}
}
- init {
self = [super init];
self->server = nil;
self->session = nil;
return self;
}
- (void) dealloc {
[self->server release];
[self->session release];
[super dealloc];
}
- (NSEnumerator *) cmdLineArguments {
return [[[NSProcessInfo processInfo] arguments]
objectEnumerator];
}
- (BOOL) cmdLineArgumentsOK {
[[[ECNotImplementedException alloc]
initWithOperationInformation: @"FTAbstractTool::cmdLineArgumentsOK"]
raise];
return NO;
}
- cmdLineArgumentsOverview {
[[[ECNotImplementedException alloc]
initWithOperationInformation: @"FTAbstractTool::cmdLineArgumentsOK"]
raise];
return self;
}
- (ECLogger *) log {
[[[ECNotImplementedException alloc]
initWithOperationInformation: @"FTAbstractTool::log"]
raise];
return nil;
}
- run {
[[[ECNotImplementedException alloc]
initWithOperationInformation: @"FTAbstractTool::cmdLineArgumentsOK"]
raise];
return self;
}
- (id ) server {
return self->server;
}
- (id ) session {
return self->session;
}
- startServerUsingLogin: (NSString *) login
usingPassword: (NSString *) aPassword {
FTBootstrap *bootstrap;
id sessionManager;
if( [[self log] isInfoEnabled] ) {
[[self log]
info: @"Starting server..."];
}
bootstrap = [FTBootstrap bootstrap];
self->server = [[bootstrap startServer] retain];
sessionManager = [[server sessionManager] retain];
self->session = [sessionManager
loginAs: login
withPassword: aPassword];
if( [[self log] isInfoEnabled] ) {
[[self log] info:@"Server up and running..." ];
}
return self;
}
- closeSessionAndStopServer {
if( [[self log] isInfoEnabled] ) {
[[self log]
info: @"Shutting down the server..."];
}
[(id ) self->session shutdownServer];
[self->session release];
self->session = nil;
return self;
}
@end