home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer) / NeXT_Developer-3.3.iso / NextDeveloper / Examples / DatabaseKit / AssociationOracle / Controller.m < prev    next >
Encoding:
Text File  |  1993-07-14  |  2.3 KB  |  81 lines

  1. /* Controller.m:
  2.  * You may freely copy, distribute, and reuse the code in this example.
  3.  * NeXT disclaims any warranty of any kind, expressed or  implied, as to its
  4.  * fitness for any particular use.
  5.  *
  6.  * Written by Mai Nguyen, NeXT Developer Support
  7.  *
  8.  */
  9. #import    <dbkit/dbkit.h>
  10. #import <libc.h>
  11. #import "Controller.h"
  12. #import "QualifiedAssociation.h"
  13.  
  14. /* Define localized strings */
  15. #define INSTALL_MODEL NXLocalizedString("Please install OracleDemo.dbmodela into your project directory and restart.", NULL, "Notify user that OracleDemo.dbmodeal must be installed in his project directory.")
  16.  
  17. @implementation Controller
  18.  
  19. /* At init time, the proper association is set up between the master fetchgroup
  20.  * and the detail fetchgroup, such that whenever a fetch happens, that fetch
  21.  * will be done with the specified qualifier.
  22.  */ 
  23. -appDidInit:sender
  24. {
  25.     id    dbDatabase;
  26.  
  27.         /* Notify the user if the database can't be found */
  28.     if ( (dbDatabase = [DBDatabase findDatabaseNamed:"OracleDemo" connect:YES]) == nil) {
  29.         NXRunAlertPanel(NULL, INSTALL_MODEL, "OK", NULL, NULL);
  30.         return self;
  31.     }
  32.     [dbDatabase setDelegate:self];
  33.     
  34.     detailFetchGroup = [departmentTable fetchGroupNamed:"employees"];
  35.  
  36.           /* Set up the new association.
  37.            Note that the new association now belongs to the DBModule
  38.            just as the old one did. */
  39.         newAssociation = [[QualifiedAssociation alloc]
  40.         initAndReplaceAssociationTo:detailFetchGroup];
  41.     dbQualifier = [[DBQualifier alloc] 
  42.             initForEntity:[detailFetchGroup entity]
  43.             fromDescription: "%p > 1000", "salary"];
  44.     [newAssociation setQualifier: dbQualifier];
  45.     [departmentTable fetchAllRecords:sender];
  46.     [theWindow makeKeyAndOrderFront:nil];
  47.     return self;
  48. }
  49.  
  50. - changeQualifier:sender
  51. {
  52.     if (dbQualifier)
  53.         [dbQualifier free];
  54.     dbQualifier = [[DBQualifier alloc] 
  55.             initForEntity:[detailFetchGroup entity]
  56.             fromDescription: "%p > %d", "salary", (int)[salaryField intValue]];
  57.     [newAssociation setQualifier: dbQualifier];
  58.     [departmentTable fetchAllRecords:sender];
  59.     return self;
  60. }
  61.  
  62. - free
  63. {
  64.     if (dbQualifier)
  65.         [dbQualifier free];
  66.     if (newAssociation)
  67.         [newAssociation free];
  68.     return [super free];
  69. }
  70.  
  71. /* For debugging purpose */
  72. - (BOOL)db:aDb willEvaluateString:(const unsigned char*)aString
  73.      usingBinder:aBinder
  74. {
  75.     fprintf(stderr, "SQL Query: %s\n", (char *)aString);
  76.     return YES;
  77. }
  78.     
  79. @end
  80.  
  81.