Statistics
| Branch: | Tag: | Revision:

root / Classes / ComputeModel.m @ 64929bae

History | View | Annotate | Download (2.6 kB)

1 700184fb Miltiadis Vasilakis
//
2 700184fb Miltiadis Vasilakis
//  ComputeModel.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 "ComputeModel.h"
10 700184fb Miltiadis Vasilakis
#import "NSObject+NSCoding.h"
11 700184fb Miltiadis Vasilakis
12 700184fb Miltiadis Vasilakis
13 700184fb Miltiadis Vasilakis
@implementation ComputeModel
14 700184fb Miltiadis Vasilakis
15 700184fb Miltiadis Vasilakis
@synthesize identifier, name;
16 700184fb Miltiadis Vasilakis
17 700184fb Miltiadis Vasilakis
#pragma mark -
18 700184fb Miltiadis Vasilakis
#pragma mark Serialization
19 700184fb Miltiadis Vasilakis
20 700184fb Miltiadis Vasilakis
- (void)encodeWithCoder: (NSCoder *)coder {
21 700184fb Miltiadis Vasilakis
    [self autoEncodeWithCoder:coder];
22 700184fb Miltiadis Vasilakis
}
23 700184fb Miltiadis Vasilakis
24 700184fb Miltiadis Vasilakis
- (id)initWithCoder:(NSCoder *)coder {
25 700184fb Miltiadis Vasilakis
    self = [super init];
26 700184fb Miltiadis Vasilakis
    if (self) {
27 700184fb Miltiadis Vasilakis
        [self autoDecode:coder];
28 700184fb Miltiadis Vasilakis
    }
29 700184fb Miltiadis Vasilakis
    return self;
30 700184fb Miltiadis Vasilakis
}
31 700184fb Miltiadis Vasilakis
32 700184fb Miltiadis Vasilakis
#pragma mark -
33 700184fb Miltiadis Vasilakis
#pragma mark JSON Parsing
34 700184fb Miltiadis Vasilakis
35 700184fb Miltiadis Vasilakis
- (id)initWithJSONDict:(NSDictionary *)dict {
36 700184fb Miltiadis Vasilakis
    if (self = [super init]) {
37 700184fb Miltiadis Vasilakis
        self.identifier = [[dict objectForKey:@"id"] description];
38 700184fb Miltiadis Vasilakis
        self.name = [dict objectForKey:@"name"];
39 700184fb Miltiadis Vasilakis
    }
40 700184fb Miltiadis Vasilakis
    return self;
41 700184fb Miltiadis Vasilakis
}
42 700184fb Miltiadis Vasilakis
43 700184fb Miltiadis Vasilakis
- (NSInteger)intForKey:(NSString *)key inDict:(NSDictionary *)dict {
44 700184fb Miltiadis Vasilakis
    NSInteger result = 0;
45 700184fb Miltiadis Vasilakis
    if ([dict objectForKey:key] != [NSNull null]) {
46 700184fb Miltiadis Vasilakis
        result = [((NSNumber *)[dict objectForKey:key]) intValue];
47 700184fb Miltiadis Vasilakis
    }
48 700184fb Miltiadis Vasilakis
    return result;
49 700184fb Miltiadis Vasilakis
}
50 700184fb Miltiadis Vasilakis
51 700184fb Miltiadis Vasilakis
- (NSDate *)dateForKey:(NSString *)key inDict:(NSDictionary *)dict {
52 700184fb Miltiadis Vasilakis
    NSDate *date = nil;
53 700184fb Miltiadis Vasilakis
    if ([dict objectForKey:key] != [NSNull null]) {
54 700184fb Miltiadis Vasilakis
        date = [self dateFromString:[dict objectForKey:key]];
55 700184fb Miltiadis Vasilakis
    }
56 700184fb Miltiadis Vasilakis
    return date;
57 700184fb Miltiadis Vasilakis
}
58 700184fb Miltiadis Vasilakis
59 700184fb Miltiadis Vasilakis
#pragma mark -
60 700184fb Miltiadis Vasilakis
#pragma mark Date Parser
61 700184fb Miltiadis Vasilakis
62 700184fb Miltiadis Vasilakis
+ (NSDate *)dateFromString:(NSString *)dateString {
63 700184fb Miltiadis Vasilakis
    return nil; // temporarily removing date parsing for performance
64 700184fb Miltiadis Vasilakis
    
65 700184fb Miltiadis Vasilakis
    /*
66 700184fb Miltiadis Vasilakis
	NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
67 700184fb Miltiadis Vasilakis
	[dateFormatter setLocale:[[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"] autorelease]];
68 700184fb Miltiadis Vasilakis
	// example: 2009-11-04T19:46:20.192723
69 700184fb Miltiadis Vasilakis
    // 2010-01-26T12:07:32-06:00
70 700184fb Miltiadis Vasilakis
71 700184fb Miltiadis Vasilakis
    // this is nasty, but -06:00 is not a valid timezone format.  converting to -0600 style
72 700184fb Miltiadis Vasilakis
    dateString = [NSString stringWithFormat:@"%@%@", [dateString substringToIndex:22], [dateString substringFromIndex:23]];
73 700184fb Miltiadis Vasilakis
    [dateFormatter setDateFormat:@"yyyy-MM-dd'T'H:mm:ssZ"];
74 700184fb Miltiadis Vasilakis
75 700184fb Miltiadis Vasilakis
	NSDate *date = [dateFormatter dateFromString:dateString];
76 700184fb Miltiadis Vasilakis
	[dateFormatter release];
77 700184fb Miltiadis Vasilakis
	
78 700184fb Miltiadis Vasilakis
	return date;
79 700184fb Miltiadis Vasilakis
     */
80 700184fb Miltiadis Vasilakis
}
81 700184fb Miltiadis Vasilakis
82 700184fb Miltiadis Vasilakis
- (NSDate *)dateFromString:(NSString *)dateString {
83 700184fb Miltiadis Vasilakis
	return [[self class] dateFromString:dateString];
84 700184fb Miltiadis Vasilakis
}
85 700184fb Miltiadis Vasilakis
86 700184fb Miltiadis Vasilakis
#pragma mark Comparison
87 700184fb Miltiadis Vasilakis
88 700184fb Miltiadis Vasilakis
- (NSComparisonResult)compare:(ComputeModel *)aComputeModel {
89 700184fb Miltiadis Vasilakis
    return [self.name caseInsensitiveCompare:aComputeModel.name];
90 700184fb Miltiadis Vasilakis
}
91 700184fb Miltiadis Vasilakis
92 700184fb Miltiadis Vasilakis
- (NSString *)description {
93 700184fb Miltiadis Vasilakis
    if ([[self class] respondsToSelector:@selector(toJSON:)]) {
94 700184fb Miltiadis Vasilakis
        return [[self class] performSelector:@selector(toJSON:) withObject:self];
95 700184fb Miltiadis Vasilakis
    } else {
96 700184fb Miltiadis Vasilakis
        return [super description];
97 700184fb Miltiadis Vasilakis
    }
98 700184fb Miltiadis Vasilakis
}
99 700184fb Miltiadis Vasilakis
100 700184fb Miltiadis Vasilakis
#pragma mark -
101 700184fb Miltiadis Vasilakis
#pragma mark Memory Management
102 700184fb Miltiadis Vasilakis
103 700184fb Miltiadis Vasilakis
- (void)dealloc {
104 700184fb Miltiadis Vasilakis
    [identifier release];
105 700184fb Miltiadis Vasilakis
    [name release];
106 700184fb Miltiadis Vasilakis
    [super dealloc];
107 700184fb Miltiadis Vasilakis
}
108 700184fb Miltiadis Vasilakis
109 700184fb Miltiadis Vasilakis
@end