|
@@ -27,14 +27,30 @@ Class to handle server sync.
|
|
|
*/
|
|
*/
|
|
|
class Sync{
|
|
class Sync{
|
|
|
|
|
|
|
|
|
|
+ var initial: Bool = false
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
Starts the sync process.
|
|
Starts the sync process.
|
|
|
|
|
+ Always asynchronously.
|
|
|
*/
|
|
*/
|
|
|
init(){
|
|
init(){
|
|
|
let url = buildUrl();
|
|
let url = buildUrl();
|
|
|
sync(url: url)
|
|
sync(url: url)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ Starts the sync process, synchronously or asynchronously.
|
|
|
|
|
+ :param: synchronous True for synchronous sync, false for asynchronously
|
|
|
|
|
+ */
|
|
|
|
|
+ init(synchronous: Bool){
|
|
|
|
|
+ if synchronous == true{
|
|
|
|
|
+ NSLog(":SYNC:LOG: Synchronous sync started.")
|
|
|
|
|
+ self.initial = true
|
|
|
|
|
+ }
|
|
|
|
|
+ let url = buildUrl();
|
|
|
|
|
+ sync(url: url)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
Builds the URL to perform the sync against.
|
|
Builds the URL to perform the sync against.
|
|
|
:returns: The URL.
|
|
:returns: The URL.
|
|
@@ -52,20 +68,20 @@ class Sync{
|
|
|
*/
|
|
*/
|
|
|
func sync(url: URL){
|
|
func sync(url: URL){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Sync started.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Sync started.")
|
|
|
|
|
|
|
|
//Synchronously get data
|
|
//Synchronously get data
|
|
|
let task = URLSession.shared.dataTask(with: url) { data, response, error in
|
|
let task = URLSession.shared.dataTask(with: url) { data, response, error in
|
|
|
guard error == nil else {
|
|
guard error == nil else {
|
|
|
- print("SYNC:ERROR: Unknown error.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Unknown error.")
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
guard let data = data else {
|
|
guard let data = data else {
|
|
|
- print("SYNC:ERROR: Data is empty.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Data is empty.")
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Data received.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Data received.")
|
|
|
|
|
|
|
|
var strData = String(data:data, encoding: String.Encoding.utf8)
|
|
var strData = String(data:data, encoding: String.Encoding.utf8)
|
|
|
|
|
|
|
@@ -81,21 +97,22 @@ class Sync{
|
|
|
let dataActivityTag : [String] = self.getTable(data: strData!, table: "activity_tag")
|
|
let dataActivityTag : [String] = self.getTable(data: strData!, table: "activity_tag")
|
|
|
let dataActivityItinerary : [String] = self.getTable(data: strData!, table: "activity_itinerary")
|
|
let dataActivityItinerary : [String] = self.getTable(data: strData!, table: "activity_itinerary")
|
|
|
let dataAlbum : [String] = self.getTable(data: strData!, table: "album")
|
|
let dataAlbum : [String] = self.getTable(data: strData!, table: "album")
|
|
|
- //let dataFestival : [String] = self.getTable(data: strData!, table: "festival")
|
|
|
|
|
- //let dataFestivalDay : [String] = self.getTable(data: strData!, table: "festival_day")
|
|
|
|
|
- //let dataFestivalEvent : [String] = self.getTable(data: strData!, table: "festival_event")
|
|
|
|
|
|
|
+ let dataFestival : [String] = self.getTable(data: strData!, table: "festival")
|
|
|
|
|
+ let dataFestivalDay : [String] = self.getTable(data: strData!, table: "festival_day")
|
|
|
|
|
+ let dataFestivalEvent : [String] = self.getTable(data: strData!, table: "festival_event")
|
|
|
//let dataFestivalEventImage : [String] = self.getTable(data: strData!, table: "festival_event_image")
|
|
//let dataFestivalEventImage : [String] = self.getTable(data: strData!, table: "festival_event_image")
|
|
|
- //let dataFestivalOffer : [String] = self.getTable(data: strData!, table: "festival_offer")
|
|
|
|
|
- //let dataPeople : [String] = self.getTable(data: strData!, table: "people")
|
|
|
|
|
- //let dataPhoto : [String] = self.getTable(data: strData!, table: "photo")
|
|
|
|
|
- //let dataPhotoAlbum : [String] = self.getTable(data: strData!, table: "photo_album")
|
|
|
|
|
|
|
+ let dataFestivalOffer : [String] = self.getTable(data: strData!, table: "festival_offer")
|
|
|
|
|
+ let dataPeople : [String] = self.getTable(data: strData!, table: "people")
|
|
|
|
|
+ let dataPhoto : [String] = self.getTable(data: strData!, table: "photo")
|
|
|
|
|
+ let dataPhotoAlbum : [String] = self.getTable(data: strData!, table: "photo_album")
|
|
|
//let dataPhotoComment : [String] = self.getTable(data: strData!, table: "photo_comment")
|
|
//let dataPhotoComment : [String] = self.getTable(data: strData!, table: "photo_comment")
|
|
|
let dataPlace : [String] = self.getTable(data: strData!, table: "place")
|
|
let dataPlace : [String] = self.getTable(data: strData!, table: "place")
|
|
|
let dataPost : [String] = self.getTable(data: strData!, table: "post")
|
|
let dataPost : [String] = self.getTable(data: strData!, table: "post")
|
|
|
let dataPostComment : [String] = self.getTable(data: strData!, table: "post_comment")
|
|
let dataPostComment : [String] = self.getTable(data: strData!, table: "post_comment")
|
|
|
let dataPostImage : [String] = self.getTable(data: strData!, table: "post_image")
|
|
let dataPostImage : [String] = self.getTable(data: strData!, table: "post_image")
|
|
|
let dataPostTag : [String] = self.getTable(data: strData!, table: "post_tag")
|
|
let dataPostTag : [String] = self.getTable(data: strData!, table: "post_tag")
|
|
|
- //let dataSponsor : [String] = self.getTable(data: strData!, table: "sponsor")
|
|
|
|
|
|
|
+ let dataSponsor : [String] = self.getTable(data: strData!, table: "sponsor")
|
|
|
|
|
+ let dataSettings: [String] = self.getTable(data: strData!, table: "settings")
|
|
|
|
|
|
|
|
//One by one, save the received data
|
|
//One by one, save the received data
|
|
|
self.saveTableActivity(entries : dataActivity)
|
|
self.saveTableActivity(entries : dataActivity)
|
|
@@ -110,12 +127,25 @@ class Sync{
|
|
|
self.saveTablePostTag(entries: dataPostTag)
|
|
self.saveTablePostTag(entries: dataPostTag)
|
|
|
|
|
|
|
|
self.saveTablePlace(entries: dataPlace)
|
|
self.saveTablePlace(entries: dataPlace)
|
|
|
|
|
+ self.saveTablePeople(entries: dataPeople)
|
|
|
|
|
|
|
|
self.saveTableAlbum(entries: dataAlbum)
|
|
self.saveTableAlbum(entries: dataAlbum)
|
|
|
|
|
+ self.saveTablePhoto(entries: dataPhoto)
|
|
|
|
|
+ self.saveTablePhotoAlbum(entries: dataPhotoAlbum)
|
|
|
|
|
+
|
|
|
|
|
+ self.saveTableFestival(entries: dataFestival)
|
|
|
|
|
+ self.saveTableFestivalDay(entries: dataFestivalDay)
|
|
|
|
|
+ self.saveTableFestivalOffer(entries: dataFestivalOffer)
|
|
|
|
|
+ self.saveTableFestivalEvent(entries: dataFestivalEvent)
|
|
|
|
|
+
|
|
|
|
|
+ self.saveTableSponsor(entries: dataSponsor)
|
|
|
|
|
+
|
|
|
|
|
+ self.saveSettings(entries: dataSettings)
|
|
|
|
|
+
|
|
|
|
|
|
|
|
//DEBUG: Tester, Debug only
|
|
//DEBUG: Tester, Debug only
|
|
|
// Test if a entity has entries
|
|
// Test if a entity has entries
|
|
|
- let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
|
|
|
|
|
+ /*let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
|
let fetchRequest: NSFetchRequest<Post> = Post.fetchRequest() //Entity to debug
|
|
let fetchRequest: NSFetchRequest<Post> = Post.fetchRequest() //Entity to debug
|
|
@@ -124,14 +154,22 @@ class Sync{
|
|
|
//go get the results
|
|
//go get the results
|
|
|
let searchResults = try context.fetch(fetchRequest)
|
|
let searchResults = try context.fetch(fetchRequest)
|
|
|
|
|
|
|
|
- print("SYNC:DEBUG: Num of results = \(searchResults.count).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:DEBUG: Num of results = \(searchResults.count).")
|
|
|
for r in searchResults as [NSManagedObject] {
|
|
for r in searchResults as [NSManagedObject] {
|
|
|
- print("SYNC:DEBUG: id: \(r.value(forKey: "id")).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:DEBUG: id: \(r.value(forKey: "id")).")
|
|
|
}
|
|
}
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:DEBUG: Error with request: \(error).")
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ NSLog(":SYNC:DEBUG: Error with request: \(error).")
|
|
|
|
|
+ }*/
|
|
|
//End tester
|
|
//End tester
|
|
|
|
|
+
|
|
|
|
|
+ // If it's the initial sync, hide the segue
|
|
|
|
|
+ if self.initial == true{
|
|
|
|
|
+ NSLog(":SYNC:LOG: Finishing synchronous sync.")
|
|
|
|
|
+ let delegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
|
|
+ delegate.controller?.initialSync(showScreen: false)
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
task.resume()
|
|
task.resume()
|
|
@@ -147,7 +185,7 @@ class Sync{
|
|
|
func getTable(data: String, table: String) -> [String]{
|
|
func getTable(data: String, table: String) -> [String]{
|
|
|
//Does the table exists?
|
|
//Does the table exists?
|
|
|
if data.indexOf(target: "\"\(table)\":[") == nil{
|
|
if data.indexOf(target: "\"\(table)\":[") == nil{
|
|
|
- print("SYNC:LOG: Empty table: \(table).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Empty table: \(table).")
|
|
|
return [String]()
|
|
return [String]()
|
|
|
}
|
|
}
|
|
|
let iS : Int? = data.indexOf(target: "\"\(table)\":[")
|
|
let iS : Int? = data.indexOf(target: "\"\(table)\":[")
|
|
@@ -163,39 +201,38 @@ class Sync{
|
|
|
entries[0] = entries[0].subStr(start: 1, end: entries[0].length - 1)
|
|
entries[0] = entries[0].subStr(start: 1, end: entries[0].length - 1)
|
|
|
entries[entries.count - 1] = entries[entries.count - 1].subStr(start: 0, end: entries[entries.count - 1].length - 2)
|
|
entries[entries.count - 1] = entries[entries.count - 1].subStr(start: 0, end: entries[entries.count - 1].length - 2)
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Table \(table) has \(entries.count) rows.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Table \(table) has \(entries.count) rows.")
|
|
|
|
|
|
|
|
//Return the array
|
|
//Return the array
|
|
|
return entries
|
|
return entries
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- // FIX: ERROR in API.
|
|
|
|
|
/**
|
|
/**
|
|
|
Saves the data in the table.
|
|
Saves the data in the table.
|
|
|
:param: entries Array of strings containing the rows of the table, in JSON format.
|
|
:param: entries Array of strings containing the rows of the table, in JSON format.
|
|
|
*/
|
|
*/
|
|
|
- func saveTablePeople(entries : [String]){
|
|
|
|
|
|
|
+ func saveTablePlace(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table People.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Place.")
|
|
|
|
|
|
|
|
//Set up context
|
|
//Set up context
|
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
|
context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
|
|
|
|
|
|
- let entity = NSEntityDescription.entity(forEntityName: "People", in: context)
|
|
|
|
|
|
|
+ let entity = NSEntityDescription.entity(forEntityName: "Place", in: context)
|
|
|
|
|
|
|
|
var row: NSManagedObject
|
|
var row: NSManagedObject
|
|
|
|
|
|
|
|
//Delete all previous entries
|
|
//Delete all previous entries
|
|
|
- let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "People")
|
|
|
|
|
|
|
+ let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Place")
|
|
|
let request = NSBatchDeleteRequest(fetchRequest: fetch)
|
|
let request = NSBatchDeleteRequest(fetchRequest: fetch)
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up People entity: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Places entity: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up People entity")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Places entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
@@ -256,9 +293,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Place with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Place with id \(id): \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Place with id \(id).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Place with id \(id).")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -267,91 +304,67 @@ class Sync{
|
|
|
Saves the data in the table.
|
|
Saves the data in the table.
|
|
|
:param: entries Array of strings containing the rows of the table, in JSON format.
|
|
:param: entries Array of strings containing the rows of the table, in JSON format.
|
|
|
*/
|
|
*/
|
|
|
- func saveTablePlace(entries : [String]){
|
|
|
|
|
|
|
+ func saveTablePeople(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table Place.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table People.")
|
|
|
|
|
|
|
|
//Set up context
|
|
//Set up context
|
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
|
context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
|
|
|
|
|
|
- let entity = NSEntityDescription.entity(forEntityName: "Place", in: context)
|
|
|
|
|
|
|
+ let entity = NSEntityDescription.entity(forEntityName: "People", in: context)
|
|
|
|
|
|
|
|
var row: NSManagedObject
|
|
var row: NSManagedObject
|
|
|
|
|
|
|
|
//Delete all previous entries
|
|
//Delete all previous entries
|
|
|
- let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Place")
|
|
|
|
|
|
|
+ let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "People")
|
|
|
let request = NSBatchDeleteRequest(fetchRequest: fetch)
|
|
let request = NSBatchDeleteRequest(fetchRequest: fetch)
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up Places entity: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up People entity: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up Places entity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up People entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
|
for entry in entries{
|
|
for entry in entries{
|
|
|
|
|
|
|
|
|
|
+ row = NSManagedObject(entity: entity!, insertInto: context)
|
|
|
|
|
+
|
|
|
//Get id
|
|
//Get id
|
|
|
var str = entry
|
|
var str = entry
|
|
|
- let id : Int = Int(str.subStr(start : str.indexOf(target : "\"id\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
|
|
+ let id: Int = Int(str.subStr(start : str.indexOf(target : "\"id\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(id, forKey: "id")
|
|
|
|
|
|
|
|
//Get name_es
|
|
//Get name_es
|
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
- let name_es : String = str.subStr(start : str.indexOf(target : "\"name_es\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
|
|
+ let name_es: String = str.subStr(start : str.indexOf(target : "\"name_es\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_es, forKey: "name_es")
|
|
|
|
|
|
|
|
//Get name_en
|
|
//Get name_en
|
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
- let name_en : String = str.subStr(start : str.indexOf(target : "\"name_en\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
|
|
+ let name_en: String = str.subStr(start : str.indexOf(target : "\"name_en\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_en, forKey: "name_en")
|
|
|
|
|
|
|
|
//Get name_eu
|
|
//Get name_eu
|
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
let name_eu : String = str.subStr(start : str.indexOf(target : "\"name_eu\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
let name_eu : String = str.subStr(start : str.indexOf(target : "\"name_eu\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_eu, forKey: "name_eu")
|
|
|
|
|
|
|
|
- //Get address_es
|
|
|
|
|
- str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
- let address_es : String = str.subStr(start : str.indexOf(target : "\"address_es\":")! + 14, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
-
|
|
|
|
|
- //Get address_en
|
|
|
|
|
- str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
- let address_en : String = str.subStr(start : str.indexOf(target : "\"address_en\":")! + 14, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
-
|
|
|
|
|
- //Get address_eu
|
|
|
|
|
- str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
- let address_eu : String = str.subStr(start : str.indexOf(target : "\"address_eu\":")! + 14, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
-
|
|
|
|
|
- //Get cp
|
|
|
|
|
- str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
- let cp : String = str.subStr(start : str.indexOf(target : "\"cp\":")! + 6, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
-
|
|
|
|
|
- //Get lat
|
|
|
|
|
- str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
- let lat : Float = Float(str.subStr(start : str.indexOf(target : "\"lat\":")! + 7, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
-
|
|
|
|
|
- //Get lon
|
|
|
|
|
|
|
+ //Get link
|
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
- let lon : Float = Float(str.subStr(start : str.indexOf(target : "\"lon\":")! + 7, end : str.length - 2))!
|
|
|
|
|
|
|
+ let link : String = str.subStr(start : str.indexOf(target : "\"link\":")! + 8, end : str.length - 2)
|
|
|
|
|
+ row.setValue(link, forKey: "link")
|
|
|
|
|
|
|
|
//Save CoreData
|
|
//Save CoreData
|
|
|
- row = NSManagedObject(entity: entity!, insertInto: context)
|
|
|
|
|
- row.setValue(id, forKey: "id")
|
|
|
|
|
- row.setValue(name_es, forKey: "name_es")
|
|
|
|
|
- row.setValue(name_en, forKey: "name_en")
|
|
|
|
|
- row.setValue(name_eu, forKey: "name_eu")
|
|
|
|
|
- row.setValue(address_es, forKey: "address_es")
|
|
|
|
|
- row.setValue(address_en, forKey: "address_en")
|
|
|
|
|
- row.setValue(address_eu, forKey: "address_eu")
|
|
|
|
|
- row.setValue(cp, forKey: "cp")
|
|
|
|
|
- row.setValue(lat, forKey: "lat")
|
|
|
|
|
- row.setValue(lon, forKey: "lon")
|
|
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Place with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Place with id \(id): \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Place with id \(id).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Place with id \(id).")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -362,7 +375,7 @@ class Sync{
|
|
|
*/
|
|
*/
|
|
|
func saveTablePost(entries : [String]){
|
|
func saveTablePost(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table Post.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Post.")
|
|
|
|
|
|
|
|
let dateFormatter = DateFormatter()
|
|
let dateFormatter = DateFormatter()
|
|
|
dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
@@ -382,9 +395,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up Post entity: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Post entity: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up Post entity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Post entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
@@ -453,9 +466,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Post with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Post with id \(id): \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Post with id \(id).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Post with id \(id).")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -466,7 +479,7 @@ class Sync{
|
|
|
*/
|
|
*/
|
|
|
func saveTablePostComment(entries : [String]){
|
|
func saveTablePostComment(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table Post_comment.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Post_comment.")
|
|
|
|
|
|
|
|
let dateFormatter = DateFormatter()
|
|
let dateFormatter = DateFormatter()
|
|
|
dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
@@ -486,9 +499,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up Post_comment entity: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Post_comment entity: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up Post_comment entity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Post_comment entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
@@ -530,9 +543,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Activity_comment with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity_comment with id \(id): \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Activity_comment with id \(id).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity_comment with id \(id).")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
@@ -544,7 +557,7 @@ class Sync{
|
|
|
*/
|
|
*/
|
|
|
func saveTablePostImage(entries : [String]){
|
|
func saveTablePostImage(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table Post_image.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Post_image.")
|
|
|
|
|
|
|
|
//Set up context
|
|
//Set up context
|
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
@@ -561,9 +574,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up Post_comment entity: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Post_comment entity: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up Post_comment entity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Post_comment entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
@@ -594,9 +607,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Post_image with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Post_image with id \(id): \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Post_image with id \(id).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Post_image with id \(id).")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -607,7 +620,7 @@ class Sync{
|
|
|
*/
|
|
*/
|
|
|
func saveTablePostTag(entries : [String]){
|
|
func saveTablePostTag(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table Post_tag.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Post_tag.")
|
|
|
|
|
|
|
|
//Set up context
|
|
//Set up context
|
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
@@ -624,9 +637,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up Post_tag entity: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Post_tag entity: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up Post_tag entity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Post_tag entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
@@ -647,9 +660,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Post_tag for post: \(post), tag: \(tag): \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Post_tag for post: \(post), tag: \(tag): \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Post_tag for post: \(post), tag: \(tag).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Post_tag for post: \(post), tag: \(tag).")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -660,7 +673,7 @@ class Sync{
|
|
|
*/
|
|
*/
|
|
|
func saveTableActivity(entries : [String]){
|
|
func saveTableActivity(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table Activity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Activity.")
|
|
|
|
|
|
|
|
let dateFormatter = DateFormatter()
|
|
let dateFormatter = DateFormatter()
|
|
|
dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
@@ -680,9 +693,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up Activity entity: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Activity entity: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up Activity entity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Activity entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
@@ -803,9 +816,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Activity with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity with id \(id): \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Activity with id \(id).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity with id \(id).")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
@@ -817,7 +830,7 @@ class Sync{
|
|
|
*/
|
|
*/
|
|
|
func saveTableActivityComment(entries : [String]){
|
|
func saveTableActivityComment(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table Activity_comment.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Activity_comment.")
|
|
|
|
|
|
|
|
let dateFormatter = DateFormatter()
|
|
let dateFormatter = DateFormatter()
|
|
|
dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
@@ -837,9 +850,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up Activity_comment entity: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Activity_comment entity: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up Activity_comment entity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Activity_comment entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
@@ -881,9 +894,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Activity_comment with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity_comment with id \(id): \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Activity_comment with id \(id).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity_comment with id \(id).")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|
|
}
|
|
@@ -895,7 +908,7 @@ class Sync{
|
|
|
*/
|
|
*/
|
|
|
func saveTableActivityImage(entries : [String]){
|
|
func saveTableActivityImage(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table Activity_image.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Activity_image.")
|
|
|
|
|
|
|
|
//Set up context
|
|
//Set up context
|
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
@@ -912,9 +925,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up Activity_comment entity: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Activity_comment entity: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up Activity_comment entity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Activity_comment entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
@@ -945,9 +958,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Activity_image with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity_image with id \(id): \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Activity_image with id \(id).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity_image with id \(id).")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -958,7 +971,7 @@ class Sync{
|
|
|
*/
|
|
*/
|
|
|
func saveTableActivityTag(entries : [String]){
|
|
func saveTableActivityTag(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table Activity_tag.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Activity_tag.")
|
|
|
|
|
|
|
|
//Set up context
|
|
//Set up context
|
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
@@ -975,9 +988,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up Activity_tag entity: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Activity_tag entity: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up Activity_tag entity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Activity_tag entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
@@ -998,9 +1011,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Activity_tag for activity \(activity), tag: \(tag): Error: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity_tag for activity \(activity), tag: \(tag): Error: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Activity_tag for activity \(activity), tag: \(tag).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity_tag for activity \(activity), tag: \(tag).")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -1012,7 +1025,7 @@ class Sync{
|
|
|
//CHECK: New (and probably better format than the others.)
|
|
//CHECK: New (and probably better format than the others.)
|
|
|
func saveTableActivityItinerary(entries : [String]){
|
|
func saveTableActivityItinerary(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table Activity_itinerary.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Activity_itinerary.")
|
|
|
|
|
|
|
|
let dateFormatter = DateFormatter()
|
|
let dateFormatter = DateFormatter()
|
|
|
dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
@@ -1032,9 +1045,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up Activity_itinerary entity: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Activity_itinerary entity: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up Activity_itinerary entity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Activity_itinerary entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
@@ -1093,7 +1106,7 @@ class Sync{
|
|
|
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
|
|
dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
|
|
|
let start = dateFormatter.date(from: str.subStr(start : str.indexOf(target : "\"start\":")! + 9, end : str.indexOf(target : ",\"")! - 2))!
|
|
let start = dateFormatter.date(from: str.subStr(start : str.indexOf(target : "\"start\":")! + 9, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
row.setValue(start, forKey: "start")
|
|
row.setValue(start, forKey: "start")
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
//Get end
|
|
//Get end
|
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
let end = str.subStr(start : str.indexOf(target : "\"end\":")! + 7, end : str.indexOf(target : ",\"")! - 2)
|
|
let end = str.subStr(start : str.indexOf(target : "\"end\":")! + 7, end : str.indexOf(target : ",\"")! - 2)
|
|
@@ -1110,9 +1123,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Activity_itinerary with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity_itinerary with id \(id): \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Activity_itinerary with id \(id).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Activity_itinerary with id \(id).")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -1121,10 +1134,9 @@ class Sync{
|
|
|
Saves the data in the table.
|
|
Saves the data in the table.
|
|
|
:param: entries Array of strings containing the rows of the table, in JSON format.
|
|
:param: entries Array of strings containing the rows of the table, in JSON format.
|
|
|
*/
|
|
*/
|
|
|
- //CHECK: New (and probably better format than the others.)
|
|
|
|
|
func saveTableAlbum(entries : [String]){
|
|
func saveTableAlbum(entries : [String]){
|
|
|
|
|
|
|
|
- print("SYNC:LOG: Saving table Album.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Album.")
|
|
|
|
|
|
|
|
//Set up context
|
|
//Set up context
|
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
@@ -1141,9 +1153,9 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.execute(request)
|
|
try context.execute(request)
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not clean up Album: \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Album: \(error), \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not clean up Album entity.")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Album entity.")
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//Loop new entries
|
|
//Loop new entries
|
|
@@ -1169,12 +1181,12 @@ class Sync{
|
|
|
//Get title_en
|
|
//Get title_en
|
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
let title_en : String = str.subStr(start : str.indexOf(target : "\"title_en\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
|
|
let title_en : String = str.subStr(start : str.indexOf(target : "\"title_en\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
|
|
|
- row.setValue(title_es, forKey: "title_es")
|
|
|
|
|
|
|
+ row.setValue(title_en, forKey: "title_en")
|
|
|
|
|
|
|
|
//Get title_eu
|
|
//Get title_eu
|
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
let title_eu : String = str.subStr(start : str.indexOf(target : "\"title_eu\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
|
|
let title_eu : String = str.subStr(start : str.indexOf(target : "\"title_eu\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
|
|
|
- row.setValue(title_es, forKey: "title_es")
|
|
|
|
|
|
|
+ row.setValue(title_eu, forKey: "title_eu")
|
|
|
|
|
|
|
|
//Get description_es
|
|
//Get description_es
|
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
@@ -1206,10 +1218,738 @@ class Sync{
|
|
|
do {
|
|
do {
|
|
|
try context.save()
|
|
try context.save()
|
|
|
} catch let error as NSError {
|
|
} catch let error as NSError {
|
|
|
- print("SYNC:ERROR: Could not store Album with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Album with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Album with id \(id).")
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ Saves the data in the table.
|
|
|
|
|
+ :param: entries Array of strings containing the rows of the table, in JSON format.
|
|
|
|
|
+ */
|
|
|
|
|
+ func saveTablePhoto(entries : [String]){
|
|
|
|
|
+
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Photo.")
|
|
|
|
|
+
|
|
|
|
|
+ let dateFormatter = DateFormatter()
|
|
|
|
|
+ dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
|
|
|
+
|
|
|
|
|
+ //Set up context
|
|
|
|
|
+ let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
|
|
+ let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
|
|
|
+ context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
|
|
|
+
|
|
|
|
|
+ let entity = NSEntityDescription.entity(forEntityName: "Photo", in: context)
|
|
|
|
|
+
|
|
|
|
|
+ var row: NSManagedObject
|
|
|
|
|
+
|
|
|
|
|
+ //Delete all previous entries
|
|
|
|
|
+ let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Photo")
|
|
|
|
|
+ let request = NSBatchDeleteRequest(fetchRequest: fetch)
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.execute(request)
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Photo: \(error), \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Photo entity.")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Loop new entries
|
|
|
|
|
+ for entry in entries{
|
|
|
|
|
+
|
|
|
|
|
+ row = NSManagedObject(entity: entity!, insertInto: context)
|
|
|
|
|
+
|
|
|
|
|
+ //Get id
|
|
|
|
|
+ var str = entry
|
|
|
|
|
+ let id : Int = Int(str.subStr(start : str.indexOf(target : "\"id\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(id, forKey: "id")
|
|
|
|
|
+
|
|
|
|
|
+ //Get file
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let file : String = str.subStr(start : str.indexOf(target : "\"file\":")! + 8, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(file, forKey: "file")
|
|
|
|
|
+
|
|
|
|
|
+ //Get permalink
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let permalink : String = str.subStr(start : str.indexOf(target : "\"permalink\":")! + 13, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(permalink, forKey: "permalink")
|
|
|
|
|
+
|
|
|
|
|
+ //Get title_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let title_es : String = str.subStr(start : str.indexOf(target : "\"title_es\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(title_es, forKey: "title_es")
|
|
|
|
|
+
|
|
|
|
|
+ //Get title_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let title_en : String = str.subStr(start : str.indexOf(target : "\"title_en\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(title_en, forKey: "title_en")
|
|
|
|
|
+
|
|
|
|
|
+ //Get title_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let title_eu : String = str.subStr(start : str.indexOf(target : "\"title_eu\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(title_eu, forKey: "title_eu")
|
|
|
|
|
+
|
|
|
|
|
+ //Get description_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let description_es : String = str.subStr(start : str.indexOf(target : "\"description_es\":")! + 18, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (description_es != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(description_es, forKey: "description_es")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Get description_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let description_en : String = str.subStr(start : str.indexOf(target : "\"description_en\":")! + 18, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (description_en != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(description_en, forKey: "description_en")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Get description_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let description_eu : String = str.subStr(start : str.indexOf(target : "\"description_eu\":")! + 18, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (description_eu != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(description_eu, forKey: "description_eu")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Get uploaded
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
|
|
|
|
|
+ let uploaded = dateFormatter.date(from: str.subStr(start : str.indexOf(target : "\"uploaded\":")! + 12, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(uploaded, forKey: "uploaded")
|
|
|
|
|
+
|
|
|
|
|
+ //TODO: Ignoting place
|
|
|
|
|
+ //TODO: Ignoring width
|
|
|
|
|
+ //TODO: Ignoring height
|
|
|
|
|
+ //TODO: Ignoring size
|
|
|
|
|
+ //TODO: Ignoring username
|
|
|
|
|
+
|
|
|
|
|
+ //Save CoreData
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.save()
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Photo with id \(id): \(error), \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Photo with id \(id).")
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ Saves the data in the table.
|
|
|
|
|
+ :param: entries Array of strings containing the rows of the table, in JSON format.
|
|
|
|
|
+ */
|
|
|
|
|
+ func saveTablePhotoAlbum(entries : [String]){
|
|
|
|
|
+
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Photo_album.")
|
|
|
|
|
+
|
|
|
|
|
+ let dateFormatter = DateFormatter()
|
|
|
|
|
+ dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
|
|
|
+
|
|
|
|
|
+ //Set up context
|
|
|
|
|
+ let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
|
|
+ let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
|
|
|
+ context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
|
|
|
+
|
|
|
|
|
+ let entity = NSEntityDescription.entity(forEntityName: "Photo_album", in: context)
|
|
|
|
|
+
|
|
|
|
|
+ var row: NSManagedObject
|
|
|
|
|
+
|
|
|
|
|
+ //Delete all previous entries
|
|
|
|
|
+ let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Photo_album")
|
|
|
|
|
+ let request = NSBatchDeleteRequest(fetchRequest: fetch)
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.execute(request)
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Photo_album: \(error), \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Photo_album entity.")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Loop new entries
|
|
|
|
|
+ for entry in entries{
|
|
|
|
|
+
|
|
|
|
|
+ row = NSManagedObject(entity: entity!, insertInto: context)
|
|
|
|
|
+
|
|
|
|
|
+ //Get photo
|
|
|
|
|
+ var str = entry
|
|
|
|
|
+ let photo : Int = Int(str.subStr(start : str.indexOf(target : "\"photo\":")! + 9, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(photo, forKey: "photo")
|
|
|
|
|
+
|
|
|
|
|
+ //Get album
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let album : Int = Int(str.subStr(start : str.indexOf(target : "\"album\":")! + 9, end : str.length - 2))!
|
|
|
|
|
+ row.setValue(album, forKey: "album")
|
|
|
|
|
+
|
|
|
|
|
+ //Save CoreData
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.save()
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Photo_album entry \(error.userInfo).")
|
|
|
} catch {
|
|
} catch {
|
|
|
- print("SYNC:ERROR: Could not store Album with id \(id).")
|
|
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Photo_album entry.")
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ Saves the data in the table.
|
|
|
|
|
+ :param: entries Array of strings containing the rows of the table, in JSON format.
|
|
|
|
|
+ */
|
|
|
|
|
+ func saveTableFestival(entries : [String]){
|
|
|
|
|
+
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Festival.")
|
|
|
|
|
+
|
|
|
|
|
+ //Set up context
|
|
|
|
|
+ let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
|
|
+ let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
|
|
|
+ context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
|
|
|
+
|
|
|
|
|
+ let entity = NSEntityDescription.entity(forEntityName: "Festival", in: context)
|
|
|
|
|
+
|
|
|
|
|
+ var row: NSManagedObject
|
|
|
|
|
+
|
|
|
|
|
+ //Delete all previous entries
|
|
|
|
|
+ let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Festival")
|
|
|
|
|
+ let request = NSBatchDeleteRequest(fetchRequest: fetch)
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.execute(request)
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Festival: \(error), \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Festival entity.")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Loop new entries
|
|
|
|
|
+ for entry in entries{
|
|
|
|
|
+
|
|
|
|
|
+ row = NSManagedObject(entity: entity!, insertInto: context)
|
|
|
|
|
+
|
|
|
|
|
+ //Get id
|
|
|
|
|
+ var str = entry
|
|
|
|
|
+ let id: Int = Int(str.subStr(start : str.indexOf(target : "\"id\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(id, forKey: "id")
|
|
|
|
|
+
|
|
|
|
|
+ //Get year
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let file: Int = Int(str.subStr(start : str.indexOf(target : "\"year\":")! + 8, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(file, forKey: "year")
|
|
|
|
|
+
|
|
|
|
|
+ //Get text_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let text_es: String = str.subStr(start : str.indexOf(target : "\"text_es\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(text_es, forKey: "text_es")
|
|
|
|
|
+
|
|
|
|
|
+ //Get text_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let text_en: String = str.subStr(start : str.indexOf(target : "\"text_en\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(text_en, forKey: "text_en")
|
|
|
|
|
+
|
|
|
|
|
+ //Get text_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let text_eu: String = str.subStr(start : str.indexOf(target : "\"text_eu\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(text_eu, forKey: "text_eu")
|
|
|
|
|
+
|
|
|
|
|
+ //Get summary_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let summary_es: String = str.subStr(start : str.indexOf(target : "\"summary_es\":")! + 14, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(summary_es, forKey: "summary_es")
|
|
|
|
|
+
|
|
|
|
|
+ //Get summary_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let summary_en: String = str.subStr(start : str.indexOf(target : "\"summary_en\":")! + 14, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(summary_en, forKey: "summary_en")
|
|
|
|
|
+
|
|
|
|
|
+ //Get summary_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let summary_eu: String = str.subStr(start : str.indexOf(target : "\"summary_eu\":")! + 14, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(summary_eu, forKey: "summary_eu")
|
|
|
|
|
+
|
|
|
|
|
+ //Get img
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let img: String = str.subStr(start : str.indexOf(target : "\"img\":")! + 7, end : str.length - 2)
|
|
|
|
|
+ row.setValue(img, forKey: "img")
|
|
|
|
|
+
|
|
|
|
|
+ //Save CoreData
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.save()
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Festival entry \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Festival entry.")
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ Saves the data in the table.
|
|
|
|
|
+ :param: entries Array of strings containing the rows of the table, in JSON format.
|
|
|
|
|
+ */
|
|
|
|
|
+ func saveTableFestivalDay(entries : [String]){
|
|
|
|
|
+
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table FestivalDay.")
|
|
|
|
|
+
|
|
|
|
|
+ let dateFormatter = DateFormatter()
|
|
|
|
|
+ dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
|
|
|
+
|
|
|
|
|
+ //Set up context
|
|
|
|
|
+ let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
|
|
+ let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
|
|
|
+ context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
|
|
|
+
|
|
|
|
|
+ let entity = NSEntityDescription.entity(forEntityName: "Festival_day", in: context)
|
|
|
|
|
+
|
|
|
|
|
+ var row: NSManagedObject
|
|
|
|
|
+
|
|
|
|
|
+ //Delete all previous entries
|
|
|
|
|
+ let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Festival_day")
|
|
|
|
|
+ let request = NSBatchDeleteRequest(fetchRequest: fetch)
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.execute(request)
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Festival_day: \(error), \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Festival_day entity.")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Loop new entries
|
|
|
|
|
+ for entry in entries{
|
|
|
|
|
+
|
|
|
|
|
+ row = NSManagedObject(entity: entity!, insertInto: context)
|
|
|
|
|
+
|
|
|
|
|
+ //Get id
|
|
|
|
|
+ var str = entry
|
|
|
|
|
+ let id: Int = Int(str.subStr(start : str.indexOf(target : "\"id\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(id, forKey: "id")
|
|
|
|
|
+
|
|
|
|
|
+ //Get date
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ dateFormatter.dateFormat = "yyyy-MM-dd"
|
|
|
|
|
+ let date = dateFormatter.date(from: str.subStr(start : str.indexOf(target : "\"date\":")! + 8, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(date, forKey: "date")
|
|
|
|
|
+
|
|
|
|
|
+ //Get name_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let name_es: String = str.subStr(start : str.indexOf(target : "\"name_es\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_es, forKey: "name_es")
|
|
|
|
|
+
|
|
|
|
|
+ //Get name_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let name_en: String = str.subStr(start : str.indexOf(target : "\"name_en\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_en, forKey: "name_en")
|
|
|
|
|
+
|
|
|
|
|
+ //Get name_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let name_eu: String = str.subStr(start : str.indexOf(target : "\"name_eu\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_eu, forKey: "name_eu")
|
|
|
|
|
+
|
|
|
|
|
+ //Get price
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let price: Int = Int(str.subStr(start : str.indexOf(target : "\"price\":")! + 9, end : str.length - 2))!
|
|
|
|
|
+ row.setValue(price, forKey: "price")
|
|
|
|
|
+
|
|
|
|
|
+ //Save CoreData
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.save()
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Festival_day entry \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Festival_day entry.")
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ Saves the data in the table.
|
|
|
|
|
+ :param: entries Array of strings containing the rows of the table, in JSON format.
|
|
|
|
|
+ */
|
|
|
|
|
+ func saveTableFestivalOffer(entries : [String]){
|
|
|
|
|
+
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table FestivalOffer.")
|
|
|
|
|
+
|
|
|
|
|
+ //Set up context
|
|
|
|
|
+ let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
|
|
+ let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
|
|
|
+ context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
|
|
|
+
|
|
|
|
|
+ let entity = NSEntityDescription.entity(forEntityName: "Festival_offer", in: context)
|
|
|
|
|
+
|
|
|
|
|
+ var row: NSManagedObject
|
|
|
|
|
+
|
|
|
|
|
+ //Delete all previous entries
|
|
|
|
|
+ let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Festival_offer")
|
|
|
|
|
+ let request = NSBatchDeleteRequest(fetchRequest: fetch)
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.execute(request)
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Festival_offer: \(error), \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Festival_offer entity.")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Loop new entries
|
|
|
|
|
+ for entry in entries{
|
|
|
|
|
+
|
|
|
|
|
+ row = NSManagedObject(entity: entity!, insertInto: context)
|
|
|
|
|
+
|
|
|
|
|
+ // Get id
|
|
|
|
|
+ var str = entry
|
|
|
|
|
+ let id: Int = Int(str.subStr(start : str.indexOf(target : "\"id\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(id, forKey: "id")
|
|
|
|
|
+
|
|
|
|
|
+ // Get year
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let year: Int = Int(str.subStr(start : str.indexOf(target : "\"year\":")! + 8, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(year, forKey: "year")
|
|
|
|
|
+
|
|
|
|
|
+ // Get name_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let name_es: String = str.subStr(start : str.indexOf(target : "\"name_es\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_es, forKey: "name_es")
|
|
|
|
|
+
|
|
|
|
|
+ // Get name_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let name_en: String = str.subStr(start : str.indexOf(target : "\"name_en\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_en, forKey: "name_en")
|
|
|
|
|
+
|
|
|
|
|
+ // Get name_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let name_eu: String = str.subStr(start : str.indexOf(target : "\"name_eu\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_eu, forKey: "name_eu")
|
|
|
|
|
+
|
|
|
|
|
+ // Get description_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let description_es : String = str.subStr(start : str.indexOf(target : "\"description_es\":")! + 18, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (description_es != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(description_es, forKey: "description_es")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Get description_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let description_en : String = str.subStr(start : str.indexOf(target : "\"description_en\":")! + 18, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (description_en != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(description_en, forKey: "description_en")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Get description_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let description_eu : String = str.subStr(start : str.indexOf(target : "\"description_eu\":")! + 18, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (description_eu != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(description_eu, forKey: "description_eu")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Get days
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let days: Int = Int(str.subStr(start : str.indexOf(target : "\"days\":")! + 8, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(days, forKey: "days")
|
|
|
|
|
+
|
|
|
|
|
+ //Get price
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let price: Int = Int(str.subStr(start : str.indexOf(target : "\"price\":")! + 9, end : str.length - 2))!
|
|
|
|
|
+ row.setValue(price, forKey: "price")
|
|
|
|
|
+
|
|
|
|
|
+ //Save CoreData
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.save()
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Festival_offer entry \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Festival_offer entry.")
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ Saves the data in the table.
|
|
|
|
|
+ :param: entries Array of strings containing the rows of the table, in JSON format.
|
|
|
|
|
+ */
|
|
|
|
|
+ func saveTableFestivalEvent(entries : [String]){
|
|
|
|
|
+
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table FestivalEvent.")
|
|
|
|
|
+
|
|
|
|
|
+ let dateFormatter = DateFormatter()
|
|
|
|
|
+ dateFormatter.timeZone = TimeZone.ReferenceType.local
|
|
|
|
|
+
|
|
|
|
|
+ //Set up context
|
|
|
|
|
+ let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
|
|
+ let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
|
|
|
+ context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
|
|
|
+
|
|
|
|
|
+ let entity = NSEntityDescription.entity(forEntityName: "Festival_event", in: context)
|
|
|
|
|
+
|
|
|
|
|
+ var row: NSManagedObject
|
|
|
|
|
+
|
|
|
|
|
+ //Delete all previous entries
|
|
|
|
|
+ let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Festival_event")
|
|
|
|
|
+ let request = NSBatchDeleteRequest(fetchRequest: fetch)
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.execute(request)
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Festival_event: \(error), \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Festival_event entity.")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Loop new entries
|
|
|
|
|
+ for entry in entries{
|
|
|
|
|
+
|
|
|
|
|
+ row = NSManagedObject(entity: entity!, insertInto: context)
|
|
|
|
|
+
|
|
|
|
|
+ //Get id
|
|
|
|
|
+ var str = entry
|
|
|
|
|
+ let id: Int = Int(str.subStr(start : str.indexOf(target : "\"id\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(id, forKey: "id")
|
|
|
|
|
+
|
|
|
|
|
+ //Get gm
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let gm: Int = Int(str.subStr(start : str.indexOf(target : "\"gm\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(gm, forKey: "gm")
|
|
|
|
|
+
|
|
|
|
|
+ //Get title_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let title_es : String = str.subStr(start : str.indexOf(target : "\"title_es\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(title_es, forKey: "title_es")
|
|
|
|
|
+
|
|
|
|
|
+ //Get title_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let title_en : String = str.subStr(start : str.indexOf(target : "\"title_en\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(title_en, forKey: "title_en")
|
|
|
|
|
+
|
|
|
|
|
+ //Get title_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let title_eu : String = str.subStr(start : str.indexOf(target : "\"title_eu\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(title_eu, forKey: "title_eu")
|
|
|
|
|
+
|
|
|
|
|
+ //Get description_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let description_es : String = str.subStr(start : str.indexOf(target : "\"description_es\":")! + 18, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (description_es != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(description_es, forKey: "description_es")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Get description_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let description_en : String = str.subStr(start : str.indexOf(target : "\"description_en\":")! + 18, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (description_en != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(description_en, forKey: "description_en")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Get description_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let description_eu : String = str.subStr(start : str.indexOf(target : "\"description_eu\":")! + 18, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (description_eu != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(description_eu, forKey: "description_eu")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Get host
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let strHost: String = str.subStr(start : str.indexOf(target : "\"host\":")! + 8, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (strHost != "ul"){ //From "null"
|
|
|
|
|
+ let host: Int = Int(strHost)!
|
|
|
|
|
+ row.setValue(host, forKey: "host")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Get place
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let place: Int = Int(str.subStr(start : str.indexOf(target : "\"place\":")! + 9, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(place, forKey: "place")
|
|
|
|
|
+
|
|
|
|
|
+ //Get start
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
|
|
|
|
|
+ let start = dateFormatter.date(from: str.subStr(start : str.indexOf(target : "\"start\":")! + 9, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(start, forKey: "start")
|
|
|
|
|
+
|
|
|
|
|
+ // Get day
|
|
|
|
|
+ // Special item, not in the sync content
|
|
|
|
|
+ dateFormatter.dateFormat = "yyyy-MM-dd"
|
|
|
|
|
+ var day = dateFormatter.date(from: str.subStr(start : str.indexOf(target : "\"start\":")! + 9, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ // If on the first hours of the next day...
|
|
|
|
|
+ let calendar = Calendar.current
|
|
|
|
|
+ let hours = calendar.component(.hour, from: day as! Date)
|
|
|
|
|
+ // ... the event belongs to the previous day.
|
|
|
|
|
+ if hours < 6{
|
|
|
|
|
+ day = Calendar.current.date(byAdding: .day, value: -1, to: day)!
|
|
|
|
|
+ }
|
|
|
|
|
+ row.setValue(day, forKey: "day")
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ //Get end
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss"
|
|
|
|
|
+ let strEnd: String = str.subStr(start : str.indexOf(target : "\"end\":")! + 7, end : str.length - 2)
|
|
|
|
|
+ if (strEnd != "ul"){ //From "null"
|
|
|
|
|
+ let end = dateFormatter.date(from: strEnd)!
|
|
|
|
|
+ row.setValue(end, forKey: "end")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Save CoreData
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.save()
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Festival_event entry \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Festival_event entry.")
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ Saves the data in the table.
|
|
|
|
|
+ :param: entries Array of strings containing the rows of the table, in JSON format.
|
|
|
|
|
+ */
|
|
|
|
|
+ func saveTableSponsor(entries : [String]){
|
|
|
|
|
+
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving table Sponsor.")
|
|
|
|
|
+
|
|
|
|
|
+ //Set up context
|
|
|
|
|
+ let appDelegate = UIApplication.shared.delegate as! AppDelegate
|
|
|
|
|
+ let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
|
|
|
|
|
+ context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
|
|
|
|
|
+
|
|
|
|
|
+ let entity = NSEntityDescription.entity(forEntityName: "Sponsor", in: context)
|
|
|
|
|
+
|
|
|
|
|
+ var row: NSManagedObject
|
|
|
|
|
+
|
|
|
|
|
+ //Delete all previous entries
|
|
|
|
|
+ let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Sponsor")
|
|
|
|
|
+ let request = NSBatchDeleteRequest(fetchRequest: fetch)
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.execute(request)
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Sponsor: \(error), \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not clean up Sponsor entity.")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Loop new entries
|
|
|
|
|
+ for entry in entries{
|
|
|
|
|
+
|
|
|
|
|
+ row = NSManagedObject(entity: entity!, insertInto: context)
|
|
|
|
|
+
|
|
|
|
|
+ //Get id
|
|
|
|
|
+ var str = entry
|
|
|
|
|
+ let id: Int = Int(str.subStr(start : str.indexOf(target : "\"id\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(id, forKey: "id")
|
|
|
|
|
+
|
|
|
|
|
+ // Get name_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let name_es: String = str.subStr(start : str.indexOf(target : "\"name_es\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_es, forKey: "name_es")
|
|
|
|
|
+
|
|
|
|
|
+ // Get name_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let name_en: String = str.subStr(start : str.indexOf(target : "\"name_en\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_en, forKey: "name_en")
|
|
|
|
|
+
|
|
|
|
|
+ // Get name_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let name_eu: String = str.subStr(start : str.indexOf(target : "\"name_eu\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(name_eu, forKey: "name_eu")
|
|
|
|
|
+
|
|
|
|
|
+ // Get text_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let text_es: String = str.subStr(start : str.indexOf(target : "\"text_es\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(text_es, forKey: "text_es")
|
|
|
|
|
+
|
|
|
|
|
+ // Get text_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let text_en: String = str.subStr(start : str.indexOf(target : "\"text_en\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(text_en, forKey: "text_en")
|
|
|
|
|
+
|
|
|
|
|
+ // Get text_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let text_eu: String = str.subStr(start : str.indexOf(target : "\"text_eu\":")! + 11, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ row.setValue(text_eu, forKey: "text_eu")
|
|
|
|
|
+
|
|
|
|
|
+ // Get image
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let image: String = str.subStr(start : str.indexOf(target : "\"image\":")! + 9, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (image != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(image, forKey: "image")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Get address_es
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let address_es: String = str.subStr(start : str.indexOf(target : "\"address_es\":")! + 14, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (address_es != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(address_es, forKey: "address_es")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Get address_en
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let address_en: String = str.subStr(start : str.indexOf(target : "\"address_en\":")! + 14, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (address_en != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(address_en, forKey: "address_en")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ // Get address_eu
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let address_eu: String = str.subStr(start : str.indexOf(target : "\"address_eu\":")! + 14, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (address_eu != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(address_eu, forKey: "address_eu")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Get link
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let link: String = str.subStr(start : str.indexOf(target : "\"link\":")! + 8, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (link != "ul"){ //From "null"
|
|
|
|
|
+ row.setValue(link, forKey: "link")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Get lat
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let strLat: String = str.subStr(start : str.indexOf(target : "\"lat\":")! + 7, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+ if (strLat != "ul"){ //From "null"
|
|
|
|
|
+ let lat: Float = Float(str.subStr(start : str.indexOf(target : "\"lat\":")! + 7, end : str.indexOf(target : ",\"")! - 2))!
|
|
|
|
|
+ row.setValue(lat, forKey: "lat")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Get lon
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let strLon: String = str.subStr(start : str.indexOf(target : "\"lon\":")! + 7, end : str.length - 2)
|
|
|
|
|
+ if (strLon != "ul"){ //From "null"
|
|
|
|
|
+ let lon: Float = Float(str.subStr(start : str.indexOf(target : "\"lon\":")! + 7, end : str.length - 2))!
|
|
|
|
|
+ row.setValue(lon, forKey: "lon")
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ //Save CoreData
|
|
|
|
|
+ do {
|
|
|
|
|
+ try context.save()
|
|
|
|
|
+ } catch let error as NSError {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Sponsor entry \(error.userInfo).")
|
|
|
|
|
+ } catch {
|
|
|
|
|
+ NSLog(":SYNC:ERROR: Could not store Sponsor entry.")
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ Saves the received settings.
|
|
|
|
|
+ :param: entries Array of strings containing the rows of the table, in JSON format.
|
|
|
|
|
+ */
|
|
|
|
|
+ func saveSettings(entries : [String]){
|
|
|
|
|
+
|
|
|
|
|
+ NSLog(":SYNC:LOG: Saving settings.")
|
|
|
|
|
+ let defaults = UserDefaults.standard
|
|
|
|
|
+
|
|
|
|
|
+ // Loop new entries
|
|
|
|
|
+ for entry in entries{
|
|
|
|
|
+
|
|
|
|
|
+ // Get setting name
|
|
|
|
|
+ var str = entry
|
|
|
|
|
+ let name: String = str.subStr(start : str.indexOf(target : "\"name\":")! + 8, end : str.indexOf(target : ",\"")! - 2)
|
|
|
|
|
+
|
|
|
|
|
+ // Get setting value
|
|
|
|
|
+ str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
|
|
|
|
|
+ let value: Int = Int(str.subStr(start : str.indexOf(target : "\"value\":")! + 9, end : str.length - 2))!
|
|
|
|
|
+
|
|
|
|
|
+ // Save only the needed settings
|
|
|
|
|
+ if ["festivals", "comments", "photos"].contains(name){
|
|
|
|
|
+ NSLog(":SYNC:LOG: Setting \(name) \(value)")
|
|
|
|
|
+ defaults.set(value, forKey: name)
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|