Annotation of Examples/DatabaseKit/AssociationOracle/Controller.m, revision 1.1.1.1

1.1       root        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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.