Statistics
| Branch: | Tag: | Revision:

root / Classes / Archiver.m @ 9fee07a6

History | View | Annotate | Download (2.5 kB)

1 700184fb Miltiadis Vasilakis
//
2 700184fb Miltiadis Vasilakis
//  Archiver.m
3 700184fb Miltiadis Vasilakis
//  OpenStack
4 700184fb Miltiadis Vasilakis
//
5 700184fb Miltiadis Vasilakis
//  Created by Mike Mayo on 10/4/10.
6 700184fb Miltiadis Vasilakis
//  The OpenStack project is provided under the Apache 2.0 license.
7 700184fb Miltiadis Vasilakis
//
8 700184fb Miltiadis Vasilakis
9 700184fb Miltiadis Vasilakis
#import "Archiver.h"
10 700184fb Miltiadis Vasilakis
11 700184fb Miltiadis Vasilakis
@implementation Archiver
12 700184fb Miltiadis Vasilakis
13 700184fb Miltiadis Vasilakis
+ (id)retrieve:(NSString *)key {
14 700184fb Miltiadis Vasilakis
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
15 700184fb Miltiadis Vasilakis
    NSString *documentsDirectory = [paths objectAtIndex:0];
16 700184fb Miltiadis Vasilakis
    NSString *filePath = [documentsDirectory stringByAppendingString:[NSString stringWithFormat:@"/%@.archive", key]];
17 700184fb Miltiadis Vasilakis
//    NSLog(@"filepath: %@", filePath);
18 7db1712d Miltiadis Vasilakis
    return [NSKeyedUnarchiver unarchiveObjectWithFile:filePath];
19 700184fb Miltiadis Vasilakis
    /* TODO: fixme on potential leak - "retrieve" doesn't match copy or alloc pattern, and hence should be returning autoreleased object
20 700184fb Miltiadis Vasilakis
     * Not changing right now, but documenting for later fixing - need to see how and where [Archiver.. retrieve:key] is used to make sure 
21 700184fb Miltiadis Vasilakis
     * switching this won't cause a crash
22 700184fb Miltiadis Vasilakis
     */
23 700184fb Miltiadis Vasilakis
}
24 700184fb Miltiadis Vasilakis
25 700184fb Miltiadis Vasilakis
+ (void)persist:(id)object key:(NSString *)key {
26 700184fb Miltiadis Vasilakis
//    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
27 700184fb Miltiadis Vasilakis
//    dispatch_async(queue, ^{        
28 700184fb Miltiadis Vasilakis
        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
29 700184fb Miltiadis Vasilakis
        NSString *documentsDirectory = [paths objectAtIndex:0];
30 700184fb Miltiadis Vasilakis
        NSString *filePath = [documentsDirectory stringByAppendingString:[NSString stringWithFormat:@"/%@.archive", key]];
31 700184fb Miltiadis Vasilakis
        [NSKeyedArchiver archiveRootObject:object toFile:filePath];
32 700184fb Miltiadis Vasilakis
//    });
33 700184fb Miltiadis Vasilakis
}
34 700184fb Miltiadis Vasilakis
35 700184fb Miltiadis Vasilakis
+ (BOOL)delete:(NSString *)key {
36 700184fb Miltiadis Vasilakis
    NSFileManager *fileManager = [NSFileManager defaultManager];
37 700184fb Miltiadis Vasilakis
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
38 700184fb Miltiadis Vasilakis
    NSString *documentsDirectory = [paths objectAtIndex:0];
39 700184fb Miltiadis Vasilakis
    NSString *filePath = [documentsDirectory stringByAppendingString:[NSString stringWithFormat:@"/%@.archive", key]];
40 700184fb Miltiadis Vasilakis
    return [fileManager removeItemAtPath:filePath error:NULL];    
41 700184fb Miltiadis Vasilakis
}
42 700184fb Miltiadis Vasilakis
43 700184fb Miltiadis Vasilakis
+ (BOOL)deleteEverything {
44 700184fb Miltiadis Vasilakis
    BOOL result = YES;
45 700184fb Miltiadis Vasilakis
    NSFileManager *fileManager = [NSFileManager defaultManager];
46 700184fb Miltiadis Vasilakis
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
47 700184fb Miltiadis Vasilakis
    NSString *documentsDirectory = [paths objectAtIndex:0];
48 700184fb Miltiadis Vasilakis
    
49 700184fb Miltiadis Vasilakis
    NSArray *files = [fileManager contentsOfDirectoryAtPath:documentsDirectory error:NULL];
50 700184fb Miltiadis Vasilakis
    
51 700184fb Miltiadis Vasilakis
    for (int i = 0; i < [files count]; i++) {
52 700184fb Miltiadis Vasilakis
        NSString *path = [files objectAtIndex:i];
53 700184fb Miltiadis Vasilakis
        result = result && [fileManager removeItemAtPath:path error:NULL];
54 700184fb Miltiadis Vasilakis
    }
55 700184fb Miltiadis Vasilakis
    
56 700184fb Miltiadis Vasilakis
    return result;
57 700184fb Miltiadis Vasilakis
}
58 700184fb Miltiadis Vasilakis
59 700184fb Miltiadis Vasilakis
@end