Annotation of Examples/EnterpriseObjects/MasteringDetails/EmpController.m, revision 1.1.1.1

1.1       root        1: 
                      2: #import "EmpController.h"
                      3: #import <eointerface/eointerface.h>
                      4: #import "ValueForKey.h"
                      5: #import "SelectionInsertionAssociation.h"
                      6: 
                      7: @implementation EmpController
                      8: 
                      9: - appDidInit:sender
                     10: {
                     11:     // add custom association that inserts and deletes objects in the
                     12:     // empProjectsController based on the selection in the allProjectsController
                     13:     [empProjectsController addAssociation:[[SelectionInsertionAssociation alloc] initWithController:empProjectsController key:nil destination:allProjectsController]];
                     14: 
                     15:     // add custom association that inserts and deletes objects in the
                     16:     // empDeptsController based on the selection in the allDeptsController
                     17:     [empDeptsController addAssociation:[[SelectionInsertionAssociation alloc] initWithController:empDeptsController key:nil destination:allDeptsController]];
                     18: 
                     19:     // Fetch the list of all projects and all departments for our pick lists.
                     20:     // A real app would probably cache these list so it wouldn't have to
                     21:     // requery the database each time a new window is opened.
                     22:     [allProjectsController fetch:nil];
                     23:     [allDeptsController fetch:nil];
                     24: 
                     25:     // Set a controller in memory sort for first name and last name
                     26:     // and fetch all of the employees
                     27:     [empController setSortOrdering:[NSArray arrayWithObjects:
                     28:         [EOKeySortOrdering keyOrderingWithKey:@"last_name" ordering:NSOrderedAscending],
                     29:         [EOKeySortOrdering keyOrderingWithKey:@"first_name" ordering:NSOrderedAscending], nil]];
                     30:     [empController fetch:nil];
                     31: 
                     32:     return self;
                     33: }
                     34: 
                     35: - insert:sender
                     36: {
                     37:     // Add a new employee
                     38:     // In addition to inserting the employee itself, we need to insert
                     39:     // in any detail controller that represent mandatory to-one relationships.
                     40:     // Possible Enhansement: make the Savvy controller propagate inserts to
                     41:     // detail controllers automatically.
                     42:     [empController insert:self];
                     43:     [quoteController insert:self];
                     44:     [photoController insert:self];
                     45:     // default the department for the new employee to the first department in the list 
                     46:     [empDeptsController insertObject:[[allDeptsController allObjects] objectAtIndex:0] atIndex:0];
                     47:     return self;
                     48: }
                     49: 
                     50: - (BOOL)controllerWillDiscardOperations:(EOController *)controller
                     51: {
                     52:     // Application policy: if they fetch or change selection,
                     53:     // automatically save the current employee data.
                     54:     return [self save:nil] ? YES : NO;
                     55: }
                     56: 
                     57: 
                     58: - save:sender
                     59: {
                     60:     [empController saveToDataSource];
                     61: 
                     62:     // Updates to controllers (like our department) may have changed property
                     63:     // values that we display in the master.
                     64:     // Re-sort in case the save changed the sort attributes
                     65:     [empController resort];
                     66: 
                     67:     return self;
                     68: }
                     69: 
                     70: @end

unix.superglobalmegacorp.com

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