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.