summaryrefslogtreecommitdiffstats
path: root/Classes/TopicsViewController.m
diff options
context:
space:
mode:
authormatt handler <matt.handler@gmail.com>2011-04-26 17:18:49 -0400
committermatt handler <matt.handler@gmail.com>2011-04-26 17:18:49 -0400
commit46642320901ebaaedae5618e423ebfe70f316351 (patch)
treefa4f7d55589c1057ee8e33194a71bbf7b587960a /Classes/TopicsViewController.m
parent9ac2c9e13eb63c2a3a5e9b5a14b079d4fc24a220 (diff)
downloadpiccast-app-46642320901ebaaedae5618e423ebfe70f316351.tar.gz
piccast-app-46642320901ebaaedae5618e423ebfe70f316351.zip
updated topics dynamic loading, added fetcher class, storing in database and not overwriting is good, need to add info to photo view controller and also sort results
Diffstat (limited to 'Classes/TopicsViewController.m')
-rw-r--r--Classes/TopicsViewController.m111
1 files changed, 84 insertions, 27 deletions
diff --git a/Classes/TopicsViewController.m b/Classes/TopicsViewController.m
index 8635e1d..1d93566 100644
--- a/Classes/TopicsViewController.m
+++ b/Classes/TopicsViewController.m
@@ -20,7 +20,8 @@
#import "FMDatabase.h"
#import "FMResultSet.h"
#import "PicCastAppDelegate.h"
-
+#import "CJSONDeserializer.h"
+#import "Fetcher.h"
@implementation TopicsViewController
@@ -55,12 +56,12 @@
db = [[FMDatabase databaseWithPath:[PicCastAppDelegate getDatabasePath]] retain];
[db setShouldCacheStatements:YES];
- [db setTraceExecution:true];
- [db setLogsErrors:true];
+// [db setTraceExecution:true];
+// [db setLogsErrors:true];
[self getTopicsFromDb];
- //[self startParsing];
+ [self loadSubscribedTopics];
}
- (void) getTopicsFromDb {
@@ -90,32 +91,10 @@
[tableDictionary appendObject:topic forKey:[Topic dateToString:topic.releaseDate]];
}
-// called after parsing is finished
-- (void) updateTopicsFromWeb:(NSArray *)parsedTopics {
- // add topics to sql
- [db open];
- for (Topic *topic in parsedTopics) {
- // if topic is already in database
- //FMResultSet *rs = [db executeQuery:@"SELECT id FROM picCasts WHERE foreignId = ?", [NSNumber numberWithInt:10]];
- if (true) {
- //[rs close];
- [db beginTransaction];
- [topic serializeToDatabase:db];
- [db commit];
-
- // add topics to structure
- [self addTopicToSectionDictionary:topic];
- }
- }
- [db close];
-
- // tell table to animate things being added
- [self.tableView reloadData];
-}
-
- (void) sourcesEditViewControllerDidFinish:(SourcesEditViewController *)controller {
[self dismissModalViewControllerAnimated:YES];
+ [self loadSubscribedTopics];
//[self _userIs:[controller getUserGenderString] heets:[controller getHeetGenderString]];
}
@@ -176,6 +155,84 @@
}
*/
+#pragma mark -
+#pragma mark custom sheeyit
+
+- (void) addTopicsFromJson:(NSData *)data {
+
+ NSError *theError = nil;
+ id dictionary = [[CJSONDeserializer deserializer] deserialize:(NSData *)data error:&theError];
+ NSArray *array = [dictionary objectForKey:@"list"];
+
+ [db open];
+ for (NSDictionary *obj in array) {
+ NSLog(@"foreign key: %d", [obj objectForKey:@"id"]);
+ FMResultSet *result = [db executeQuery:@"SELECT id FROM picCasts WHERE foreignId = ?", [obj objectForKey:@"id"]];
+ if (![result next]) {
+ NSLog(@"found new topic");
+ Topic *topic = [Topic initWithJsonObject:obj];
+
+ [db beginTransaction];
+ [topic serializeToDatabase:db];
+ [db commit];
+
+ [self addTopicToSectionDictionary:topic];
+ }
+ [result close];
+ }
+ [db close];
+
+ [self.tableView reloadData];
+}
+
+// called after parsing is finished
+- (void) updateTopicsFromWeb:(NSArray *)parsedTopics {
+ // add topics to sql
+ [db open];
+ for (Topic *topic in parsedTopics) {
+ // if topic is already in database
+ //FMResultSet *rs = [db executeQuery:@"SELECT id FROM picCasts WHERE foreignId = ?", [NSNumber numberWithInt:10]];
+ if (true) {
+ //[rs close];
+ [db beginTransaction];
+ [topic serializeToDatabase:db];
+ [db commit];
+
+ // add topics to structure
+ [self addTopicToSectionDictionary:topic];
+ }
+ }
+ [db close];
+
+ // tell table to animate things being added
+ [self.tableView reloadData];
+}
+
+- (void) loadSubscribedTopics {
+ [db open];
+ FMResultSet *result = [db executeQuery:@"SELECT foreignId FROM subscribedSources WHERE subscribed = ?", [NSNumber numberWithInt:1]];
+ while ([result next]) {
+
+ Fetcher *fetcher = [Fetcher initWithString:[NSString
+ stringWithFormat:@"http://piccast.memeschemes.com/json/sets_by_feed/%d/",
+ [result intForColumn:@"foreignId"]]
+ andDelegate:self];
+
+ }
+}
+
+#pragma mark -
+#pragma mark fetcher delegate protocol
+
+- (void) connection:(NSURLConnection *)connection failedWithError:(NSError *)error {
+ [PicCastAppDelegate prompt:@"Error" withMessage:[error localizedDescription] andButtonTitle:@"Aww man..." withDelegate:self];
+}
+
+- (void) connection:(NSURLConnection *)connection finishedWithData:(NSData *)data {
+ //NSLog(@"%@", [[CJSONDeserializer deserializer] deserialize:(NSData *)data error:nil]);
+ [self addTopicsFromJson:data];
+}
+
#pragma mark -
#pragma mark Table view data source