Annotation of Examples/EnterpriseObjects/Validation/Employee.m, revision 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.