Skip to content
Browse files

Added model sync library

  • Loading branch information...
1 parent e5b44ab commit 0fb7a9dd4cad42abd0062267678f4655e90a1432 Michael Nachbaur committed Jan 17, 2011
Showing with 1,238 additions and 174 deletions.
  1. +0 −1 .gitignore
  2. +6 −0 .gitmodules
  3. +52 −0 Classes/ManagedObjectXMLSync.h
  4. +507 −0 Classes/ManagedObjectXMLSync.m
  5. +0 −18 Classes/NetworkInterface/DataManager.h
  6. +0 −16 Classes/NetworkInterface/DataManager.m
  7. +33 −0 Classes/PublicDataManager.h
  8. +68 −0 Classes/PublicDataManager.m
  9. +24 −0 Classes/UserManager.h
  10. +26 −0 Classes/UserManager.m
  11. +3 −3 Classes/iYAPCAppDelegate.h
  12. +24 −17 Classes/iYAPCAppDelegate.m
  13. +1 −0 Libraries/aqtoolkit
  14. +1 −0 Libraries/asi-http-request
  15. +80 −0 TestEvents.xml
  16. +7 −7 iYAPC.xcdatamodeld/AttendeeModel.h
  17. +3 −3 iYAPC.xcdatamodeld/AttendeeModel.m
  18. +3 −2 iYAPC.xcdatamodeld/DayModel.h
  19. +3 −2 iYAPC.xcdatamodeld/DayModel.m
  20. +13 −6 iYAPC.xcdatamodeld/EventModel.h
  21. +8 −6 iYAPC.xcdatamodeld/EventModel.m
  22. +3 −2 iYAPC.xcdatamodeld/LocationModel.h
  23. +3 −2 iYAPC.xcdatamodeld/LocationModel.m
  24. +4 −5 iYAPC.xcdatamodeld/PersonModel.h
  25. +2 −4 iYAPC.xcdatamodeld/PersonModel.m
  26. +10 −10 iYAPC.xcdatamodeld/PresenterModel.h
  27. +4 −4 iYAPC.xcdatamodeld/PresenterModel.m
  28. +11 −3 iYAPC.xcdatamodeld/SessionModel.h
  29. +6 −3 iYAPC.xcdatamodeld/SessionModel.m
  30. +6 −3 iYAPC.xcdatamodeld/TrackModel.h
  31. +6 −3 iYAPC.xcdatamodeld/TrackModel.m
  32. +36 −0 iYAPC.xcdatamodeld/VenueModel.h
  33. +23 −0 iYAPC.xcdatamodeld/VenueModel.m
  34. BIN iYAPC.xcdatamodeld/iYAPC.xcdatamodel/elements
  35. BIN iYAPC.xcdatamodeld/iYAPC.xcdatamodel/layout
  36. +259 −54 iYAPC.xcodeproj/project.pbxproj
  37. +1 −0 iYAPC_Constants.h
  38. +2 −0 iYAPC_Prefix.pch
View
1 .gitignore
@@ -8,7 +8,6 @@
*.pbxuser
*.perspectivev3
*blib
-.*
.*.sw*
.DS_Store
MANIFEST
View
6 .gitmodules
@@ -0,0 +1,6 @@
+[submodule "Libraries/asi-http-request"]
+ path = Libraries/asi-http-request
+ url = https://github.com/pokeb/asi-http-request.git
+[submodule "Libraries/aqtoolkit"]
+ path = Libraries/aqtoolkit
+ url = https://github.com/AlanQuatermain/aqtoolkit.git
View
52 Classes/ManagedObjectXMLSync.h
@@ -0,0 +1,52 @@
+//
+// ManagedObjectXMLSync.h
+// iYAPC
+//
+// Created by Michael Nachbaur on 10-12-16.
+// Copyright 2010 Decaf Ninja Software. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import <CoreData/CoreData.h>
+
+@class ManagedObjectXMLSync;
+
+@protocol ManagedObjectXMLSyncDelegate
+@optional
+
+- (void)managedObjectXMLSync:(ManagedObjectXMLSync*)xmlSync didStartXMLDocument:(NSXMLParser*)parser;
+- (void)managedObjectXMLSync:(ManagedObjectXMLSync*)xmlSync didEndXMLDocument:(NSXMLParser*)parser;
+- (void)managedObjectXMLSync:(ManagedObjectXMLSync*)xmlSync parser:(NSXMLParser*)parser parseErrorOccurred:(NSError*)error;
+- (void)managedObjectXMLSync:(ManagedObjectXMLSync*)xmlSync parser:(NSXMLParser*)parser validationErrorOccurred:(NSError*)error;
+- (void)managedObjectXMLSync:(ManagedObjectXMLSync*)xmlSync saveErrorOccurred:(NSError*)error;
+
+@end
+
+@interface ManagedObjectXMLSync : NSObject <NSXMLParserDelegate> {
+ NSManagedObjectContext *_managedObjectContext;
+ NSManagedObjectModel *_managedObjectModel;
+ NSDictionary *_elementNameMapping;
+ NSMutableSet *_pendingIdMapping;
+
+ NSXMLParser *_xmlParser;
+
+ NSEntityDescription *_currentEntity;
+ NSManagedObject *_currentModelObject;
+ NSMutableString *_currentString;
+ NSString *_currentModelObjectTagName;
+ NSPropertyDescription *_currentProperty;
+
+ id <ManagedObjectXMLSyncDelegate> delegate;
+}
+
+@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
+@property (nonatomic, retain) NSManagedObjectModel *managedObjectModel;
+@property (nonatomic, retain) NSDictionary *elementNameMapping;
+@property (nonatomic, assign) id <ManagedObjectXMLSyncDelegate> delegate;
+
+- (id)initWithManagedObjectContext:(NSManagedObjectContext*)objectContext withManagedObjectModel:(NSManagedObjectModel*)objectModel;
+- (BOOL)syncContentsOfURL:(NSURL*)url;
+- (BOOL)syncData:(NSData*)data;
+- (void)cancel;
+
+@end
View
507 Classes/ManagedObjectXMLSync.m
@@ -0,0 +1,507 @@
+//
+// ManagedObjectXMLSync.m
+// iYAPC
+//
+// Created by Michael Nachbaur on 10-12-16.
+// Copyright 2010 Decaf Ninja Software. All rights reserved.
+//
+
+#import "ManagedObjectXMLSync.h"
+
+#define ManagedObjectXMLSyncDebug 0
+
+#pragma mark -
+#pragma mark ManagedObjectXMLSyncCrossReference
+
+@interface ManagedObjectXMLSyncCrossReference : NSObject
+{
+ NSManagedObject *_object;
+ NSRelationshipDescription *_property;
+ NSPredicate *_predicate;
+}
+
+- (id)initWithManagedObject:(NSManagedObject*)managedObject relationshipProperty:(NSRelationshipDescription*)property predicate:(NSPredicate*)searchPredicate;
+- (BOOL)findReferencesInContext:(NSManagedObjectContext*)context;
+
+@end
+
+@implementation ManagedObjectXMLSyncCrossReference
+
+#pragma mark Object lifecycle
+
+- (id)initWithManagedObject:(NSManagedObject*)managedObject relationshipProperty:(NSRelationshipDescription*)property predicate:(NSPredicate*)searchPredicate {
+ self = [super init];
+ if (self) {
+ _object = [managedObject retain];
+ _property = [property retain];
+ _predicate = [searchPredicate retain];
+ }
+
+ return self;
+}
+
+- (void)dealloc {
+ [_object release];
+ [_property release];
+ [_predicate release];
+ [super dealloc];
+}
+
+#pragma mark Cross-reference update methods
+
+- (BOOL)findReferencesInContext:(NSManagedObjectContext*)context {
+ // We can only run this if we are stored in a context
+ if (![_object isInserted] || ![[_object managedObjectContext] isEqual:context])
+ return NO;
+
+ NSEntityDescription *targetEntity = [_property destinationEntity];
+
+ NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
+ [fetchRequest setEntity:targetEntity];
+
+ NSError *error = nil;
+ NSArray *results = [context executeFetchRequest:fetchRequest error:&error];
+ if (!results)
+ return NO;
+
+ if ([_property isToMany]) {
+ [_object setValue:results forKey:[_property name]];
+ } else {
+ NSManagedObject *result = [results lastObject];
+ [_object setValue:result forKey:[_property name]];
+ }
+
+ return YES;
+}
+
+@end
+
+#pragma mark -
+#pragma mark ManagedObjectXMLSync
+
+@interface ManagedObjectXMLSync (Private)
+
+- (void)startObject:(NSEntityDescription*)entity;
+- (void)saveCrossReference:(NSDictionary*)attributeDict fromManagedObject:(NSManagedObject*)object throughProperty:(NSPropertyDescription*)property;
+- (id)getValueForProperty:(NSPropertyDescription*)property fromString:(NSString*)valueString;
+- (NSArray*)findManagedObjectsWithIndexedPropertiesMatching:(NSManagedObject*)object;
+- (BOOL)mergeModelObject:(NSManagedObject*)object withExistingObject:(NSManagedObject*)existingObject;
+- (void)findCrossReferences;
+
+@end
+
+@implementation ManagedObjectXMLSync
+@synthesize managedObjectContext = _managedObjectContext;
+@synthesize managedObjectModel = _managedObjectModel;
+@synthesize elementNameMapping = _elementNameMapping;
+@synthesize delegate;
+
+- (id)initWithManagedObjectContext:(NSManagedObjectContext*)objectContext withManagedObjectModel:(NSManagedObjectModel*)objectModel {
+ if ((self = [self init])) {
+ _pendingIdMapping = [[NSMutableSet set] retain];
+
+ self.elementNameMapping = [NSDictionary dictionary];
+ self.managedObjectModel = objectModel;
+ self.managedObjectContext = objectContext;
+ _xmlParser = nil;
+ }
+
+ return self;
+}
+
+- (void)dealloc {
+ self.managedObjectModel = nil;
+ self.managedObjectContext = nil;
+ self.elementNameMapping = nil;
+
+ [_pendingIdMapping release];
+ [_currentModelObject release];
+ [_currentModelObjectTagName release];
+ [_currentEntity release];
+ [_currentString release];
+ [_currentProperty release];
+ [_xmlParser release];
+
+ [super dealloc];
+}
+
+#pragma mark Methods
+
+- (BOOL)syncContentsOfURL:(NSURL*)url {
+ if (_xmlParser)
+ return NO;
+
+ _xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
+ _xmlParser.delegate = self;
+ return [_xmlParser parse];
+}
+
+- (BOOL)syncData:(NSData*)data {
+ if (_xmlParser)
+ return NO;
+
+ _xmlParser = [[NSXMLParser alloc] initWithData:data];
+ _xmlParser.delegate = self;
+ return [_xmlParser parse];
+}
+
+- (void)cancel {
+ [_xmlParser abortParsing];
+}
+
+#pragma mark Private methods
+
+/**
+ * Creates a new object for the XML block currently being processed.
+ */
+- (void)startObject:(NSEntityDescription*)entity {
+ if (_currentEntity)
+ [_currentEntity release];
+ _currentEntity = [entity retain];
+
+ NSString *className = [entity managedObjectClassName];
+ Class entityClass = [[NSBundle mainBundle] classNamed:className];
+
+ if (_currentModelObject != nil)
+ [_currentModelObject release];
+ _currentModelObject = [[entityClass alloc] initWithEntity:entity
+ insertIntoManagedObjectContext:nil];
+}
+
+/**
+ * Saving cross-references is handled by looking at the key/value pair attributes bound to the element, and
+ * uses the attribute name as the predicate property to search for, with the value being the expression used
+ * to perform the search for that property.
+ */
+- (void)saveCrossReference:(NSDictionary*)attributeDict fromManagedObject:(NSManagedObject*)object throughProperty:(NSRelationshipDescription*)property {
+ NSMutableArray *predicates = [NSMutableArray arrayWithCapacity:[attributeDict count]];
+
+ // Iterate over attributes to build a list of search predicates
+ NSEnumerator *enumerator = [attributeDict keyEnumerator];
+ NSString *key;
+ while ((key = [enumerator nextObject])) {
+ NSString *value = [attributeDict objectForKey:key];
+ NSPredicate *searchPredicate = [NSPredicate predicateWithFormat:@"%K = %@", key, value, nil];
+ [predicates addObject:searchPredicate];
+ }
+ NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates];
+
+ // Create a cross-reference for this mapping
+ ManagedObjectXMLSyncCrossReference *reference = [[[ManagedObjectXMLSyncCrossReference alloc] initWithManagedObject:object
+ relationshipProperty:property
+ predicate:compoundPredicate] autorelease];
+
+ // Save the cross-reference for later
+ [_pendingIdMapping addObject:reference];
+}
+
+/**
+ * Helper function to extract a properly-typed value given the attribute type of the property.
+ */
+- (id)getValueForProperty:(NSPropertyDescription*)property fromString:(NSString*)valueString {
+ id value = valueString;
+
+ if ([property isKindOfClass:[NSAttributeDescription class]]) {
+ NSAttributeDescription *attr = (NSAttributeDescription*)property;
+ NSAttributeType attrType = [attr attributeType];
+
+ if (attrType == NSInteger16AttributeType || attrType == NSInteger32AttributeType || attrType == NSInteger64AttributeType) {
+ value = [NSNumber numberWithInteger:[valueString integerValue]];
+ }
+
+ else if (attrType == NSDecimalAttributeType || attrType == NSDoubleAttributeType || attrType == NSFloatAttributeType) {
+ value = [NSNumber numberWithFloat:[valueString floatValue]];
+ }
+
+ else if (attrType == NSBooleanAttributeType) {
+ NSString *lcVal = [valueString lowercaseString];
+ if ([lcVal isEqualToString:@"yes"] || [lcVal isEqualToString:@"true"] || [lcVal isEqualToString:@"t"] || [lcVal integerValue] != 0) {
+ value = [NSNumber numberWithBool:YES];
+ } else {
+ value = [NSNumber numberWithBool:NO];
+ }
+ }
+
+ else if (attrType == NSDateAttributeType) {
+ NSString *dateFormat = [[property userInfo] objectForKey:@"dateFormat"];
+ if (!dateFormat || [dateFormat length] < 1)
+ dateFormat = @"yyyy-MM-DDThh:mm:ssZ";
+
+ NSString *localeStr = [[property userInfo] objectForKey:@"locale"];
+ if (!localeStr || [localeStr length] < 1)
+ localeStr = @"en_US";
+
+ NSLocale *locale = [[[NSLocale alloc] initWithLocaleIdentifier:localeStr] autorelease];
+ NSDateFormatter *formatter = [[[NSDateFormatter alloc] init] autorelease];
+ [formatter setLocale:locale];
+ [formatter setDateFormat:dateFormat];
+ NSDate *date = [formatter dateFromString:valueString];
+
+ value = date;
+ }
+
+ else if (attrType == NSBinaryDataAttributeType) {
+ value = [valueString dataUsingEncoding:NSUTF8StringEncoding];
+ }
+ }
+
+ return value;
+}
+
+/**
+ * Given a reference managed object, this method finds all other objects of the same type that
+ * have indexed properties matching the same values.
+ */
+- (NSArray*)findManagedObjectsWithIndexedPropertiesMatching:(NSManagedObject*)object {
+ NSMutableArray *predicates = [NSMutableArray array];
+ NSEntityDescription *entity = [object entity];
+ NSString *revisionPropertyName = [[entity userInfo] objectForKey:@"revisionKey"];
+ if (!revisionPropertyName)
+ revisionPropertyName = @"revision";
+
+ // Find the indexed properties and create a predicate to search for them
+ for (NSAttributeDescription *property in [entity properties]) {
+ if (![property isKindOfClass:[NSAttributeDescription class]] || ![property isIndexed])
+ continue;
+ if ([[property name] isEqualToString:revisionPropertyName])
+ continue;
+
+ NSString *propertyName = [property name];
+ NSLog(@"Evaluating \"%@\" for comparison to \"%@\"", propertyName, [entity name]);
+ NSPredicate *predicate = [NSPredicate predicateWithFormat:@"%K = %@", propertyName, [object valueForKey:propertyName]];
+ [predicates addObject:predicate];
+ }
+
+ NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates];
+
+ // Create a fetch request to find the applicable objects
+ NSFetchRequest *fetchRequest = [[[NSFetchRequest alloc] init] autorelease];
+ [fetchRequest setEntity:entity];
+ [fetchRequest setPredicate:compoundPredicate];
+
+ NSError *error = nil;
+ NSArray *results = [self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
+ if (!results)
+ return nil;
+
+ // Return the managed objects, minus the reference object
+ NSMutableArray *foundObjects = [NSMutableArray arrayWithArray:results];
+ [foundObjects removeObject:object];
+ return foundObjects;
+}
+
+/**
+ Merges the new object with other objects that already exist.
+
+ Since there is already another object with the same indexed properties, we need
+ to determine how this should be merged; Either
+ (a) for entities that have a "revisionKey" userInfo property, we compare
+ the value in the property of that name to determine if the new object
+ should overwrite the old one;
+ (b) the entity shouldn't be merged with new results, causing the new value
+ to be ignored / removed;
+ (c) any new entities should automatically be added, regardless of whether
+ or not they're unique.
+
+ Returns true if the object was merged successfully, or false if the object
+ should still be added to the model.
+*/
+- (BOOL)mergeModelObject:(NSManagedObject*)newObject withExistingObject:(NSManagedObject*)existingObject {
+ NSEntityDescription *entity = [newObject entity];
+
+ NSString *allowDuplicatesStr = [[entity userInfo] objectForKey:@"allowDuplicates"];
+ BOOL allowDuplicates = (allowDuplicatesStr && [allowDuplicatesStr boolValue]);
+ NSString *revisionPropertyName = [[entity userInfo] objectForKey:@"revisionKey"];
+ if (!revisionPropertyName)
+ revisionPropertyName = @"revision";
+ NSAttributeDescription *revisionProperty = [[entity propertiesByName] objectForKey:revisionPropertyName];
+
+ // If they set allowDuplicates to true, and they don't have a revision
+ // property name, then the model object should be added anyway.
+ if (allowDuplicates && !revisionProperty)
+ return NO;
+
+ // If they didn't set allowDuplicates to true, and we still don't have
+ // a revision property, then this would be a duplicate and shouldn't be added.
+ if (!allowDuplicates && !revisionProperty)
+ return YES;
+
+ // Figure out which one is the newest, and update the current object with that
+ NSObject *oldRevision = [existingObject valueForKey:revisionPropertyName];
+ NSObject *newRevision = [newObject valueForKey:revisionPropertyName];
+#ifdef ManagedObjectXMLSyncDebug
+ NSLog(@"Comparing old revision %@ to new revision %@", oldRevision, newRevision);
+#endif
+
+ SEL compare = @selector(compare:);
+ if (![oldRevision respondsToSelector:compare] || ![newRevision respondsToSelector:compare]) {
+#ifdef ManagedObjectXMLSyncDebug
+ NSLog(@"Object of type %@ cannot be used to compare revisions", [oldRevision class]);
+#endif
+ return YES;
+ }
+
+ // See if the new object isn't newer
+ NSComparisonResult compareResult = [(NSNumber*)[newRevision performSelector:compare withObject:oldRevision] integerValue];
+ if (compareResult != NSOrderedDescending)
+ return YES;
+
+ // Merge the two objects together
+ for (NSPropertyDescription *property in [entity properties]) {
+ NSString *propertyName = [property name];
+
+#ifdef ManagedObjectXMLSyncDebug
+ NSLog(@"Property name: %@", propertyName);
+#endif
+
+ if ([propertyName isEqualToString:@"objectID"])
+ continue;
+
+ id existingValue = [existingObject valueForKey:propertyName];
+ id newValue = [newObject valueForKey:propertyName];
+ if (!newValue && !existingValue)
+ continue;
+
+ if (existingValue && ![existingValue isEqual:newValue])
+ [existingObject setValue:newValue forKey:propertyName];
+ }
+
+ return YES;
+}
+
+- (void)findCrossReferences {
+ NSMutableSet *completedReferences = [NSMutableSet set];
+
+ for (ManagedObjectXMLSyncCrossReference *crossReference in _pendingIdMapping) {
+ if ([crossReference findReferencesInContext:self.managedObjectContext]) {
+ [completedReferences addObject:crossReference];
+ }
+ }
+
+ for (ManagedObjectXMLSyncCrossReference *finishedReference in completedReferences) {
+ [_pendingIdMapping removeObject:finishedReference];
+ }
+}
+
+#pragma mark NSXMLParserDelegate methods
+
+- (void)parserDidStartDocument:(NSXMLParser *)parser {
+ if (self.delegate)
+ [self.delegate managedObjectXMLSync:self didStartXMLDocument:parser];
+}
+
+- (void)parserDidEndDocument:(NSXMLParser *)parser {
+ [self findCrossReferences];
+ [_pendingIdMapping removeAllObjects];
+
+ NSError *error = nil;
+ [self.managedObjectContext save:&error];
+ if (error != nil && self.delegate)
+ [self.delegate managedObjectXMLSync:self saveErrorOccurred:error];
+
+ if (self.delegate)
+ [self.delegate managedObjectXMLSync:self didEndXMLDocument:parser];
+}
+
+- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
+ if (self.delegate)
+ [self.delegate managedObjectXMLSync:self parser:parser parseErrorOccurred:parseError];
+}
+
+- (void)parser:(NSXMLParser *)parser validationErrorOccurred:(NSError *)validationError {
+ if (self.delegate)
+ [self.delegate managedObjectXMLSync:self parser:parser validationErrorOccurred:validationError];
+}
+
+- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
+ NSString *entityName = [self.elementNameMapping objectForKey:elementName];
+ if (!entityName)
+ entityName = elementName;
+
+ // Check if this tag represents a new object
+ NSEntityDescription *entity = [[self.managedObjectModel entitiesByName] objectForKey:entityName];
+ if (entity) {
+ [self startObject:entity];
+ if (_currentModelObjectTagName)
+ [_currentModelObjectTagName release];
+ _currentModelObjectTagName = [elementName copy];
+ }
+
+ // Check if this tag is a property
+ else if (_currentModelObject) {
+ // If this property is a relationship, add a cross reference lookup command object for later
+ NSPropertyDescription *property = [[_currentEntity propertiesByName] objectForKey:entityName];
+ if ([property isKindOfClass:[NSRelationshipDescription class]] && [attributeDict count] > 0) {
+ [self saveCrossReference:attributeDict fromManagedObject:_currentModelObject throughProperty:property];
+ }
+
+ // Otherwise we should store the XML's content in this property
+ else {
+ if (_currentProperty)
+ [_currentProperty release];
+ if (_currentString)
+ [_currentString release];
+
+ _currentProperty = [property retain];
+ _currentString = [[NSMutableString string] retain];
+ }
+ }
+
+ // Skip a bogus element
+ else {
+#ifdef ManagedObjectXMLSyncDebug
+ NSLog(@"Ignoring element \"%@\" at line %d, column %d", elementName, [parser lineNumber], [parser columnNumber]);
+#endif
+ }
+}
+
+- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
+ // Set the current value to the appropriate property if this tag is for an object's property
+ if (_currentProperty) {
+ id value = [self getValueForProperty:_currentProperty fromString:_currentString];
+ NSString *propertyName = [_currentProperty name];
+
+#ifdef ManagedObjectXMLSyncDebug
+ NSLog(@"Setting \"%@\" for property \"%@\"", value, propertyName);
+#endif
+
+ [_currentModelObject setValue:value forKey:propertyName];
+ [_currentString release];
+ [_currentProperty release];
+ _currentString = nil;
+ _currentProperty = nil;
+ }
+
+ // If this represents the end of an object, store it.
+ else if (_currentModelObject && [elementName isEqualToString:_currentModelObjectTagName]) {
+
+ // Find any objects that match the current indexed property values
+ NSArray *matchingObjects = [self findManagedObjectsWithIndexedPropertiesMatching:_currentModelObject];
+ if (matchingObjects && [matchingObjects count] > 0) {
+ NSManagedObject *existingObject = [matchingObjects lastObject];
+
+ // Merge the objects, or add the new one anyway if the entity tells us to
+ if (![self mergeModelObject:_currentModelObject withExistingObject:existingObject]) {
+ NSLog(@"Merged old object %@ with existing object %@", _currentModelObject, existingObject);
+ [self.managedObjectContext insertObject:_currentModelObject];
+ }
+ } else {
+ // Add this object to the object context
+ [self.managedObjectContext insertObject:_currentModelObject];
+ }
+
+ // Clean up the model object for the next XML block
+ [_currentModelObject release];
+ _currentModelObject = nil;
+
+ // Find any cross-references that may have been added in this block
+ [self findCrossReferences];
+ }
+}
+
+- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
+ if (_currentString)
+ [_currentString appendString:string];
+}
+
+@end
View
18 Classes/NetworkInterface/DataManager.h
@@ -1,18 +0,0 @@
-//
-// DataManager.h
-// iYAPC
-//
-// Created by Michael Nachbaur on 10-12-15.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import "SynthesizeSingleton.h"
-
-@interface DataManager : NSObject {
-
-}
-
-+ (DataManager*)sharedDataManager;
-
-@end
View
16 Classes/NetworkInterface/DataManager.m
@@ -1,16 +0,0 @@
-//
-// DataManager.m
-// iYAPC
-//
-// Created by Michael Nachbaur on 10-12-15.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
-//
-
-#import "DataManager.h"
-
-@implementation DataManager
-SYNTHESIZE_SINGLETON_FOR_CLASS(DataManager);
-
-
-
-@end
View
33 Classes/PublicDataManager.h
@@ -0,0 +1,33 @@
+//
+// PublicDataManager.h
+// iYAPC
+//
+// Created by Michael Nachbaur on 11-01-16.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "SynthesizeSingleton.h"
+
+#import "ManagedObjectXMLSync.h"
+
+@interface PublicDataManager : NSObject {
+ NSManagedObjectContext *_managedObjectContext;
+ NSManagedObjectModel *_managedObjectModel;
+
+ ManagedObjectXMLSync *_currentObjectSync;
+ BOOL _isReloading;
+ NSURL *_dataUrl;
+}
+
+@property (nonatomic, retain) NSManagedObjectContext *managedObjectContext;
+@property (nonatomic, retain) NSManagedObjectModel *managedObjectModel;
+@property (nonatomic, readonly) ManagedObjectXMLSync *currentObjectSync;
+@property (nonatomic, retain) NSURL *dataUrl;
+@property (nonatomic) BOOL isReloading;
+
++ (PublicDataManager*)sharedPublicDataManager;
+- (BOOL)reloadData;
+- (void)cancel;
+
+@end
View
68 Classes/PublicDataManager.m
@@ -0,0 +1,68 @@
+//
+// PublicDataManager.m
+// iYAPC
+//
+// Created by Michael Nachbaur on 11-01-16.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
+//
+
+#import "PublicDataManager.h"
+#import "iYAPCAppDelegate.h"
+
+@implementation PublicDataManager
+SYNTHESIZE_SINGLETON_FOR_CLASS(PublicDataManager);
+@synthesize managedObjectContext = _managedObjectContext;
+@synthesize managedObjectModel = _managedObjectModel;
+@synthesize currentObjectSync = _currentObjectSync;
+@synthesize dataUrl = _dataUrl;
+@synthesize isReloading = _isReloading;
+
+#pragma mark -
+#pragma mark Object lifecycle
+
+- (id)init {
+ self = [super init];
+ if (self) {
+ iYAPCAppDelegate *delegate = (iYAPCAppDelegate*)[UIApplication sharedApplication].delegate;
+ self.managedObjectContext = delegate.managedObjectContext;
+ self.managedObjectModel = delegate.managedObjectModel;
+
+ NSString *filePath = [[NSBundle mainBundle] pathForResource:@"TestEvents" ofType:@"xml"];
+ self.dataUrl = [NSURL fileURLWithPath:filePath];
+ }
+
+ return self;
+}
+
+- (void)dealloc {
+ [_currentObjectSync release];
+
+ self.managedObjectModel = nil;
+ self.managedObjectContext = nil;
+ self.dataUrl = nil;
+
+ [super dealloc];
+}
+
+#pragma mark -
+#pragma mark Public methods
+
+- (BOOL)reloadData {
+ if (self.currentObjectSync)
+ [self cancel];
+
+ _currentObjectSync = [[ManagedObjectXMLSync alloc] initWithManagedObjectContext:self.managedObjectContext
+ withManagedObjectModel:self.managedObjectModel];
+ return [_currentObjectSync syncContentsOfURL:self.dataUrl];
+}
+
+- (void)cancel {
+ if (!self.currentObjectSync)
+ return;
+
+ [self.currentObjectSync cancel];
+ [_currentObjectSync release];
+ _currentObjectSync = nil;
+}
+
+@end
View
24 Classes/UserManager.h
@@ -0,0 +1,24 @@
+//
+// UserManager.h
+// iYAPC
+//
+// Created by Michael Nachbaur on 10-12-20.
+// Copyright 2010 Decaf Ninja Software. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "SynthesizeSingleton.h"
+
+@interface UserManager : NSObject {
+ NSString *_username;
+ NSString *_password;
+ NSString *_sessionId;
+}
+
+@property (nonatomic,retain) NSString *username;
+@property (nonatomic,retain) NSString *password;
+@property (nonatomic,retain) NSString *sessionId;
+
++ (UserManager*)sharedUserManager;
+
+@end
View
26 Classes/UserManager.m
@@ -0,0 +1,26 @@
+//
+// UserManager.m
+// iYAPC
+//
+// Created by Michael Nachbaur on 10-12-20.
+// Copyright 2010 Decaf Ninja Software. All rights reserved.
+//
+
+#import "UserManager.h"
+
+
+@implementation UserManager
+SYNTHESIZE_SINGLETON_FOR_CLASS(UserManager);
+@synthesize username = _username;
+@synthesize password = _password;
+@synthesize sessionId = _sessionId;
+
+- (void)dealloc {
+ self.username = nil;
+ self.password = nil;
+ self.sessionId = nil;
+
+ [super dealloc];
+}
+
+@end
View
6 Classes/iYAPCAppDelegate.h
@@ -15,9 +15,9 @@
UINavigationController *navigationController;
@private
- NSManagedObjectContext *managedObjectContext_;
- NSManagedObjectModel *managedObjectModel_;
- NSPersistentStoreCoordinator *persistentStoreCoordinator_;
+ NSManagedObjectContext *_managedObjectContext;
+ NSManagedObjectModel *_managedObjectModel;
+ NSPersistentStoreCoordinator *_persistentStoreCoordinator;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
View
41 Classes/iYAPCAppDelegate.m
@@ -8,7 +8,11 @@
#import "iYAPCAppDelegate.h"
#import "RootEventViewController.h"
+#import "ASIS3Request.h"
+#import "PublicDataManager.h"
+#define kAWS_S3_ACCESS_KEY @"asdf"
+#define kAWS_S3_SECRET_KEY @"asdf"
@implementation iYAPCAppDelegate
@@ -28,6 +32,8 @@ - (void)awakeFromNib {
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
+ [ASIS3Request setSharedSecretAccessKey:kAWS_S3_SECRET_KEY];
+ [ASIS3Request setSharedAccessKey:kAWS_S3_ACCESS_KEY];
// Add the navigation controller's view to the window and display.
[self.window addSubview:navigationController.view];
@@ -65,6 +71,7 @@ - (void)applicationDidBecomeActive:(UIApplication *)application {
/*
Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
*/
+ [[PublicDataManager sharedPublicDataManager] reloadData];
}
@@ -103,16 +110,16 @@ - (void)saveContext {
*/
- (NSManagedObjectContext *)managedObjectContext {
- if (managedObjectContext_ != nil) {
- return managedObjectContext_;
+ if (_managedObjectContext != nil) {
+ return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
- managedObjectContext_ = [[NSManagedObjectContext alloc] init];
- [managedObjectContext_ setPersistentStoreCoordinator:coordinator];
+ _managedObjectContext = [[NSManagedObjectContext alloc] init];
+ [_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
- return managedObjectContext_;
+ return _managedObjectContext;
}
@@ -122,13 +129,13 @@ - (NSManagedObjectContext *)managedObjectContext {
*/
- (NSManagedObjectModel *)managedObjectModel {
- if (managedObjectModel_ != nil) {
- return managedObjectModel_;
+ if (_managedObjectModel != nil) {
+ return _managedObjectModel;
}
NSString *modelPath = [[NSBundle mainBundle] pathForResource:@"iYAPC" ofType:@"momd"];
NSURL *modelURL = [NSURL fileURLWithPath:modelPath];
- managedObjectModel_ = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
- return managedObjectModel_;
+ _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL];
+ return _managedObjectModel;
}
@@ -138,15 +145,15 @@ - (NSManagedObjectModel *)managedObjectModel {
*/
- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
- if (persistentStoreCoordinator_ != nil) {
- return persistentStoreCoordinator_;
+ if (_persistentStoreCoordinator != nil) {
+ return _persistentStoreCoordinator;
}
NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"iYAPC.sqlite"];
NSError *error = nil;
- persistentStoreCoordinator_ = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
- if (![persistentStoreCoordinator_ addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
+ _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
+ if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {
/*
Replace this implementation with code to handle the error appropriately.
@@ -174,7 +181,7 @@ - (NSPersistentStoreCoordinator *)persistentStoreCoordinator {
abort();
}
- return persistentStoreCoordinator_;
+ return _persistentStoreCoordinator;
}
@@ -201,9 +208,9 @@ Free up as much memory as possible by purging cached data objects that can be re
- (void)dealloc {
- [managedObjectContext_ release];
- [managedObjectModel_ release];
- [persistentStoreCoordinator_ release];
+ [_managedObjectContext release];
+ [_managedObjectModel release];
+ [_persistentStoreCoordinator release];
[navigationController release];
[window release];
1 Libraries/aqtoolkit
@@ -0,0 +1 @@
+Subproject commit 009d675d47f6a175b7bf8b0c7da70c8cfd10b200
1 Libraries/asi-http-request
@@ -0,0 +1 @@
+Subproject commit 41693a285f3c654ca3391999d5cd51bf2cbcecbd
View
80 TestEvents.xml
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Data>
+ <Venue>
+ <revision>1</revision>
+ <title>Crowne Plaza Asheville</title>
+ <caption>• 34000 square feet of meeting and banquet facilities
+• 274 well-appointed guest rooms, including 4 suites and 17 King Executive suites
+• Complimentary parking
+• Complimentary high-speed wireless internet
+• Award-winning restaurant
+• Mulligan’s Bar &amp; Grille, featuring sandwiches, snacks and drink specials
+• On-site golf, indoor and outdoor tennis, and swimming
+• Tennis and Golf Pro Shop
+• Fitness center with brand new state of the art equipment
+• Concierge and bell services
+• Pet Friendly rooms are available</caption>
+ <latitude>36.6082</latitude>
+ <longitude>-82.5526</longitude>
+ </Venue>
+ <Event>
+ <revision>1</revision>
+ <title>YAPC::NA 2011</title>
+ <subtitle>YAPC North America 2011</subtitle>
+ <locationTitle>Asheville, NC, USA</locationTitle>
+ <description>Annual North American YAPC Perl conference</description>
+ <latitude>36.6082</latitude>
+ <longitude>-82.5526</longitude>
+ <venue title="Crowne Plaza Asheville"/>
+ </Event>
+ <Day>
+ <revision>1</revision>
+ <eventDate>2011-06-13</eventDate>
+ <event title="YAPC::NA 2011"/>
+ </Day>
+ <Day>
+ <revision>1</revision>
+ <eventDate>2011-06-14</eventDate>
+ <event title="YAPC::NA 2011"/>
+ </Day>
+ <Day>
+ <revision>1</revision>
+ <eventDate>2011-06-15</eventDate>
+ <event title="YAPC::NA 2011"/>
+ </Day>
+ <Track>
+ <revision>1</revision>
+ <title>cPanel.net (GH3)</title>
+ <caption>This is the description for this track</caption>
+ <order>1</order>
+ <event title="YAPC::NA 2011"/>
+ </Track>
+ <Track>
+ <revision>1</revision>
+ <title>Grant Street Group (Senate)</title>
+ <caption>This is the description for the other track</caption>
+ <order>2</order>
+ <event title="YAPC::NA 2011"/>
+ </Track>
+ <Track>
+ <revision>1</revision>
+ <title>cPanel.net (GH1)</title>
+ <caption>The other description</caption>
+ <order>3</order>
+ <event title="YAPC::NA 2011"/>
+ </Track>
+ <Track>
+ <revision>1</revision>
+ <title>Nationwide (Cartoon 1)</title>
+ <caption>The funnily-named description</caption>
+ <order>4</order>
+ <event title="YAPC::NA 2011"/>
+ </Track>
+ <Track>
+ <revision>1</revision>
+ <title>Nationwide (Cartoon 2)</title>
+ <caption>Another oddly-named caption</caption>
+ <order>5</order>
+ <event title="YAPC::NA 2011"/>
+ </Track>
+</Data>
View
14 iYAPC.xcdatamodeld/AttendeeModel.h
@@ -2,8 +2,8 @@
// AttendeeModel.h
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import <CoreData/CoreData.h>
@@ -15,16 +15,16 @@
{
}
-@property (nonatomic, retain) NSSet* sessions;
+@property (nonatomic, retain) NSSet* attendingSessions;
@end
@interface AttendeeModel (CoreDataGeneratedAccessors)
-- (void)addSessionsObject:(SessionModel *)value;
-- (void)removeSessionsObject:(SessionModel *)value;
-- (void)addSessions:(NSSet *)value;
-- (void)removeSessions:(NSSet *)value;
+- (void)addAttendingSessionsObject:(SessionModel *)value;
+- (void)removeAttendingSessionsObject:(SessionModel *)value;
+- (void)addAttendingSessions:(NSSet *)value;
+- (void)removeAttendingSessions:(NSSet *)value;
@end
View
6 iYAPC.xcdatamodeld/AttendeeModel.m
@@ -2,8 +2,8 @@
// AttendeeModel.m
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import "AttendeeModel.h"
@@ -12,6 +12,6 @@
@implementation AttendeeModel
-@dynamic sessions;
+@dynamic attendingSessions;
@end
View
5 iYAPC.xcdatamodeld/DayModel.h
@@ -2,8 +2,8 @@
// DayModel.h
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import <CoreData/CoreData.h>
@@ -15,6 +15,7 @@
{
}
+@property (nonatomic, retain) NSNumber * revision;
@property (nonatomic, retain) NSDate * eventDate;
@property (nonatomic, retain) EventModel * event;
@property (nonatomic, retain) NSSet* sessions;
View
5 iYAPC.xcdatamodeld/DayModel.m
@@ -2,8 +2,8 @@
// DayModel.m
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import "DayModel.h"
@@ -13,6 +13,7 @@
@implementation DayModel
+@dynamic revision;
@dynamic eventDate;
@dynamic event;
@dynamic sessions;
View
19 iYAPC.xcdatamodeld/EventModel.h
@@ -2,31 +2,38 @@
// EventModel.h
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import <CoreData/CoreData.h>
@class DayModel;
-@class LocationModel;
+@class TrackModel;
+@class VenueModel;
@interface EventModel : NSManagedObject
{
}
+@property (nonatomic, retain) NSNumber * revision;
@property (nonatomic, retain) NSString * subtitle;
@property (nonatomic, retain) NSString * title;
-@property (nonatomic, retain) NSNumber * newAttribute;
-@property (nonatomic, retain) NSString * description;
@property (nonatomic, retain) NSString * locationTitle;
-@property (nonatomic, retain) LocationModel * location;
+@property (nonatomic, retain) NSString * caption;
+@property (nonatomic, retain) NSSet* tracks;
+@property (nonatomic, retain) VenueModel * venue;
@property (nonatomic, retain) NSSet* days;
@end
@interface EventModel (CoreDataGeneratedAccessors)
+- (void)addTracksObject:(TrackModel *)value;
+- (void)removeTracksObject:(TrackModel *)value;
+- (void)addTracks:(NSSet *)value;
+- (void)removeTracks:(NSSet *)value;
+
- (void)addDaysObject:(DayModel *)value;
- (void)removeDaysObject:(DayModel *)value;
- (void)addDays:(NSSet *)value;
View
14 iYAPC.xcdatamodeld/EventModel.m
@@ -2,23 +2,25 @@
// EventModel.m
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import "EventModel.h"
#import "DayModel.h"
-#import "LocationModel.h"
+#import "TrackModel.h"
+#import "VenueModel.h"
@implementation EventModel
+@dynamic revision;
@dynamic subtitle;
@dynamic title;
-@dynamic newAttribute;
-@dynamic description;
@dynamic locationTitle;
-@dynamic location;
+@dynamic caption;
+@dynamic tracks;
+@dynamic venue;
@dynamic days;
@end
View
5 iYAPC.xcdatamodeld/LocationModel.h
@@ -2,8 +2,8 @@
// LocationModel.h
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import <CoreData/CoreData.h>
@@ -13,6 +13,7 @@
{
}
+@property (nonatomic, retain) NSNumber * revision;
@property (nonatomic, retain) NSNumber * longitude;
@property (nonatomic, retain) NSNumber * latitude;
View
5 iYAPC.xcdatamodeld/LocationModel.m
@@ -2,15 +2,16 @@
// LocationModel.m
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import "LocationModel.h"
@implementation LocationModel
+@dynamic revision;
@dynamic longitude;
@dynamic latitude;
View
9 iYAPC.xcdatamodeld/PersonModel.h
@@ -2,23 +2,22 @@
// PersonModel.h
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import <CoreData/CoreData.h>
+#import "LocationModel.h"
-@class LocationModel;
-@interface PersonModel : NSManagedObject
+@interface PersonModel : LocationModel
{
}
@property (nonatomic, retain) NSString * email;
@property (nonatomic, retain) NSString * twitter;
@property (nonatomic, retain) NSString * website;
@property (nonatomic, retain) NSString * fullname;
-@property (nonatomic, retain) LocationModel * homeLocation;
@end
View
6 iYAPC.xcdatamodeld/PersonModel.m
@@ -2,20 +2,18 @@
// PersonModel.m
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import "PersonModel.h"
-#import "LocationModel.h"
@implementation PersonModel
@dynamic email;
@dynamic twitter;
@dynamic website;
@dynamic fullname;
-@dynamic homeLocation;
@end
View
20 iYAPC.xcdatamodeld/PresenterModel.h
@@ -2,32 +2,32 @@
// PresenterModel.h
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import <CoreData/CoreData.h>
-#import "PersonModel.h"
+#import "AttendeeModel.h"
@class SessionModel;
-@interface PresenterModel : PersonModel
+@interface PresenterModel : AttendeeModel
{
}
@property (nonatomic, retain) NSNumber * order;
-@property (nonatomic, retain) NSString * description;
+@property (nonatomic, retain) NSString * caption;
@property (nonatomic, retain) NSString * role;
-@property (nonatomic, retain) NSSet* sessions;
+@property (nonatomic, retain) NSSet* presentingSessions;
@end
@interface PresenterModel (CoreDataGeneratedAccessors)
-- (void)addSessionsObject:(SessionModel *)value;
-- (void)removeSessionsObject:(SessionModel *)value;
-- (void)addSessions:(NSSet *)value;
-- (void)removeSessions:(NSSet *)value;
+- (void)addPresentingSessionsObject:(SessionModel *)value;
+- (void)removePresentingSessionsObject:(SessionModel *)value;
+- (void)addPresentingSessions:(NSSet *)value;
+- (void)removePresentingSessions:(NSSet *)value;
@end
View
8 iYAPC.xcdatamodeld/PresenterModel.m
@@ -2,8 +2,8 @@
// PresenterModel.m
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import "PresenterModel.h"
@@ -13,8 +13,8 @@
@implementation PresenterModel
@dynamic order;
-@dynamic description;
+@dynamic caption;
@dynamic role;
-@dynamic sessions;
+@dynamic presentingSessions;
@end
View
14 iYAPC.xcdatamodeld/SessionModel.h
@@ -2,12 +2,13 @@
// SessionModel.h
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import <CoreData/CoreData.h>
+@class AttendeeModel;
@class DayModel;
@class PresenterModel;
@class TrackModel;
@@ -17,14 +18,16 @@
}
@property (nonatomic, retain) NSString * room;
+@property (nonatomic, retain) NSNumber * revision;
@property (nonatomic, retain) NSString * subtitle;
@property (nonatomic, retain) NSDate * endTime;
@property (nonatomic, retain) NSString * title;
-@property (nonatomic, retain) NSString * description;
@property (nonatomic, retain) NSDate * startTime;
+@property (nonatomic, retain) NSString * caption;
@property (nonatomic, retain) DayModel * eventDay;
@property (nonatomic, retain) NSSet* presenters;
@property (nonatomic, retain) TrackModel * track;
+@property (nonatomic, retain) NSSet* attendees;
@end
@@ -35,5 +38,10 @@
- (void)addPresenters:(NSSet *)value;
- (void)removePresenters:(NSSet *)value;
+- (void)addAttendeesObject:(AttendeeModel *)value;
+- (void)removeAttendeesObject:(AttendeeModel *)value;
+- (void)addAttendees:(NSSet *)value;
+- (void)removeAttendees:(NSSet *)value;
+
@end
View
9 iYAPC.xcdatamodeld/SessionModel.m
@@ -2,26 +2,29 @@
// SessionModel.m
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import "SessionModel.h"
+#import "AttendeeModel.h"
#import "DayModel.h"
#import "PresenterModel.h"
#import "TrackModel.h"
@implementation SessionModel
@dynamic room;
+@dynamic revision;
@dynamic subtitle;
@dynamic endTime;
@dynamic title;
-@dynamic description;
@dynamic startTime;
+@dynamic caption;
@dynamic eventDay;
@dynamic presenters;
@dynamic track;
+@dynamic attendees;
@end
View
9 iYAPC.xcdatamodeld/TrackModel.h
@@ -2,21 +2,24 @@
// TrackModel.h
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import <CoreData/CoreData.h>
+@class EventModel;
@class SessionModel;
@interface TrackModel : NSManagedObject
{
}
+@property (nonatomic, retain) NSNumber * revision;
@property (nonatomic, retain) NSString * title;
@property (nonatomic, retain) NSNumber * order;
-@property (nonatomic, retain) NSString * description;
+@property (nonatomic, retain) NSString * caption;
+@property (nonatomic, retain) EventModel * event;
@property (nonatomic, retain) NSSet* sessions;
@end
View
9 iYAPC.xcdatamodeld/TrackModel.m
@@ -2,19 +2,22 @@
// TrackModel.m
// iYAPC
//
-// Created by Michael Nachbaur on 10-12-11.
-// Copyright 2010 Decaf Ninja Software. All rights reserved.
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
//
#import "TrackModel.h"
+#import "EventModel.h"
#import "SessionModel.h"
@implementation TrackModel
+@dynamic revision;
@dynamic title;
@dynamic order;
-@dynamic description;
+@dynamic caption;
+@dynamic event;
@dynamic sessions;
@end
View
36 iYAPC.xcdatamodeld/VenueModel.h
@@ -0,0 +1,36 @@
+//
+// VenueModel.h
+// iYAPC
+//
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
+//
+
+#import <CoreData/CoreData.h>
+#import "LocationModel.h"
+
+@class EventModel;
+
+@interface VenueModel : LocationModel
+{
+}
+
+@property (nonatomic, retain) NSString * address;
+@property (nonatomic, retain) NSString * city;
+@property (nonatomic, retain) NSString * country;
+@property (nonatomic, retain) NSString * title;
+@property (nonatomic, retain) NSString * caption;
+@property (nonatomic, retain) NSString * province;
+@property (nonatomic, retain) NSSet* events;
+
+@end
+
+
+@interface VenueModel (CoreDataGeneratedAccessors)
+- (void)addEventsObject:(EventModel *)value;
+- (void)removeEventsObject:(EventModel *)value;
+- (void)addEvents:(NSSet *)value;
+- (void)removeEvents:(NSSet *)value;
+
+@end
+
View
23 iYAPC.xcdatamodeld/VenueModel.m
@@ -0,0 +1,23 @@
+//
+// VenueModel.m
+// iYAPC
+//
+// Created by Michael Nachbaur on 11-01-17.
+// Copyright 2011 Decaf Ninja Software. All rights reserved.
+//
+
+#import "VenueModel.h"
+
+#import "EventModel.h"
+
+@implementation VenueModel
+
+@dynamic address;
+@dynamic city;
+@dynamic country;
+@dynamic title;
+@dynamic caption;
+@dynamic province;
+@dynamic events;
+
+@end
View
BIN iYAPC.xcdatamodeld/iYAPC.xcdatamodel/elements
Binary file not shown.
View
BIN iYAPC.xcdatamodeld/iYAPC.xcdatamodel/layout
Binary file not shown.
View
313 iYAPC.xcodeproj/project.pbxproj
@@ -7,20 +7,44 @@
objects = {
/* Begin PBXBuildFile section */
- 1B2D459B12B4775600745347 /* PersonModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D458C12B4775600745347 /* PersonModel.m */; };
- 1B2D459C12B4775600745347 /* SessionModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D458E12B4775600745347 /* SessionModel.m */; };
- 1B2D459D12B4775600745347 /* AttendeeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D459012B4775600745347 /* AttendeeModel.m */; };
- 1B2D459E12B4775600745347 /* TrackModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D459212B4775600745347 /* TrackModel.m */; };
- 1B2D459F12B4775600745347 /* EventModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D459412B4775600745347 /* EventModel.m */; };
- 1B2D45A012B4775600745347 /* LocationModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D459612B4775600745347 /* LocationModel.m */; };
- 1B2D45A112B4775600745347 /* PresenterModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D459812B4775600745347 /* PresenterModel.m */; };
- 1B2D45A212B4775600745347 /* DayModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D459A12B4775600745347 /* DayModel.m */; };
1B2D45BE12B4819900745347 /* MainMenuViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D45BC12B4819900745347 /* MainMenuViewController.m */; };
1B2D45BF12B4819900745347 /* MainMenuViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1B2D45BD12B4819900745347 /* MainMenuViewController.xib */; };
1B2D45DE12B53D1100745347 /* iYAPCBackground.png in Resources */ = {isa = PBXBuildFile; fileRef = 1B2D45DC12B53D1100745347 /* iYAPCBackground.png */; };
1B2D45DF12B53D1100745347 /* iYAPCBackground@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 1B2D45DD12B53D1100745347 /* iYAPCBackground@2x.png */; };
1B2D45E312B53E1B00745347 /* SessionTabViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D45E112B53E1B00745347 /* SessionTabViewController.m */; };
- 1B2D46C712B9755400745347 /* DataManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46C612B9755400745347 /* DataManager.m */; };
+ 1B2D46F312B9778200745347 /* ASIAuthenticationDialog.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46CF12B9778200745347 /* ASIAuthenticationDialog.m */; };
+ 1B2D46F412B9778200745347 /* ASIDataCompressor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46D212B9778200745347 /* ASIDataCompressor.m */; };
+ 1B2D46F512B9778200745347 /* ASIDataDecompressor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46D412B9778200745347 /* ASIDataDecompressor.m */; };
+ 1B2D46F612B9778200745347 /* ASIDownloadCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46D612B9778200745347 /* ASIDownloadCache.m */; };
+ 1B2D46F712B9778200745347 /* ASIFormDataRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46D812B9778200745347 /* ASIFormDataRequest.m */; };
+ 1B2D46F812B9778200745347 /* ASIHTTPRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46DA12B9778200745347 /* ASIHTTPRequest.m */; };
+ 1B2D46F912B9778200745347 /* ASIInputStream.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46DE12B9778200745347 /* ASIInputStream.m */; };
+ 1B2D46FA12B9778200745347 /* ASINetworkQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46E012B9778200745347 /* ASINetworkQueue.m */; };
+ 1B2D46FC12B9778200745347 /* ASIS3Bucket.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46E812B9778200745347 /* ASIS3Bucket.m */; };
+ 1B2D46FD12B9778200745347 /* ASIS3BucketObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46EA12B9778200745347 /* ASIS3BucketObject.m */; };
+ 1B2D46FE12B9778200745347 /* ASIS3BucketRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46EC12B9778200745347 /* ASIS3BucketRequest.m */; };
+ 1B2D46FF12B9778200745347 /* ASIS3ObjectRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46EE12B9778200745347 /* ASIS3ObjectRequest.m */; };
+ 1B2D470012B9778200745347 /* ASIS3Request.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46F012B9778200745347 /* ASIS3Request.m */; };
+ 1B2D470112B9778200745347 /* ASIS3ServiceRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D46F212B9778200745347 /* ASIS3ServiceRequest.m */; };
+ 1B2D470912B977A700745347 /* CFNetwork.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B2D470812B977A700745347 /* CFNetwork.framework */; };
+ 1B2D470D12B977B000745347 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B2D470C12B977B000745347 /* SystemConfiguration.framework */; };
+ 1B2D471112B977B700745347 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B2D471012B977B700745347 /* MobileCoreServices.framework */; };
+ 1B2D471512B977D100745347 /* libz.1.2.3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B2D471412B977D100745347 /* libz.1.2.3.dylib */; };
+ 1B2D483212BA6F2000745347 /* ManagedObjectXMLSync.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B2D483112BA6F2000745347 /* ManagedObjectXMLSync.m */; };
+ 1B2D483712BA703100745347 /* TestEvents.xml in Resources */ = {isa = PBXBuildFile; fileRef = 1B2D483612BA703100745347 /* TestEvents.xml */; };
+ 1B6E171812BFC51400C44A42 /* Reachability.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B6E171712BFC51400C44A42 /* Reachability.m */; };
+ 1B6E186D12C0730D00C44A42 /* UserManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B6E186C12C0730D00C44A42 /* UserManager.m */; };
+ 1B6E195512C3F75C00C44A42 /* libxml2.2.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B6E188612C3D44B00C44A42 /* libxml2.2.dylib */; };
+ 1BD985CB12E3A0EA001C2BB0 /* PublicDataManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD985CA12E3A0EA001C2BB0 /* PublicDataManager.m */; };
+ 1BD9881012E4A3D5001C2BB0 /* PersonModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD987FF12E4A3D5001C2BB0 /* PersonModel.m */; };
+ 1BD9881112E4A3D5001C2BB0 /* SessionModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD9880112E4A3D5001C2BB0 /* SessionModel.m */; };
+ 1BD9881212E4A3D5001C2BB0 /* AttendeeModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD9880312E4A3D5001C2BB0 /* AttendeeModel.m */; };
+ 1BD9881312E4A3D5001C2BB0 /* VenueModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD9880512E4A3D5001C2BB0 /* VenueModel.m */; };
+ 1BD9881412E4A3D5001C2BB0 /* TrackModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD9880712E4A3D5001C2BB0 /* TrackModel.m */; };
+ 1BD9881512E4A3D5001C2BB0 /* EventModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD9880912E4A3D5001C2BB0 /* EventModel.m */; };
+ 1BD9881612E4A3D5001C2BB0 /* LocationModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD9880B12E4A3D5001C2BB0 /* LocationModel.m */; };
+ 1BD9881712E4A3D5001C2BB0 /* PresenterModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD9880D12E4A3D5001C2BB0 /* PresenterModel.m */; };
+ 1BD9881812E4A3D5001C2BB0 /* DayModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BD9880F12E4A3D5001C2BB0 /* DayModel.m */; };
1D3623260D0F684500981E51 /* iYAPCAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* iYAPCAppDelegate.m */; };
1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
@@ -34,22 +58,6 @@
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
- 1B2D458B12B4775600745347 /* PersonModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PersonModel.h; sourceTree = "<group>"; };
- 1B2D458C12B4775600745347 /* PersonModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PersonModel.m; sourceTree = "<group>"; };
- 1B2D458D12B4775600745347 /* SessionModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionModel.h; sourceTree = "<group>"; };
- 1B2D458E12B4775600745347 /* SessionModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionModel.m; sourceTree = "<group>"; };
- 1B2D458F12B4775600745347 /* AttendeeModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AttendeeModel.h; sourceTree = "<group>"; };
- 1B2D459012B4775600745347 /* AttendeeModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AttendeeModel.m; sourceTree = "<group>"; };
- 1B2D459112B4775600745347 /* TrackModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackModel.h; sourceTree = "<group>"; };
- 1B2D459212B4775600745347 /* TrackModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TrackModel.m; sourceTree = "<group>"; };
- 1B2D459312B4775600745347 /* EventModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventModel.h; sourceTree = "<group>"; };
- 1B2D459412B4775600745347 /* EventModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EventModel.m; sourceTree = "<group>"; };
- 1B2D459512B4775600745347 /* LocationModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocationModel.h; sourceTree = "<group>"; };
- 1B2D459612B4775600745347 /* LocationModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocationModel.m; sourceTree = "<group>"; };
- 1B2D459712B4775600745347 /* PresenterModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PresenterModel.h; sourceTree = "<group>"; };
- 1B2D459812B4775600745347 /* PresenterModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PresenterModel.m; sourceTree = "<group>"; };
- 1B2D459912B4775600745347 /* DayModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DayModel.h; sourceTree = "<group>"; };
- 1B2D459A12B4775600745347 /* DayModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DayModel.m; sourceTree = "<group>"; };
1B2D45BB12B4819900745347 /* MainMenuViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainMenuViewController.h; sourceTree = "<group>"; };
1B2D45BC12B4819900745347 /* MainMenuViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainMenuViewController.m; sourceTree = "<group>"; };
1B2D45BD12B4819900745347 /* MainMenuViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainMenuViewController.xib; path = Classes/MainMenuViewController.xib; sourceTree = "<group>"; };
@@ -58,8 +66,72 @@
1B2D45E012B53E1B00745347 /* SessionTabViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionTabViewController.h; sourceTree = "<group>"; };
1B2D45E112B53E1B00745347 /* SessionTabViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionTabViewController.m; sourceTree = "<group>"; };
1B2D46C412B9750100745347 /* SynthesizeSingleton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SynthesizeSingleton.h; path = Classes/SynthesizeSingleton.h; sourceTree = "<group>"; };
- 1B2D46C512B9755400745347 /* DataManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DataManager.h; path = NetworkInterface/DataManager.h; sourceTree = "<group>"; };
- 1B2D46C612B9755400745347 /* DataManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DataManager.m; path = NetworkInterface/DataManager.m; sourceTree = "<group>"; };
+ 1B2D46CE12B9778200745347 /* ASIAuthenticationDialog.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASIAuthenticationDialog.h; path = "Libraries/asi-http-request/Classes/ASIAuthenticationDialog.h"; sourceTree = "<group>"; };
+ 1B2D46CF12B9778200745347 /* ASIAuthenticationDialog.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASIAuthenticationDialog.m; path = "Libraries/asi-http-request/Classes/ASIAuthenticationDialog.m"; sourceTree = "<group>"; };
+ 1B2D46D012B9778200745347 /* ASICacheDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASICacheDelegate.h; path = "Libraries/asi-http-request/Classes/ASICacheDelegate.h"; sourceTree = "<group>"; };
+ 1B2D46D112B9778200745347 /* ASIDataCompressor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASIDataCompressor.h; path = "Libraries/asi-http-request/Classes/ASIDataCompressor.h"; sourceTree = "<group>"; };
+ 1B2D46D212B9778200745347 /* ASIDataCompressor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASIDataCompressor.m; path = "Libraries/asi-http-request/Classes/ASIDataCompressor.m"; sourceTree = "<group>"; };
+ 1B2D46D312B9778200745347 /* ASIDataDecompressor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASIDataDecompressor.h; path = "Libraries/asi-http-request/Classes/ASIDataDecompressor.h"; sourceTree = "<group>"; };
+ 1B2D46D412B9778200745347 /* ASIDataDecompressor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASIDataDecompressor.m; path = "Libraries/asi-http-request/Classes/ASIDataDecompressor.m"; sourceTree = "<group>"; };
+ 1B2D46D512B9778200745347 /* ASIDownloadCache.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASIDownloadCache.h; path = "Libraries/asi-http-request/Classes/ASIDownloadCache.h"; sourceTree = "<group>"; };
+ 1B2D46D612B9778200745347 /* ASIDownloadCache.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASIDownloadCache.m; path = "Libraries/asi-http-request/Classes/ASIDownloadCache.m"; sourceTree = "<group>"; };
+ 1B2D46D712B9778200745347 /* ASIFormDataRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASIFormDataRequest.h; path = "Libraries/asi-http-request/Classes/ASIFormDataRequest.h"; sourceTree = "<group>"; };
+ 1B2D46D812B9778200745347 /* ASIFormDataRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASIFormDataRequest.m; path = "Libraries/asi-http-request/Classes/ASIFormDataRequest.m"; sourceTree = "<group>"; };
+ 1B2D46D912B9778200745347 /* ASIHTTPRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASIHTTPRequest.h; path = "Libraries/asi-http-request/Classes/ASIHTTPRequest.h"; sourceTree = "<group>"; };
+ 1B2D46DA12B9778200745347 /* ASIHTTPRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASIHTTPRequest.m; path = "Libraries/asi-http-request/Classes/ASIHTTPRequest.m"; sourceTree = "<group>"; };
+ 1B2D46DB12B9778200745347 /* ASIHTTPRequestConfig.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASIHTTPRequestConfig.h; path = "Libraries/asi-http-request/Classes/ASIHTTPRequestConfig.h"; sourceTree = "<group>"; };
+ 1B2D46DC12B9778200745347 /* ASIHTTPRequestDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASIHTTPRequestDelegate.h; path = "Libraries/asi-http-request/Classes/ASIHTTPRequestDelegate.h"; sourceTree = "<group>"; };
+ 1B2D46DD12B9778200745347 /* ASIInputStream.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASIInputStream.h; path = "Libraries/asi-http-request/Classes/ASIInputStream.h"; sourceTree = "<group>"; };
+ 1B2D46DE12B9778200745347 /* ASIInputStream.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASIInputStream.m; path = "Libraries/asi-http-request/Classes/ASIInputStream.m"; sourceTree = "<group>"; };
+ 1B2D46DF12B9778200745347 /* ASINetworkQueue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASINetworkQueue.h; path = "Libraries/asi-http-request/Classes/ASINetworkQueue.h"; sourceTree = "<group>"; };
+ 1B2D46E012B9778200745347 /* ASINetworkQueue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = ASINetworkQueue.m; path = "Libraries/asi-http-request/Classes/ASINetworkQueue.m"; sourceTree = "<group>"; };
+ 1B2D46E112B9778200745347 /* ASIProgressDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ASIProgressDelegate.h; path = "Libraries/asi-http-request/Classes/ASIProgressDelegate.h"; sourceTree = "<group>"; };
+ 1B2D46E612B9778200745347 /* ASINSXMLParserCompat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASINSXMLParserCompat.h; sourceTree = "<group>"; };
+ 1B2D46E712B9778200745347 /* ASIS3Bucket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIS3Bucket.h; sourceTree = "<group>"; };
+ 1B2D46E812B9778200745347 /* ASIS3Bucket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIS3Bucket.m; sourceTree = "<group>"; };
+ 1B2D46E912B9778200745347 /* ASIS3BucketObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIS3BucketObject.h; sourceTree = "<group>"; };
+ 1B2D46EA12B9778200745347 /* ASIS3BucketObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIS3BucketObject.m; sourceTree = "<group>"; };
+ 1B2D46EB12B9778200745347 /* ASIS3BucketRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIS3BucketRequest.h; sourceTree = "<group>"; };
+ 1B2D46EC12B9778200745347 /* ASIS3BucketRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIS3BucketRequest.m; sourceTree = "<group>"; };
+ 1B2D46ED12B9778200745347 /* ASIS3ObjectRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIS3ObjectRequest.h; sourceTree = "<group>"; };
+ 1B2D46EE12B9778200745347 /* ASIS3ObjectRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIS3ObjectRequest.m; sourceTree = "<group>"; };
+ 1B2D46EF12B9778200745347 /* ASIS3Request.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIS3Request.h; sourceTree = "<group>"; };
+ 1B2D46F012B9778200745347 /* ASIS3Request.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIS3Request.m; sourceTree = "<group>"; };
+ 1B2D46F112B9778200745347 /* ASIS3ServiceRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ASIS3ServiceRequest.h; sourceTree = "<group>"; };
+ 1B2D46F212B9778200745347 /* ASIS3ServiceRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ASIS3ServiceRequest.m; sourceTree = "<group>"; };
+ 1B2D470812B977A700745347 /* CFNetwork.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CFNetwork.framework; path = System/Library/Frameworks/CFNetwork.framework; sourceTree = SDKROOT; };
+ 1B2D470C12B977B000745347 /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; };
+ 1B2D471012B977B700745347 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; };
+ 1B2D471412B977D100745347 /* libz.1.2.3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.1.2.3.dylib; path = usr/lib/libz.1.2.3.dylib; sourceTree = SDKROOT; };
+ 1B2D481F12B9D10400745347 /* iYAPC_Constants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iYAPC_Constants.h; sourceTree = "<group>"; };
+ 1B2D483012BA6F2000745347 /* ManagedObjectXMLSync.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ManagedObjectXMLSync.h; sourceTree = "<group>"; };
+ 1B2D483112BA6F2000745347 /* ManagedObjectXMLSync.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ManagedObjectXMLSync.m; sourceTree = "<group>"; };
+ 1B2D483612BA703100745347 /* TestEvents.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = TestEvents.xml; sourceTree = "<group>"; };
+ 1B6E171612BFC51400C44A42 /* Reachability.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Reachability.h; path = "Libraries/asi-http-request/External/Reachability/Reachability.h"; sourceTree = "<group>"; };
+ 1B6E171712BFC51400C44A42 /* Reachability.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Reachability.m; path = "Libraries/asi-http-request/External/Reachability/Reachability.m"; sourceTree = "<group>"; };
+ 1B6E186B12C0730D00C44A42 /* UserManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserManager.h; sourceTree = "<group>"; };
+ 1B6E186C12C0730D00C44A42 /* UserManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserManager.m; sourceTree = "<group>"; };
+ 1B6E188612C3D44B00C44A42 /* libxml2.2.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libxml2.2.dylib; path = usr/lib/libxml2.2.dylib; sourceTree = SDKROOT; };
+ 1BD985C912E3A0EA001C2BB0 /* PublicDataManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PublicDataManager.h; sourceTree = "<group>"; };
+ 1BD985CA12E3A0EA001C2BB0 /* PublicDataManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PublicDataManager.m; sourceTree = "<group>"; };
+ 1BD987FE12E4A3D5001C2BB0 /* PersonModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PersonModel.h; sourceTree = "<group>"; };
+ 1BD987FF12E4A3D5001C2BB0 /* PersonModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PersonModel.m; sourceTree = "<group>"; };
+ 1BD9880012E4A3D5001C2BB0 /* SessionModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SessionModel.h; sourceTree = "<group>"; };
+ 1BD9880112E4A3D5001C2BB0 /* SessionModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SessionModel.m; sourceTree = "<group>"; };
+ 1BD9880212E4A3D5001C2BB0 /* AttendeeModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AttendeeModel.h; sourceTree = "<group>"; };
+ 1BD9880312E4A3D5001C2BB0 /* AttendeeModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AttendeeModel.m; sourceTree = "<group>"; };
+ 1BD9880412E4A3D5001C2BB0 /* VenueModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VenueModel.h; sourceTree = "<group>"; };
+ 1BD9880512E4A3D5001C2BB0 /* VenueModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VenueModel.m; sourceTree = "<group>"; };
+ 1BD9880612E4A3D5001C2BB0 /* TrackModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TrackModel.h; sourceTree = "<group>"; };
+ 1BD9880712E4A3D5001C2BB0 /* TrackModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TrackModel.m; sourceTree = "<group>"; };
+ 1BD9880812E4A3D5001C2BB0 /* EventModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventModel.h; sourceTree = "<group>"; };
+ 1BD9880912E4A3D5001C2BB0 /* EventModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EventModel.m; sourceTree = "<group>"; };
+ 1BD9880A12E4A3D5001C2BB0 /* LocationModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocationModel.h; sourceTree = "<group>"; };
+ 1BD9880B12E4A3D5001C2BB0 /* LocationModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LocationModel.m; sourceTree = "<group>"; };
+ 1BD9880C12E4A3D5001C2BB0 /* PresenterModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PresenterModel.h; sourceTree = "<group>"; };
+ 1BD9880D12E4A3D5001C2BB0 /* PresenterModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PresenterModel.m; sourceTree = "<group>"; };
+ 1BD9880E12E4A3D5001C2BB0 /* DayModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DayModel.h; sourceTree = "<group>"; };
+ 1BD9880F12E4A3D5001C2BB0 /* DayModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DayModel.m; sourceTree = "<group>"; };
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
1D3623240D0F684500981E51 /* iYAPCAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = iYAPCAppDelegate.h; sourceTree = "<group>"; };
1D3623250D0F684500981E51 /* iYAPCAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = iYAPCAppDelegate.m; sourceTree = "<group>"; };
@@ -86,6 +158,11 @@
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */,
28860BE50F44EE6400985440 /* CoreData.framework in Frameworks */,
+ 1B2D470912B977A700745347 /* CFNetwork.framework in Frameworks */,
+ 1B2D470D12B977B000745347 /* SystemConfiguration.framework in Frameworks */,
+ 1B2D471112B977B700745347 /* MobileCoreServices.framework in Frameworks */,
+ 1B2D471512B977D100745347 /* libz.1.2.3.dylib in Frameworks */,
+ 1B6E195512C3F75C00C44A42 /* libxml2.2.dylib in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -95,6 +172,7 @@
080E96DDFE201D6D7F000001 /* Classes */ = {
isa = PBXGroup;
children = (
+ 1B2D481B12B9CF4200745347 /* Utilities */,
1B2D46C312B974A100745347 /* Network Interface */,
28C286DF0D94DF7D0034E888 /* RootEventViewController.h */,
28C286E00D94DF7D0034E888 /* RootEventViewController.m */,
@@ -129,16 +207,111 @@
1B2D46C312B974A100745347 /* Network Interface */ = {
isa = PBXGroup;
children = (
- 1B2D46C512B9755400745347 /* DataManager.h */,
- 1B2D46C612B9755400745347 /* DataManager.m */,
+ 1B2D482F12BA6F0700745347 /* Parsers */,
+ 1B6E186B12C0730D00C44A42 /* UserManager.h */,
+ 1B6E186C12C0730D00C44A42 /* UserManager.m */,
+ 1BD985C912E3A0EA001C2BB0 /* PublicDataManager.h */,
+ 1BD985CA12E3A0EA001C2BB0 /* PublicDataManager.m */,
);
name = "Network Interface";
sourceTree = "<group>";
};
+ 1B2D46C812B9773900745347 /* Libraries */ = {
+ isa = PBXGroup;
+ children = (
+ 1B6E171912BFC51700C44A42 /* Reachability */,
+ 1B2D470212B9778700745347 /* asi-http-request */,
+ );
+ name = Libraries;
+ sourceTree = "<group>";
+ };
+ 1B2D46E512B9778200745347 /* S3 */ = {
+ isa = PBXGroup;
+ children = (
+ 1B2D46E612B9778200745347 /* ASINSXMLParserCompat.h */,
+ 1B2D46E712B9778200745347 /* ASIS3Bucket.h */,
+ 1B2D46E812B9778200745347 /* ASIS3Bucket.m */,
+ 1B2D46E912B9778200745347 /* ASIS3BucketObject.h */,
+ 1B2D46EA12B9778200745347 /* ASIS3BucketObject.m */,
+ 1B2D46EB12B9778200745347 /* ASIS3BucketRequest.h */,
+ 1B2D46EC12B9778200745347 /* ASIS3BucketRequest.m */,
+ 1B2D46ED12B9778200745347 /* ASIS3ObjectRequest.h */,
+ 1B2D46EE12B9778200745347 /* ASIS3ObjectRequest.m */,
+ 1B2D46EF12B9778200745347 /* ASIS3Request.h */,
+ 1B2D46F012B9778200745347 /* ASIS3Request.m */,
+ 1B2D46F112B9778200745347 /* ASIS3ServiceRequest.h */,
+ 1B2D46F212B9778200745347 /* ASIS3ServiceRequest.m */,
+ );
+ name = S3;
+ path = "Libraries/asi-http-request/Classes/S3";
+ sourceTree = "<group>";
+ };
+ 1B2D470212B9778700745347 /* asi-http-request */ = {
+ isa = PBXGroup;
+ children = (
+ 1B2D46CE12B9778200745347 /* ASIAuthenticationDialog.h */,
+ 1B2D46CF12B9778200745347 /* ASIAuthenticationDialog.m */,
+ 1B2D46D012B9778200745347 /* ASICacheDelegate.h */,
+ 1B2D46D112B9778200745347 /* ASIDataCompressor.h */,
+ 1B2D46D212B9778200745347 /* ASIDataCompressor.m */,
+ 1B2D46D312B9778200745347 /* ASIDataDecompressor.h */,
+ 1B2D46D412B9778200745347 /* ASIDataDecompressor.m */,
+ 1B2D46D512B9778200745347 /* ASIDownloadCache.h */,
+ 1B2D46D612B9778200745347 /* ASIDownloadCache.m */,
+ 1B2D46D712B9778200745347 /* ASIFormDataRequest.h */,
+ 1B2D46D812B9778200745347 /* ASIFormDataRequest.m */,
+ 1B2D46D912B9778200745347 /* ASIHTTPRequest.h */,
+ 1B2D46DA12B9778200745347 /* ASIHTTPRequest.m */,
+ 1B2D46DB12B9778200745347 /* ASIHTTPRequestConfig.h */,
+ 1B2D46DC12B9778200745347 /* ASIHTTPRequestDelegate.h */,
+ 1B2D46DD12B9778200745347 /* ASIInputStream.h */,
+ 1B2D46DE12B9778200745347 /* ASIInputStream.m */,
+ 1B2D46DF12B9778200745347 /* ASINetworkQueue.h */,
+ 1B2D46E012B9778200745347 /* ASINetworkQueue.m */,
+ 1B2D46E112B9778200745347 /* ASIProgressDelegate.h */,
+ 1B2D46E512B9778200745347 /* S3 */,
+ );
+ name = "asi-http-request";
+ sourceTree = "<group>";
+ };
+ 1B2D481B12B9CF4200745347 /* Utilities */ = {
+ isa = PBXGroup;
+ children = (
+ );
+ name = Utilities;
+ sourceTree = "<group>";
+ };
+ 1B2D482F12BA6F0700745347 /* Parsers */ = {
+ isa = PBXGroup;
+ children = (
+ 1B2D483012BA6F2000745347 /* ManagedObjectXMLSync.h */,
+ 1B2D483112BA6F2000745347 /* ManagedObjectXMLSync.m */,
+ );
+ name = Parsers;
+ sourceTree = "<group>";
+ };
+ 1B2D483512BA701A00745347 /* Test XML */ = {
+ isa = PBXGroup;
+ children = (
+ 1B2D483612BA703100745347 /* TestEvents.xml */,
+ );
+ name = "Test XML";
+ sourceTree = "<group>";
+ };
+ 1B6E171912BFC51700C44A42 /* Reachability */ = {
+ isa = PBXGroup;
+ children = (
+ 1B6E171612BFC51400C44A42 /* Reachability.h */,
+ 1B6E171712BFC51400C44A42 /* Reachability.m */,
+ );
+ name = Reachability;
+ sourceTree = "<group>";
+ };
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
isa = PBXGroup;
children = (
080E96DDFE201D6D7F000001 /* Classes */,
+ 1B2D46C812B9773900745347 /* Libraries */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
@@ -152,6 +325,7 @@
children = (
1B2D46C412B9750100745347 /* SynthesizeSingleton.h */,
28A0AAE50D9B0CCF005BE974 /* iYAPC_Prefix.pch */,
+ 1B2D481F12B9D10400745347 /* iYAPC_Constants.h */,
29B97316FDCFA39411CA2CEA /* main.m */,
);
name = "Other Sources";
@@ -160,6 +334,7 @@
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
+ 1B2D483512BA701A00745347 /* Test XML */,
1B2D45DB12B53D1100745347 /* Images */,
28D3F201112F7DC200FD0661 /* iYAPC.xcdatamodeld */,
2899E55F0DE3E45000AC0155 /* RootEventViewController.xib */,
@@ -177,6 +352,11 @@
1D30AB110D05D00D00671497 /* Foundation.framework */,
2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */,
28860BE40F44EE6400985440 /* CoreData.framework */,
+ 1B2D470812B977A700745347 /* CFNetwork.framework */,
+ 1B2D470C12B977B000745347 /* SystemConfiguration.framework */,
+ 1B2D471012B977B700745347 /* MobileCoreServices.framework */,
+ 1B2D471412B977D100745347 /* libz.1.2.3.dylib */,
+ 1B6E188612C3D44B00C44A42 /* libxml2.2.dylib */,
);
name = Frameworks;
sourceTree = "<group>";
@@ -236,6 +416,7 @@
1B2D45BF12B4819900745347 /* MainMenuViewController.xib in Resources */,
1B2D45DE12B53D1100745347 /* iYAPCBackground.png in Resources */,
1B2D45DF12B53D1100745347 /* iYAPCBackground@2x.png in Resources */,
+ 1B2D483712BA703100745347 /* TestEvents.xml in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -250,17 +431,35 @@
1D3623260D0F684500981E51 /* iYAPCAppDelegate.m in Sources */,
28C286E10D94DF7D0034E888 /* RootEventViewController.m in Sources */,
28D3F202112F7DC200FD0661 /* iYAPC.xcdatamodeld in Sources */,
- 1B2D459B12B4775600745347 /* PersonModel.m in Sources */,
- 1B2D459C12B4775600745347 /* SessionModel.m in Sources */,
- 1B2D459D12B4775600745347 /* AttendeeModel.m in Sources */,
- 1B2D459E12B4775600745347 /* TrackModel.m in Sources */,
- 1B2D459F12B4775600745347 /* EventModel.m in Sources */,
- 1B2D45A012B4775600745347 /* LocationModel.m in Sources */,
- 1B2D45A112B4775600745347 /* PresenterModel.m in Sources */,
- 1B2D45A212B4775600745347 /* DayModel.m in Sources */,
1B2D45BE12B4819900745347 /* MainMenuViewController.m in Sources */,
1B2D45E312B53E1B00745347 /* SessionTabViewController.m in Sources */,
- 1B2D46C712B9755400745347 /* DataManager.m in Sources */,
+ 1B2D46F312B9778200745347 /* ASIAuthenticationDialog.m in Sources */,
+ 1B2D46F412B9778200745347 /* ASIDataCompressor.m in Sources */,
+ 1B2D46F512B9778200745347 /* ASIDataDecompressor.m in Sources */,
+ 1B2D46F612B9778200745347 /* ASIDownloadCache.m in Sources */,
+ 1B2D46F712B9778200745347 /* ASIFormDataRequest.m in Sources */,
+ 1B2D46F812B9778200745347 /* ASIHTTPRequest.m in Sources */,
+ 1B2D46F912B9778200745347 /* ASIInputStream.m in Sources */,
+ 1B2D46FA12B9778200745347 /* ASINetworkQueue.m in Sources */,
+ 1B2D46FC12B9778200745347 /* ASIS3Bucket.m in Sources */,
+ 1B2D46FD12B9778200745347 /* ASIS3BucketObject.m in Sources */,
+ 1B2D46FE12B9778200745347 /* ASIS3BucketRequest.m in Sources */,
+ 1B2D46FF12B9778200745347 /* ASIS3ObjectRequest.m in Sources */,
+ 1B2D470012B9778200745347 /* ASIS3Request.m in Sources */,
+ 1B2D470112B9778200745347 /* ASIS3ServiceRequest.m in Sources */,
+ 1B2D483212BA6F2000745347 /* ManagedObjectXMLSync.m in Sources */,
+ 1B6E171812BFC51400C44A42 /* Reachability.m in Sources */,
+ 1B6E186D12C0730D00C44A42 /* UserManager.m in Sources */,
+ 1BD985CB12E3A0EA001C2BB0 /* PublicDataManager.m in Sources */,
+ 1BD9881012E4A3D5001C2BB0 /* PersonModel.m in Sources */,
+ 1BD9881112E4A3D5001C2BB0 /* SessionModel.m in Sources */,
+ 1BD9881212E4A3D5001C2BB0 /* AttendeeModel.m in Sources */,
+ 1BD9881312E4A3D5001C2BB0 /* VenueModel.m in Sources */,
+ 1BD9881412E4A3D5001C2BB0 /* TrackModel.m in Sources */,
+ 1BD9881512E4A3D5001C2BB0 /* EventModel.m in Sources */,
+ 1BD9881612E4A3D5001C2BB0 /* LocationModel.m in Sources */,
+ 1BD9881712E4A3D5001C2BB0 /* PresenterModel.m in Sources */,
+ 1BD9881812E4A3D5001C2BB0 /* DayModel.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -277,6 +476,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = iYAPC_Prefix.pch;
INFOPLIST_FILE = "iYAPC-Info.plist";
+ LIBRARY_SEARCH_PATHS = /usr/include/libxml2;
PRODUCT_NAME = iYAPC;
};
name = Debug;
@@ -289,6 +489,7 @@
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = iYAPC_Prefix.pch;
INFOPLIST_FILE = "iYAPC-Info.plist";
+ LIBRARY_SEARCH_PATHS = /usr/include/libxml2;
PRODUCT_NAME = iYAPC;
VALIDATE_PRODUCT = YES;
};
@@ -302,6 +503,7 @@
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ HEADER_SEARCH_PATHS = /usr/include/libxml2;
PREBINDING = NO;
SDKROOT = iphoneos;
};
@@ -315,6 +517,7 @@
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
+ HEADER_SEARCH_PATHS = /usr/include/libxml2;
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
PREBINDING = NO;
SDKROOT = iphoneos;
@@ -348,22 +551,24 @@
28D3F201112F7DC200FD0661 /* iYAPC.xcdatamodeld */ = {
isa = XCVersionGroup;
children = (
- 1B2D458B12B4775600745347 /* PersonModel.h */,
- 1B2D458C12B4775600745347 /* PersonModel.m */,
- 1B2D458D12B4775600745347 /* SessionModel.h */,
- 1B2D458E12B4775600745347 /* SessionModel.m */,
- 1B2D458F12B4775600745347 /* AttendeeModel.h */,
- 1B2D459012B4775600745347 /* AttendeeModel.m */,
- 1B2D459112B4775600745347 /* TrackModel.h */,
- 1B2D459212B4775600745347 /* TrackModel.m */,
- 1B2D459312B4775600745347 /* EventModel.h */,
- 1B2D459412B4775600745347 /* EventModel.m */,
- 1B2D459512B4775600745347 /* LocationModel.h */,
- 1B2D459612B4775600745347 /* LocationModel.m */,
- 1B2D459712B4775600745347 /* PresenterModel.h */,
- 1B2D459812B4775600745347 /* PresenterModel.m */,
- 1B2D459912B4775600745347 /* DayModel.h */,
- 1B2D459A12B4775600745347 /* DayModel.m */,
+ 1BD987FE12E4A3D5001C2BB0 /* PersonModel.h */,
+ 1BD987FF12E4A3D5001C2BB0 /* PersonModel.m */,
+ 1BD9880012E4A3D5001C2BB0 /* SessionModel.h */,
+ 1BD9880112E4A3D5001C2BB0 /* SessionModel.m */,
+ 1BD9880212E4A3D5001C2BB0 /* AttendeeModel.h */,
+ 1BD9880312E4A3D5001C2BB0 /* AttendeeModel.m */,
+ 1BD9880412E4A3D5001C2BB0 /* VenueModel.h */,
+ 1BD9880512E4A3D5001C2BB0 /* VenueModel.m */,
+ 1BD9880612E4A3D5001C2BB0 /* TrackModel.h */,
+ 1BD9880712E4A3D5001C2BB0 /* TrackModel.m */,
+ 1BD9880812E4A3D5001C2BB0 /* EventModel.h */,
+ 1BD9880912E4A3D5001C2BB0 /* EventModel.m */,
+ 1BD9880A12E4A3D5001C2BB0 /* LocationModel.h */,
+ 1BD9880B12E4A3D5001C2BB0 /* LocationModel.m */,
+ 1BD9880C12E4A3D5001C2BB0 /* PresenterModel.h */,
+ 1BD9880D12E4A3D5001C2BB0 /* PresenterModel.m */,
+ 1BD9880E12E4A3D5001C2BB0 /* DayModel.h */,
+ 1BD9880F12E4A3D5001C2BB0 /* DayModel.m */,
28860B760F44E54D00985440 /* iYAPC.xcdatamodel */,
);
currentVersion = 28860B760F44E54D00985440 /* iYAPC.xcdatamodel */;
View
1 iYAPC_Constants.h
@@ -0,0 +1 @@
+#define kYAPCS3Bucket @"iyapc.decafninja.com"
View
2 iYAPC_Prefix.pch
@@ -13,4 +13,6 @@
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <CoreData/CoreData.h>
+
+ #import "iYAPC_Constants.h"
#endif

0 comments on commit 0fb7a9d

Please sign in to comment.
Something went wrong with that request. Please try again.