From e176c70f18b5624227109a87d29ff4cdc315a01f Mon Sep 17 00:00:00 2001 From: Hamo Hapic Date: Mon, 1 Sep 2014 16:58:20 +0200 Subject: [PATCH] added entry and film model --- FestivalHelper.xcodeproj/project.pbxproj | 20 ++++ .../xcshareddata/FestivalHelper.xccheckout | 41 ++++++++ .../xcschemes/FestivalHelper.xcscheme | 96 +++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 27 ++++++ FestivalHelper/schedule/FESSCheduleEntry.h | 24 +++++ FestivalHelper/schedule/FESSCheduleEntry.m | 43 +++++++++ FestivalHelper/schedule/FESScheduleFilm.h | 21 ++++ FestivalHelper/schedule/FESScheduleFilm.m | 32 +++++++ tools/testbackend/sff2014/schedule.json | 18 ++++ tools/testbackend/simplewebserver.rb | 10 ++ 10 files changed, 332 insertions(+) create mode 100644 FestivalHelper.xcodeproj/project.xcworkspace/xcshareddata/FestivalHelper.xccheckout create mode 100644 FestivalHelper.xcodeproj/xcuserdata/hamo.xcuserdatad/xcschemes/FestivalHelper.xcscheme create mode 100644 FestivalHelper.xcodeproj/xcuserdata/hamo.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 FestivalHelper/schedule/FESSCheduleEntry.h create mode 100644 FestivalHelper/schedule/FESSCheduleEntry.m create mode 100644 FestivalHelper/schedule/FESScheduleFilm.h create mode 100644 FestivalHelper/schedule/FESScheduleFilm.m create mode 100644 tools/testbackend/sff2014/schedule.json create mode 100755 tools/testbackend/simplewebserver.rb diff --git a/FestivalHelper.xcodeproj/project.pbxproj b/FestivalHelper.xcodeproj/project.pbxproj index 2ce57d6..e88aa32 100644 --- a/FestivalHelper.xcodeproj/project.pbxproj +++ b/FestivalHelper.xcodeproj/project.pbxproj @@ -7,6 +7,8 @@ objects = { /* Begin PBXBuildFile section */ + 3068700719B2D6B1007E4A0E /* FESSCheduleEntry.m in Sources */ = {isa = PBXBuildFile; fileRef = 3068700619B2D6B1007E4A0E /* FESSCheduleEntry.m */; }; + 3068700A19B2F826007E4A0E /* FESScheduleFilm.m in Sources */ = {isa = PBXBuildFile; fileRef = 3068700919B2F826007E4A0E /* FESScheduleFilm.m */; }; 3CEA73BD19B1A86D00076FC5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CEA73BC19B1A86C00076FC5 /* Foundation.framework */; }; 3CEA73BF19B1A86D00076FC5 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CEA73BE19B1A86D00076FC5 /* CoreGraphics.framework */; }; 3CEA73C119B1A86D00076FC5 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3CEA73C019B1A86D00076FC5 /* UIKit.framework */; }; @@ -33,6 +35,10 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 3068700519B2D6B1007E4A0E /* FESSCheduleEntry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FESSCheduleEntry.h; path = schedule/FESSCheduleEntry.h; sourceTree = ""; }; + 3068700619B2D6B1007E4A0E /* FESSCheduleEntry.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FESSCheduleEntry.m; path = schedule/FESSCheduleEntry.m; sourceTree = ""; }; + 3068700819B2F826007E4A0E /* FESScheduleFilm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FESScheduleFilm.h; path = schedule/FESScheduleFilm.h; sourceTree = ""; }; + 3068700919B2F826007E4A0E /* FESScheduleFilm.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = FESScheduleFilm.m; path = schedule/FESScheduleFilm.m; sourceTree = ""; }; 3CEA73B919B1A86C00076FC5 /* FestivalHelper.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FestivalHelper.app; sourceTree = BUILT_PRODUCTS_DIR; }; 3CEA73BC19B1A86C00076FC5 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 3CEA73BE19B1A86D00076FC5 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; @@ -76,6 +82,17 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 3068700419B2D4C7007E4A0E /* schedule */ = { + isa = PBXGroup; + children = ( + 3068700519B2D6B1007E4A0E /* FESSCheduleEntry.h */, + 3068700619B2D6B1007E4A0E /* FESSCheduleEntry.m */, + 3068700819B2F826007E4A0E /* FESScheduleFilm.h */, + 3068700919B2F826007E4A0E /* FESScheduleFilm.m */, + ); + name = schedule; + sourceTree = ""; + }; 3CEA73B019B1A86C00076FC5 = { isa = PBXGroup; children = ( @@ -109,6 +126,7 @@ 3CEA73C219B1A86D00076FC5 /* FestivalHelper */ = { isa = PBXGroup; children = ( + 3068700419B2D4C7007E4A0E /* schedule */, 3CEA73CB19B1A86D00076FC5 /* FESAppDelegate.h */, 3CEA73CC19B1A86D00076FC5 /* FESAppDelegate.m */, 3CEA73CE19B1A86D00076FC5 /* Main.storyboard */, @@ -246,7 +264,9 @@ buildActionMask = 2147483647; files = ( 3CEA73C919B1A86D00076FC5 /* main.m in Sources */, + 3068700719B2D6B1007E4A0E /* FESSCheduleEntry.m in Sources */, 3CEA73CD19B1A86D00076FC5 /* FESAppDelegate.m in Sources */, + 3068700A19B2F826007E4A0E /* FESScheduleFilm.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/FestivalHelper.xcodeproj/project.xcworkspace/xcshareddata/FestivalHelper.xccheckout b/FestivalHelper.xcodeproj/project.xcworkspace/xcshareddata/FestivalHelper.xccheckout new file mode 100644 index 0000000..e97cdbc --- /dev/null +++ b/FestivalHelper.xcodeproj/project.xcworkspace/xcshareddata/FestivalHelper.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + BE618C35-7535-4EF3-9E1E-10020CDC9E0B + IDESourceControlProjectName + FestivalHelper + IDESourceControlProjectOriginsDictionary + + E5385474-9C99-4B80-A01D-35E39CA3F5A7 + ssh://github.com/senaduka/festivalhelper.git + + IDESourceControlProjectPath + FestivalHelper.xcodeproj/project.xcworkspace + IDESourceControlProjectRelativeInstallPathDictionary + + E5385474-9C99-4B80-A01D-35E39CA3F5A7 + ../.. + + IDESourceControlProjectURL + ssh://github.com/senaduka/festivalhelper.git + IDESourceControlProjectVersion + 110 + IDESourceControlProjectWCCIdentifier + E5385474-9C99-4B80-A01D-35E39CA3F5A7 + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + E5385474-9C99-4B80-A01D-35E39CA3F5A7 + IDESourceControlWCCName + FestivalHelper + + + + diff --git a/FestivalHelper.xcodeproj/xcuserdata/hamo.xcuserdatad/xcschemes/FestivalHelper.xcscheme b/FestivalHelper.xcodeproj/xcuserdata/hamo.xcuserdatad/xcschemes/FestivalHelper.xcscheme new file mode 100644 index 0000000..22c914b --- /dev/null +++ b/FestivalHelper.xcodeproj/xcuserdata/hamo.xcuserdatad/xcschemes/FestivalHelper.xcscheme @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/FestivalHelper.xcodeproj/xcuserdata/hamo.xcuserdatad/xcschemes/xcschememanagement.plist b/FestivalHelper.xcodeproj/xcuserdata/hamo.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..7e68f0f --- /dev/null +++ b/FestivalHelper.xcodeproj/xcuserdata/hamo.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,27 @@ + + + + + SchemeUserState + + FestivalHelper.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 3CEA73B819B1A86C00076FC5 + + primary + + + 3CEA73DC19B1A86D00076FC5 + + primary + + + + + diff --git a/FestivalHelper/schedule/FESSCheduleEntry.h b/FestivalHelper/schedule/FESSCheduleEntry.h new file mode 100644 index 0000000..959ce06 --- /dev/null +++ b/FestivalHelper/schedule/FESSCheduleEntry.h @@ -0,0 +1,24 @@ +// +// FESSCheduleEntry.h +// FestivalHelper +// +// Created by Hamo Hapic on 31/08/14. +// Copyright (c) 2014 Senad Uka. All rights reserved. +// + +#import + +@class FESScheduleFilm; + +@interface FESSCheduleEntry : NSObject + +-(id)initWithJSONData:(NSDictionary*)data; + +@property (assign) NSInteger scheduleEntryId; +@property (strong) NSString *scheduleDayOfWeek; +@property (strong) NSString *scheduleDate; +@property (strong) NSString *scheduleYear; +@property (strong) NSMutableArray *scheduleFilms; + + +@end diff --git a/FestivalHelper/schedule/FESSCheduleEntry.m b/FestivalHelper/schedule/FESSCheduleEntry.m new file mode 100644 index 0000000..452f85b --- /dev/null +++ b/FestivalHelper/schedule/FESSCheduleEntry.m @@ -0,0 +1,43 @@ +// +// FESSCheduleEntry.m +// FestivalHelper +// +// Created by Hamo Hapic on 31/08/14. +// Copyright (c) 2014 Senad Uka. All rights reserved. +// + +#import "FESSCheduleEntry.h" +#import "FESScheduleFilm.h" + +@implementation FESSCheduleEntry + +@synthesize scheduleEntryId; +@synthesize scheduleDate; +@synthesize scheduleDayOfWeek; +@synthesize scheduleYear; +@synthesize scheduleFilms; + + +-(id)initWithJSONData:(NSDictionary*)data{ + self = [super init]; + if(self){ + //NSLog(@"initWithJSONData method called"); + self.scheduleEntryId = [[data objectForKey:@"id"] integerValue]; + self.scheduleDate = [data objectForKey:@"date"]; + self.scheduleDayOfWeek = [data objectForKey:@"dayOfWeek"]; + self.scheduleYear = [data objectForKey:@"year"]; + self.scheduleFilms = [self extractFilms:[data objectForKey:@"films"]]; + } + return self; +} + +-(NSMutableArray *)extractFilms:(NSArray *)films { + NSMutableArray *result = [[NSMutableArray alloc] initWithCapacity:[films count]]; + for (NSDictionary *filmData in films) { + FESScheduleFilm *film = [[FESScheduleFilm alloc] initWithJSONData:filmData]; + [result addObject:film]; + } + return result; +} + +@end diff --git a/FestivalHelper/schedule/FESScheduleFilm.h b/FestivalHelper/schedule/FESScheduleFilm.h new file mode 100644 index 0000000..d5c2565 --- /dev/null +++ b/FestivalHelper/schedule/FESScheduleFilm.h @@ -0,0 +1,21 @@ +// +// FESScheduleFilm.h +// FestivalHelper +// +// Created by Hamo Hapic on 31/08/14. +// Copyright (c) 2014 Senad Uka. All rights reserved. +// + +#import + +@interface FESScheduleFilm : NSObject + +@property (assign) NSInteger scheduleFilmId; +@property (strong) NSString *scheduleFilmTitle; +@property (strong) NSString *scheduleFilmVenue; +@property (strong) NSString *scheduleFilmTime; +@property (strong) NSString *scheduleFilmDuration; + +-(id)initWithJSONData:(NSDictionary*)data; + +@end diff --git a/FestivalHelper/schedule/FESScheduleFilm.m b/FestivalHelper/schedule/FESScheduleFilm.m new file mode 100644 index 0000000..7284ee0 --- /dev/null +++ b/FestivalHelper/schedule/FESScheduleFilm.m @@ -0,0 +1,32 @@ +// +// FESScheduleFilm.m +// FestivalHelper +// +// Created by Hamo Hapic on 31/08/14. +// Copyright (c) 2014 Senad Uka. All rights reserved. +// + +#import "FESScheduleFilm.h" + +@implementation FESScheduleFilm + +@synthesize scheduleFilmId; +@synthesize scheduleFilmDuration; +@synthesize scheduleFilmTime; +@synthesize scheduleFilmTitle; +@synthesize scheduleFilmVenue; + +-(id)initWithJSONData:(NSDictionary*)filmData{ + self = [super init]; + if(self){ + //NSLog(@"initWithJSONData method called"); + self.scheduleFilmId = [[filmData objectForKey:@"id"] integerValue]; + self.scheduleFilmTitle = [filmData objectForKey:@"title"]; + self.scheduleFilmVenue = [filmData objectForKey:@"venue"]; + self.scheduleFilmTime = [filmData objectForKey:@"time"]; + self.scheduleFilmDuration = [filmData objectForKey:@"duration"]; + } + return self; +} + +@end diff --git a/tools/testbackend/sff2014/schedule.json b/tools/testbackend/sff2014/schedule.json new file mode 100644 index 0000000..d01048d --- /dev/null +++ b/tools/testbackend/sff2014/schedule.json @@ -0,0 +1,18 @@ +[ +{ + "id": 1, + "dayOfWeek": "Fri", + "date": "15. Aug", + "year": "2014", + "films": [ + { + "id": 1, + "title": "Amores Perros", + "venue": "Summer Theatre HT Eronet", + "time": "20:30", + "duration": "154'" + } + ] +} +] + \ No newline at end of file diff --git a/tools/testbackend/simplewebserver.rb b/tools/testbackend/simplewebserver.rb new file mode 100755 index 0000000..5666b08 --- /dev/null +++ b/tools/testbackend/simplewebserver.rb @@ -0,0 +1,10 @@ +#!/usr/bin/env ruby +require 'webrick' + +include WEBrick + +port = 8080 +puts "Starting server: http://#{Socket.gethostname}:#{port}" +server = HTTPServer.new(:Port=>port,:DocumentRoot=>Dir::pwd ) +trap("INT"){ server.shutdown } +server.start