Annotation of Examples/DatabaseKit/AssociationSybase/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 SybaseDemo.dbmodela into your project directory and restart.", NULL, "Notify user that SybaseDemo.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:"SybaseDemo" connect:YES]) == nil) {
                     29:                NXRunAlertPanel(NULL, INSTALL_MODEL, "OK", NULL, NULL);
                     30:                return self;
                     31:        }
                     32:        [dbDatabase setDelegate:self];
                     33:        
                     34:        detailFetchGroup = [storeTable fetchGroupNamed:"sales"];
                     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 > 1", "quantity"];
                     44:        [newAssociation setQualifier: dbQualifier];
                     45:        [storeTable 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", "quantity", 
                     57:                        (int)[quantityField intValue]];
                     58:        [newAssociation setQualifier: dbQualifier];
                     59:        [storeTable fetchAllRecords:sender];
                     60:        return self;
                     61: }
                     62: 
                     63: - free
                     64: {
                     65:        if (dbQualifier)
                     66:                [dbQualifier free];
                     67:        return [super free];
                     68: }
                     69: 
                     70: /* For debugging purpose */
                     71: - (BOOL)db:aDb willEvaluateString:(const unsigned char*)aString
                     72:      usingBinder:aBinder
                     73: {
                     74:        fprintf(stderr, "SQL Query: %s\n", (char *)aString);
                     75:        return YES;
                     76: }
                     77:        
                     78: @end
                     79: 

unix.superglobalmegacorp.com

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