Initial revision
[TestXSLT.git] / Workset.m
1 //
2 //  Workset.m
3 //  TestXSLT
4 //
5 //  Created by Marc Liyanage on Sun Mar 03 2002.
6 //  Copyright (c) 2001 __MyCompanyName__. All rights reserved.
7 //
8
9 #import "Workset.h"
10
11
12 @implementation Workset
13
14 - (id)init {
15         
16         if (self = [super init]) {
17                 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];
18                 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];
19                 result = [[NSString alloc] init];
20                 parameterSet = [[ParameterSet alloc] init];
21                 xmlFilename = nil;
22                 xsltFilename = nil;
23                 resultFilename = nil;
24         }
25 //      NSLog(@"Workset init");
26         return self;
27         
28 }
29
30 - (id)initWithCoder:(NSCoder *)coder {
31
32         if (self = [super init]) {
33                 [self setXmlCode:[coder decodeObject]];
34                 [self setXsltCode:[coder decodeObject]];
35                 [self setResult:[coder decodeObject]];
36                 [self setParameterSet:[coder decodeObject]];
37                 [self setXmlFilename:[coder decodeObject]];
38                 [self setXsltFilename:[coder decodeObject]];
39                 [self setResultFilename:[coder decodeObject]];
40                 
41         }
42         return self;
43
44 }
45
46
47 - (void)encodeWithCoder:(NSCoder *)coder {
48
49         [coder encodeObject:xmlCode];
50         [coder encodeObject:xsltCode];
51         [coder encodeObject:result];
52         [coder encodeObject:parameterSet];
53         [coder encodeObject:xmlFilename];
54         [coder encodeObject:xsltFilename];
55         [coder encodeObject:resultFilename];
56
57 }
58
59
60 - (void)dealloc {
61
62         [xmlCode release];
63         [xsltCode release];
64         [result release];
65         [parameterSet release];
66
67
68         [super dealloc];
69
70 //      NSLog(@"Workset dealloc");
71
72 }
73
74 - (NSString *)xmlCode {
75         return xmlCode;
76 }
77
78 - (void)setXmlCode:(NSString *)s {
79         [s retain];
80         [xmlCode release];
81         xmlCode = s;
82 }
83
84
85
86
87
88
89 - (NSString *)xmlFilename {
90         return xmlFilename;
91 }
92
93 - (void)setXmlFilename:(NSString *)s {
94
95         [s retain];
96         [xmlFilename release];
97         xmlFilename = s;
98
99         [self updateXmlFileModificationDate];
100 }
101
102 - (BOOL)hasXmlFilename {
103         return xmlFilename != nil;
104 }
105
106 - (BOOL)saveXml {
107
108         if (![self hasXmlFilename]) {
109                 return FALSE;
110         }
111         
112         [[self xmlCode] writeToFile:[self xmlFilename] atomically:NO];
113         [self updateXmlFileModificationDate];
114
115         return YES;
116         
117 }
118
119 - (BOOL)xmlModifiedExternally {
120
121         NSDictionary *fileAttr;
122
123         if (![self hasXmlFilename]) {
124                 return FALSE;
125         }
126
127         fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xmlFilename] traverseLink:YES];
128
129         if (fileAttr == nil || xmlFileModificationDate == nil) {
130                 return FALSE;
131         }
132
133         if (![xmlFileModificationDate isEqualToDate:[fileAttr objectForKey:NSFileModificationDate]]) {
134                 return TRUE;
135         }
136
137         return FALSE;
138         
139 }
140
141 - (void)updateXmlFileModificationDate {
142
143         NSDictionary *fileAttr;
144
145         if ([self hasXmlFilename]) {
146                 fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xmlFilename] traverseLink:YES];
147                 [xmlFileModificationDate release];
148                 xmlFileModificationDate = [fileAttr objectForKey:NSFileModificationDate];
149                 [xmlFileModificationDate retain];
150 //              NSLog(@"xml file mod date: %@", xmlFileModificationDate);
151         }
152
153 }
154
155 - (void)reloadXmlFromFile {
156
157         [self setXmlCode:[NSString stringWithContentsOfFile:[self xmlFilename]]];
158         [self updateXmlFileModificationDate];
159
160 }
161
162
163
164
165
166
167
168
169 - (NSString *)xsltFilename {
170         return xsltFilename;
171 }
172
173 - (void)setXsltFilename:(NSString *)s {
174
175         [s retain];
176         [xsltFilename release];
177         xsltFilename = s;
178
179         [self updateXsltFileModificationDate];
180         
181 }
182
183 - (BOOL)hasXsltFilename {
184         return xsltFilename != nil;
185 }
186
187 - (BOOL)saveXslt {
188
189         if (![self hasXsltFilename]) {
190                 return FALSE;
191         }
192
193         [[self xsltCode] writeToFile:[self xsltFilename] atomically:NO];
194         [self updateXsltFileModificationDate];
195
196         return YES;
197
198 }
199
200 - (BOOL)xsltModifiedExternally {
201
202         NSDictionary *fileAttr;
203
204         if (![self hasXsltFilename]) {
205                 return FALSE;
206         }
207
208         fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xsltFilename] traverseLink:YES];
209
210         if (fileAttr == nil || xsltFileModificationDate == nil) {
211                 return FALSE;
212         }
213
214         if (![xsltFileModificationDate isEqualToDate:[fileAttr objectForKey:NSFileModificationDate]]) {
215                 return TRUE;
216         }
217
218         return FALSE;
219
220 }
221
222 - (void)updateXsltFileModificationDate {
223
224         NSDictionary *fileAttr;
225
226         if ([self hasXsltFilename]) {
227                 fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xsltFilename] traverseLink:YES];
228                 [xsltFileModificationDate release];
229                 xsltFileModificationDate = [fileAttr objectForKey:NSFileModificationDate];
230                 [xsltFileModificationDate retain];
231 //              NSLog(@"xslt file mod date: %@", xsltFileModificationDate);
232         }
233 }
234
235 - (void)reloadXsltFromFile {
236
237         [self setXsltCode:[NSString stringWithContentsOfFile:[self xsltFilename]]];
238         [self updateXsltFileModificationDate];
239                 
240 }
241
242
243
244
245
246
247
248
249 - (NSString *)resultFilename {
250         return resultFilename;
251 }
252
253 - (void)setResultFilename:(NSString *)s {
254         [s retain];
255         [resultFilename release];
256         resultFilename = s;
257 }
258
259 - (BOOL)hasResultFilename {
260         return resultFilename != nil;
261 }
262
263
264
265
266 - (NSString *)xsltCode {
267         return xsltCode;
268 }
269
270 - (void)setXsltCode:(NSString *)s {
271         [s retain];
272         [xsltCode release];
273         xsltCode = s;
274 }
275
276 - (NSString *)result {
277         return result;
278 }
279
280 - (void)setResult:(NSString *)s {
281         [s retain];
282         [result release];
283         result = s;
284 }
285
286 - (ParameterSet *)parameterSet {
287         return parameterSet;
288 }
289
290 - (void)setParameterSet:(ParameterSet *)newParams {
291         [newParams retain];
292         [parameterSet release];
293         parameterSet = newParams;
294 }
295
296 - (BOOL)hasXmlCode {
297         return ([xmlCode length] > 0);
298 }
299
300 - (BOOL)hasXsltCode {
301         return ([xsltCode length] > 0);
302 }
303
304 - (BOOL)hasResult {
305         return ([result length] > 0);
306 }
307
308 - (BOOL)hasParameters {
309         return ([parameterSet count] > 0);
310 }
311
312
313
314
315
316 @end