OSDN Git Service

Doutaku を 1.0 にアップデート
[kcd/KCD.git] / KCD / TSVSupport.swift
index d9ba17b..12b69e3 100644 (file)
@@ -56,6 +56,7 @@ final class TSVSupport {
         
         let formatter = DateFormatter()
         formatter.dateFormat = "yyyy'-'MM'-'dd' 'HH':'mm':'ss' 'Z"
+        
         return formatter
     }()
     
@@ -65,22 +66,37 @@ final class TSVSupport {
         panel.allowedFileTypes = ["kcdlocaldata"]
         panel.begin {
             
-            guard $0 == .OK else { return }
+            guard $0 == .OK else {
+                
+                return
+            }
             
             panel.urls.forEach { url in
                 
-                guard let fileW = try? FileWrapper(url: url) else { return }
+                guard let fileW = try? FileWrapper(url: url) else {
+                    
+                    return
+                }
                 
                 fileW.fileWrappers?.forEach {
                     
-                    guard let data = $0.value.regularFileContents else { return }
+                    guard let data = $0.value.regularFileContents else {
+                        
+                        return
+                    }
                     
                     switch $0.key {
+                        
                     case "kaihatu.tsv": self.registerKaihatuHistory(data)
+                        
                     case "kenzo.tsv": self.registerKenzoHistory(data)
+                        
                     case "kenzoMark.tsv": self.registerKenzoMark(data)
+                        
                     case "dropShip.tsv": self.registerDropShipHistory(data)
+                        
                     default: break
+                        
                     }
                 }
                 
@@ -94,19 +110,40 @@ final class TSVSupport {
         panel.allowedFileTypes = ["kcdlocaldata"]
         panel.begin {
             
-            guard $0 == .OK else { return }
-            guard let url = panel.url else { return }
+            guard $0 == .OK else {
+                
+                return
+            }
+            guard let url = panel.url else {
+                
+                return
+            }
             
             let data = self.store.sync { () -> (Data, Data, Data, Data)? in
                 
-                guard let kaihatuHistory = self.dataOfKaihatuHistory() else { return nil }
-                guard let kenzoHistory = self.dataOfKenzoHistory() else { return nil }
-                guard let kenzoMark = self.dataOfKenzoMark() else { return nil }
-                guard let dropShipHistory = self.dataOfDropShipHistory() else { return nil }
+                guard let kaihatuHistory = self.dataOfKaihatuHistory() else {
+                    
+                    return nil
+                }
+                guard let kenzoHistory = self.dataOfKenzoHistory() else {
+                    
+                    return nil
+                }
+                guard let kenzoMark = self.dataOfKenzoMark() else {
+                    
+                    return nil
+                }
+                guard let dropShipHistory = self.dataOfDropShipHistory() else {
+                    
+                    return nil
+                }
                 
                 return (kaihatuHistory, kenzoHistory, kenzoMark, dropShipHistory)
             }
-            guard let (kaihatuHistory, kenzoHistory, kenzoMark, dropShipHistory) = data else { return }
+            guard let (kaihatuHistory, kenzoHistory, kenzoMark, dropShipHistory) = data else {
+                
+                return
+            }
             
             let fileW = FileWrapper(directoryWithFileWrappers: [:])
             fileW.addRegularFile(withContents: kaihatuHistory, preferredFilename: "kaihatu.tsv")
@@ -124,13 +161,14 @@ final class TSVSupport {
         }
     }
     
-    private func localData<T, Value>(_ entity: Entity<T>, sortBy: KeyPath<T, Value>) -> [T] {
+    private func localData<ResultType: Entity, Value>(_ type: ResultType.Type, sortBy: KeyPath<ResultType, Value>) -> [ResultType] {
         
         let sortDesc = SortDescriptors(keyPath: sortBy, ascending: true)
         
-        guard let array = try? store.objects(of: entity, sortDescriptors: sortDesc) else {
+        guard let array = try? store.objects(of: type, sortDescriptors: sortDesc) else {
+            
+            print("Can not get \(type)")
             
-            print("Can not get \(entity)")
             return []
         }
         
@@ -139,7 +177,7 @@ final class TSVSupport {
     
     private func dataOfKaihatuHistory() -> Data? {
         
-        return localData(KaihatuHistory.entity, sortBy: \KaihatuHistory.date)
+        return localData(KaihatuHistory.self, sortBy: \KaihatuHistory.date)
             .map {
                 LFSeparateLine.empty
                     .append($0.date)
@@ -160,21 +198,21 @@ final class TSVSupport {
     
     private func dataOfKenzoHistory() -> Data? {
         
-        return localData(KenzoHistory.entity, sortBy: \KenzoHistory.date)
+        return localData(KenzoHistory.self, sortBy: \KenzoHistory.date)
             .map {
-            LFSeparateLine.empty
-                .append($0.date)
-                .append($0.fuel)
-                .append($0.bull)
-                .append($0.steel)
-                .append($0.bauxite)
-                .append($0.kaihatusizai)
-                .append($0.name)
-                .append($0.sTypeId)
-                .append($0.flagShipName)
-                .append($0.flagShipLv)
-                .append($0.commanderLv)
-                .line
+                LFSeparateLine.empty
+                    .append($0.date)
+                    .append($0.fuel)
+                    .append($0.bull)
+                    .append($0.steel)
+                    .append($0.bauxite)
+                    .append($0.kaihatusizai)
+                    .append($0.name)
+                    .append($0.sTypeId)
+                    .append($0.flagShipName)
+                    .append($0.flagShipLv)
+                    .append($0.commanderLv)
+                    .line
             }
             .joined(separator: "\n")
             .data(using: .utf8)
@@ -182,21 +220,21 @@ final class TSVSupport {
     
     private func dataOfKenzoMark() -> Data? {
         
-        return localData(KenzoMark.entity, sortBy: \KenzoMark.kDockId)
+        return localData(KenzoMark.self, sortBy: \KenzoMark.kDockId)
             .map {
-            LFSeparateLine.empty
-                .append($0.date)
-                .append($0.fuel)
-                .append($0.bull)
-                .append($0.steel)
-                .append($0.bauxite)
-                .append($0.kaihatusizai)
-                .append($0.created_ship_id)
-                .append($0.kDockId)
-                .append($0.flagShipName)
-                .append($0.flagShipLv)
-                .append($0.commanderLv)
-                .line
+                LFSeparateLine.empty
+                    .append($0.date)
+                    .append($0.fuel)
+                    .append($0.bull)
+                    .append($0.steel)
+                    .append($0.bauxite)
+                    .append($0.kaihatusizai)
+                    .append($0.created_ship_id)
+                    .append($0.kDockId)
+                    .append($0.flagShipName)
+                    .append($0.flagShipLv)
+                    .append($0.commanderLv)
+                    .line
             }
             .joined(separator: "\n")
             .data(using: .utf8)
@@ -204,7 +242,7 @@ final class TSVSupport {
     
     private func dataOfDropShipHistory() -> Data? {
         
-        return localData(DropShipHistory.entity, sortBy: \DropShipHistory.date)
+        return localData(DropShipHistory.self, sortBy: \DropShipHistory.date)
             .map {
                 LFSeparateLine.empty
                     .append($0.date)
@@ -229,21 +267,57 @@ final class TSVSupport {
             
             let attr = $0.components(separatedBy: "\t")
             
-            guard attr.count == 10 else { return }
-            guard let date = dateFomatter.date(from: attr[0]) else { return }
-            guard let fuel = Int(attr[1]) else { return }
-            guard let bull = Int(attr[2]) else { return }
-            guard let steel = Int(attr[3]) else { return }
-            guard let bauxite = Int(attr[4]) else { return }
-            guard let kaihatu = Int(attr[5]) else { return }
-            guard let flagLv = Int(attr[8]) else { return }
-            guard let commandLv = Int(attr[9]) else { return }
+            guard attr.count == 10 else {
+                
+                return
+            }
+            guard let date = dateFomatter.date(from: attr[0]) else {
+                
+                return
+            }
+            guard let fuel = Int(attr[1]) else {
+                
+                return
+            }
+            guard let bull = Int(attr[2]) else {
+                
+                return
+            }
+            guard let steel = Int(attr[3]) else {
+                
+                return
+            }
+            guard let bauxite = Int(attr[4]) else {
+                
+                return
+            }
+            guard let kaihatu = Int(attr[5]) else {
+                
+                return
+            }
+            guard let flagLv = Int(attr[8]) else {
+                
+                return
+            }
+            guard let commandLv = Int(attr[9]) else {
+                
+                return
+            }
             
             let predicate = Predicate(\KaihatuHistory.date, equalTo: date)
             
-            guard let oo = try? store.objects(of: KaihatuHistory.entity, predicate: predicate) else { return }
-            guard oo.count != 0 else { return }
-            guard let obj = store.insertNewObject(for: KaihatuHistory.entity) else { return }
+            guard let oo = try? store.objects(of: KaihatuHistory.self, predicate: predicate) else {
+                
+                return
+            }
+            guard oo.count != 0 else {
+                
+                return
+            }
+            guard let obj = store.insertNewObject(for: KaihatuHistory.self) else {
+                
+                return
+            }
             
             obj.date = date
             obj.fuel = fuel
@@ -266,22 +340,61 @@ final class TSVSupport {
             
             let attr = $0.components(separatedBy: "\t")
             
-            guard attr.count == 11 else { return }
-            guard let date = dateFomatter.date(from: attr[0]) else { return }
-            guard let fuel = Int(attr[1]) else { return }
-            guard let bull = Int(attr[2]) else { return }
-            guard let steel = Int(attr[3]) else { return }
-            guard let bauxite = Int(attr[4]) else { return }
-            guard let kaihatu = Int(attr[5]) else { return }
-            guard let sType = Int(attr[7]) else { return }
-            guard let flagLv = Int(attr[9]) else { return }
-            guard let commandLv = Int(attr[10]) else { return }
+            guard attr.count == 11 else {
+                
+                return
+            }
+            guard let date = dateFomatter.date(from: attr[0]) else {
+                
+                return
+            }
+            guard let fuel = Int(attr[1]) else {
+                
+                return
+            }
+            guard let bull = Int(attr[2]) else {
+                
+                return
+            }
+            guard let steel = Int(attr[3]) else {
+                
+                return
+            }
+            guard let bauxite = Int(attr[4]) else {
+                
+                return
+            }
+            guard let kaihatu = Int(attr[5]) else {
+                
+                return
+            }
+            guard let sType = Int(attr[7]) else {
+                
+                return
+            }
+            guard let flagLv = Int(attr[9]) else {
+                
+                return
+            }
+            guard let commandLv = Int(attr[10]) else {
+                
+                return
+            }
             
             let predicate = Predicate(\KenzoHistory.date, equalTo: date)
             
-            guard let oo = try? store.objects(of: KenzoHistory.entity, predicate: predicate) else { return }
-            guard oo.count != 0 else { return }
-            guard let obj = store.insertNewObject(for: KenzoHistory.entity) else { return }
+            guard let oo = try? store.objects(of: KenzoHistory.self, predicate: predicate) else {
+                
+                return
+            }
+            guard oo.count != 0 else {
+                
+                return
+            }
+            guard let obj = store.insertNewObject(for: KenzoHistory.self) else {
+                
+                return
+            }
             
             obj.date = date
             obj.fuel = fuel
@@ -305,23 +418,65 @@ final class TSVSupport {
             
             let attr = $0.components(separatedBy: "\t")
             
-            guard attr.count == 11 else { return }
-            guard let date = dateFomatter.date(from: attr[0]) else { return }
-            guard let fuel = Int(attr[1]) else { return }
-            guard let bull = Int(attr[2]) else { return }
-            guard let steel = Int(attr[3]) else { return }
-            guard let bauxite = Int(attr[4]) else { return }
-            guard let kaihatu = Int(attr[5]) else { return }
-            guard let shiId = Int(attr[6]) else { return }
-            guard let kDock = Int(attr[7]) else { return }
-            guard let flagLv = Int(attr[9]) else { return }
-            guard let commandLv = Int(attr[10]) else { return }
+            guard attr.count == 11 else {
+                
+                return
+            }
+            guard let date = dateFomatter.date(from: attr[0]) else {
+                
+                return
+            }
+            guard let fuel = Int(attr[1]) else {
+                
+                return
+            }
+            guard let bull = Int(attr[2]) else {
+                
+                return
+            }
+            guard let steel = Int(attr[3]) else {
+                
+                return
+            }
+            guard let bauxite = Int(attr[4]) else {
+                
+                return
+            }
+            guard let kaihatu = Int(attr[5]) else {
+                
+                return
+            }
+            guard let shiId = Int(attr[6]) else {
+                
+                return
+            }
+            guard let kDock = Int(attr[7]) else {
+                
+                return
+            }
+            guard let flagLv = Int(attr[9]) else {
+                
+                return
+            }
+            guard let commandLv = Int(attr[10]) else {
+                
+                return
+            }
             
             let predicate = Predicate(\KenzoMark.date, equalTo: date)
             
-            guard let oo = try? store.objects(of: KenzoMark.entity, predicate: predicate) else { return }
-            guard oo.count != 0 else { return }
-            guard let obj = store.insertNewObject(for: KenzoMark.entity) else { return }
+            guard let oo = try? store.objects(of: KenzoMark.self, predicate: predicate) else {
+                
+                return
+            }
+            guard oo.count != 0 else {
+                
+                return
+            }
+            guard let obj = store.insertNewObject(for: KenzoMark.self) else {
+                
+                return
+            }
             
             obj.date = date
             obj.fuel = fuel
@@ -345,17 +500,41 @@ final class TSVSupport {
             
             let attr = $0.components(separatedBy: "\t")
             
-            guard attr.count == 9 else { return }
-            guard let date = dateFomatter.date(from: attr[0]) else { return }
-            guard let mapInfo = Int(attr[3]) else { return }
-            guard let mapCell = Int(attr[4]) else { return }
-            guard let mark = Int(attr[7]) else { return }
+            guard attr.count == 9 else {
+                
+                return
+            }
+            guard let date = dateFomatter.date(from: attr[0]) else {
+                
+                return
+            }
+            guard let mapInfo = Int(attr[3]) else {
+                
+                return
+            }
+            guard let mapCell = Int(attr[4]) else {
+                
+                return
+            }
+            guard let mark = Int(attr[7]) else {
+                
+                return
+            }
             
             let predicate = Predicate(\DropShipHistory.date, equalTo: date)
             
-            guard let oo = try? store.objects(of: DropShipHistory.entity, predicate: predicate) else { return }
-            guard oo.count != 0 else { return }
-            guard let obj = store.insertNewObject(for: DropShipHistory.entity) else { return }
+            guard let oo = try? store.objects(of: DropShipHistory.self, predicate: predicate) else {
+                
+                return
+            }
+            guard oo.count != 0 else {
+                
+                return
+            }
+            guard let obj = store.insertNewObject(for: DropShipHistory.self) else {
+                
+                return
+            }
             
             obj.date = date
             obj.shipName = attr[1]