// // Workset.m // TestXSLT // // Created by Marc Liyanage on Sun Mar 03 2002. // Copyright (c) 2001 __MyCompanyName__. All rights reserved. // #import "Workset.h" @implementation Workset - (id)init { self = [super init]; if (!self) return nil; xmlCode = [[NSUserDefaults standardUserDefaults] stringForKey:@"templateXML"]; xsltCode = [[NSUserDefaults standardUserDefaults] stringForKey:@"templateXSLT"]; // xmlCode = [[NSString stringWithFormat:@"\nPut your XML code here.\nPut your XSLT code under the XSLT tab.\nThen click on the Process button.\n"] retain]; // xsltCode = [[NSString stringWithFormat:@"\n\n\n\n\n\n"] retain]; result = [[NSData alloc] init]; parameterSet = [[ParameterSet alloc] init]; xmlFilename = nil; xsltFilename = nil; resultFilename = nil; return self; } - (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]]; } 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]; } - (void)dealloc { [xmlCode release]; [xsltCode release]; [result release]; [parameterSet release]; [super dealloc]; // NSLog(@"Workset dealloc"); } - (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; } - (BOOL)saveXml { if (![self hasXmlFilename]) { return FALSE; } [[XMLUtils getDataWithEncodingFromString:[self xmlCode]] writeToFile:[self xmlFilename] atomically:NO]; [self updateXmlFileModificationDate]; return YES; } - (BOOL)xmlModifiedExternally { NSDictionary *fileAttr; if (![self hasXmlFilename]) { return FALSE; } fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xmlFilename] traverseLink:YES]; if (fileAttr == nil || xmlFileModificationDate == nil) { return FALSE; } if (![xmlFileModificationDate isEqualToDate:[fileAttr objectForKey:NSFileModificationDate]]) { return TRUE; } return FALSE; } - (void)updateXmlFileModificationDate { NSDictionary *fileAttr; if ([self hasXmlFilename]) { fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xmlFilename] traverseLink:YES]; [xmlFileModificationDate release]; xmlFileModificationDate = [fileAttr objectForKey:NSFileModificationDate]; [xmlFileModificationDate retain]; // NSLog(@"xml file mod date: %@", xmlFileModificationDate); } } - (void)reloadXmlFromFile { [self setXmlCode:[XMLUtils getStringWithEncodingFromFile:[self xmlFilename]]]; [self updateXmlFileModificationDate]; } - (int)resultEncoding { return resultEncoding; } - (void)setResultEncoding:(NSStringEncoding)newencoding { resultEncoding = newencoding; } - (NSString *)xsltFilename { return xsltFilename; } - (void)setXsltFilename:(NSString *)s { [s retain]; [xsltFilename release]; xsltFilename = s; [self updateXsltFileModificationDate]; } - (BOOL)hasXsltFilename { return xsltFilename != nil; } - (BOOL)saveXslt { if (![self hasXsltFilename]) { return FALSE; } [[XMLUtils getDataWithEncodingFromString:[self xsltCode]] writeToFile:[self xsltFilename] atomically:NO]; [self updateXsltFileModificationDate]; return YES; } - (BOOL)xsltModifiedExternally { NSDictionary *fileAttr; if (![self hasXsltFilename]) { return FALSE; } fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xsltFilename] traverseLink:YES]; if (fileAttr == nil || xsltFileModificationDate == nil) { return FALSE; } if (![xsltFileModificationDate isEqualToDate:[fileAttr objectForKey:NSFileModificationDate]]) { return TRUE; } return FALSE; } - (void)updateXsltFileModificationDate { NSDictionary *fileAttr; if ([self hasXsltFilename]) { fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xsltFilename] traverseLink:YES]; [xsltFileModificationDate release]; xsltFileModificationDate = [fileAttr objectForKey:NSFileModificationDate]; [xsltFileModificationDate retain]; // NSLog(@"xslt file mod date: %@", xsltFileModificationDate); } } - (void)reloadXsltFromFile { [self setXsltCode:[XMLUtils getStringWithEncodingFromFile:[self xsltFilename]]]; [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)setParameterSet:(ParameterSet *)newParams { [newParams retain]; [parameterSet release]; parameterSet = newParams; } - (BOOL)hasXmlCode { return ([xmlCode length] > 0); } - (BOOL)hasXsltCode { return ([xsltCode length] > 0); } - (BOOL)hasResult { return ([result length] > 0); } - (BOOL)hasParameters { return ([parameterSet count] > 0); } @end