ftp.nice.ch/pub/next/developer/objc/EOF/OTC_EOFBetaExamples.1.0.bs.tar.gz#/OTC_EOFBetaExamples_V1.0/EOFramework/AccessLayer/AccessLevel.m

This is AccessLevel.m in view mode; [Download] [Up]

/*--------------------------------------------------------------------------
 *
 * 	You may freely copy, distribute, and reuse the code in this example.
 * 	SHL Systemhouse disclaims any warranty of any kind, expressed or  
 *	implied, as to its fitness for any particular use.
 *
 *
 *	AccessLevel
 *
 *	Inherits From:		NSObject
 *
 *	Conforms To:		None
 *
 *	Declared In:		AccessLevel.h
 *
 *------------------------------------------------------------------------*/
#import "AccessLevel.h"
#import "ScrollViewExtensions.h"
#import <eoaccess/eoaccess.h>
#import <appkit/appkit.h>




@implementation AccessLevel

- connect: sender
{
	NSString	*path;
	
	[messageConsole clear: nil];
	[messageConsole sprintf: "connecting to database...\n"];

	[messageConsole sprintf: "obtaining model path...\n"];
	if ((path = [EOModel findPathForModelNamed:
		[NSString stringWithCString:"Authors"]]) == nil)
		{
		NXRunAlertPanel (NULL, "Unable to obtain model path", 
			NULL, NULL, NULL);
		[messageConsole sprintf: "unable to obtain model path\n"];
		return nil;
		}

	[modelPath setStringValue: [path cString]];
		
	[messageConsole sprintf: "initializing model...\n"];
	if ((model = [[EOModel alloc] initWithContentsOfFile:path]) == nil)
		{
		NXRunAlertPanel (NULL, "Unable to initialize model", NULL, NULL, NULL);
		[messageConsole sprintf: "unable to initialize model\n"];
		return nil;
		}
	
	[messageConsole sprintf: "creating adaptor...\n"];
	if ((adaptor = [EOAdaptor adaptorWithModel: model]) == nil)
		{
		NXRunAlertPanel (NULL, "Unable to create adaptor", NULL, NULL, NULL);
		[messageConsole sprintf: "unable to create adaptor\n"];
		return nil;
		}
	
	[messageConsole sprintf: "creating context...\n"];
	if ((context = [adaptor createAdaptorContext]) == nil)
		{
		NXRunAlertPanel (NULL, "Unable to create context", NULL, NULL, NULL);
		[messageConsole sprintf: "unable to create context\n"];
		return nil;
		}
	
	[messageConsole sprintf: "creating channel...\n"];
	if ((channel = [context createAdaptorChannel]) == nil)
		{
		NXRunAlertPanel (NULL, "Unable to create channel", NULL, NULL, NULL);
		[messageConsole sprintf: "unable to create channel\n"];
		return nil;
		}
		
	[messageConsole sprintf: "opening channel...\n"];
	if ([channel openChannel] == NO)
		{
		NXRunAlertPanel (NULL, "Unable to open channel", NULL, NULL, NULL);
		[messageConsole sprintf: "unable to open channel\n"];
		return nil;
		}
		
	[messageConsole sprintf:"channel %s open\n\n", 
		[channel isOpen] ? "is" : "is not"];
	[connectButton setEnabled: ! [channel isOpen]];
	[selectButton setEnabled: [channel isOpen]];
	return self;
}


- select: sender
{
	int	count = 0;
	id	entity, qualifier, attributes, dictionary;
	
	[resultConsole clear: nil];
	[messageConsole sprintf: "beginning transaction...\n"];
	
	if ([context beginTransaction] == NO)
		{
		NXRunAlertPanel (NULL, "Unable to begin transaction", 
			NULL, NULL, NULL);
		[messageConsole sprintf: "unable to begin transaction\n"];
		return nil;
		}
		
	[messageConsole sprintf: "obtaining entity...\n"];
	if ((entity = [model entityNamed: @"authors"]) == nil)
		{
		NXRunAlertPanel (NULL, "Unable to obtain entity authors", 
			NULL, NULL, NULL);
		[messageConsole sprintf: "unable to obtain entity authors\n"];
		return nil;
		}
		
	[messageConsole sprintf: "obtaining qualifier...\n"];
	if ((qualifier = [entity qualifier]) == nil)
		{
		NXRunAlertPanel (NULL, "Unable to obtain qualifier", 
			NULL, NULL, NULL);
		[messageConsole sprintf: "unable to obtain qualifier\n"];
		return nil;
		}
		
	[messageConsole sprintf: "obtaining attributes...\n"];
	if ((attributes = [entity attributes]) == nil)
		{
		NXRunAlertPanel (NULL, "Unable to obtain attributes", 
			NULL, NULL, NULL);
		[messageConsole sprintf: "unable to obtain attributes\n"];
		return nil;
		}
		
	[messageConsole sprintf: "selecting attributes...\n"];
	if ([channel selectAttributes:attributes
		describedByQualifier: qualifier fetchOrder:nil lock:NO] == NO)
		{
		NXRunAlertPanel (NULL, "Unable to select attributes", 
			NULL, NULL, NULL);
		[messageConsole sprintf: "unable to select attributes\n"];
		return nil;
		}
		
	while ((dictionary = [channel fetchAttributes:attributes 
		withZone:[(EOAdaptor*)adaptor zone]]))
		{
		[resultConsole sprintf: "%s\n", 
			[[(NSString*)dictionary description] cString]];
		count++;
		}
		
	[messageConsole sprintf: "\n%d records found\n\n", count];
		
	[messageConsole sprintf: "rolling back transaction...\n"];
	if ([context rollbackTransaction] == NO)
		{
		NXRunAlertPanel (NULL, "Unable to rollback transaction", 
			NULL, NULL, NULL);
		[messageConsole sprintf: "unable to rollback transaction\n"];
		return nil;
		}
		
	[messageConsole sprintf: "done\n\n"];
	return self;
}


@end
	

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.