Annotation of Examples/EnterpriseObjects/Validation/Employee.m, revision 1.1.1.1

1.1       root        1: // Employee.m
                      2: //
                      3: // Created on Thu Sep 15 17:31:19 PDT 1994 by NeXT EOModeler.app Version 59
                      4: 
                      5: #import "Employee.h"
                      6: #import "Department.h"
                      7: #import "ValidatingDelegate.h"
                      8: 
                      9: @implementation Employee
                     10: 
                     11: // Accessors
                     12: - (double)salary {
                     13:      return salary;
                     14: }
                     15: 
                     16: 
                     17: // Key Validation 
                     18: 
                     19: - (NSArray *)keysToValidate
                     20: {
                     21:     return [NSArray arrayWithObjects:@"salary", @"city", @"address", nil];
                     22: }
                     23: 
                     24: - (NSString *)validateSalary:(NSNumber *)proposed
                     25: {
                     26:     if ([proposed doubleValue] < 1000.0)
                     27:         return @"Salaries must be greater than $1,000";
                     28: 
                     29:     return  nil; // no error
                     30: }
                     31: 
                     32: - (NSString *)validateCity:(NSString *)proposed
                     33: {
                     34:     if ([proposed length] == 0)
                     35:         return @"You must enter a city";
                     36:     return nil;
                     37: }
                     38: 
                     39: - (NSString *)validateAddress:(NSString *)proposed
                     40: {
                     41:     if ([proposed length] > 40)
                     42:         return @"Addresses may not be longer than 40 characters";
                     43:     return nil;
                     44: }
                     45: 
                     46: // Final validation ////
                     47: - (NSDictionary *)validForDataSource:(id <EODataSources>)dataSource
                     48: {
                     49:     // By default this message is called for both insertion and update.
                     50:     // The superclass implementation will call our per-key validators (above).
                     51:     // We can also check any broader validation constraints.  E.g. is salary+bonus
                     52:     // at an exceptable level?  In this case we message a related object (department)
                     53:     // to see if it's okay with our settings.  Department, in turn, check if our
                     54:     // salary is within the department limits.
                     55:     NSString *errorMessage;
                     56:     const NSString *generalKey = @"General";
                     57:     NSDictionary *errors;
                     58: 
                     59:     if (errors = [super validForDataSource:dataSource])
                     60:         return errors;
                     61:  
                     62:     // check cross property validation constraints
                     63:     // Ask our department if it's okay with our new values
                     64:     if (errorMessage = [toDepartment validateEmployee:self])
                     65:         return [NSDictionary dictionaryWithObjects:&errorMessage forKeys:&generalKey count:1];
                     66: 
                     67:     return nil;
                     68: }
                     69: 
                     70: - (void)dealloc
                     71: {
                     72:     [address autorelease];
                     73:     [city autorelease];
                     74:     [firstName autorelease];
                     75:     [lastName autorelease];
                     76:     [toDepartment dealloc];
                     77:     [super dealloc];
                     78: }
                     79: 
                     80: 
                     81: @end

unix.superglobalmegacorp.com

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