Parcourir la source

Stored all activity-related tables.

Iñigo Valentin il y a 9 ans
Parent
commit
f493bcc917

BIN
app.xcodeproj/project.xcworkspace/xcuserdata/seavenois.xcuserdatad/UserInterfaceState.xcuserstate


+ 209 - 52
app/Sync.swift

@@ -27,16 +27,12 @@ import UIKit
  */
 class Sync{
 	
-	var cnt: NSManagedObjectContext
-	
 	/**
 	 Starts the sync process.
 	*/
-	init(cnt: NSManagedObjectContext){
-		self.cnt = cnt
+	init(){
 		let url = buildUrl();
 		sync(url: url)
-	
 	}
 	
 	/**
@@ -81,9 +77,9 @@ class Sync{
 			
 			//Get tables
 			let dataActivity : [String] = self.getTable(data: strData!, table: "activity")
-			//let dataActivityComment : [String] = self.getTable(data: strData!, table: "activity_comment")
-			//let dataActivityImage : [String] = self.getTable(data: strData!, table: "activity_image")
-			//let dataActivityTag : [String] = self.getTable(data: strData!, table: "activity_tag")
+			let dataActivityComment : [String] = self.getTable(data: strData!, table: "activity_comment")
+			let dataActivityImage : [String] = self.getTable(data: strData!, table: "activity_image")
+			let dataActivityTag : [String] = self.getTable(data: strData!, table: "activity_tag")
 			//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")
@@ -103,12 +99,16 @@ class Sync{
 			
 			//One by one, save the received data
 			self.saveTableActivity(entries : dataActivity)
+			self.saveTableActivityComment(entries : dataActivityComment)
+			self.saveTableActivityImage(entries : dataActivityImage)
+			self.saveTableActivityTag(entries : dataActivityTag)
 			
-			//TEST
+			//TODO: Tester, Debug only
+			// Test if a entity has entries
 			let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
 			let appDelegate = UIApplication.shared.delegate as! AppDelegate
 			context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
-			let fetchRequest: NSFetchRequest<Activity> = Activity.fetchRequest()
+			let fetchRequest: NSFetchRequest<Activity_comment> = Activity_comment.fetchRequest()
 			
 			do {
 				//go get the results
@@ -120,11 +120,12 @@ class Sync{
 				//You need to convert to NSManagedObject to use 'for' loops
 				for trans in searchResults as [NSManagedObject] {
 					//get the Key Value pairs (although there may be a better way to do that...
-					print("\(trans.value(forKey: "permalink"))")
+					print("\(trans.value(forKey: "id"))")
 				}
 			} catch {
 				print("Error with request: \(error)")
 			}
+			//End tester
 		}
 		
 		task.resume()
@@ -156,13 +157,9 @@ class Sync{
 	
 	func saveTableActivity(entries : [String]){
 		
-		
-				
 		let dateFormatter = DateFormatter()
 		dateFormatter.timeZone = TimeZone.ReferenceType.local
 		
-		//let context = self.cnt //getContext()
-		
 		//Set up context
 		let appDelegate = UIApplication.shared.delegate as! AppDelegate
 		let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
@@ -170,7 +167,7 @@ class Sync{
 		
 		let entity =  NSEntityDescription.entity(forEntityName: "Activity", in: context)
 		
-		var transc: NSManagedObject
+		var row: NSManagedObject
 		
 		//Delete all previous entries
 		let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Activity")
@@ -178,7 +175,7 @@ class Sync{
 		do {
 			try context.execute(request)
 		} catch let error as NSError  {
-			print("Could not clean up Activity table: \(error), \(error.userInfo)")
+			print("Could not clean up Activity entity: \(error), \(error.userInfo)")
 		} catch {
 			
 		}
@@ -189,53 +186,43 @@ class Sync{
 			//Get id
 			var str = entry
 			let id : Int = Int(str.subStr(start : str.indexOf(target : "\"id\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
-			//print("Id: \(id)")
 			
 			//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)
-			//print("Permalink: \(permalink)")
 			
 			//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))!
-			//print("Date: \(date)")
 			
 			//Get city
 			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
 			let city : String = str.subStr(start : str.indexOf(target : "\"city\":")! + 8, end : str.indexOf(target : ",\"")! - 2)
-			//print("City: \(city)")
 			
 			//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)
-			//print("Title (es): \(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)
-			//print("Title (en): \(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)
-			//print("Title (eu): \(title_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)
-			//print("Text (es): \(text_es)")
 			
 			//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)
-			//print("Text (eu): \(text_eu)")
 			
 			//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)
-			//print("Text (en): \(text_en)")
 			
 			//Get after_es
 			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
@@ -243,7 +230,6 @@ class Sync{
 			if (after_es == "ul"){ //From "null"
 				after_es = ""
 			}
-			//print("After (es): \(after_es)")
 			
 			//Get after_en
 			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
@@ -251,7 +237,6 @@ class Sync{
 			if (after_en == "ul"){ //From "null"
 				after_en = ""
 			}
-			//print("After (en): \(after_en)")
 			
 			//Get after_eu
 			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
@@ -259,7 +244,6 @@ class Sync{
 			if (after_eu == "ul"){  //From "null"
 				after_eu = ""
 			}
-			//print("After (eu): \(after_eu)")
 			
 			//Get price
 			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
@@ -269,12 +253,10 @@ class Sync{
 			//Get inscription
 			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
 			let inscription : Int = Int(str.subStr(start : str.indexOf(target : "\"inscription\":")! + 15, end : str.indexOf(target : ",\"")! - 2))!
-			//print("Inscription: \(inscription)")
 			
 			//Get max_people
 			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
 			let maxPeople : Int = Int(str.subStr(start : str.indexOf(target : "\"max_people\":")! + 14, end : str.indexOf(target : ",\"")! - 2))!
-			//print("Max People: \(maxPeople)")
 			
 			//Get album
 			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
@@ -283,32 +265,31 @@ class Sync{
 			if (albumPre != "ul"){ //From "null"
 				album = Int(albumPre)!
 			}
-			//print("Album: \(album)")
 			
 			//Skipping dtime
 			//Skipping comments
 			
-			//TODO: Save CoreData
-			transc = NSManagedObject(entity: entity!, insertInto: context)
+			//Save CoreData
+			row = NSManagedObject(entity: entity!, insertInto: context)
 			//set the entity values
-			transc.setValue(id, forKey: "id")
-			transc.setValue(permalink, forKey: "permalink")
-			transc.setValue(date, forKey: "date")
-			transc.setValue(city, forKey: "city")
-			transc.setValue(title_es, forKey: "title_es")
-			transc.setValue(title_en, forKey: "title_en")
-			transc.setValue(title_eu, forKey: "title_eu")
-			transc.setValue(text_es, forKey: "text_es")
-			transc.setValue(text_en, forKey: "text_en")
-			transc.setValue(text_eu, forKey: "text_eu")
-			transc.setValue(after_es, forKey: "after_es")
-			transc.setValue(after_en, forKey: "after_en")
-			transc.setValue(after_eu, forKey: "after_eu")
-			transc.setValue(price, forKey: "price")
-			transc.setValue(inscription, forKey: "inscription")
-			transc.setValue(maxPeople, forKey: "max_people")
+			row.setValue(id, forKey: "id")
+			row.setValue(permalink, forKey: "permalink")
+			row.setValue(date, forKey: "date")
+			row.setValue(city, forKey: "city")
+			row.setValue(title_es, forKey: "title_es")
+			row.setValue(title_en, forKey: "title_en")
+			row.setValue(title_eu, forKey: "title_eu")
+			row.setValue(text_es, forKey: "text_es")
+			row.setValue(text_en, forKey: "text_en")
+			row.setValue(text_eu, forKey: "text_eu")
+			row.setValue(after_es, forKey: "after_es")
+			row.setValue(after_en, forKey: "after_en")
+			row.setValue(after_eu, forKey: "after_eu")
+			row.setValue(price, forKey: "price")
+			row.setValue(inscription, forKey: "inscription")
+			row.setValue(maxPeople, forKey: "max_people")
 			if (album != -1){
-				transc.setValue(album, forKey: "album")
+				row.setValue(album, forKey: "album")
 			}
 
 			do {
@@ -321,4 +302,180 @@ class Sync{
 
 		}
 	}
+	
+	func saveTableActivityComment(entries : [String]){
+		
+		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: "Activity_comment", in: context)
+		
+		var row: NSManagedObject
+		
+		//Delete all previous entries
+		let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Activity_comment")
+		let request = NSBatchDeleteRequest(fetchRequest: fetch)
+		do {
+			try context.execute(request)
+		} catch let error as NSError  {
+			print("Could not clean up Activity_comment entity: \(error), \(error.userInfo)")
+		} catch {
+			
+		}
+		
+		//Loop new entries
+		for entry in entries{
+			
+			//Get id
+			var str = entry
+			let id : Int = Int(str.subStr(start : str.indexOf(target : "\"id\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
+			
+			//Get activity
+			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
+			let activity : String = str.subStr(start : str.indexOf(target : "\"activity\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
+			
+			//Get text
+			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
+			let text : String = str.subStr(start : str.indexOf(target : "\"text\":")! + 8, end : str.indexOf(target : ",\"")! - 2)
+			
+			//Get dtime
+			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
+			dateFormatter.dateFormat = "yyyy-MM-dd"
+			let dtime = dateFormatter.date(from : str.subStr(start : str.indexOf(target : "\"dtime\":")! + 9, end : str.indexOf(target : ",\"")! - 2))!
+			
+			//Get username
+			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
+			let username : String = str.subStr(start : str.indexOf(target : "\"username\":")! + 12, end : str.indexOf(target : ",\"")! - 2)
+			
+			//Get lang
+			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
+			let lang : String = str.subStr(start : str.indexOf(target : "\"lang\":")! + 8, end : str.length - 1)
+			
+			//Save CoreData
+			row = NSManagedObject(entity: entity!, insertInto: context)
+			row.setValue(id, forKey: "id")
+			row.setValue(activity, forKey: "activity")
+			row.setValue(text, forKey: "text")
+			row.setValue(dtime, forKey: "dtime")
+			row.setValue(username, forKey: "username")
+			row.setValue(lang, forKey: "lang")
+			do {
+				try context.save()
+			} catch let error as NSError  {
+				print("Could not store Activity_comment with id \(id) \(error), \(error.userInfo)")
+			} catch {
+				
+			}
+			
+		}
+	}
+	
+	func saveTableActivityImage(entries : [String]){
+		
+		//Set up context
+		let appDelegate = UIApplication.shared.delegate as! AppDelegate
+		let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
+		context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
+		
+		let entity =  NSEntityDescription.entity(forEntityName: "Activity_image", in: context)
+		
+		var row: NSManagedObject
+		
+		//Delete all previous entries
+		let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Activity_image")
+		let request = NSBatchDeleteRequest(fetchRequest: fetch)
+		do {
+			try context.execute(request)
+		} catch let error as NSError  {
+			print("Could not clean up Activity_comment entity: \(error), \(error.userInfo)")
+		} catch {
+			
+		}
+		
+		//Loop new entries
+		for entry in entries{
+			
+			//Get id
+			var str = entry
+			let id : Int = Int(str.subStr(start : str.indexOf(target : "\"id\":")! + 6, end : str.indexOf(target : ",\"")! - 2))!
+			
+			//Get activity
+			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
+			let activity : Int = Int(str.subStr(start : str.indexOf(target : "\"activity\":")! + 12, end : str.indexOf(target : ",\"")! - 2))!
+			
+			//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)
+			
+			//Get idx
+			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
+			let idx : Int = Int(str.subStr(start : str.indexOf(target : "\"idx\":")! + 7, end : str.length - 2))!
+			
+			//Save CoreData
+			row = NSManagedObject(entity: entity!, insertInto: context)
+			row.setValue(id, forKey: "id")
+			row.setValue(activity, forKey: "activity")
+			row.setValue(image, forKey: "image")
+			row.setValue(idx, forKey: "idx")
+			do {
+				try context.save()
+			} catch let error as NSError  {
+				print("Could not store Activity_image with id \(id) \(error), \(error.userInfo)")
+			} catch {
+				
+			}
+		}
+	}
+	
+	func saveTableActivityTag(entries : [String]){
+		
+		//Set up context
+		let appDelegate = UIApplication.shared.delegate as! AppDelegate
+		let context = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
+		context.persistentStoreCoordinator = appDelegate.persistentStoreCoordinator
+		
+		let entity =  NSEntityDescription.entity(forEntityName: "Activity_tag", in: context)
+		
+		var row: NSManagedObject
+		
+		//Delete all previous entries
+		let fetch = NSFetchRequest<NSFetchRequestResult>(entityName: "Activity_tag")
+		let request = NSBatchDeleteRequest(fetchRequest: fetch)
+		do {
+			try context.execute(request)
+		} catch let error as NSError  {
+			print("Could not clean up Activity_tag entity: \(error), \(error.userInfo)")
+		} catch {
+			
+		}
+		
+		//Loop new entries
+		for entry in entries{
+			
+			//Get activity
+			var str = entry
+			let activity : Int = Int(str.subStr(start : str.indexOf(target : "\"activity\":")! + 12, end : str.indexOf(target : ",\"")! - 2))!
+			
+			//Get tag
+			str = str.subStr(start : str.indexOf(target : ",\"")! + 1, end : str.length - 1)
+			let tag : String = str.subStr(start : str.indexOf(target : "\"tag\":")! + 7, end : str.length - 1)
+			
+			//Save CoreData
+			row = NSManagedObject(entity: entity!, insertInto: context)
+			row.setValue(activity, forKey: "activity")
+			row.setValue(tag, forKey: "tag")
+			do {
+				try context.save()
+			} catch let error as NSError  {
+				print("Could not store Activity_tag for activity: \(activity), tag: \(tag). Error: \(error), \(error.userInfo)")
+			} catch {
+				
+			}
+		}
+	}
 }

+ 1 - 1
app/ViewController.swift

@@ -56,7 +56,7 @@ class ViewController: UIViewController, UICollectionViewDataSource, UICollection
 		self.containerViewGallery.alpha = 0
 		
 		print("ViewController:viewDidLoad()")
-		Sync(cnt: getContext())
+		Sync()
 		
 		super.viewDidLoad()
 		// Do any additional setup after loading the view, typically from a nib.