class AirBaseMapper: JSONMapper {
let apiResponse: APIResponse
- let configuration = MappingConfiguration(entityName: "AirBase",
+ let configuration = MappingConfiguration(entity: .airBase,
dataKey: "api_data.api_air_base",
compositPrimaryKeys: ["area_id", "rid"],
editorStore: ServerDataStore.oneTimeEditor())
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
- self.configuration = MappingConfiguration(entityName: "Basic",
+ self.configuration = MappingConfiguration(entity: .basic,
dataKey: dataKey(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
extension CoreDataCore {
static let bookmark = CoreDataCore(.bookmark)
}
+extension Entity {
+ static let bookmark = Entity(name: "Bookmark")
+}
class BookmarkDataStore: CoreDataAccessor, CoreDataManager {
static var `default` = BookmarkDataStore(type: .reader)
extension BookmarkDataStore {
func createBookmark() -> BookmarkItem? {
- return insertNewObject(forEntityName: "Bookmark") as? BookmarkItem
+ return insertNewObject(for: .bookmark) as? BookmarkItem
}
}
bookmarksController = NSArrayController()
super.init()
bookmarksController.managedObjectContext = self.manageObjectContext
- bookmarksController.entityName = "Bookmark"
+ bookmarksController.entityName = Entity.bookmark.name
let sort = NSSortDescriptor(key: "order", ascending: true)
bookmarksController.sortDescriptors = [sort]
let mainMenu = NSApplication.shared().mainMenu
print("BookmarkManager: Can no convert max order to Int")
return nil
}
- guard let new = editorStore.insertNewObject(forEntityName: "Bookmark") as? BookmarkItem
+ guard let new = editorStore.createBookmark()
else {
print("BookmarkManager: Can not insert BookMarkItem")
return nil
}
}
+struct Entity {
+ let name: String
+}
+
protocol CoreDataProvider {
init(type: CoreDataManagerType)
var core: CoreDataCore { get }
}
protocol CoreDataAccessor: CoreDataProvider {
- func insertNewObject(forEntityName name: String) -> NSManagedObject
+ func insertNewObject(for entity: Entity) -> NSManagedObject
func delete(_ object: NSManagedObject)
func object(with objectId: NSManagedObjectID) -> NSManagedObject
- func objects(withEntityName entityName: String, sortDescriptors: [NSSortDescriptor]?, predicate: NSPredicate?) throws -> [NSManagedObject]
+ func objects(with entity: Entity, sortDescriptors: [NSSortDescriptor]?, predicate: NSPredicate?) throws -> [NSManagedObject]
}
private class CoreDataRemover {
}
extension CoreDataAccessor {
- func insertNewObject(forEntityName name: String) -> NSManagedObject {
- return NSEntityDescription.insertNewObject(forEntityName: name, into: managedObjectContext)
+ func insertNewObject(for entity: Entity) -> NSManagedObject {
+ return NSEntityDescription.insertNewObject(forEntityName: entity.name, into: managedObjectContext)
}
func delete(_ object: NSManagedObject) {
managedObjectContext.delete(object)
func object(with objectId: NSManagedObjectID) -> NSManagedObject {
return managedObjectContext.object(with: objectId)
}
- func objects(withEntityName entityName: String, sortDescriptors: [NSSortDescriptor]? = nil, predicate: NSPredicate? = nil) throws -> [NSManagedObject] {
- let req = NSFetchRequest<NSManagedObject>(entityName: entityName)
+ func objects(with entity: Entity, sortDescriptors: [NSSortDescriptor]? = nil, predicate: NSPredicate? = nil) throws -> [NSManagedObject] {
+ let req = NSFetchRequest<NSManagedObject>(entityName: entity.name)
req.sortDescriptors = sortDescriptors
req.predicate = predicate
return try managedObjectContext.fetch(req)
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
- self.configuration = MappingConfiguration(entityName: "Deck",
+ self.configuration = MappingConfiguration(entity: .deck,
dataKey: dataKey(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
deckController = NSObjectController()
super.init()
- deckController.entityName = "Deck"
+ deckController.entityName = Entity.deck.name
deckController.managedObjectContext = ServerDataStore.default.managedObjectContext
deckController.fetchPredicate = NSPredicate(format: "id = %ld", number)
let req = NSFetchRequest<NSFetchRequestResult>()
- req.entity = NSEntityDescription.entity(forEntityName: "Deck", in: deckController.managedObjectContext!)
+ req.entity = NSEntityDescription.entity(forEntityName: Entity.deck.name, in: deckController.managedObjectContext!)
req.predicate = deckController.fetchPredicate
do {
try deckController.fetch(with: req, merge: false)
let controller: NSArrayController
let predicateFormat: String
let tableView: NSTableView
- let entityName: String
+ let entityName: Entity
let pickUpPredicateFormat: String
init(_ owner: HistoryWindowController) {
controller = owner.kaihatuHistoryController
predicateFormat = "name contains $value"
tableView = owner.kaihatuHistoryTableView
- entityName = "KaihatuHistory"
+ entityName = .kaihatuHistory
pickUpPredicateFormat = "date = %@ AND name = %@"
case .kenzoHistory:
controller = owner.kenzoHistoryController
predicateFormat = "name contains $value"
tableView = owner.kenzoHistoryTableView
- entityName = "KenzoHistory"
+ entityName = .kenzoHistory
pickUpPredicateFormat = "date = %@ AND name = %@"
case .dropHistory:
controller = owner.dropHistoryController
predicateFormat = "shipName contains $value"
tableView = owner.dropHistoryTableView
- entityName = "DropShipHistory"
+ entityName = .dropShipHistory
pickUpPredicateFormat = "date = %@ AND mapCell = %ld"
}
}
guard let predicate = p else { return }
let store = LocalDataStore.oneTimeEditor()
- if let a = try? store.objects(withEntityName: info.entityName,
+ if let a = try? store.objects(with: info.entityName,
predicate: predicate),
let item = a.first,
var history = item as? Markable {
import Cocoa
struct MappingConfiguration {
- let entityName: String
+ let entity: Entity
let dataKey: String
let primaryKey: String
let compositPrimaryKeys: [String]?
let editorStore: CoreDataAccessor
let ignoreKeys: [String]
- init(entityName: String,
+ init(entity: Entity,
dataKey: String = "api_data",
primaryKey: String = "id",
compositPrimaryKeys: [String]? = nil,
editorStore: CoreDataAccessor,
ignoreKeys: [String] = []) {
- self.entityName = entityName
+ self.entity = entity
self.dataKey = dataKey
self.primaryKey = primaryKey
self.compositPrimaryKeys = compositPrimaryKeys
else { return print("JSON is wrong.") }
let store = configuration.editorStore
- guard let objects = try? store.objects(withEntityName: configuration.entityName, sortDescriptors: sortDescriptors)
- else { return print("Can not get entity named \(configuration.entityName)") }
+ guard let objects = try? store.objects(with: configuration.entity, sortDescriptors: sortDescriptors)
+ else { return print("Can not get entity named \(configuration.entity)") }
data.forEach {
if let object = objectSearch(objects, $0) {
registerElement($0, to: object)
} else {
- registerElement($0, to: store.insertNewObject(forEntityName: configuration.entityName))
+ registerElement($0, to: store.insertNewObject(for: configuration.entity))
}
}
finishOperating()
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
- self.configuration = MappingConfiguration(entityName: "KenzoDock",
+ self.configuration = MappingConfiguration(entity: .kenzoDock,
dataKey: dataKey(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
controller = NSArrayController()
super.init()
controller.managedObjectContext = ServerDataStore.default.managedObjectContext
- controller.entityName = "KenzoDock"
+ controller.entityName = Entity.kenzoDock.name
controller.fetchPredicate = NSPredicate(format: "id = %ld", number)
controller.automaticallyRearrangesObjects = true
controller.fetch(nil)
extension CoreDataCore {
static let local = CoreDataCore(.local)
}
+extension Entity {
+ static let dropShipHistory = Entity(name: "DropShipHistory")
+ static let kaihatuHistory = Entity(name: "KaihatuHistory")
+ static let kenzoMark = Entity(name: "KenzoMark")
+ static let kenzoHistory = Entity(name: "KenzoHistory")
+ static let hiddenDropShipHistory = Entity(name: "HiddenDropShipHistory")
+}
class LocalDataStore: CoreDataAccessor, CoreDataManager {
static var `default` = LocalDataStore(type: .reader)
let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
let predicate03 = NSPredicate(format: "mapArea IN %@", ["1", "2", "3", "4", "5", "6", "7", "8", "9"])
let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02, predicate03])
- guard let k = try? objects(withEntityName: "DropShipHistory", predicate: predicate),
+ guard let k = try? objects(with: .dropShipHistory, predicate: predicate),
let dropHistories = k as? [DropShipHistory]
else { return [] }
return dropHistories
}
func createDropShipHistory() -> DropShipHistory? {
- return insertNewObject(forEntityName: "DropShipHistory") as? DropShipHistory
+ return insertNewObject(for: .dropShipHistory) as? DropShipHistory
}
func kaihatuHistories() -> [KaihatuHistory] {
- guard let k = try? objects(withEntityName: "KaihatuHistory"),
+ guard let k = try? objects(with: .kaihatuHistory),
let kaihatuHistories = k as? [KaihatuHistory]
else { return [] }
return kaihatuHistories
let predicate01 = NSPredicate(format: "date < %@", date as NSDate)
let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02])
- guard let k = try? objects(withEntityName: "KaihatuHistory", predicate: predicate),
+ guard let k = try? objects(with: .kaihatuHistory, predicate: predicate),
let kaihatuHistories = k as? [KaihatuHistory]
else { return [] }
return kaihatuHistories
}
func createKaihatuHistory() -> KaihatuHistory? {
- return insertNewObject(forEntityName: "KaihatuHistory") as? KaihatuHistory
+ return insertNewObject(for: .kaihatuHistory) as? KaihatuHistory
}
func kenzoMark(byDockId dockId: Int) -> KenzoMark? {
let predicate = NSPredicate(format: "kDockId = %ld", dockId)
- guard let km = try? objects(withEntityName: "KenzoMark", predicate: predicate),
+ guard let km = try? objects(with: .kenzoMark, predicate: predicate),
let kenzoMarks = km as? [KenzoMark],
let kenzoMark = kenzoMarks.first
else { return nil }
func kenzoMark(fuel: Int, bull: Int, steel: Int, bauxite: Int, kaihatusizai: Int, kDockId: Int, shipId: Int) -> KenzoMark? {
let predicate = NSPredicate(format: "fuel = %ld AND bull = %ld AND steel = %ld AND bauxite = %ld AND kaihatusizai = %ld AND kDockId = %ld AND created_ship_id = %ld"
, fuel, bull, steel, bauxite, kaihatusizai, kDockId, shipId)
- guard let km = try? objects(withEntityName: "KenzoMark", predicate: predicate),
+ guard let km = try? objects(with: .kenzoMark, predicate: predicate),
let kenzoMarks = km as? [KenzoMark],
let kenzoMark = kenzoMarks.first
else { return nil }
return kenzoMark
}
func createKenzoMark() -> KenzoMark? {
- return insertNewObject(forEntityName: "KenzoMark") as? KenzoMark
+ return insertNewObject(for: .kenzoMark) as? KenzoMark
}
func unmarkedKenzoHistories(befor days: Int) -> [KenzoHistory] {
let predicate01 = NSPredicate(format: "date < %@", date as NSDate)
let predicate02 = NSPredicate(format: "mark = 0 || mark = nil")
let predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [predicate01, predicate02])
- guard let k = try? objects(withEntityName: "KenzoHistory", predicate: predicate),
+ guard let k = try? objects(with: .kenzoHistory, predicate: predicate),
let kenzoHistories = k as? [KenzoHistory]
else { return [] }
return kenzoHistories
}
func createKenzoHistory() -> KenzoHistory? {
- return insertNewObject(forEntityName: "KenzoHistory") as? KenzoHistory
+ return insertNewObject(for: .kenzoHistory) as? KenzoHistory
}
func hiddenDropShipHistories() -> [DropShipHistory] {
- guard let d = try? objects(withEntityName: "HiddenDropShipHistory"),
+ guard let d = try? objects(with: .hiddenDropShipHistory),
let dropShipHistories = d as? [DropShipHistory]
else { return [] }
return dropShipHistories
}
func createHiddenDropShipHistory() -> DropShipHistory? {
- return insertNewObject(forEntityName: "HiddenDropShipHistory") as? DropShipHistory
+ return insertNewObject(for: .hiddenDropShipHistory) as? DropShipHistory
}
}
guard let data = json["api_data"] as? [String: Any],
let no = data["api_no"] as? Int
else { return print("startBattle JSON is wrong") }
- guard let battle = store.insertNewObject(forEntityName: "Battle") as? KCBattle
+ guard let battle = store.createBattle()
else { return print("Can not create Battle") }
battle.deckId = deckId
battle.mapArea = mapArea
class MasterFurnitureMapper: JSONMapper {
let apiResponse: APIResponse
- let configuration = MappingConfiguration(entityName: "MasterFurniture",
+ let configuration = MappingConfiguration(entity: .masterFurniture,
dataKey: "api_data.api_mst_furniture",
editorStore: ServerDataStore.oneTimeEditor(),
ignoreKeys: ["api_season"])
class MasterMapAreaMapper: JSONMapper {
let apiResponse: APIResponse
- let configuration = MappingConfiguration(entityName: "MasterMapArea",
+ let configuration = MappingConfiguration(entity: .masterMapArea,
dataKey: "api_data.api_mst_maparea",
editorStore: ServerDataStore.oneTimeEditor())
class MasterMapInfoMapper: JSONMapper {
let apiResponse: APIResponse
- let configuration = MappingConfiguration(entityName: "MasterMapInfo",
+ let configuration = MappingConfiguration(entity: .masterMapInfo,
dataKey: "api_data.api_mst_mapinfo",
editorStore: ServerDataStore.oneTimeEditor())
class MasterMissionMapper: JSONMapper {
let apiResponse: APIResponse
- let configuration = MappingConfiguration(entityName: "MasterMission",
+ let configuration = MappingConfiguration(entity: .masterMission,
dataKey: "api_data.api_mst_mission",
editorStore: ServerDataStore.oneTimeEditor())
class MasterSTypeMapper: JSONMapper {
let apiResponse: APIResponse
- let configuration = MappingConfiguration(entityName: "MasterSType",
+ let configuration = MappingConfiguration(entity: .masterSType,
dataKey: "api_data.api_mst_stype",
editorStore: ServerDataStore.oneTimeEditor(),
ignoreKeys: ["api_equip_type"])
class MasterShipMapper: JSONMapper {
let apiResponse: APIResponse
- let configuration = MappingConfiguration(entityName: "MasterShip",
+ let configuration = MappingConfiguration(entity: .masterShip,
dataKey: "api_data.api_mst_ship",
editorStore: ServerDataStore.oneTimeEditor())
class MasterSlotItemEquipTypeMapper: JSONMapper {
let apiResponse: APIResponse
- let configuration = MappingConfiguration(entityName: "MasterSlotItemEquipType",
+ let configuration = MappingConfiguration(entity: .masterSlotItemEquipType,
dataKey: "api_data.api_mst_slotitem_equiptype",
editorStore: ServerDataStore.oneTimeEditor())
class MasterSlotItemMapper: JSONMapper {
let apiResponse: APIResponse
- let configuration = MappingConfiguration(entityName: "MasterSlotItem",
+ let configuration = MappingConfiguration(entity: .masterSlotItem,
dataKey: "api_data.api_mst_slotitem",
editorStore: ServerDataStore.oneTimeEditor())
class MasterUseItemMapper: JSONMapper {
let apiResponse: APIResponse
- let configuration = MappingConfiguration(entityName: "MasterUseItem",
+ let configuration = MappingConfiguration(entity: .masterUseItem,
dataKey: "api_data.api_mst_useitem",
editorStore: ServerDataStore.oneTimeEditor())
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
- self.configuration = MappingConfiguration(entityName: "Material",
+ self.configuration = MappingConfiguration(entity: .material,
dataKey: dataKey(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
+
//
// MissionStatus.swift
// KCD
controller = NSArrayController()
super.init()
controller.managedObjectContext = ServerDataStore.default.managedObjectContext
- controller.entityName = "Deck"
+ controller.entityName = Entity.deck.name
controller.fetchPredicate = NSPredicate(format: "id = %ld", number)
controller.automaticallyRearrangesObjects = true
controller.fetch(nil)
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
- self.configuration = MappingConfiguration(entityName: "NyukyoDock",
+ self.configuration = MappingConfiguration(entity: .nyukyoDock,
dataKey: dataKey(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
controller = NSArrayController()
super.init()
controller.managedObjectContext = ServerDataStore.default.managedObjectContext
- controller.entityName = "NyukyoDock"
+ controller.entityName = Entity.nyukyoDock.name
controller.fetchPredicate = NSPredicate(format: "id = %ld", number)
controller.automaticallyRearrangesObjects = true
controller.fetch(nil)
extension CoreDataCore {
static let resourceHistory = CoreDataCore(.resourceHistory)
}
+extension Entity {
+ static let resource = Entity(name: "Resource")
+}
class ResourceHistoryDataStore: CoreDataAccessor, CoreDataManager {
static var `default` = ResourceHistoryDataStore(type: .reader)
extension ResourceHistoryDataStore {
func resources(in minites: [Int], older: Date) -> [KCResource] {
let p = NSPredicate(format: "minute IN %@ AND date < %@", minites, older as NSDate)
- guard let a = try? objects(withEntityName: "Resource", predicate: p),
+ guard let a = try? objects(with: .resource, predicate: p),
let resources = a as? [KCResource]
else { return [] }
return resources
}
func cerateResource() -> KCResource? {
- return insertNewObject(forEntityName: "Resource") as? KCResource
+ return insertNewObject(for: .resource) as? KCResource
}
}
extension CoreDataCore {
static let kcd = CoreDataCore(.kcd)
}
+extension Entity {
+ static let airBase = Entity(name: "AirBase")
+ static let airBasePlaneInfo = Entity(name: "AirBasePlaneInfo")
+ static let basic = Entity(name: "Basic")
+ static let deck = Entity(name: "Deck")
+ static let kenzoDock = Entity(name: "KenzoDock")
+ static let masterFurniture = Entity(name: "MasterFurniture")
+ static let masterMapArea = Entity(name: "MasterMapArea")
+ static let masterMapInfo = Entity(name: "MasterMapInfo")
+ static let masterMission = Entity(name: "MasterMission")
+ static let masterShip = Entity(name: "MasterShip")
+ static let masterSlotItem = Entity(name: "MasterSlotItem")
+ static let masterSlotItemEquipType = Entity(name: "MasterSlotItemEquipType")
+ static let masterSType = Entity(name: "MasterSType")
+ static let masterUseItem = Entity(name: "MasterUseItem")
+ static let material = Entity(name: "Material")
+ static let nyukyoDock = Entity(name: "NyukyoDock")
+ static let ship = Entity(name: "Ship")
+ static let slotItem = Entity(name: "SlotItem")
+ static let quest = Entity(name: "Quest")
+}
class ServerDataStore: CoreDataAccessor, CoreDataManager {
static var `default` = ServerDataStore(type: .reader)
extension ServerDataStore {
func airBases() -> [KCAirBase] {
- guard let res = try? objects(withEntityName: "AirBase"),
+ guard let res = try? objects(with: .airBase),
let airbase = res as? [KCAirBase]
else { return [] }
return airbase
}
func airBase(area: Int, base: Int) -> KCAirBase? {
let p = NSPredicate(format: "area_id == %ld AND rid == %ld", area, base)
- guard let a = try? objects(withEntityName: "AirBase", predicate: p),
+ guard let a = try? objects(with: .airBase, predicate: p),
let airBases = a as? [KCAirBase],
let airBase = airBases.first
else { return nil }
return airBase
}
func createAirBasePlaneInfo() -> KCAirBasePlaneInfo? {
- return insertNewObject(forEntityName: "AirBasePlaneInfo") as? KCAirBasePlaneInfo
+ return insertNewObject(for: .airBasePlaneInfo) as? KCAirBasePlaneInfo
}
func basic() -> KCBasic? {
- guard let b = try? objects(withEntityName: "Basic"),
+ guard let b = try? objects(with: .basic),
let basics = b as? [KCBasic],
let basic = basics.first
else { return nil }
return basic
}
func createBasic() -> KCBasic? {
- return insertNewObject(forEntityName: "Basic") as? KCBasic
+ return insertNewObject(for: .basic) as? KCBasic
}
func decksSortedById() -> [KCDeck] {
let sortDec = NSSortDescriptor(key: "id", ascending: true)
- guard let d = try? objects(withEntityName: "Deck", sortDescriptors: [sortDec]),
+ guard let d = try? objects(with: .deck, sortDescriptors: [sortDec]),
let decks = d as? [KCDeck]
else { return [] }
return decks
}
func deck(byId id: Int) -> KCDeck? {
let p = NSPredicate(format: "id = %ld", id)
- guard let d = try? objects(withEntityName: "Deck", predicate: p),
+ guard let d = try? objects(with: .deck, predicate: p),
let decks = d as? [KCDeck],
let deck = decks.first
else { return nil }
func kenzoDock(byDockId dockId: Int) -> KCKenzoDock? {
let dockPredicate = NSPredicate(format: "id = %ld", dockId)
- guard let k = try? objects(withEntityName: "KenzoDock", predicate: dockPredicate),
+ guard let k = try? objects(with: .kenzoDock, predicate: dockPredicate),
let kenzoDocks = k as? [KCKenzoDock],
let kenzoDock = kenzoDocks.first
else { return nil }
func mapArea(byId id: Int) -> KCMasterMapArea? {
let predicate = NSPredicate(format: "id = %ld", id)
- guard let a = try? objects(withEntityName: "MasterMapArea", predicate: predicate),
+ guard let a = try? objects(with: .masterMapArea, predicate: predicate),
let mapAreas = a as? [KCMasterMapArea],
let mapArea = mapAreas.first
else { return nil }
func mapInfo(area: Int, no: Int) -> KCMasterMapInfo? {
let predicate = NSPredicate(format: "maparea_id = %ld AND %K = %ld", area, "no", no)
- guard let m = try? objects(withEntityName: "MasterMapInfo", predicate: predicate),
+ guard let m = try? objects(with: .masterMapInfo, predicate: predicate),
let mapInfos = m as? [KCMasterMapInfo],
let mapInfo = mapInfos.first
else { return nil }
func masterMission(by id: Int) -> KCMasterMission? {
let p = NSPredicate(format: "id = %ld", id)
- guard let ss = try? objects(withEntityName: "MasterMission", predicate: p),
+ guard let ss = try? objects(with: .masterMission, predicate: p),
let missions = ss as? [KCMasterMission],
let mission = missions.first
else { return nil }
}
func masterShips() -> [KCMasterShipObject] {
- guard let s = try? objects(withEntityName: "MasterShip"),
+ guard let s = try? objects(with: .masterShip),
let ships = s as? [KCMasterShipObject]
else { return [] }
return ships
}
func sortedMasterShipsById() -> [KCMasterShipObject] {
let sortDesc = NSSortDescriptor(key: "id", ascending: true)
- guard let s = try? objects(withEntityName: "MasterShip", sortDescriptors: [sortDesc]),
+ guard let s = try? objects(with: .masterShip, sortDescriptors: [sortDesc]),
let ships = s as? [KCMasterShipObject]
else { return [] }
return ships
}
func masterShip(byId id: Int) -> KCMasterShipObject? {
let p = NSPredicate(format: "id = %ld", id)
- guard let s = try? objects(withEntityName: "MasterShip", predicate: p),
+ guard let s = try? objects(with: .masterShip, predicate: p),
let ships = s as? [KCMasterShipObject],
let ship = ships.first
else { return nil }
func sortedMasterSlotItemsById() -> [KCMasterSlotItemObject] {
let sortDesc = NSSortDescriptor(key: "id", ascending: true)
- guard let ms = try? objects(withEntityName: "MasterSlotItem", sortDescriptors: [sortDesc]),
+ guard let ms = try? objects(with: .masterSlotItem, sortDescriptors: [sortDesc]),
let masterSlotItems = ms as? [KCMasterSlotItemObject]
else { return [] }
return masterSlotItems
}
func masterSlotItems() -> [KCMasterSlotItemObject] {
- guard let ms = try? objects(withEntityName: "MasterSlotItem"),
+ guard let ms = try? objects(with: .masterSlotItem),
let masterSlotItems = ms as? [KCMasterSlotItemObject]
else { return [] }
return masterSlotItems
}
func masterSlotItem(by id: Int) -> KCMasterSlotItemObject? {
let p = NSPredicate(format: "id = %ld", id)
- guard let ma = try? objects(withEntityName: "MasterSlotItem", predicate: p),
+ guard let ma = try? objects(with: .masterSlotItem, predicate: p),
let masterSlotItems = ma as? [KCMasterSlotItemObject],
let masterSlotItem = masterSlotItems.first
else { return nil }
func masterSlotItemEquipType(by id: Int) -> KCMasterSlotItemEquipTypeObject? {
let predicate = NSPredicate(format: "id = %ld", id)
- guard let a = try? objects(withEntityName: "MasterSlotItemEquipType", predicate: predicate),
+ guard let a = try? objects(with: .masterSlotItemEquipType, predicate: predicate),
let types = a as? [KCMasterSlotItemEquipTypeObject],
let type = types.first
else { return nil }
}
func masterSTypes() -> [KCMasterSType] {
- guard let ms = try? objects(withEntityName: "MasterSType"),
+ guard let ms = try? objects(with: .masterSType),
let masterSTypes = ms as? [KCMasterSType]
else {
print("MaserShipCommand: MasterSType is not found")
}
func sortedMasterSTypesById() -> [KCMasterSType] {
let sortDesc = NSSortDescriptor(key: "id", ascending: true)
- guard let ms = try? objects(withEntityName: "MasterSType", sortDescriptors: [sortDesc]),
+ guard let ms = try? objects(with: .masterSType, sortDescriptors: [sortDesc]),
let masterSTypes = ms as? [KCMasterSType]
else {
print("MaserShipCommand: MasterSType is not found")
}
func material() -> KCMaterial? {
- guard let m = try? objects(withEntityName: "Material"),
+ guard let m = try? objects(with: .material),
let materials = m as? [KCMaterial],
let material = materials.first
else { return nil }
return material
}
func createMaterial() -> KCMaterial? {
- return insertNewObject(forEntityName: "Material") as? KCMaterial
+ return insertNewObject(for: .material) as? KCMaterial
}
func nyukyoDock(by id: Int) -> KCNyukyoDock? {
let p = NSPredicate(format: "id = %ld", id)
- guard let d = try? objects(withEntityName: "NyukyoDock", predicate: p),
+ guard let d = try? objects(with: .nyukyoDock, predicate: p),
let ndocks = d as? [KCNyukyoDock],
let ndock = ndocks.first
else { return nil }
func ships(byDeckId deckId: Int) -> [KCShipObject] {
let predicate = NSPredicate(format: "id = %d", deckId)
- guard let d = try? objects(withEntityName: "Deck", predicate: predicate),
+ guard let d = try? objects(with: .deck, predicate: predicate),
let decks = d as? [KCDeck],
let deck = decks.first
else { return [] }
func ship(byId shipId: Int) -> KCShipObject? {
if shipId < 1 { return nil }
let predicate = NSPredicate(format: "id = %d", shipId)
- guard let s = try? objects(withEntityName: "Ship", predicate: predicate),
+ guard let s = try? objects(with: .ship, predicate: predicate),
let ships = s as? [KCShipObject],
let ship = ships.first
else { return nil }
}
func ships(byId shipId: Int) -> [KCShipObject] {
let predicate = NSPredicate(format: "id = %d", shipId)
- guard let d = try? objects(withEntityName: "Ship", predicate: predicate),
+ guard let d = try? objects(with: .ship, predicate: predicate),
let ships = d as? [KCShipObject]
else { return [] }
return ships
}
func ships(exclude shipIds: [Int]) -> [KCShipObject] {
let predicate = NSPredicate(format: "NOT id IN %@", shipIds)
- guard let s = try? objects(withEntityName: "Ship", predicate: predicate),
+ guard let s = try? objects(with: .ship, predicate: predicate),
let ships = s as? [KCShipObject]
else { return [] }
return ships
}
func shipsInFleet() -> [KCShipObject] {
let predicate = NSPredicate(format: "NOT fleet = 0")
- guard let a = try? objects(withEntityName: "Ship", predicate: predicate),
+ guard let a = try? objects(with: .ship, predicate: predicate),
let ships = a as? [KCShipObject]
else { return [] }
return ships
}
func createShip() -> KCShipObject? {
- return insertNewObject(forEntityName: "Ship") as? KCShipObject
+ return insertNewObject(for: .ship) as? KCShipObject
}
func masterSlotItemID(bySlotItemId slotItemId: Int) -> Int {
if slotItemId < 1 { return 0 }
let predicate = NSPredicate(format: "id = %d", argumentArray: [slotItemId])
- guard let s = try? objects(withEntityName: "SlotItem", predicate: predicate),
+ guard let s = try? objects(with: .slotItem, predicate: predicate),
let slotItems = s as? [KCSlotItemObject],
let slotItem = slotItems.first
else { return 0 }
func slotItem(byId itemId: Int) -> KCSlotItemObject? {
let p = NSPredicate(format: "id = %ld", itemId)
- guard let sl = try? objects(withEntityName: "SlotItem", predicate: p),
+ guard let sl = try? objects(with: .slotItem, predicate: p),
let slotItems = sl as? [KCSlotItemObject],
let slotItem = slotItems.first
else { return nil }
}
func sortedSlotItemsById() -> [KCSlotItemObject] {
let sortDesc = NSSortDescriptor(key: "id", ascending: true)
- guard let s = try? objects(withEntityName: "SlotItem", sortDescriptors: [sortDesc]),
+ guard let s = try? objects(with: .slotItem, sortDescriptors: [sortDesc]),
let slotItems = s as? [KCSlotItemObject]
else { return [] }
return slotItems
}
func slotItems() -> [KCSlotItemObject] {
- guard let s = try? objects(withEntityName: "SlotItem"),
+ guard let s = try? objects(with: .slotItem),
let slotItems = s as? [KCSlotItemObject]
else { return [] }
return slotItems
}
func slotItems(in itemIds: [Int]) -> [KCSlotItemObject] {
let predicate = NSPredicate(format: "id IN %@", itemIds)
- guard let s = try? objects(withEntityName: "SlotItem", predicate: predicate),
+ guard let s = try? objects(with: .slotItem, predicate: predicate),
let slotItems = s as? [KCSlotItemObject]
else { return [] }
return slotItems
}
func slotItems(exclude itemIds: [Int]) -> [KCSlotItemObject] {
let predicate = NSPredicate(format: "NOT id IN %@", itemIds)
- guard let s = try? objects(withEntityName: "SlotItem", predicate: predicate),
+ guard let s = try? objects(with: .slotItem, predicate: predicate),
let slotItems = s as? [KCSlotItemObject]
else { return [] }
return slotItems
}
func createSlotItem() -> KCSlotItemObject? {
- return insertNewObject(forEntityName: "SlotItem") as? KCSlotItemObject
+ return insertNewObject(for: .slotItem) as? KCSlotItemObject
}
func quests() -> [KCQuest] {
- return try! objects(withEntityName: "Quest") as? [KCQuest] ?? []
+ return try! objects(with: .quest) as? [KCQuest] ?? []
}
func quest(by no: Int) -> KCQuest? {
let p = NSPredicate(format: "%K = %ld", "no", no)
- guard let qu = try? objects(withEntityName: "Quest", predicate: p),
+ guard let qu = try? objects(with: .quest, predicate: p),
let que = qu as? [KCQuest],
let quest = que.first
else { return nil }
}
func quests(in range: CountableClosedRange<Int>) -> [KCQuest] {
let p = NSPredicate(format: "%K In %@", "no", range.map {$0})
- guard let qu = try? objects(withEntityName: "Quest", predicate: p),
+ guard let qu = try? objects(with: .quest, predicate: p),
let quests = qu as? [KCQuest]
else { return [] }
return quests
}
func sortedQuestByNo() -> [KCQuest] {
let sortDesc = NSSortDescriptor(key: "no", ascending: true)
- guard let qu = try? objects(withEntityName: "Quest", sortDescriptors: [sortDesc]),
+ guard let qu = try? objects(with: .quest, sortDescriptors: [sortDesc]),
let quests = qu as? [KCQuest]
else { return [] }
return quests
}
func createQuest() -> KCQuest? {
- return insertNewObject(forEntityName: "Quest") as? KCQuest
+ return insertNewObject(for: .quest) as? KCQuest
}
}
extension MappingConfiguration {
func change(dataKey: String) -> MappingConfiguration {
- return MappingConfiguration(entityName: self.entityName,
+ return MappingConfiguration(entity: self.entity,
dataKey: dataKey,
primaryKey: self.primaryKey,
compositPrimaryKeys: self.compositPrimaryKeys,
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
- self.configuration = MappingConfiguration(entityName: "Ship",
+ self.configuration = MappingConfiguration(entity: .ship,
dataKey: dataKey(apiResponse),
editorStore: ServerDataStore.oneTimeEditor(),
ignoreKeys:
required init(_ apiResponse: APIResponse) {
self.apiResponse = apiResponse
- self.configuration = MappingConfiguration(entityName: "SlotItem",
+ self.configuration = MappingConfiguration(entity: .slotItem,
dataKey: dataKey(apiResponse),
editorStore: ServerDataStore.oneTimeEditor())
}
}
}
- private func localData(_ name: String, sortBy: String = "date") -> [NSManagedObject] {
+ private func localData(_ entity: Entity, sortBy: String = "date") -> [NSManagedObject] {
let sortDesc = NSSortDescriptor(key: sortBy, ascending: true)
- guard let a = try? store.objects(withEntityName: name, sortDescriptors: [sortDesc], predicate: nil),
+ guard let a = try? store.objects(with: entity, sortDescriptors: [sortDesc], predicate: nil),
let array = a as? [KaihatuHistory]
else {
- print("Can not get \(name)")
+ print("Can not get \(entity.name)")
return []
}
return array
}
private func dataOfKaihatuHistory() -> Data? {
- return (localData("KaihatuHistory") as? [KaihatuHistory])?
+ return (localData(.kaihatuHistory) as? [KaihatuHistory])?
.map {
LFSeparateLine.empty
.append($0.date)
.data(using: .utf8)
}
private func dataOfKenzoHistory() -> Data? {
- return (localData("KenzoHistory") as? [KenzoHistory])?
+ return (localData(.kenzoHistory) as? [KenzoHistory])?
.map {
LFSeparateLine.empty
.append($0.date)
.data(using: .utf8)
}
private func dataOfKenzoMark() -> Data? {
- return (localData("KenzoMark", sortBy: "kDockId") as? [KenzoMark])?
+ return (localData(.kenzoMark, sortBy: "kDockId") as? [KenzoMark])?
.map {
LFSeparateLine.empty
.append($0.date)
.data(using: .utf8)
}
private func dataOfDropShipHistory() -> Data? {
- return (localData("DropShipHistory") as? [DropShipHistory])?
+ return (localData(.dropShipHistory) as? [DropShipHistory])?
.map {
LFSeparateLine.empty
.append($0.date)
let commandLv = Int(attr[9])
else { return }
let p = NSPredicate(format: "date = %@", argumentArray: [date])
- guard let oo = try? store.objects(withEntityName: "KaihatuHistory", predicate: p),
+ guard let oo = try? store.objects(with: .kaihatuHistory, predicate: p),
oo.count != 0
else { return }
- guard let obj = store.insertNewObject(forEntityName: "KaihatuHistory") as? KaihatuHistory
+ guard let obj = store.insertNewObject(for: .kaihatuHistory) as? KaihatuHistory
else { return }
obj.date = date
let commandLv = Int(attr[10])
else { return }
let p = NSPredicate(format: "date = %@", argumentArray: [date])
- guard let oo = try? store.objects(withEntityName: "KenzoHistory", predicate: p),
+ guard let oo = try? store.objects(with: .kenzoHistory, predicate: p),
oo.count != 0
else { return }
- guard let obj = store.insertNewObject(forEntityName: "KenzoHistory") as? KenzoHistory
+ guard let obj = store.insertNewObject(for: .kenzoHistory) as? KenzoHistory
else { return }
obj.date = date
let commandLv = Int(attr[10])
else { return }
let p = NSPredicate(format: "date = %@", argumentArray: [date])
- guard let oo = try? store.objects(withEntityName: "KenzoMark", predicate: p),
+ guard let oo = try? store.objects(with: .kenzoMark, predicate: p),
oo.count != 0
else { return }
- guard let obj = store.insertNewObject(forEntityName: "KenzoMark") as? KenzoMark
+ guard let obj = store.insertNewObject(for: .kenzoMark) as? KenzoMark
else { return }
obj.date = date
let mark = Int(attr[7])
else { return }
let p = NSPredicate(format: "date = %@", argumentArray: [date])
- guard let oo = try? store.objects(withEntityName: "DropShipHistory", predicate: p),
+ guard let oo = try? store.objects(with: .dropShipHistory, predicate: p),
oo.count != 0
else { return }
- guard let obj = store.insertNewObject(forEntityName: "DropShipHistory") as? DropShipHistory
+ guard let obj = store.insertNewObject(for: .dropShipHistory) as? DropShipHistory
else { return }
obj.date = date
extension CoreDataCore {
static let temporary = CoreDataCore(.temporary)
}
+extension Entity {
+ static let battle = Entity(name: "Battle")
+ static let damage = Entity(name: "Damage")
+ static let guardEscaped = Entity(name: "GuardEscaped")
+}
class TemporaryDataStore: CoreDataAccessor, CoreDataManager {
static var `default` = TemporaryDataStore(type: .reader)
return battles().first
}
func battles() -> [KCBattle] {
- guard let a = try? self.objects(withEntityName: "Battle"),
+ guard let a = try? self.objects(with: .battle),
let array = a as? [KCBattle]
else { return [] }
return array
func resetBattle() {
battles().forEach { delete($0) }
}
+ func createBattle() -> KCBattle? {
+ return insertNewObject(for: .battle) as? KCBattle
+ }
func sortedDamagesById() -> [KCDamage] {
let sortDescriptor = NSSortDescriptor(key: "id", ascending: true)
- guard let a = try? objects(withEntityName: "Damage", sortDescriptors: [sortDescriptor]),
+ guard let a = try? objects(with: .damage, sortDescriptors: [sortDescriptor]),
let array = a as? [KCDamage]
else { return [] }
return array
}
func damages() -> [KCDamage] {
- guard let a = try? objects(withEntityName: "Damage"),
+ guard let a = try? objects(with: .damage),
let array = a as? [KCDamage]
else { return [] }
return array
}
func createDamage() -> KCDamage? {
- return insertNewObject(forEntityName: "Damage") as? KCDamage
+ return insertNewObject(for: .damage) as? KCDamage
}
func guardEscaped() -> [KCGuardEscaped] {
- guard let e = try? objects(withEntityName: "GuardEscaped"),
+ guard let e = try? objects(with: .guardEscaped),
let escapeds = e as? [KCGuardEscaped]
else { return [] }
return escapeds
}
func ensuredGuardEscaped(byShipId shipId: Int) -> KCGuardEscaped? {
let p = NSPredicate(format: "shipID = %ld AND ensured = TRUE", shipId)
- guard let e = try? objects(withEntityName: "GuardEscaped", predicate: p),
+ guard let e = try? objects(with: .guardEscaped, predicate: p),
let escapes = e as? [KCGuardEscaped],
let escape = escapes.first
else { return nil }
}
func notEnsuredGuardEscaped() -> [KCGuardEscaped] {
let predicate = NSPredicate(format: "ensured = FALSE")
- guard let e = try? objects(withEntityName: "GuardEscaped", predicate: predicate),
+ guard let e = try? objects(with: .guardEscaped, predicate: predicate),
let escapeds = e as? [KCGuardEscaped]
else { return [] }
return escapeds
}
func createGuardEscaped() -> KCGuardEscaped? {
- return insertNewObject(forEntityName: "GuardEscaped") as? KCGuardEscaped
+ return insertNewObject(for: .guardEscaped) as? KCGuardEscaped
}
}