Xcode 2.1 cleanup, universal binary experiments
[TestXSLT.git] / src / Workset.m
index ba849e4..2db5504 100644 (file)
 
 @implementation Workset
 
++ (void)initialize {
+       [Workset setKeys:[NSArray arrayWithObject:@"xmlCode"] triggerChangeNotificationsForDependentKey:@"hasXmlCode"];
+       [Workset setKeys:[NSArray arrayWithObject:@"xsltCode"] triggerChangeNotificationsForDependentKey:@"hasXsltCode"];
+       [Workset setKeys:[NSArray arrayWithObject:@"result"] triggerChangeNotificationsForDependentKey:@"hasResult"];
+       [Workset setKeys:[NSArray arrayWithObject:@"resultFilename"] triggerChangeNotificationsForDependentKey:@"hasResultFilename"];
+       [Workset setKeys:[NSArray arrayWithObject:@"xmlFilename"] triggerChangeNotificationsForDependentKey:@"hasXmlFilename"];
+       [Workset setKeys:[NSArray arrayWithObject:@"xsltFilename"] triggerChangeNotificationsForDependentKey:@"hasXsltFilename"];
+
+       [Workset setKeys:[NSArray arrayWithObject:@"result"] triggerChangeNotificationsForDependentKey:@"stringResult"];
+
+}
+
+
+
 - (id)init {
        
        self = [super init];
        if (!self) return nil;
        
-       xmlCode = [[NSUserDefaults standardUserDefaults] stringForKey:@"templateXML"];
-       xsltCode = [[NSUserDefaults standardUserDefaults] stringForKey:@"templateXSLT"];
+       id defaults = [NSUserDefaults standardUserDefaults];
+       
+       [self setValue:[defaults stringForKey:@"templateXML"] forKey:@"xmlCode"];
+       [self setValue:[defaults stringForKey:@"templateXSLT"] forKey:@"xsltCode"];
+
+       [self setValue:nil forKey:@"resultFilename"];
        
-//     xmlCode = [[NSString stringWithFormat:@"<text>\nPut your XML code here.\nPut your XSLT code under the XSLT tab.\nThen click on the Process button.\n</text>"] retain];
-//     xsltCode = [[NSString stringWithFormat:@"<?xml version='1.0' encoding='iso-8859-1'?>\n\n<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>\n\n<xsl:output method='html' version='1.0' encoding='iso-8859-1' indent='no'/>\n\n</xsl:stylesheet>"] retain];
        result = [[NSData alloc] init];
        parameterSet = [[ParameterSet alloc] init];
-       xmlFilename = nil;
-       xsltFilename = nil;
-       resultFilename = nil;
 
        return self;
        
 }
 
+
+- (NSArray *)coderKeys {
+       return [NSArray arrayWithObjects:
+               @"xmlCode",
+               @"xsltCode",
+               @"result",
+               @"parameterSet",
+               @"xmlFilename",
+               @"xsltFilename",
+               @"resultFilename",
+               nil];
+}
+
+
 - (id)initWithCoder:(NSCoder *)coder {
 
        if (self = [super init]) {
-               [self setXmlCode:[coder decodeObject]];
-               [self setXsltCode:[coder decodeObject]];
-               [self setResult:[coder decodeObject]];
-               [self setParameterSet:[coder decodeObject]];
-               [self setXmlFilename:[coder decodeObject]];
-               [self setXsltFilename:[coder decodeObject]];
-               [self setResultFilename:[coder decodeObject]];
-               
+               NSEnumerator *keys = [[self coderKeys] objectEnumerator];
+               id key;
+               while (key = [keys nextObject]) {
+                       [self setValue:[coder decodeObjectForKey:key] forKey:key];
+               }
        }
        return self;
 
 
 - (void)encodeWithCoder:(NSCoder *)coder {
 
-       [coder encodeObject:xmlCode];
-       [coder encodeObject:xsltCode];
-       [coder encodeObject:result];
-       [coder encodeObject:parameterSet];
-       [coder encodeObject:xmlFilename];
-       [coder encodeObject:xsltFilename];
-       [coder encodeObject:resultFilename];
+       NSEnumerator *keys = [[self coderKeys] objectEnumerator];
+       id key;
+       while (key = [keys nextObject]) {
+               [coder encodeObject:[self valueForKey:key] forKey:key];
+       }
 
 }
 
 
 }
 
-- (NSString *)xmlCode {
-       return xmlCode;
-}
-
-- (void)setXmlCode:(NSString *)s {
-       [s retain];
-       [xmlCode release];
-       xmlCode = s;
-}
-
-
-
-
-
-
-- (NSString *)xmlFilename {
-       return xmlFilename;
-}
-
-- (void)setXmlFilename:(NSString *)s {
-
-       [s retain];
-       [xmlFilename release];
-       xmlFilename = s;
-
-       [self updateXmlFileModificationDate];
-}
 
 - (BOOL)hasXmlFilename {
        return xmlFilename != nil;
                return FALSE;
        }
        
-       [[XMLUtils getDataWithEncodingFromString:[self xmlCode]] writeToFile:[self xmlFilename] atomically:NO];
+       [[XMLUtils getDataWithEncodingFromString:xmlCode] writeToFile:xmlFilename atomically:NO];
        [self updateXmlFileModificationDate];
 
        return YES;
                return FALSE;
        }
 
-       fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xmlFilename] traverseLink:YES];
+       fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:xmlFilename traverseLink:YES];
 
        if (fileAttr == nil || xmlFileModificationDate == nil) {
                return FALSE;
        NSDictionary *fileAttr;
 
        if ([self hasXmlFilename]) {
-               fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xmlFilename] traverseLink:YES];
+               fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:xmlFilename traverseLink:YES];
                [xmlFileModificationDate release];
                xmlFileModificationDate = [fileAttr objectForKey:NSFileModificationDate];
                [xmlFileModificationDate retain];
 }
 
 - (void)reloadXmlFromFile {
-
-       [self setXmlCode:[XMLUtils getStringWithEncodingFromFile:[self xmlFilename]]];
+       [self setValue:[XMLUtils getStringWithEncodingFromFile:xmlFilename] forKey:@"xmlCode"];
        [self updateXmlFileModificationDate];
-
 }
 
 
 
 
 
-
-
-- (NSString *)xsltFilename {
-       return xsltFilename;
-}
-
-- (void)setXsltFilename:(NSString *)s {
-
-       [s retain];
-       [xsltFilename release];
-       xsltFilename = s;
-
-       [self updateXsltFileModificationDate];
-       
-}
-
 - (BOOL)hasXsltFilename {
        return xsltFilename != nil;
 }
                return FALSE;
        }
 
-       [[XMLUtils getDataWithEncodingFromString:[self xsltCode]] writeToFile:[self xsltFilename] atomically:NO];
+       [[XMLUtils getDataWithEncodingFromString:xsltCode] writeToFile:xsltFilename atomically:NO];
        [self updateXsltFileModificationDate];
 
        return YES;
                return FALSE;
        }
 
-       fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xsltFilename] traverseLink:YES];
+       fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:xsltFilename traverseLink:YES];
 
        if (fileAttr == nil || xsltFileModificationDate == nil) {
                return FALSE;
        NSDictionary *fileAttr;
 
        if ([self hasXsltFilename]) {
-               fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xsltFilename] traverseLink:YES];
+               fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:xsltFilename traverseLink:YES];
                [xsltFileModificationDate release];
                xsltFileModificationDate = [fileAttr objectForKey:NSFileModificationDate];
                [xsltFileModificationDate retain];
 }
 
 - (void)reloadXsltFromFile {
-
-       [self setXsltCode:[XMLUtils getStringWithEncodingFromFile:[self xsltFilename]]];
+       [self setValue:[XMLUtils getStringWithEncodingFromFile:xsltFilename] forKey:@"xsltCode"];
        [self updateXsltFileModificationDate];
-               
 }
 
 
-
-
-
-- (NSString *)resultFilename {
-       return resultFilename;
-}
-
-- (void)setResultFilename:(NSString *)s {
-       [s retain];
-       [resultFilename release];
-       resultFilename = s;
-}
-
 - (BOOL)hasResultFilename {
        return resultFilename != nil;
 }
 
 
-
-
-- (NSString *)xsltCode {
-       return xsltCode;
-}
-
-- (void)setXsltCode:(NSString *)s {
-       [s retain];
-       [xsltCode release];
-       xsltCode = s;
-}
-
-- (NSData *)result {
-       return result;
-}
-
-- (void)setResult:(NSData *)s {
-       [s retain];
-       [result release];
-       result = s;
-}
-
-
 - (NSString *)stringResult {
        return [[[NSString alloc] initWithData:result encoding:[self resultEncoding]] autorelease];
 }
 
-
-
-- (ParameterSet *)parameterSet {
-       return parameterSet;
+- (void)saveResult {
+       
+       if (![self hasResultFilename]) {
+               NSLog(@"saveResult called but no filename is available");
+               return;
+       }
+       [result writeToFile:resultFilename atomically:NO];
 }
 
-- (void)setParameterSet:(ParameterSet *)newParams {
-       [newParams retain];
-       [parameterSet release];
-       parameterSet = newParams;
-}
 
 - (BOOL)hasXmlCode {
        return ([xmlCode length] > 0);