Updated DatabaseManager to use class properties for file URLs

This commit is contained in:
Riley Testut 2015-11-01 03:16:20 -06:00
parent 2aa3535ff3
commit 7746ada490

View File

@ -21,6 +21,50 @@ class DatabaseManager
let managedObjectContext: NSManagedObjectContext
class var databaseDirectoryURL: NSURL
{
let documentsDirectoryURL: NSURL
if UIDevice.currentDevice().userInterfaceIdiom == .TV
{
documentsDirectoryURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.CachesDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).first!
}
else
{
documentsDirectoryURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).first!
}
let databaseDirectoryURL = documentsDirectoryURL.URLByAppendingPathComponent("Database")
do
{
try NSFileManager.defaultManager().createDirectoryAtURL(databaseDirectoryURL, withIntermediateDirectories: true, attributes: nil)
}
catch
{
print(error)
}
return databaseDirectoryURL
}
class var gamesDirectoryURL: NSURL
{
let gamesDirectoryURL = DatabaseManager.databaseDirectoryURL.URLByAppendingPathComponent("Games")
do
{
try NSFileManager.defaultManager().createDirectoryAtURL(gamesDirectoryURL, withIntermediateDirectories: true, attributes: nil)
}
catch
{
print(error)
}
return gamesDirectoryURL
}
private let privateManagedObjectContext: NSManagedObjectContext
// MARK: - Initialization -
@ -45,7 +89,7 @@ class DatabaseManager
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0)) {
let storeURL = self.databaseDirectoryURL().URLByAppendingPathComponent("Delta.sqlite")
let storeURL = DatabaseManager.databaseDirectoryURL.URLByAppendingPathComponent("Delta.sqlite")
let options = [NSMigratePersistentStoresAutomaticallyOption: true, NSInferMappingModelAutomaticallyOption: true]
@ -140,16 +184,13 @@ class DatabaseManager
let game = Game.insertIntoManagedObjectContext(managedObjectContext)
game.name = URL.URLByDeletingPathExtension?.lastPathComponent ?? NSLocalizedString("Game", comment: "")
game.identifier = FileHash.sha1HashOfFileAtPath(URL.path)
game.fileURL = self.gamesDirectoryURL().URLByAppendingPathComponent(game.identifier)
game.identifier = identifier
game.filename = filename
game.typeIdentifier = Game.typeIdentifierForURL(URL) ?? kUTTypeDeltaGame as String
do
{
try NSFileManager.defaultManager().moveItemAtURL(URL, toURL: game.fileURL)
try NSFileManager.defaultManager().moveItemAtURL(URL, toURL: DatabaseManager.sharedManager.gamesDirectoryURL().URLByAppendingPathComponent(game.identifier + ".smc"))
try NSFileManager.defaultManager().moveItemAtURL(URL, toURL: DatabaseManager.gamesDirectoryURL.URLByAppendingPathComponent(game.identifier + ".smc"))
identifiers.append(game.identifier)
}
@ -192,39 +233,4 @@ class DatabaseManager
return managedObjectContext
}
// MARK: - File URLs -
private func databaseDirectoryURL() -> NSURL
{
let documentsDirectoryURL = NSFileManager.defaultManager().URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask).first!
let databaseDirectoryURL = documentsDirectoryURL.URLByAppendingPathComponent("Database")
do
{
try NSFileManager.defaultManager().createDirectoryAtURL(databaseDirectoryURL, withIntermediateDirectories: true, attributes: nil)
}
catch
{
print(error)
}
return databaseDirectoryURL
}
private func gamesDirectoryURL() -> NSURL
{
let gamesDirectoryURL = self.databaseDirectoryURL().URLByAppendingPathComponent("Games")
do
{
try NSFileManager.defaultManager().createDirectoryAtURL(gamesDirectoryURL, withIntermediateDirectories: true, attributes: nil)
}
catch
{
print(error)
}
return gamesDirectoryURL
}
}