5 // Created by Marc Liyanage on Sun Mar 03 2002.
6 // Copyright (c) 2001 __MyCompanyName__. All rights reserved.
12 @implementation Workset
17 if (!self) return nil;
19 xmlCode = [[NSUserDefaults standardUserDefaults] stringForKey:@"templateXML"];
20 xsltCode = [[NSUserDefaults standardUserDefaults] stringForKey:@"templateXSLT"];
22 // 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];
23 // 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];
24 result = [[NSData alloc] init];
25 parameterSet = [[ParameterSet alloc] init];
34 - (id)initWithCoder:(NSCoder *)coder {
36 if (self = [super init]) {
37 [self setXmlCode:[coder decodeObject]];
38 [self setXsltCode:[coder decodeObject]];
39 [self setResult:[coder decodeObject]];
40 [self setParameterSet:[coder decodeObject]];
41 [self setXmlFilename:[coder decodeObject]];
42 [self setXsltFilename:[coder decodeObject]];
43 [self setResultFilename:[coder decodeObject]];
51 - (void)encodeWithCoder:(NSCoder *)coder {
53 [coder encodeObject:xmlCode];
54 [coder encodeObject:xsltCode];
55 [coder encodeObject:result];
56 [coder encodeObject:parameterSet];
57 [coder encodeObject:xmlFilename];
58 [coder encodeObject:xsltFilename];
59 [coder encodeObject:resultFilename];
69 [parameterSet release];
74 // NSLog(@"Workset dealloc");
78 - (NSString *)xmlCode {
82 - (void)setXmlCode:(NSString *)s {
93 - (NSString *)xmlFilename {
97 - (void)setXmlFilename:(NSString *)s {
100 [xmlFilename release];
103 [self updateXmlFileModificationDate];
106 - (BOOL)hasXmlFilename {
107 return xmlFilename != nil;
112 if (![self hasXmlFilename]) {
116 [[XMLUtils getDataWithEncodingFromString:[self xmlCode]] writeToFile:[self xmlFilename] atomically:NO];
117 [self updateXmlFileModificationDate];
123 - (BOOL)xmlModifiedExternally {
125 NSDictionary *fileAttr;
127 if (![self hasXmlFilename]) {
131 fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xmlFilename] traverseLink:YES];
133 if (fileAttr == nil || xmlFileModificationDate == nil) {
137 if (![xmlFileModificationDate isEqualToDate:[fileAttr objectForKey:NSFileModificationDate]]) {
145 - (void)updateXmlFileModificationDate {
147 NSDictionary *fileAttr;
149 if ([self hasXmlFilename]) {
150 fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xmlFilename] traverseLink:YES];
151 [xmlFileModificationDate release];
152 xmlFileModificationDate = [fileAttr objectForKey:NSFileModificationDate];
153 [xmlFileModificationDate retain];
154 // NSLog(@"xml file mod date: %@", xmlFileModificationDate);
159 - (void)reloadXmlFromFile {
161 [self setXmlCode:[XMLUtils getStringWithEncodingFromFile:[self xmlFilename]]];
162 [self updateXmlFileModificationDate];
170 - (int)resultEncoding {
171 return resultEncoding;
174 - (void)setResultEncoding:(NSStringEncoding)newencoding {
175 resultEncoding = newencoding;
182 - (NSString *)xsltFilename {
186 - (void)setXsltFilename:(NSString *)s {
189 [xsltFilename release];
192 [self updateXsltFileModificationDate];
196 - (BOOL)hasXsltFilename {
197 return xsltFilename != nil;
202 if (![self hasXsltFilename]) {
206 [[XMLUtils getDataWithEncodingFromString:[self xsltCode]] writeToFile:[self xsltFilename] atomically:NO];
207 [self updateXsltFileModificationDate];
213 - (BOOL)xsltModifiedExternally {
215 NSDictionary *fileAttr;
217 if (![self hasXsltFilename]) {
221 fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xsltFilename] traverseLink:YES];
223 if (fileAttr == nil || xsltFileModificationDate == nil) {
227 if (![xsltFileModificationDate isEqualToDate:[fileAttr objectForKey:NSFileModificationDate]]) {
235 - (void)updateXsltFileModificationDate {
237 NSDictionary *fileAttr;
239 if ([self hasXsltFilename]) {
240 fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xsltFilename] traverseLink:YES];
241 [xsltFileModificationDate release];
242 xsltFileModificationDate = [fileAttr objectForKey:NSFileModificationDate];
243 [xsltFileModificationDate retain];
244 // NSLog(@"xslt file mod date: %@", xsltFileModificationDate);
248 - (void)reloadXsltFromFile {
250 [self setXsltCode:[XMLUtils getStringWithEncodingFromFile:[self xsltFilename]]];
251 [self updateXsltFileModificationDate];
259 - (NSString *)resultFilename {
260 return resultFilename;
263 - (void)setResultFilename:(NSString *)s {
265 [resultFilename release];
269 - (BOOL)hasResultFilename {
270 return resultFilename != nil;
276 - (NSString *)xsltCode {
280 - (void)setXsltCode:(NSString *)s {
290 - (void)setResult:(NSData *)s {
297 - (NSString *)stringResult {
298 return [[[NSString alloc] initWithData:result encoding:[self resultEncoding]] autorelease];
303 - (ParameterSet *)parameterSet {
307 - (void)setParameterSet:(ParameterSet *)newParams {
309 [parameterSet release];
310 parameterSet = newParams;
314 return ([xmlCode length] > 0);
317 - (BOOL)hasXsltCode {
318 return ([xsltCode length] > 0);
322 return ([result length] > 0);
325 - (BOOL)hasParameters {
326 return ([parameterSet count] > 0);