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 |