OSDN Git Service

HMMasterMissionCommandクラスをSwiftで書き換え
[kcd/KCD.git] / KCD / HMMemberMaterialCommand.m
1 //
2 //  HMMemberMaterialCommand.m
3 //  KCD
4 //
5 //  Created by Hori,Masaki on 2014/02/22.
6 //  Copyright (c) 2014年 Hori,Masaki. All rights reserved.
7 //
8
9 #import "HMMemberMaterialCommand.h"
10
11 #import "KCD-Swift.h"
12
13 @implementation HMMemberMaterialCommand
14 + (void)load
15 {
16         static dispatch_once_t onceToken;
17         dispatch_once(&onceToken, ^{
18                 [HMJSONCommand registerClass:self];
19         });
20 }
21
22 + (BOOL)canExcuteAPI:(NSString *)api
23 {
24         if([api isEqualToString:@"/kcsapi/api_get_member/material"]) return YES;
25 //      if([api isEqualToString:@"/kcsapi/api_req_hokyu/charge"]) return YES;
26         return NO;
27 }
28 - (NSString *)dataKey
29 {
30         if([self.api isEqualToString:@"/kcsapi/api_port/port"]
31            || [self.api isEqualToString:@"/kcsapi/api_req_kousyou/createitem"]
32            || [self.api isEqualToString:@"/kcsapi/api_req_kousyou/destroyship"]
33            || [self.api isEqualToString:@"/kcsapi/api_req_hokyu/charge"]) {
34                 return @"api_data.api_material";
35         }
36         if([self.api isEqualToString:@"/kcsapi/api_req_kousyou/remodel_slot"]) {
37                 return @"api_data.api_after_material";
38         }
39         return [super dataKey];
40 }
41 - (void)execute
42 {
43         NSArray *api_data = [self.json valueForKeyPath:self.dataKey];
44         if(![api_data isKindOfClass:[NSArray class]]) {
45                 [self log:@"%@ is NOT NSArray.", self.dataKey];
46                 return;
47         }
48         
49         HMServerDataStore *serverDataStore = [HMServerDataStore oneTimeEditor];
50         NSManagedObjectContext *managedObjectContext = [serverDataStore managedObjectContext];
51         
52         NSError *error = nil;
53         id result = [serverDataStore objectsWithEntityName:@"Material"
54                                                                            sortDescriptors:nil
55                                                                                          predicate:nil
56                                                                                                  error:&error];
57         if(error) {
58                 [self log:@"Fetch error: %@", error];
59                 return;
60         }
61         NSManagedObject *object = nil;
62         if(!result || [result count] == 0) {
63                 object = [NSEntityDescription insertNewObjectForEntityForName:@"Material"
64                                                                                            inManagedObjectContext:managedObjectContext];
65         } else {
66                 object = result[0];
67         }
68         
69         NSArray *keys = @[@"fuel", @"bull", @"steel", @"bauxite", @"kousokukenzo", @"kousokushuhuku", @"kaihatusizai", @"screw"];
70         
71         NSInteger i = 0;
72         for(id dict in api_data) {
73                 if([dict isKindOfClass:[NSDictionary class]]) {
74                         NSNumber *idValue = [dict valueForKey:@"api_id"];
75                         NSString *key = keys[[idValue integerValue] - 1];
76                         if([key isEqualToString:@"DUMMY"]) continue;
77                         [object setValue:[dict valueForKey:@"api_value"] forKey:key];
78                 } else {
79                         NSString *key = keys[i++];
80                         if([key isEqualToString:@"DUMMY"]) continue;
81                         [object setValue:@([dict integerValue]) forKey:key];
82                 }
83         }
84 }
85 @end