nib rearranging
[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 = [[NSData 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         [[XMLUtils getDataWithEncodingFromString:[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:[XMLUtils getStringWithEncodingFromFile:[self xmlFilename]]];
158         [self updateXmlFileModificationDate];
159
160 }
161
162
163
164
165
166 - (int)resultEncoding {
167         return resultEncoding;
168 }
169
170 - (void)setResultEncoding:(NSStringEncoding)newencoding {
171         resultEncoding = newencoding;
172 }
173
174
175
176
177
178 - (NSString *)xsltFilename {
179         return xsltFilename;
180 }
181
182 - (void)setXsltFilename:(NSString *)s {
183
184         [s retain];
185         [xsltFilename release];
186         xsltFilename = s;
187
188         [self updateXsltFileModificationDate];
189         
190 }
191
192 - (BOOL)hasXsltFilename {
193         return xsltFilename != nil;
194 }
195
196 - (BOOL)saveXslt {
197
198         if (![self hasXsltFilename]) {
199                 return FALSE;
200         }
201
202         [[XMLUtils getDataWithEncodingFromString:[self xsltCode]] writeToFile:[self xsltFilename] atomically:NO];
203         [self updateXsltFileModificationDate];
204
205         return YES;
206
207 }
208
209 - (BOOL)xsltModifiedExternally {
210
211         NSDictionary *fileAttr;
212
213         if (![self hasXsltFilename]) {
214                 return FALSE;
215         }
216
217         fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xsltFilename] traverseLink:YES];
218
219         if (fileAttr == nil || xsltFileModificationDate == nil) {
220                 return FALSE;
221         }
222
223         if (![xsltFileModificationDate isEqualToDate:[fileAttr objectForKey:NSFileModificationDate]]) {
224                 return TRUE;
225         }
226
227         return FALSE;
228
229 }
230
231 - (void)updateXsltFileModificationDate {
232
233         NSDictionary *fileAttr;
234
235         if ([self hasXsltFilename]) {
236                 fileAttr = [[NSFileManager defaultManager] fileAttributesAtPath:[self xsltFilename] traverseLink:YES];
237                 [xsltFileModificationDate release];
238                 xsltFileModificationDate = [fileAttr objectForKey:NSFileModificationDate];
239                 [xsltFileModificationDate retain];
240 //              NSLog(@"xslt file mod date: %@", xsltFileModificationDate);
241         }
242 }
243
244 - (void)reloadXsltFromFile {
245
246         [self setXsltCode:[XMLUtils getStringWithEncodingFromFile:[self xsltFilename]]];
247         [self updateXsltFileModificationDate];
248                 
249 }
250
251
252
253
254
255 - (NSString *)resultFilename {
256         return resultFilename;
257 }
258
259 - (void)setResultFilename:(NSString *)s {
260         [s retain];
261         [resultFilename release];
262         resultFilename = s;
263 }
264
265 - (BOOL)hasResultFilename {
266         return resultFilename != nil;
267 }
268
269
270
271
272 - (NSString *)xsltCode {
273         return xsltCode;
274 }
275
276 - (void)setXsltCode:(NSString *)s {
277         [s retain];
278         [xsltCode release];
279         xsltCode = s;
280 }
281
282 - (NSData *)result {
283         return result;
284 }
285
286 - (void)setResult:(NSData *)s {
287         [s retain];
288         [result release];
289         result = s;
290 }
291
292
293 - (NSString *)stringResult {
294         return [[[NSString alloc] initWithData:result encoding:[self resultEncoding]] autorelease];
295 }
296
297
298
299 - (ParameterSet *)parameterSet {
300         return parameterSet;
301 }
302
303 - (void)setParameterSet:(ParameterSet *)newParams {
304         [newParams retain];
305         [parameterSet release];
306         parameterSet = newParams;
307 }
308
309 - (BOOL)hasXmlCode {
310         return ([xmlCode length] > 0);
311 }
312
313 - (BOOL)hasXsltCode {
314         return ([xsltCode length] > 0);
315 }
316
317 - (BOOL)hasResult {
318         return ([result length] > 0);
319 }
320
321 - (BOOL)hasParameters {
322         return ([parameterSet count] > 0);
323 }
324
325
326
327
328
329 @end