home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1995 August / NEBULA.mdf / SourceCode / Database / OTC_EOFBetaExamples_V1.0 / EOFramework / AccessLayer / AccessLevel.m < prev    next >
Encoding:
Text File  |  1994-07-30  |  4.6 KB  |  172 lines

  1. /*--------------------------------------------------------------------------
  2.  *
  3.  *     You may freely copy, distribute, and reuse the code in this example.
  4.  *     SHL Systemhouse disclaims any warranty of any kind, expressed or  
  5.  *    implied, as to its fitness for any particular use.
  6.  *
  7.  *
  8.  *    AccessLevel
  9.  *
  10.  *    Inherits From:        NSObject
  11.  *
  12.  *    Conforms To:        None
  13.  *
  14.  *    Declared In:        AccessLevel.h
  15.  *
  16.  *------------------------------------------------------------------------*/
  17. #import "AccessLevel.h"
  18. #import "ScrollViewExtensions.h"
  19. #import <eoaccess/eoaccess.h>
  20. #import <appkit/appkit.h>
  21.  
  22.  
  23.  
  24.  
  25. @implementation AccessLevel
  26.  
  27. - connect: sender
  28. {
  29.     NSString    *path;
  30.     
  31.     [messageConsole clear: nil];
  32.     [messageConsole sprintf: "connecting to database...\n"];
  33.  
  34.     [messageConsole sprintf: "obtaining model path...\n"];
  35.     if ((path = [EOModel findPathForModelNamed:
  36.         [NSString stringWithCString:"Authors"]]) == nil)
  37.         {
  38.         NXRunAlertPanel (NULL, "Unable to obtain model path", 
  39.             NULL, NULL, NULL);
  40.         [messageConsole sprintf: "unable to obtain model path\n"];
  41.         return nil;
  42.         }
  43.  
  44.     [modelPath setStringValue: [path cString]];
  45.         
  46.     [messageConsole sprintf: "initializing model...\n"];
  47.     if ((model = [[EOModel alloc] initWithContentsOfFile:path]) == nil)
  48.         {
  49.         NXRunAlertPanel (NULL, "Unable to initialize model", NULL, NULL, NULL);
  50.         [messageConsole sprintf: "unable to initialize model\n"];
  51.         return nil;
  52.         }
  53.     
  54.     [messageConsole sprintf: "creating adaptor...\n"];
  55.     if ((adaptor = [EOAdaptor adaptorWithModel: model]) == nil)
  56.         {
  57.         NXRunAlertPanel (NULL, "Unable to create adaptor", NULL, NULL, NULL);
  58.         [messageConsole sprintf: "unable to create adaptor\n"];
  59.         return nil;
  60.         }
  61.     
  62.     [messageConsole sprintf: "creating context...\n"];
  63.     if ((context = [adaptor createAdaptorContext]) == nil)
  64.         {
  65.         NXRunAlertPanel (NULL, "Unable to create context", NULL, NULL, NULL);
  66.         [messageConsole sprintf: "unable to create context\n"];
  67.         return nil;
  68.         }
  69.     
  70.     [messageConsole sprintf: "creating channel...\n"];
  71.     if ((channel = [context createAdaptorChannel]) == nil)
  72.         {
  73.         NXRunAlertPanel (NULL, "Unable to create channel", NULL, NULL, NULL);
  74.         [messageConsole sprintf: "unable to create channel\n"];
  75.         return nil;
  76.         }
  77.         
  78.     [messageConsole sprintf: "opening channel...\n"];
  79.     if ([channel openChannel] == NO)
  80.         {
  81.         NXRunAlertPanel (NULL, "Unable to open channel", NULL, NULL, NULL);
  82.         [messageConsole sprintf: "unable to open channel\n"];
  83.         return nil;
  84.         }
  85.         
  86.     [messageConsole sprintf:"channel %s open\n\n", 
  87.         [channel isOpen] ? "is" : "is not"];
  88.     [connectButton setEnabled: ! [channel isOpen]];
  89.     [selectButton setEnabled: [channel isOpen]];
  90.     return self;
  91. }
  92.  
  93.  
  94. - select: sender
  95. {
  96.     int    count = 0;
  97.     id    entity, qualifier, attributes, dictionary;
  98.     
  99.     [resultConsole clear: nil];
  100.     [messageConsole sprintf: "beginning transaction...\n"];
  101.     
  102.     if ([context beginTransaction] == NO)
  103.         {
  104.         NXRunAlertPanel (NULL, "Unable to begin transaction", 
  105.             NULL, NULL, NULL);
  106.         [messageConsole sprintf: "unable to begin transaction\n"];
  107.         return nil;
  108.         }
  109.         
  110.     [messageConsole sprintf: "obtaining entity...\n"];
  111.     if ((entity = [model entityNamed: @"authors"]) == nil)
  112.         {
  113.         NXRunAlertPanel (NULL, "Unable to obtain entity authors", 
  114.             NULL, NULL, NULL);
  115.         [messageConsole sprintf: "unable to obtain entity authors\n"];
  116.         return nil;
  117.         }
  118.         
  119.     [messageConsole sprintf: "obtaining qualifier...\n"];
  120.     if ((qualifier = [entity qualifier]) == nil)
  121.         {
  122.         NXRunAlertPanel (NULL, "Unable to obtain qualifier", 
  123.             NULL, NULL, NULL);
  124.         [messageConsole sprintf: "unable to obtain qualifier\n"];
  125.         return nil;
  126.         }
  127.         
  128.     [messageConsole sprintf: "obtaining attributes...\n"];
  129.     if ((attributes = [entity attributes]) == nil)
  130.         {
  131.         NXRunAlertPanel (NULL, "Unable to obtain attributes", 
  132.             NULL, NULL, NULL);
  133.         [messageConsole sprintf: "unable to obtain attributes\n"];
  134.         return nil;
  135.         }
  136.         
  137.     [messageConsole sprintf: "selecting attributes...\n"];
  138.     if ([channel selectAttributes:attributes
  139.         describedByQualifier: qualifier fetchOrder:nil lock:NO] == NO)
  140.         {
  141.         NXRunAlertPanel (NULL, "Unable to select attributes", 
  142.             NULL, NULL, NULL);
  143.         [messageConsole sprintf: "unable to select attributes\n"];
  144.         return nil;
  145.         }
  146.         
  147.     while ((dictionary = [channel fetchAttributes:attributes 
  148.         withZone:[(EOAdaptor*)adaptor zone]]))
  149.         {
  150.         [resultConsole sprintf: "%s\n", 
  151.             [[(NSString*)dictionary description] cString]];
  152.         count++;
  153.         }
  154.         
  155.     [messageConsole sprintf: "\n%d records found\n\n", count];
  156.         
  157.     [messageConsole sprintf: "rolling back transaction...\n"];
  158.     if ([context rollbackTransaction] == NO)
  159.         {
  160.         NXRunAlertPanel (NULL, "Unable to rollback transaction", 
  161.             NULL, NULL, NULL);
  162.         [messageConsole sprintf: "unable to rollback transaction\n"];
  163.         return nil;
  164.         }
  165.         
  166.     [messageConsole sprintf: "done\n\n"];
  167.     return self;
  168. }
  169.  
  170.  
  171. @end
  172.