captproton-restfulx 1.2.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (143) hide show
  1. data/README.rdoc +50 -0
  2. data/Rakefile +79 -0
  3. data/VERSION.yml +4 -0
  4. data/app_generators/rx_app/USAGE +22 -0
  5. data/app_generators/rx_app/rx_app_generator.rb +110 -0
  6. data/app_generators/rx_app/templates/actionscript.properties +16 -0
  7. data/app_generators/rx_app/templates/actionscriptair.properties +16 -0
  8. data/app_generators/rx_app/templates/app.yaml.erb +12 -0
  9. data/app_generators/rx_app/templates/default_tasks.rake +38 -0
  10. data/app_generators/rx_app/templates/empty.txt +0 -0
  11. data/app_generators/rx_app/templates/expressInstall.swf +0 -0
  12. data/app_generators/rx_app/templates/flex.properties +2 -0
  13. data/app_generators/rx_app/templates/generate.rb +17 -0
  14. data/app_generators/rx_app/templates/html-template/AC_OETags.js +276 -0
  15. data/app_generators/rx_app/templates/html-template/history/history.css +6 -0
  16. data/app_generators/rx_app/templates/html-template/history/history.js +645 -0
  17. data/app_generators/rx_app/templates/html-template/history/historyFrame.html +29 -0
  18. data/app_generators/rx_app/templates/html-template/index.template.html +121 -0
  19. data/app_generators/rx_app/templates/html-template/playerProductInstall.swf +0 -0
  20. data/app_generators/rx_app/templates/index.html.erb +18 -0
  21. data/app_generators/rx_app/templates/index.yaml +11 -0
  22. data/app_generators/rx_app/templates/mainair-app.xml +134 -0
  23. data/app_generators/rx_app/templates/mainapp-config.xml +22 -0
  24. data/app_generators/rx_app/templates/mainapp.mxml +152 -0
  25. data/app_generators/rx_app/templates/project-textmate.erb +72 -0
  26. data/app_generators/rx_app/templates/project.properties +18 -0
  27. data/app_generators/rx_app/templates/projectair.properties +24 -0
  28. data/app_generators/rx_app/templates/restfulx.yml +46 -0
  29. data/app_generators/rx_app/templates/swfobject.js +5 -0
  30. data/bin/rx-gen +31 -0
  31. data/lib/restfulx.rb +90 -0
  32. data/lib/restfulx/active_foo.rb +181 -0
  33. data/lib/restfulx/active_record_tasks.rb +90 -0
  34. data/lib/restfulx/active_record_uuid_helper.rb +17 -0
  35. data/lib/restfulx/configuration.rb +75 -0
  36. data/lib/restfulx/datamapper_foo.rb +81 -0
  37. data/lib/restfulx/rails/recipes.rb +60 -0
  38. data/lib/restfulx/rails/schema_to_yaml.rb +112 -0
  39. data/lib/restfulx/rails/schema_to_yaml/extensions/enumerable.rb +8 -0
  40. data/lib/restfulx/rails/schema_to_yaml/settings/config.rb +17 -0
  41. data/lib/restfulx/rails/schema_to_yaml/settings/core.rb +73 -0
  42. data/lib/restfulx/rails/swf_helper.rb +59 -0
  43. data/lib/restfulx/tasks.rb +110 -0
  44. data/rails_generators/rx_config/USAGE +19 -0
  45. data/rails_generators/rx_config/rx_config_generator.rb +151 -0
  46. data/rails_generators/rx_config/templates/actionscript.properties +16 -0
  47. data/rails_generators/rx_config/templates/actionscriptair.properties +16 -0
  48. data/rails_generators/rx_config/templates/expressInstall.swf +0 -0
  49. data/rails_generators/rx_config/templates/flex.properties +2 -0
  50. data/rails_generators/rx_config/templates/flex_controller.erb +4 -0
  51. data/rails_generators/rx_config/templates/html-template/AC_OETags.js +276 -0
  52. data/rails_generators/rx_config/templates/html-template/history/history.css +6 -0
  53. data/rails_generators/rx_config/templates/html-template/history/history.js +645 -0
  54. data/rails_generators/rx_config/templates/html-template/history/historyFrame.html +29 -0
  55. data/rails_generators/rx_config/templates/html-template/index.template.html +121 -0
  56. data/rails_generators/rx_config/templates/html-template/playerProductInstall.swf +0 -0
  57. data/rails_generators/rx_config/templates/index.erb +16 -0
  58. data/rails_generators/rx_config/templates/mainair-app.xml +134 -0
  59. data/rails_generators/rx_config/templates/mainapp-config.xml +22 -0
  60. data/rails_generators/rx_config/templates/mainapp.mxml +129 -0
  61. data/rails_generators/rx_config/templates/project-textmate.erb +72 -0
  62. data/rails_generators/rx_config/templates/project.properties +18 -0
  63. data/rails_generators/rx_config/templates/projectair.properties +24 -0
  64. data/rails_generators/rx_config/templates/restfulx.erb +75 -0
  65. data/rails_generators/rx_config/templates/restfulx.yml +65 -0
  66. data/rails_generators/rx_config/templates/restfulx_tasks.rake +9 -0
  67. data/rails_generators/rx_config/templates/routes.erb +47 -0
  68. data/rails_generators/rx_config/templates/session_store_flash.erb +1 -0
  69. data/rails_generators/rx_config/templates/swfobject.js +5 -0
  70. data/rails_generators/rx_controller/USAGE +10 -0
  71. data/rails_generators/rx_controller/rx_controller_generator.rb +31 -0
  72. data/rails_generators/rx_controller/templates/controller.as.erb +38 -0
  73. data/rails_generators/rx_main_app/USAGE +8 -0
  74. data/rails_generators/rx_main_app/rx_main_app_generator.rb +60 -0
  75. data/rails_generators/rx_main_app/templates/mainapp.mxml +129 -0
  76. data/rails_generators/rx_scaffold/USAGE +35 -0
  77. data/rails_generators/rx_scaffold/rx_scaffold_generator.rb +242 -0
  78. data/rails_generators/rx_scaffold/templates/controllers/default.rb.erb +125 -0
  79. data/rails_generators/rx_scaffold/templates/controllers/resource_controller.rb.erb +23 -0
  80. data/rails_generators/rx_scaffold/templates/fixtures.yml.erb +39 -0
  81. data/rails_generators/rx_scaffold/templates/functional_test.rb +45 -0
  82. data/rails_generators/rx_scaffold/templates/helper_test.rb +4 -0
  83. data/rails_generators/rx_scaffold/templates/layouts/default.erb +167 -0
  84. data/rails_generators/rx_scaffold/templates/migration.rb.erb +46 -0
  85. data/rails_generators/rx_scaffold/templates/model.as.erb +73 -0
  86. data/rails_generators/rx_scaffold/templates/model.rb.erb +46 -0
  87. data/rails_generators/rx_yaml_scaffold/USAGE +51 -0
  88. data/rails_generators/rx_yaml_scaffold/rx_yaml_scaffold_generator.rb +68 -0
  89. data/rxgen_generators/rx_config/USAGE +5 -0
  90. data/rxgen_generators/rx_config/rx_config_generator.rb +21 -0
  91. data/rxgen_generators/rx_controller/USAGE +10 -0
  92. data/rxgen_generators/rx_controller/rx_controller_generator.rb +41 -0
  93. data/rxgen_generators/rx_controller/templates/assist.py +65 -0
  94. data/rxgen_generators/rx_controller/templates/controller.as.erb +38 -0
  95. data/rxgen_generators/rx_controller/templates/iso8601.py +92 -0
  96. data/rxgen_generators/rx_controller/templates/restful.py +136 -0
  97. data/rxgen_generators/rx_main_app/USAGE +8 -0
  98. data/rxgen_generators/rx_main_app/rx_main_app_generator.rb +65 -0
  99. data/rxgen_generators/rx_main_app/templates/main.py.erb +29 -0
  100. data/rxgen_generators/rx_main_app/templates/mainapp.mxml +152 -0
  101. data/rxgen_generators/rx_scaffold/USAGE +29 -0
  102. data/rxgen_generators/rx_scaffold/rx_scaffold_generator.rb +194 -0
  103. data/rxgen_generators/rx_scaffold/templates/controller.py.erb +27 -0
  104. data/rxgen_generators/rx_scaffold/templates/layouts/default.erb +167 -0
  105. data/rxgen_generators/rx_scaffold/templates/model.as.erb +73 -0
  106. data/rxgen_generators/rx_scaffold/templates/model.py.erb +14 -0
  107. data/rxgen_generators/rx_yaml_scaffold/USAGE +45 -0
  108. data/rxgen_generators/rx_yaml_scaffold/rx_yaml_scaffold_generator.rb +47 -0
  109. data/spec/restfulx_spec.rb +4 -0
  110. data/spec/spec_helper.rb +13 -0
  111. data/tasks/restfulx.rake +2 -0
  112. data/test/rails/controllers/application_controller.rb +15 -0
  113. data/test/rails/controllers/locations_controller.rb +93 -0
  114. data/test/rails/controllers/notes_controller.rb +96 -0
  115. data/test/rails/controllers/projects_controller.rb +93 -0
  116. data/test/rails/controllers/tasks_controller.rb +93 -0
  117. data/test/rails/controllers/users_controller.rb +93 -0
  118. data/test/rails/database.yml +4 -0
  119. data/test/rails/fixtures/locations.yml +8 -0
  120. data/test/rails/fixtures/notes.yml +17 -0
  121. data/test/rails/fixtures/projects.yml +25 -0
  122. data/test/rails/fixtures/simple_properties.yml +19 -0
  123. data/test/rails/fixtures/tasks.yml +46 -0
  124. data/test/rails/fixtures/users.yml +13 -0
  125. data/test/rails/helpers/functional_test_helper.rb +21 -0
  126. data/test/rails/helpers/test_helper.rb +54 -0
  127. data/test/rails/helpers/unit_test_helper.rb +29 -0
  128. data/test/rails/model.yml +35 -0
  129. data/test/rails/models/location.rb +4 -0
  130. data/test/rails/models/note.rb +3 -0
  131. data/test/rails/models/project.rb +4 -0
  132. data/test/rails/models/simple_property.rb +2 -0
  133. data/test/rails/models/task.rb +18 -0
  134. data/test/rails/models/user.rb +20 -0
  135. data/test/rails/schema.rb +77 -0
  136. data/test/rails/test.swf +1 -0
  137. data/test/rails/test_active_foo.rb +36 -0
  138. data/test/rails/test_rails_integration_functional.rb +22 -0
  139. data/test/rails/test_to_fxml.rb +35 -0
  140. data/test/rails/test_to_json.rb +23 -0
  141. data/test/rails/views/notes/empty_params_action.html.erb +1 -0
  142. data/test/rails/views/notes/index.html.erb +1 -0
  143. metadata +234 -0
@@ -0,0 +1,23 @@
1
+ class <%= controller_class_name %>Controller < ResourceController::Base
2
+
3
+ before_filter :load_fxml_params
4
+
5
+ index.wants.fxml { render :fxml => @collection.to_fxml(@fxml_params) }
6
+ show.wants.fxml { render :fxml => @object.to_fxml(@fxml_params) }
7
+ create.wants.fxml { render :fxml => @object.to_fxml(@fxml_params) }
8
+ create.failure.wants.fxml { render :fxml => @object.errors }
9
+ update.wants.fxml { render :fxml => @object.to_fxml(@fxml_params) }
10
+ update.failure.wants.fxml { render :fxml => @object.errors }
11
+ destroy.wants.fxml { render :fxml => @object }
12
+
13
+ private
14
+
15
+ def collection
16
+ @collection = end_of_association_chain.all
17
+ end
18
+
19
+ def load_fxml_params
20
+ @fxml_params = { }
21
+ end
22
+
23
+ end
@@ -0,0 +1,39 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+
3
+ <% unless attributes.empty? && belongs_tos.empty? -%>
4
+ <%= class_name.underscore -%>_one:
5
+ id: <%%= Fixtures.identify(:<%= class_name.underscore %>_one) %>
6
+ <% for attribute in attributes -%>
7
+ <%= attribute.name %>: <%= attribute.default("#{class_name}1") %>
8
+ <% end -%>
9
+ <% for model in belongs_tos -%>
10
+ <%= model %>_id: <%%= Fixtures.identify(:<%= model %>_one) %>
11
+ <% end -%>
12
+
13
+ <%= class_name.underscore -%>_two:
14
+ id: <%%= Fixtures.identify(:<%= class_name.underscore %>_two) %>
15
+ <% for attribute in attributes -%>
16
+ <%= attribute.name %>: <%= attribute.default("#{class_name}2") %>
17
+ <% end -%>
18
+ <% for model in belongs_tos -%>
19
+ <%= model %>_id: <%%= Fixtures.identify(:<%= model %>_two) %>
20
+ <% end -%>
21
+
22
+ <%= class_name.underscore -%>_three:
23
+ id: <%%= Fixtures.identify(:<%= class_name.underscore %>_three) %>
24
+ <% for attribute in attributes -%>
25
+ <%= attribute.name %>: <%= attribute.default("#{class_name}3") %>
26
+ <% end -%>
27
+ <% for model in belongs_tos -%>
28
+ <%= model %>_id: <%%= Fixtures.identify(:<%= model %>_three) %>
29
+ <% end -%>
30
+
31
+ <%= class_name.underscore -%>_four:
32
+ id: <%%= Fixtures.identify(:<%= class_name.underscore %>_four) %>
33
+ <% for attribute in attributes -%>
34
+ <%= attribute.name %>: <%= attribute.default("#{class_name}4") %>
35
+ <% end -%>
36
+ <% for model in belongs_tos -%>
37
+ <%= model %>_id: <%%= Fixtures.identify(:<%= model %>_four) %>
38
+ <% end -%>
39
+ <% end -%>
@@ -0,0 +1,45 @@
1
+ require 'test_helper'
2
+
3
+ class <%= controller_class_name %>ControllerTest < ActionController::TestCase
4
+ test "should get index" do
5
+ get :index
6
+ assert_response :success
7
+ assert_not_nil assigns(:<%= table_name %>)
8
+ end
9
+
10
+ test "should get new" do
11
+ get :new
12
+ assert_response :success
13
+ end
14
+
15
+ test "should create <%= file_name %>" do
16
+ assert_difference('<%= class_name %>.count') do
17
+ post :create, :<%= file_name %> => { }
18
+ end
19
+
20
+ assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
21
+ end
22
+
23
+ test "should show <%= file_name %>" do
24
+ get :show, :id => <%= table_name %>(:one).id
25
+ assert_response :success
26
+ end
27
+
28
+ test "should get edit" do
29
+ get :edit, :id => <%= table_name %>(:one).id
30
+ assert_response :success
31
+ end
32
+
33
+ test "should update <%= file_name %>" do
34
+ put :update, :id => <%= table_name %>(:one).id, :<%= file_name %> => { }
35
+ assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
36
+ end
37
+
38
+ test "should destroy <%= file_name %>" do
39
+ assert_difference('<%= class_name %>.count', -1) do
40
+ delete :destroy, :id => <%= table_name %>(:one).id
41
+ end
42
+
43
+ assert_redirected_to <%= table_name %>_path
44
+ end
45
+ end
@@ -0,0 +1,4 @@
1
+ require 'test_helper'
2
+
3
+ class <%= controller_class_name %>HelperTest < ActionView::TestCase
4
+ end
@@ -0,0 +1,167 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" label="<%= class_name %>"
3
+ xmlns:rx="org.restfulx.components.rx.*">
4
+ <mx:Script><![CDATA[
5
+ import org.restfulx.Rx;
6
+ import org.restfulx.utils.RxUtils;
7
+ import <%= base_package %>.models.<%= class_name %>;
8
+ <% for model in belongs_tos -%>
9
+ import <%= base_package %>.models.<%= model.camelcase %>;
10
+ <% end -%>
11
+ <% if attachment_field.size > 0 -%>
12
+ import flash.net.FileReference;
13
+ import org.restfulx.utils.RxFileReference;
14
+ <% end -%>
15
+
16
+ [Bindable]
17
+ private var <%= class_name.dcfirst %>:<%= class_name %> = new <%= class_name %>();
18
+ <% if attachment_field.size > 0 -%>
19
+
20
+ [Bindable]
21
+ private var fileName:String = "None selected";
22
+
23
+ private var file:RxFileReference;
24
+ <% end -%>
25
+
26
+ private function new<%= class_name %>():void {
27
+ <%= class_name.dcfirst %> = new <%= class_name %>();
28
+ <%= class_name.dcfirst.pluralize %>List.selectedIndex = -1;
29
+ }
30
+
31
+ private function save<%= class_name %>():void {
32
+ updateModelProperties();
33
+ if (<%= class_name.dcfirst %>.id) {
34
+ <%= class_name.dcfirst %>.update({onSuccess: on<%= class_name %>Update});
35
+ } else {
36
+ <%= class_name.dcfirst %>.create({onSuccess: on<%= class_name %>Create});
37
+ }
38
+ }
39
+
40
+ private function updateModelProperties():void {
41
+ <% for attribute in attributes -%>
42
+ <% if attribute.type == :boolean -%>
43
+ <%= class_name.dcfirst %>.<%= attribute.flex_name %> = <%= attribute.flex_name %>CheckBox.selected;
44
+ <% elsif attribute.type == :string -%>
45
+ <%= class_name.dcfirst %>.<%= attribute.flex_name %> = <%= attribute.flex_name %>TextInput.text;
46
+ <% elsif attribute.type == :text -%>
47
+ <%= class_name.dcfirst %>.<%= attribute.flex_name %> = <%= attribute.flex_name %>TextArea.text;
48
+ <% elsif attribute.type == :datetime || attribute.type == :time -%>
49
+ <%= class_name.dcfirst %>.<%= attribute.flex_name %> = <%= attribute.flex_name %>DateTimeTextInput.date;
50
+ <% elsif attribute.type == :date -%>
51
+ <%= class_name.dcfirst %>.<%= attribute.flex_name %> = <%= attribute.flex_name %>DateField.selectedDate;
52
+ <% else -%>
53
+ <%= class_name.dcfirst %>.<%= attribute.flex_name %> = <%= attribute.flex_type %>(<%= attribute.flex_name %>TextInput.text);
54
+ <% end -%>
55
+ <% end -%>
56
+ <% for model in belongs_tos -%>
57
+ <%= class_name.dcfirst %>.<%= model.camelcase(:lower) %> = <%= model.camelcase %>(<%= model.camelcase(:lower) %>ComboBox.selectedItem);
58
+ <% end -%>
59
+ <% if attachment_field.size > 0 -%>
60
+ <%= class_name.dcfirst %>.attachment = file;
61
+ <% end -%>
62
+ }
63
+
64
+ private function destroy<%= class_name %>():void {
65
+ <%= class_name.dcfirst %>.destroy({onSuccess: on<%= class_name %>Destroy});
66
+ }
67
+
68
+ private function on<%= class_name %>Select():void {
69
+ <%= class_name.dcfirst %> = RxUtils.clone(<%= class_name.dcfirst.pluralize %>List.selectedItem) as <%= class_name %>;
70
+ }
71
+
72
+ private function on<%= class_name %>Create(result:<%= class_name %>):void {
73
+ <%= class_name.dcfirst %> = new <%= class_name %>;
74
+ }
75
+
76
+ private function on<%= class_name %>Update(result:<%= class_name %>):void {
77
+ <%= class_name.dcfirst.pluralize %>List.selectedItem = result;
78
+ on<%= class_name %>Select();
79
+ }
80
+
81
+ private function on<%= class_name %>Destroy(result:<%= class_name %>):void {
82
+ on<%= class_name %>Create(result);
83
+ }
84
+ <% if attachment_field.size > 0 -%>
85
+
86
+ private function chooseFile():void {
87
+ file = new RxFileReference("<%= attachment_field[0].camelcase(:lower) %>");
88
+ file.reference.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler, false, 0, true);
89
+ file.reference.addEventListener(Event.SELECT, selectFile, false, 0, true);
90
+ file.reference.addEventListener(Event.CANCEL, cancelBrowse, false, 0, true);
91
+ file.reference.browse();
92
+ }
93
+
94
+ private function selectFile(event:Event):void {
95
+ fileSelected(event)
96
+ }
97
+
98
+ private function cancelBrowse(event:Event):void {
99
+ file = null;
100
+ }
101
+
102
+ private function fileSelected(event:Event):void {
103
+ fileName = FileReference(event.target).name;
104
+ }
105
+
106
+ private function ioErrorHandler(event:Event):void {
107
+ fileChooser.errorString = "Failed to selected a file. Please try again.";
108
+ }
109
+ <% end -%>
110
+ ]]></mx:Script>
111
+ <mx:Panel id="<%= class_name.dcfirst.pluralize %>Panel"
112
+ title="<%= class_name.pluralize %>" cornerRadius="0" dropShadowEnabled="false" borderStyle="solid"
113
+ borderThickness="1" backgroundColor="#EEEEEE" width="25%" height="100%">
114
+ <mx:List id="<%= class_name.dcfirst.pluralize %>List"
115
+ width="100%" height="100%"
116
+ dataProvider="{Rx.models.index(<%= class_name %>)}"
117
+ change="on<%= class_name %>Select()"/>
118
+ <mx:ControlBar width="100%">
119
+ <mx:Button label="New <%= class_name %>" width="100%" height="30"
120
+ click="new<%= class_name %>()"/>
121
+ </mx:ControlBar>
122
+ </mx:Panel>
123
+ <mx:Panel title="Edit <%= class_name %>" cornerRadius="0" dropShadowEnabled="false" borderStyle="solid"
124
+ borderThickness="1" backgroundColor="#EEEEEE" width="75%" height="100%">
125
+ <mx:Form width="100%" height="100%">
126
+ <% for attribute in attributes -%>
127
+ <mx:FormItem label="<%= attribute.flex_name.ucfirst %>" width="100%">
128
+ <% if attribute.type == :boolean -%>
129
+ <mx:CheckBox id="<%= attribute.flex_name %>CheckBox" selected="{<%= class_name.dcfirst %>.<%= attribute.flex_name %>}"/>
130
+ <% elsif attribute.type == :string -%>
131
+ <mx:TextInput id="<%= attribute.flex_name %>TextInput" width="100%" text="{<%= class_name.dcfirst %>.<%= attribute.flex_name %>}"/>
132
+ <% elsif attribute.type == :text -%>
133
+ <mx:TextArea id="<%= attribute.flex_name %>TextArea" width="100%" height="200" text="{<%= class_name.dcfirst %>.<%= attribute.flex_name %>}"/>
134
+ <% elsif attribute.type == :datetime || attribute.type == :time -%>
135
+ <rx:DateTimeTextInput id="<%= attribute.flex_name %>DateTimeTextInput" width="200" date="{<%= class_name.dcfirst %>.<%= attribute.flex_name %>}"/>
136
+ <% elsif attribute.type == :date -%>
137
+ <mx:DateField id="<%= attribute.flex_name %>DateField" selectedDate="{<%= class_name.dcfirst %>.<%= attribute.flex_name %>}"/>
138
+ <% else -%>
139
+ <mx:TextInput id="<%= attribute.flex_name %>TextInput" width="100%" text="{<%= class_name.dcfirst %>.<%= attribute.flex_name %>}"/>
140
+ <% end -%>
141
+ </mx:FormItem>
142
+ <% end -%>
143
+ <% if attachment_field.size > 0 -%>
144
+ <mx:FormItem label="<%= attachment_field[0].camelcase %>:" width="100%" id="fileChooser">
145
+ <mx:Button label="Browse…" id="fileBrowseButton" click="chooseFile()"/>
146
+ <mx:Label text="{fileName}" maxWidth="190"/>
147
+ <mx:Image source="{<%= class_name.dcfirst %>.attachmentUrl}"/>
148
+ </mx:FormItem>
149
+ <% end -%>
150
+ <% for model in belongs_tos -%>
151
+ <mx:FormItem label="<%= model.camelcase %>" width="100%">
152
+ <mx:ComboBox id="<%= model.camelcase(:lower) %>ComboBox" width="200"
153
+ labelField="{<%= model.camelcase %>.LABEL}"
154
+ dataProvider="{Rx.models.index(<%= model.camelcase %>)}" prompt="<%= model.camelcase %> ..."
155
+ selectedItem="{<%= class_name.dcfirst %>.<%= model.camelcase(:lower) %>}"/>
156
+ </mx:FormItem>
157
+ <% end -%>
158
+ </mx:Form>
159
+ <mx:ControlBar width="100%">
160
+ <mx:Button label="Save <%= class_name %>" width="50%" height="30"
161
+ click="save<%= class_name %>()"/>
162
+ <mx:Button label="Delete <%= class_name %>" width="50%" height="30"
163
+ enabled="{RxUtils.canDeleteModel(<%= class_name.dcfirst %>)}"
164
+ click="destroy<%= class_name %>()"/>
165
+ </mx:ControlBar>
166
+ </mx:Panel>
167
+ </mx:HBox>
@@ -0,0 +1,46 @@
1
+ class <%= migration_name %> < ActiveRecord::Migration
2
+ def self.up
3
+ <% if distributed -%>
4
+ create_table :<%= table_name %>, :id => false do |t|
5
+ t.string :id
6
+ <% else -%>
7
+ create_table :<%= table_name %> do |t|
8
+ <% end -%>
9
+ <% for attribute in args_for_generation -%>
10
+ t.<%= attribute.split(':')[1] %> :<%= attribute.split(':')[0] %>
11
+ <% end -%>
12
+ <% for model in belongs_tos -%>
13
+ <% if distributed -%>
14
+ t.string :<%= model %>_id
15
+ <% else -%>
16
+ t.references :<%= model %>
17
+ <% end -%>
18
+ <% end -%>
19
+ <% if attachment_field.size > 0 -%>
20
+ <% if RxSettings.attachment_plugin == 'paperclip' -%>
21
+ # For paperclip
22
+ t.column :<%= attachment_field[0] %>_file_name, :string
23
+ t.column :<%= attachment_field[0] %>_content_type, :string
24
+ t.column :<%= attachment_field[0] %>_file_size, :integer
25
+ t.column :<%= attachment_field[0] %>_updated_at, :datetime
26
+ <% elsif RxSettings.attachment_plugin == 'attachment_fu' -%>
27
+ # For attachment_fu
28
+ t.column :parent_id, :integer
29
+ t.column :content_type, :string
30
+ t.column :filename, :string
31
+ t.column :thumbnail, :string
32
+ t.column :size, :integer
33
+ t.column :width, :integer
34
+ t.column :height, :integer
35
+ <% end -%>
36
+ <% end -%>
37
+ <% unless options[:skip_timestamps] %>
38
+ t.timestamps
39
+ <% end -%>
40
+ end
41
+ end
42
+
43
+ def self.down
44
+ drop_table :<%= table_name %>
45
+ end
46
+ end
@@ -0,0 +1,73 @@
1
+ package <%= base_package %>.models {
2
+ <% if has_manies.length > 0 || has_many_through.length > 0 -%>
3
+ import org.restfulx.collections.ModelsCollection;
4
+ <% end -%>
5
+ <% if tree_model.size > 0 -%>
6
+ <% @tree_or_no_tree = 'RxTreeModel' %>
7
+ import org.restfulx.models.RxTreeModel
8
+ <% end -%>
9
+ <% unless tree_model.size > 0 -%>
10
+ <% @tree_or_no_tree = 'RxModel' %>
11
+ import org.restfulx.models.RxModel;
12
+ <% end -%>
13
+
14
+ [Resource(name="<%= resource_controller_name %>")]
15
+ [Bindable]
16
+ public class <%= class_name %> extends <%= @tree_or_no_tree %> {
17
+ <% if attributes && !attributes.empty? && attributes[0].flex_type != "Boolean" -%>
18
+ public static const LABEL:String = "<%= attributes[0].flex_name %>";
19
+ <% else -%>
20
+ public static const LABEL:String = "id";
21
+ <% end -%>
22
+
23
+ <% for attribute in attributes -%>
24
+ <% if attribute.type == :datetime || attribute.type == :time -%>
25
+ [DateTime]
26
+ <% end -%>
27
+ public var <%= attribute.flex_name %>:<%= attribute.flex_type %> = <%= attribute.flex_default %>;
28
+
29
+ <% end -%>
30
+ <% for model in belongs_tos -%>
31
+ [BelongsTo]
32
+ public var <%= model.camelcase(:lower) %>:<%= model.camelcase %>;
33
+
34
+ <% end -%>
35
+ <% if tree_model.size > 0 -%>
36
+ [BelongsTo]
37
+ public var <%= tree_model[0].camelcase(:lower) %>:<%= class_name %>;
38
+
39
+ <% end -%>
40
+ <% for model in polymorphic -%>
41
+ [BelongsTo(polymorphic="true", dependsOn="Model1, Model2")]
42
+ public var <%= model.camelcase(:lower) %>:Object;
43
+
44
+ <% end -%>
45
+ <% if has_many_through.size > 0 -%>
46
+ <% has_many_through.each do |k,v| %>
47
+ [HasMany]
48
+ public var <%= k.camelcase(:lower) %>:ModelsCollection;
49
+
50
+ [HasMany(through="<%= k.camelcase %>")]
51
+ public var <%= v.camelcase(:lower) %>:ModelsCollection;
52
+ <% end -%>
53
+ <% end -%>
54
+ <% for model in has_ones -%>
55
+ [HasOne]
56
+ public var <%= model.camelcase(:lower) %>:<%= model.camelcase %>;
57
+
58
+ <% end -%>
59
+ <% for model in has_manies -%>
60
+ [HasMany]
61
+ public var <%= model.camelcase(:lower) %>:ModelsCollection;
62
+
63
+ <% end -%>
64
+ <% if attachment_field.size > 0 -%>
65
+ [Ignored]
66
+ public var attachmentUrl:String;
67
+
68
+ <% end -%>
69
+ public function <%= class_name %>() {
70
+ super(LABEL);
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,46 @@
1
+ class <%= class_name %> < ActiveRecord::Base
2
+ <% if distributed -%>
3
+ include RestfulX::UUIDHelper
4
+ <% end -%>
5
+ <% for model in belongs_tos -%>
6
+ belongs_to :<%= model %>
7
+ <% end -%>
8
+ <% for model in has_ones -%>
9
+ has_one :<%= model %>
10
+ <% end -%>
11
+ <% for model in has_manies -%>
12
+ has_many :<%= model %>, :dependent => :destroy
13
+ <% end -%>
14
+ <% for model in polymorphic -%>
15
+ belongs_to :<%= model %>, :polymorphic => true
16
+ <% end -%>
17
+ <% if has_many_through.size > 0 -%>
18
+ <% has_many_through.each do |k,v| %>
19
+ has_many :<%= k %>
20
+ has_many :<%= v %>, :through => :<%= k %>
21
+ <% end -%>
22
+ <% end -%>
23
+ <% if tree_model.size > 0 -%>
24
+ acts_as_category
25
+ <% end -%>
26
+ <% if attachment_field.size > 0 -%>
27
+ <% if RxSettings.attachment_plugin == 'paperclip' -%>
28
+ # paperclip examples:
29
+ # http://github.com/thoughtbot/paperclip/tree/master
30
+ has_attached_file :<%= attachment_field[0] %>,
31
+ :styles => { :medium => "600x480>", :thumb => "100x100#" }
32
+
33
+ def attachment_url
34
+ <%= attachment_field[0] %>.url(:original)
35
+ end
36
+ <% elsif RxSettings.attachment_plugin == 'attachment_fu' -%>
37
+ # attachment_fu examples:
38
+ # http://github.com/technoweenie/attachment_fu/blob/ab1e4f7b0b9de85e0c9decf061d2ef5c1dc0feaa/README#L56-69
39
+ has_attachment
40
+
41
+ def attachment_url
42
+ "" # FIX ME
43
+ end
44
+ <% end -%>
45
+ <% end -%>
46
+ end