appjam 0.1.0.pre4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. data/LICENSE.txt +20 -0
  2. data/README.rdoc +27 -0
  3. data/bin/appjam +17 -0
  4. data/lib/appjam.rb +50 -0
  5. data/lib/appjam/generators/Classes/ContactsAppDelegate.h.tt +18 -0
  6. data/lib/appjam/generators/Classes/ContactsAppDelegate.m.tt +88 -0
  7. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/Controller.h +54 -0
  8. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/Controller.m +145 -0
  9. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/Model.h +47 -0
  10. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/Model.m +117 -0
  11. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/View.h +39 -0
  12. data/lib/appjam/generators/Classes/org/puremvc/objectivec/core/View.m +207 -0
  13. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/ICommand.h +16 -0
  14. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IController.h +57 -0
  15. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IFacade.h +135 -0
  16. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IMediator.h +84 -0
  17. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IModel.h +50 -0
  18. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/INotification.h +57 -0
  19. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/INotifier.h +41 -0
  20. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IObserver.h +67 -0
  21. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IProxy.h +53 -0
  22. data/lib/appjam/generators/Classes/org/puremvc/objectivec/interfaces/IView.h +96 -0
  23. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/command/MacroCommand.h +50 -0
  24. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/command/MacroCommand.m +101 -0
  25. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/command/SimpleCommand.h +28 -0
  26. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/command/SimpleCommand.m +34 -0
  27. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/facade/Facade.h +52 -0
  28. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/facade/Facade.m +304 -0
  29. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/mediator/Mediator.h +35 -0
  30. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/mediator/Mediator.m +101 -0
  31. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Notification.h +52 -0
  32. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Notification.m +71 -0
  33. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Notifier.h +40 -0
  34. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Notifier.m +54 -0
  35. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Observer.h +42 -0
  36. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/observer/Observer.m +67 -0
  37. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/proxy/Proxy.h +51 -0
  38. data/lib/appjam/generators/Classes/org/puremvc/objectivec/patterns/proxy/Proxy.m +73 -0
  39. data/lib/appjam/generators/Classes/users/ApplicationFacade.h.tt +31 -0
  40. data/lib/appjam/generators/Classes/users/ApplicationFacade.m.tt +33 -0
  41. data/lib/appjam/generators/Classes/users/controller/CreateUserCommand.h.tt +16 -0
  42. data/lib/appjam/generators/Classes/users/controller/CreateUserCommand.m.tt +27 -0
  43. data/lib/appjam/generators/Classes/users/controller/DeleteUserCommand.h.tt +16 -0
  44. data/lib/appjam/generators/Classes/users/controller/DeleteUserCommand.m.tt +21 -0
  45. data/lib/appjam/generators/Classes/users/controller/GetUsersCommand.h.tt +17 -0
  46. data/lib/appjam/generators/Classes/users/controller/GetUsersCommand.m.tt +21 -0
  47. data/lib/appjam/generators/Classes/users/controller/StartupCommand.h.tt +16 -0
  48. data/lib/appjam/generators/Classes/users/controller/StartupCommand.m.tt +29 -0
  49. data/lib/appjam/generators/Classes/users/controller/UpdateUserCommand.h.tt +16 -0
  50. data/lib/appjam/generators/Classes/users/controller/UpdateUserCommand.m.tt +27 -0
  51. data/lib/appjam/generators/Classes/users/model/UserProxy.h.tt +19 -0
  52. data/lib/appjam/generators/Classes/users/model/UserProxy.m.tt +59 -0
  53. data/lib/appjam/generators/Classes/users/model/vo/UserVO.h.tt +22 -0
  54. data/lib/appjam/generators/Classes/users/model/vo/UserVO.m.tt +47 -0
  55. data/lib/appjam/generators/Classes/users/view/ContactsMediator.h.tt +15 -0
  56. data/lib/appjam/generators/Classes/users/view/ContactsMediator.m.tt +43 -0
  57. data/lib/appjam/generators/Classes/users/view/UserFormMediator.h.tt +17 -0
  58. data/lib/appjam/generators/Classes/users/view/UserFormMediator.m.tt +57 -0
  59. data/lib/appjam/generators/Classes/users/view/UserListMediator.h.tt +17 -0
  60. data/lib/appjam/generators/Classes/users/view/UserListMediator.m.tt +59 -0
  61. data/lib/appjam/generators/Classes/users/view/components/Contacts.h.tt +27 -0
  62. data/lib/appjam/generators/Classes/users/view/components/Contacts.m.tt +46 -0
  63. data/lib/appjam/generators/Classes/users/view/components/UserForm.h.tt +37 -0
  64. data/lib/appjam/generators/Classes/users/view/components/UserForm.m.tt +118 -0
  65. data/lib/appjam/generators/Classes/users/view/components/UserList.h.tt +31 -0
  66. data/lib/appjam/generators/Classes/users/view/components/UserList.m.tt +77 -0
  67. data/lib/appjam/generators/Contacts-Info.plist.tt +28 -0
  68. data/lib/appjam/generators/Contacts.xcodeproj/eiffel.pbxuser +1671 -0
  69. data/lib/appjam/generators/Contacts.xcodeproj/eiffel.perspectivev3 +1638 -0
  70. data/lib/appjam/generators/Contacts.xcodeproj/project.pbxproj +574 -0
  71. data/lib/appjam/generators/Contacts_Prefix.pch.tt +8 -0
  72. data/lib/appjam/generators/app.rb +78 -0
  73. data/lib/appjam/generators/main.m.tt +17 -0
  74. data/lib/appjam/generators/utils/NSStringWhiteSpace.h +17 -0
  75. data/lib/appjam/generators/utils/NSStringWhiteSpace.m +31 -0
  76. data/lib/appjam/generators/utils/UIDevice.h +17 -0
  77. data/lib/appjam/generators/utils/UIDevice.m +83 -0
  78. data/lib/appjam/generators/utils/URLEncodeString.h +16 -0
  79. data/lib/appjam/generators/utils/URLEncodeString.m +29 -0
  80. data/lib/appjam/version.rb +10 -0
  81. data/spec/appjam_spec.rb +7 -0
  82. data/spec/spec_helper.rb +12 -0
  83. metadata +270 -0
@@ -0,0 +1,51 @@
1
+ //
2
+ // Proxy.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import <Foundation/Foundation.h>
10
+ #import "IProxy.h"
11
+ #import "Notifier.h"
12
+
13
+ /**
14
+ * A base <code>IProxy</code> implementation.
15
+ *
16
+ * <P>
17
+ * In PureMVC, <code>Proxy</code> classes are used to manage parts of the
18
+ * application's data model. </P>
19
+ *
20
+ * <P>
21
+ * A <code>Proxy</code> might simply manage a reference to a local data object,
22
+ * in which case interacting with it might involve setting and
23
+ * getting of its data in synchronous fashion.</P>
24
+ *
25
+ * <P>
26
+ * <code>Proxy</code> classes are also used to encapsulate the application's
27
+ * interaction with remote services to save or retrieve data, in which case,
28
+ * we adopt an asyncronous idiom; setting data (or calling a method) on the
29
+ * <code>Proxy</code> and listening for a <code>Notification</code> to be sent
30
+ * when the <code>Proxy</code> has retrieved the data from the service. </P>
31
+ *
32
+ * @see Model
33
+ */
34
+ @interface Proxy : Notifier <IProxy> {
35
+ id data;
36
+ NSString *proxyName;
37
+ }
38
+
39
+ @property(nonatomic, retain) id data;
40
+ @property(nonatomic, retain) NSString *proxyName;
41
+
42
+ +(id)proxy;
43
+ +(id)withProxyName:(NSString *)proxyName;
44
+ +(id)withProxyName:(NSString *)proxyName data:(id)data;
45
+ +(id)withData:(id)data;
46
+ -(id)initWithProxyName:(NSString *)proxyName data:(id)data;
47
+ -(void)initializeProxy;
48
+
49
+ +(NSString *)NAME;
50
+
51
+ @end
@@ -0,0 +1,73 @@
1
+ //
2
+ // Proxy.m
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "Proxy.h"
10
+
11
+ @implementation Proxy
12
+
13
+ @synthesize data, proxyName;
14
+
15
+ +(id)proxy {
16
+ return [[[self alloc] initWithProxyName:nil data:nil] autorelease];
17
+ }
18
+
19
+ +(id)withProxyName:(NSString *)proxyName {
20
+ return [[[self alloc] initWithProxyName:proxyName data:nil] autorelease];
21
+ }
22
+
23
+ +(id)withProxyName:(NSString *)proxyName data:(id)data {
24
+ return [[[self alloc] initWithProxyName:proxyName data:data] autorelease];
25
+ }
26
+
27
+ +(id)withData:(id)data {
28
+ return [[[self alloc] initWithProxyName:nil data:data] autorelease];
29
+ }
30
+
31
+ -(id)initWithProxyName:(NSString *)_proxyName data:(id)_data {
32
+ if (self = [super init]) {
33
+ self.proxyName = (_proxyName == nil) ? [[self class] NAME] : _proxyName;
34
+ self.data = _data;
35
+ [self initializeProxy];
36
+ }
37
+ return self;
38
+ }
39
+
40
+ +(NSString *)NAME {
41
+ return @"Proxy";
42
+ }
43
+
44
+ /**
45
+ * Initialize the Proxy instance.
46
+ *
47
+ * <P>
48
+ * Called automatically by the constructor, this
49
+ * is your opportunity to initialize the Proxy
50
+ * instance in your subclass without overriding the
51
+ * constructor.</P>
52
+ *
53
+ * @return void
54
+ */
55
+ -(void)initializeProxy {}
56
+
57
+ /**
58
+ * Called by the Model when the Proxy is registered
59
+ */
60
+ -(void)onRegister {}
61
+
62
+ /**
63
+ * Called by the Model when the Proxy is removed
64
+ */
65
+ -(void)onRemove {}
66
+
67
+ -(void)dealloc {
68
+ self.data = nil;
69
+ self.proxyName = nil;
70
+ [super dealloc];
71
+ }
72
+
73
+ @end
@@ -0,0 +1,31 @@
1
+ //
2
+ // ApplicationFacade.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import "Facade.h"
11
+
12
+ #define Startup @"Startup"
13
+ #define ShowNewUser @"ShowNewUser"
14
+ #define ShowEditUser @"ShowEditUser"
15
+ #define ShowUserForm @"ShowUserForm"
16
+ #define ShowUserList @"ShowUserList"
17
+ #define ShowError @"ShowError"
18
+ #define CreateUser @"CreateUser"
19
+ #define UpdateUser @"UpdateUser"
20
+ #define DeleteUser @"DeleteUser"
21
+ #define GetUsers @"GetUsers"
22
+ #define GetUsersSuccess @"GetUsersSuccess"
23
+
24
+ @interface ApplicationFacade : Facade {
25
+ }
26
+
27
+ +(ApplicationFacade *)getInstance;
28
+
29
+ -(void)startup:(id)app;
30
+
31
+ @end
@@ -0,0 +1,33 @@
1
+ //
2
+ // ApplicationFacade.m
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "ApplicationFacade.h"
10
+ #import "StartupCommand.h"
11
+ #import "CreateUserCommand.h"
12
+ #import "UpdateUserCommand.h"
13
+ #import "GetUsersCommand.h"
14
+
15
+ @implementation ApplicationFacade
16
+
17
+ -(void)startup:(id)app {
18
+ [self sendNotification:Startup body:app];
19
+ }
20
+
21
+ +(ApplicationFacade *)getInstance {
22
+ return (ApplicationFacade *)[super getInstance];
23
+ }
24
+
25
+ -(void)initializeController {
26
+ [super initializeController];
27
+ [self registerCommand:Startup commandClassRef:[StartupCommand class]];
28
+ [self registerCommand:CreateUser commandClassRef:[CreateUserCommand class]];
29
+ [self registerCommand:UpdateUser commandClassRef:[UpdateUserCommand class]];
30
+ [self registerCommand:GetUsers commandClassRef:[GetUsersCommand class]];
31
+ }
32
+
33
+ @end
@@ -0,0 +1,16 @@
1
+ //
2
+ // CreateUserCommand.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "SimpleCommand.h"
10
+
11
+
12
+ @interface CreateUserCommand : SimpleCommand {
13
+
14
+ }
15
+
16
+ @end
@@ -0,0 +1,27 @@
1
+ //
2
+ // CreateUserCommand.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "CreateUserCommand.h"
10
+ #import "ApplicationFacade.h"
11
+ #import "UserProxy.h"
12
+ #import "UserVO.h"
13
+
14
+ @implementation CreateUserCommand
15
+
16
+ -(void)execute:(id<INotification>)notification {
17
+ UserProxy *userProxy = (UserProxy *)[facade retrieveProxy:[UserProxy NAME]];
18
+ UserVO *userVO = [notification body];
19
+ if ([userVO isValid]) {
20
+ [userProxy create:userVO];
21
+ [facade sendNotification:ShowUserList];
22
+ } else {
23
+ [facade sendNotification:ShowError body:@"Invalid User"];
24
+ }
25
+ }
26
+
27
+ @end
@@ -0,0 +1,16 @@
1
+ //
2
+ // DeleteUserCommand.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "SimpleCommand.h"
10
+
11
+
12
+ @interface DeleteUserCommand : SimpleCommand {
13
+
14
+ }
15
+
16
+ @end
@@ -0,0 +1,21 @@
1
+ //
2
+ // DeleteUserCommand.m
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "DeleteUserCommand.h"
10
+ #import "UserProxy.h"
11
+ #import "UserVO.h"
12
+
13
+ @implementation DeleteUserCommand
14
+
15
+ -(void)execute:(id<INotification>)notification {
16
+ UserProxy *userProxy = (UserProxy *)[facade retrieveProxy:[UserProxy NAME]];
17
+ UserVO *userVO = [notification body];
18
+ [userProxy delete:userVO];
19
+ }
20
+
21
+ @end
@@ -0,0 +1,17 @@
1
+ //
2
+ // GetUsersCommand.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+
10
+ #import "SimpleCommand.h"
11
+
12
+
13
+ @interface GetUsersCommand : SimpleCommand {
14
+
15
+ }
16
+
17
+ @end
@@ -0,0 +1,21 @@
1
+ //
2
+ // GetUsersCommand.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+
10
+ #import "GetUsersCommand.h"
11
+ #import "ApplicationFacade.h"
12
+ #import "UserProxy.h"
13
+
14
+ @implementation GetUsersCommand
15
+
16
+ -(void)execute:(id<INotification>)notification {
17
+ UserProxy *userProxy = (UserProxy *)[facade retrieveProxy:[UserProxy NAME]];
18
+ [facade sendNotification:GetUsersSuccess body:userProxy.data];
19
+ }
20
+
21
+ @end
@@ -0,0 +1,16 @@
1
+ //
2
+ // StartupCommand.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import "SimpleCommand.h"
11
+
12
+ @interface StartupCommand : SimpleCommand {
13
+
14
+ }
15
+
16
+ @end
@@ -0,0 +1,29 @@
1
+ //
2
+ // StartupCommand.m
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "StartupCommand.h"
10
+ #import "Contacts.h"
11
+ #import "ApplicationFacade.h"
12
+ #import "UserListMediator.h"
13
+ #import "UserProxy.h"
14
+ #import "ContactsMediator.h"
15
+ #import "UserFormMediator.h"
16
+
17
+ @implementation StartupCommand
18
+
19
+ -(void)execute:(id<INotification>)notification {
20
+ [facade registerProxy:[UserProxy proxy]];
21
+
22
+ Contacts *app = [notification body];
23
+
24
+ [facade registerMediator:[ContactsMediator withViewComponent:app]];
25
+ [facade registerMediator:[UserListMediator withViewComponent:app.userList]];
26
+ [facade registerMediator:[UserFormMediator withViewComponent:app.userForm]];
27
+ }
28
+
29
+ @end
@@ -0,0 +1,16 @@
1
+ //
2
+ // UpdateUserCommand.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "SimpleCommand.h"
10
+
11
+
12
+ @interface UpdateUserCommand : SimpleCommand {
13
+
14
+ }
15
+
16
+ @end
@@ -0,0 +1,27 @@
1
+ //
2
+ // UpdateUserCommand.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "UpdateUserCommand.h"
10
+ #import "ApplicationFacade.h"
11
+ #import "UserProxy.h"
12
+ #import "UserVO.h"
13
+
14
+ @implementation UpdateUserCommand
15
+
16
+ -(void)execute:(id<INotification>)notification {
17
+ UserProxy *userProxy = (UserProxy *)[facade retrieveProxy:[UserProxy NAME]];
18
+ UserVO *userVO = [notification body];
19
+ if ([userVO isValid]) {
20
+ [userProxy update:userVO];
21
+ [facade sendNotification:ShowUserList];
22
+ } else {
23
+ [facade sendNotification:ShowError body:@"Invalid User"];
24
+ }
25
+ }
26
+
27
+ @end
@@ -0,0 +1,19 @@
1
+ //
2
+ // UserProxy.h
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import <UIKit/UIKit.h>
10
+ #import "Proxy.h"
11
+
12
+ @interface UserProxy : Proxy {
13
+ }
14
+
15
+ -(void)create:(id)item;
16
+ -(void)update:(id)item;
17
+ -(void)delete:(id)item;
18
+
19
+ @end
@@ -0,0 +1,59 @@
1
+ //
2
+ // UserProxy.m
3
+ // PureMVC_ObjectiveC
4
+ //
5
+ // PureMVC Port to ObjectiveC by Brian Knorr <brian.knorr@puremvc.org>
6
+ // PureMVC - Copyright(c) 2006-2008 Futurescale, Inc., Some rights reserved.
7
+ //
8
+
9
+ #import "UserProxy.h"
10
+ #import "UserVO.h"
11
+
12
+ @implementation UserProxy
13
+
14
+ -(void)initializeProxy {
15
+ [super initializeProxy];
16
+ self.proxyName = [UserProxy NAME];
17
+ self.data = [NSMutableArray array];
18
+ [self create:[UserVO withUserName:@"lstooge" firstName:@"Larry" lastName:@"Stooge" email:@"larry@stooges.com" password:@"ijk456" confirmPassword:@"ijk456" department:@"Accounting"]];
19
+ [self create:[UserVO withUserName:@"cstooge" firstName:@"Curly" lastName:@"Stooge" email:@"curly@stooges.com" password:@"xyz987" confirmPassword:@"xyz987" department:@"Sales"]];
20
+ [self create:[UserVO withUserName:@"mstooge" firstName:@"Moe" lastName:@"Stooge" email:@"moe@stooges.com" password:@"abc123" confirmPassword:@"abc123" department:@"Plant"]];
21
+ }
22
+
23
+ +(NSString *)NAME {
24
+ return @"UserProxy";
25
+ }
26
+
27
+ -(NSMutableArray *)data {
28
+ return data;
29
+ }
30
+
31
+ -(void)create:(id)item {
32
+ [self.data addObject:item];
33
+ }
34
+
35
+ -(void)update:(id)item {
36
+ for (int i=0; i<[self.data count]; i++) {
37
+ UserVO *userVO = [self.data objectAtIndex:i];
38
+ if ([userVO.username isEqualToString:[item username]]) {
39
+ [self.data replaceObjectAtIndex:i withObject:item];
40
+ break;
41
+ }
42
+ }
43
+ }
44
+
45
+ -(void)delete:(id)item {
46
+ for (int i=0; i<[self.data count]; i++) {
47
+ UserVO *userVO = [self.data objectAtIndex:i];
48
+ if ([userVO.username isEqualToString:[item username]]) {
49
+ [self.data removeObjectAtIndex:i];
50
+ break;
51
+ }
52
+ }
53
+ }
54
+
55
+ -(void)dealloc {
56
+ [super dealloc];
57
+ }
58
+
59
+ @end