Statistics
| Branch: | Tag: | Revision:

root / pithos-macos / PithosLocalObjectState.m @ 0224a49f

History | View | Annotate | Download (4 kB)

1 0224a49f Miltiadis Vasilakis
//
2 0224a49f Miltiadis Vasilakis
//  PithosLocalObjectState.m
3 0224a49f Miltiadis Vasilakis
//  pithos-macos
4 0224a49f Miltiadis Vasilakis
//
5 0224a49f Miltiadis Vasilakis
// Copyright 2011 GRNET S.A. All rights reserved.
6 0224a49f Miltiadis Vasilakis
//
7 0224a49f Miltiadis Vasilakis
// Redistribution and use in source and binary forms, with or
8 0224a49f Miltiadis Vasilakis
// without modification, are permitted provided that the following
9 0224a49f Miltiadis Vasilakis
// conditions are met:
10 0224a49f Miltiadis Vasilakis
// 
11 0224a49f Miltiadis Vasilakis
//   1. Redistributions of source code must retain the above
12 0224a49f Miltiadis Vasilakis
//      copyright notice, this list of conditions and the following
13 0224a49f Miltiadis Vasilakis
//      disclaimer.
14 0224a49f Miltiadis Vasilakis
// 
15 0224a49f Miltiadis Vasilakis
//   2. Redistributions in binary form must reproduce the above
16 0224a49f Miltiadis Vasilakis
//      copyright notice, this list of conditions and the following
17 0224a49f Miltiadis Vasilakis
//      disclaimer in the documentation and/or other materials
18 0224a49f Miltiadis Vasilakis
//      provided with the distribution.
19 0224a49f Miltiadis Vasilakis
// 
20 0224a49f Miltiadis Vasilakis
// THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
21 0224a49f Miltiadis Vasilakis
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22 0224a49f Miltiadis Vasilakis
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 0224a49f Miltiadis Vasilakis
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
24 0224a49f Miltiadis Vasilakis
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 0224a49f Miltiadis Vasilakis
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 0224a49f Miltiadis Vasilakis
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27 0224a49f Miltiadis Vasilakis
// USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28 0224a49f Miltiadis Vasilakis
// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 0224a49f Miltiadis Vasilakis
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30 0224a49f Miltiadis Vasilakis
// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 0224a49f Miltiadis Vasilakis
// POSSIBILITY OF SUCH DAMAGE.
32 0224a49f Miltiadis Vasilakis
// 
33 0224a49f Miltiadis Vasilakis
// The views and conclusions contained in the software and
34 0224a49f Miltiadis Vasilakis
// documentation are those of the authors and should not be
35 0224a49f Miltiadis Vasilakis
// interpreted as representing official policies, either expressed
36 0224a49f Miltiadis Vasilakis
// or implied, of GRNET S.A.
37 0224a49f Miltiadis Vasilakis
38 0224a49f Miltiadis Vasilakis
#import "PithosLocalObjectState.h"
39 0224a49f Miltiadis Vasilakis
#import "PithosUtilities.h"
40 0224a49f Miltiadis Vasilakis
41 0224a49f Miltiadis Vasilakis
@implementation PithosLocalObjectState
42 0224a49f Miltiadis Vasilakis
@synthesize md5, hashMapHash, tmpDownloadFile, isDirectory;
43 0224a49f Miltiadis Vasilakis
44 0224a49f Miltiadis Vasilakis
#pragma mark -
45 0224a49f Miltiadis Vasilakis
#pragma mark Object Lifecycle
46 0224a49f Miltiadis Vasilakis
47 0224a49f Miltiadis Vasilakis
+ (id)nullObjectState {
48 0224a49f Miltiadis Vasilakis
	PithosLocalObjectState *localObjectState = [[[self alloc] init] autorelease];
49 0224a49f Miltiadis Vasilakis
    localObjectState.md5 = @" ";
50 0224a49f Miltiadis Vasilakis
    localObjectState.hashMapHash = @" ";
51 0224a49f Miltiadis Vasilakis
    localObjectState.tmpDownloadFile = nil;
52 0224a49f Miltiadis Vasilakis
    localObjectState.isDirectory = NO;
53 0224a49f Miltiadis Vasilakis
    return localObjectState;
54 0224a49f Miltiadis Vasilakis
}
55 0224a49f Miltiadis Vasilakis
56 0224a49f Miltiadis Vasilakis
- (void)dealloc {
57 0224a49f Miltiadis Vasilakis
    self.tmpDownloadFile = nil;
58 0224a49f Miltiadis Vasilakis
    [hashMapHash release];
59 0224a49f Miltiadis Vasilakis
    [md5 release];
60 0224a49f Miltiadis Vasilakis
    [super dealloc];    
61 0224a49f Miltiadis Vasilakis
}
62 0224a49f Miltiadis Vasilakis
63 0224a49f Miltiadis Vasilakis
#pragma mark -
64 0224a49f Miltiadis Vasilakis
#pragma mark Properties
65 0224a49f Miltiadis Vasilakis
66 0224a49f Miltiadis Vasilakis
- (void)setIsDirectory:(BOOL)anIsDirectory {
67 0224a49f Miltiadis Vasilakis
    isDirectory = anIsDirectory;
68 0224a49f Miltiadis Vasilakis
    if (isDirectory) {
69 0224a49f Miltiadis Vasilakis
        self.md5 = @" ";
70 0224a49f Miltiadis Vasilakis
        self.hashMapHash = @" ";
71 0224a49f Miltiadis Vasilakis
        self.tmpDownloadFile = nil;
72 0224a49f Miltiadis Vasilakis
    }
73 0224a49f Miltiadis Vasilakis
}
74 0224a49f Miltiadis Vasilakis
75 0224a49f Miltiadis Vasilakis
- (void)setTmpDownloadFile:(NSString *)aTmpDownloadFile {
76 0224a49f Miltiadis Vasilakis
    if (![tmpDownloadFile isEqualToString:aTmpDownloadFile]) {
77 0224a49f Miltiadis Vasilakis
        if (!aTmpDownloadFile) {
78 0224a49f Miltiadis Vasilakis
            NSFileManager *fileManager = [NSFileManager defaultManager];
79 0224a49f Miltiadis Vasilakis
            if ([fileManager fileExistsAtPath:tmpDownloadFile]) {
80 0224a49f Miltiadis Vasilakis
                NSError *error = nil;
81 0224a49f Miltiadis Vasilakis
                if (![fileManager removeItemAtPath:tmpDownloadFile error:&error] || error)
82 0224a49f Miltiadis Vasilakis
                    [PithosUtilities fileActionFailedAlertWithTitle:@"Remove File Error" 
83 0224a49f Miltiadis Vasilakis
                                                            message:[NSString stringWithFormat:@"Cannot remove file at '%@'", tmpDownloadFile] 
84 0224a49f Miltiadis Vasilakis
                                                              error:error];
85 0224a49f Miltiadis Vasilakis
            }
86 0224a49f Miltiadis Vasilakis
        }
87 0224a49f Miltiadis Vasilakis
        [tmpDownloadFile release];
88 0224a49f Miltiadis Vasilakis
        tmpDownloadFile = [aTmpDownloadFile retain];
89 0224a49f Miltiadis Vasilakis
    }
90 0224a49f Miltiadis Vasilakis
}
91 0224a49f Miltiadis Vasilakis
92 0224a49f Miltiadis Vasilakis
#pragma mark -
93 0224a49f Miltiadis Vasilakis
#pragma mark NSCoding
94 0224a49f Miltiadis Vasilakis
95 0224a49f Miltiadis Vasilakis
- (id)initWithCoder:(NSCoder *)decoder {
96 0224a49f Miltiadis Vasilakis
    if ((self = [super init])) {
97 0224a49f Miltiadis Vasilakis
        self.md5 = [decoder decodeObjectForKey:@"md5"];
98 0224a49f Miltiadis Vasilakis
        self.hashMapHash = [decoder decodeObjectForKey:@"hashMapHash"];
99 0224a49f Miltiadis Vasilakis
        self.tmpDownloadFile = [decoder decodeObjectForKey:@"tmpDownloadFile"];
100 0224a49f Miltiadis Vasilakis
        self.isDirectory = [decoder decodeBoolForKey:@"isDirectory"];
101 0224a49f Miltiadis Vasilakis
    }
102 0224a49f Miltiadis Vasilakis
    return self;
103 0224a49f Miltiadis Vasilakis
}
104 0224a49f Miltiadis Vasilakis
105 0224a49f Miltiadis Vasilakis
- (void)encodeWithCoder:(NSCoder *)encoder {
106 0224a49f Miltiadis Vasilakis
    [encoder encodeObject:md5 forKey:@"md5"];
107 0224a49f Miltiadis Vasilakis
    [encoder encodeObject:hashMapHash forKey:@"hashMapHash"];
108 0224a49f Miltiadis Vasilakis
    [encoder encodeObject:tmpDownloadFile forKey:@"tmpDownloadFile"];
109 0224a49f Miltiadis Vasilakis
    [encoder encodeBool:isDirectory forKey:@"isDirectory"];
110 0224a49f Miltiadis Vasilakis
}
111 0224a49f Miltiadis Vasilakis
112 0224a49f Miltiadis Vasilakis
@end