Annotation of Examples/EnterpriseObjects/Archiving/ArchivingNSObject/Owner.m, revision 1.1.1.1

1.1       root        1: /* Owner.m
                      2:  *
                      3:  * You may freely copy, distribute, and reuse the code in this example.
                      4:  * NeXT disclaims any warranty of any kind, expressed or  implied, as to its
                      5:  * fitness for any particular use.
                      6:  *
                      7:  * 
                      8:  *
                      9:  */
                     10: 
                     11: 
                     12: #import <eointerface/eointerface.h>
                     13: #import "Owner.h"
                     14: #import "NSAuthor.h"
                     15: 
                     16: #define ARCHIVE_FILE @"NSObjectArchive"
                     17: 
                     18: @implementation Owner
                     19: 
                     20:  
                     21: - appDidInit:sender
                     22: {
                     23:     EOAdaptorChannel   *adaptorChannel;
                     24:     
                     25:     // Set up the adaptor channel for debugging
                     26:     adaptorChannel = [[dataSource databaseChannel] adaptorChannel]; 
                     27:     [(EOAdaptorChannel *)adaptorChannel setDelegate: self];
                     28:     return self;
                     29: }
                     30: 
                     31:     
                     32: - (void)adaptorChannel:channel didEvaluateExpression:(NSString *)expression
                     33: {
                     34:     NSLog (expression);
                     35: }
                     36: 
                     37: 
                     38: - writeObject:sender
                     39: {
                     40:     eoArray = [controller selectedObjects];
                     41:     // Archive the first object in the array of selected objects.
                     42:     //  In this example, only one object is selected at a time.
                     43:        if ([eoArray count] == 0) {
                     44:                NXRunAlertPanel(NULL, "No object to archive!", NULL, NULL, NULL);
                     45:                return self;
                     46:                }
                     47:     eoAuthor = [eoArray objectAtIndex:0];
                     48:     
                     49:     [self archiveThisNSObject:eoAuthor]; 
                     50:     
                     51:     return self;
                     52: }
                     53: 
                     54: - readObject:sender
                     55: {
                     56:     eoAuthor = (NSAuthor *)[self unarchiveNSObject];
                     57:     return self;
                     58: }
                     59: 
                     60: 
                     61: - (BOOL) archiveThisNSObject:(NSObject *)nsobject
                     62: {
                     63:     BOOL       b;
                     64:     NSString *archivePath;
                     65:     
                     66:     if (!nsobject)
                     67:        return NO;
                     68:     
                     69:        
                     70:     archivePath = [NSString stringWithFormat:@"%@/%@", [self applicationPath], ARCHIVE_FILE];
                     71:     b = [NSArchiver archiveRootObject:nsobject toFile:archivePath];
                     72:     if (b == YES)
                     73:        [textObject appendText:"NSObject archiving succeeded\n"];
                     74:     else
                     75:        [textObject appendText:"NSObject archiving failed\n"];
                     76:        
                     77:     return b;
                     78: }
                     79: 
                     80: - (NSObject *) unarchiveNSObject 
                     81: {
                     82:     NSObject *nsobject;
                     83:     char       buf[1024];
                     84:     NSString *archivePath;
                     85:        
                     86:     archivePath = [NSString stringWithFormat:@"%@/%@", [self applicationPath], ARCHIVE_FILE];
                     87: 
                     88:     nsobject = [NSUnarchiver unarchiveObjectWithFile:archivePath];
                     89:     if (nsobject) {
                     90:        [textObject appendText:"NSObject unarchiving succeeded\n"];
                     91:        sprintf(buf, "%s\n",[[(NSAuthor *)nsobject description] cString]);
                     92:        [textObject appendText: "Author contents:"];
                     93:        [textObject appendText:buf];
                     94:     }
                     95:     else
                     96:        [textObject appendText:"NSObject unarchiving failed\n"];
                     97: 
                     98:     return nsobject;
                     99: }
                    100: 
                    101: - (NSString *)applicationPath 
                    102: {
                    103:     int           i;
                    104:     NSString   *appPathName = nil;
                    105: 
                    106:     for (i = strlen(NXArgv[0]) - 1; (i >= 0) && (NXArgv[0][i] != '/'); i--);
                    107:     appPathName = [NSString stringWithCString:NXArgv[0] length:i];
                    108:     if (NXArgv[0][0] != '/') {
                    109:        char path[MAXPATHLEN+1];
                    110:        appPathName = [NSString stringWithFormat:@"%s/%@", getwd(path), appPathName];
                    111:     }
                    112:     return appPathName;
                    113: }
                    114: 
                    115: 
                    116: @end
                    117: 
                    118: 
                    119: @implementation Text(printResults)
                    120: 
                    121: - appendText:(const char *)newText
                    122: {
                    123:     int currentLength = [self textLength];
                    124: 
                    125:     [self setSel:currentLength :currentLength];
                    126:     [self replaceSel:newText];
                    127:     [self scrollSelToVisible];
                    128:     return self;
                    129: }
                    130: 
                    131: @end

unix.superglobalmegacorp.com

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