kwatable 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (67) hide show
  1. data/ChangeLog +46 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.txt +4 -2
  4. data/bin/kwatable +4 -4
  5. data/examples/ex1/Makefile +40 -14
  6. data/examples/ex1/{example1.yaml → tabledef.yaml} +42 -11
  7. data/examples/ex2/Makefile +41 -14
  8. data/examples/ex2/{example2.yaml → tabledef.yaml} +45 -30
  9. data/examples/ex3/Makefile +52 -0
  10. data/examples/ex3/tabledef.yaml +136 -0
  11. data/kwatable.gemspec +11 -10
  12. data/lib/kwatable.rb +24 -18
  13. data/lib/kwatable/kwatable.schema.yaml +95 -5
  14. data/lib/kwatable/main.rb +331 -0
  15. data/lib/kwatable/manipulator.rb +320 -192
  16. data/lib/kwatable/messages.rb +59 -0
  17. data/lib/kwatable/template/ddl-mysql.eruby +202 -0
  18. data/lib/kwatable/{templates → template}/ddl-postgresql.eruby +71 -45
  19. data/lib/kwatable/{templates → template}/defaults.yaml +2 -2
  20. data/lib/kwatable/template/dictionary.en.yaml +70 -0
  21. data/lib/kwatable/template/dictionary.ja.yaml +165 -0
  22. data/lib/kwatable/template/dto-java.eruby +77 -0
  23. data/lib/kwatable/template/dto-java.sub.eruby +259 -0
  24. data/lib/kwatable/template/dto-ruby.eruby +63 -0
  25. data/lib/kwatable/template/dto-ruby.sub.eruby +213 -0
  26. data/lib/kwatable/template/helper/column.rb +70 -0
  27. data/lib/kwatable/template/helper/common.rb +151 -0
  28. data/lib/kwatable/template/helper/java.rb +83 -0
  29. data/lib/kwatable/template/helper/label.rb +90 -0
  30. data/lib/kwatable/template/helper/ruby.rb +36 -0
  31. data/lib/kwatable/template/helper/table.rb +62 -0
  32. data/lib/kwatable/template/hibernate.eruby +139 -0
  33. data/lib/kwatable/template/rails-controller.eruby +66 -0
  34. data/lib/kwatable/template/rails-controller.sub.eruby +114 -0
  35. data/lib/kwatable/template/rails-kwartz.eruby +164 -0
  36. data/lib/kwatable/template/rails-kwartz/_attr.plogic.eruby +56 -0
  37. data/lib/kwatable/template/rails-kwartz/_form.plogic.eruby +81 -0
  38. data/lib/kwatable/template/rails-kwartz/_link.plogic.eruby +36 -0
  39. data/lib/kwatable/template/rails-kwartz/edit.cfg.yaml.eruby +16 -0
  40. data/lib/kwatable/template/rails-kwartz/edit.html.eruby +46 -0
  41. data/lib/kwatable/template/rails-kwartz/edit.plogic.eruby +20 -0
  42. data/lib/kwatable/template/rails-kwartz/layout.html.eruby +39 -0
  43. data/lib/kwatable/template/rails-kwartz/layout.plogic.eruby +32 -0
  44. data/lib/kwatable/template/rails-kwartz/list.html.eruby +94 -0
  45. data/lib/kwatable/template/rails-kwartz/list.plogic.eruby +41 -0
  46. data/lib/kwatable/template/rails-kwartz/new.html.eruby +100 -0
  47. data/lib/kwatable/template/rails-kwartz/new.plogic.eruby +26 -0
  48. data/lib/kwatable/template/rails-kwartz/show.html.eruby +51 -0
  49. data/lib/kwatable/template/rails-kwartz/show.plogic.eruby +9 -0
  50. data/lib/kwatable/template/rails-model.eruby +35 -0
  51. data/lib/kwatable/template/rails-model.sub.eruby +136 -0
  52. data/lib/kwatable/{templates → template}/validator-ruby.eruby +18 -11
  53. data/lib/kwatable/util.rb +133 -0
  54. data/lib/kwatable/util/assert-text-equal.rb +47 -0
  55. data/lib/kwatable/util/assertion.rb +115 -0
  56. data/lib/kwatable/validator.rb +50 -0
  57. data/test/assert-diff.rb +1 -1
  58. data/test/test-ex.rb +306 -0
  59. data/test/test.rb +37 -127
  60. metadata +66 -17
  61. data/COPYING +0 -340
  62. data/ChangeLog.txt +0 -65
  63. data/lib/kwatable/error-msg.rb +0 -38
  64. data/lib/kwatable/main-program.rb +0 -216
  65. data/lib/kwatable/templates/ddl-mysql.eruby +0 -172
  66. data/lib/kwatable/templates/dto-java.eruby +0 -260
  67. data/lib/kwatable/templates/dto-ruby.eruby +0 -185
@@ -0,0 +1,70 @@
1
+ ##
2
+ ## $Rev: 42 $
3
+ ## $Release: 0.3.0 $
4
+ ## copyright(c) 2005 kuwata-lab.com all rights reserved.
5
+ ##
6
+
7
+ new : New
8
+ create : Create
9
+ list : List
10
+ show : Show
11
+ read : Read
12
+ edit : Edit
13
+ modify : Modify
14
+ update : Update
15
+ destroy : Destroy
16
+ delete : Delete
17
+
18
+ new_item : New %s
19
+ create_item : Create %s
20
+ list_items : List %s
21
+ show_item : Show %s
22
+ read_item : Read %s
23
+ edit_item : Edit %s
24
+ modify_item : Modify %s
25
+ update_item : Update %s
26
+ destroy_item : Destroy %s
27
+ delete_item : Delete %s
28
+
29
+ listing_items : Listing %s
30
+ editing_item : Editing %s
31
+ modifying_item : Modifying %s
32
+ updating_item : Updating %s
33
+ showing_item : Showing %s
34
+ reading_item : Reading %s
35
+ newing_item : Newing %s
36
+ creating_item : Creating %s
37
+ destroying_item : Destroying %s
38
+ deleting_item : Deleting %s
39
+
40
+ are_you_sure : Are you sure?
41
+ invalid_session_token : Invalid session token.
42
+
43
+ xxx_was_created : %s was successfully created.
44
+ xxx_was_updated : %s was successfully updated.
45
+ xxx_was_modified : %s was successfully modified.
46
+ xxx_was_destroyed : %s was successfully destroyed.
47
+ xxx_was_deleted : %s was successfully deleted.
48
+
49
+ top : Top
50
+ home : Home
51
+ prev : Previous
52
+ next : Next
53
+ goto : Goto %s
54
+ goto_prev : Goto previous
55
+ goto_next : Goto next
56
+ prev_page : Previous page
57
+ next_page : Next page
58
+ back : Back
59
+ back_to : Back to %s
60
+
61
+ gender : Gender
62
+ gender_M : Man
63
+ gender_F : Woman
64
+ gender_m : Man
65
+ gender_f : Woman
66
+ sex : Sex
67
+ sex_M : Man
68
+ sex_F : Woman
69
+ sex_m : Man
70
+ sex_f : Woman
@@ -0,0 +1,165 @@
1
+ ##
2
+ ## $Rev: 42 $
3
+ ## $Release: 0.3.0 $
4
+ ## copyright(c) 2005 kuwata-lab.com all rights reserved.
5
+ ##
6
+
7
+ new : ��������
8
+ create : ����
9
+ list : ����
10
+ show : ����
11
+ read : ����
12
+ edit : �ѹ�
13
+ modify : �ѹ�
14
+ update : �ѹ�
15
+ destroy : ���
16
+ delete : ���
17
+
18
+ new_item : %s�����
19
+ create_item : %s�����
20
+ list_items : %s�����
21
+ show_item : %s�򻲾�
22
+ read_item : %s�򻲾�
23
+ edit_item : %s���ѹ�
24
+ modify_item : %s���ѹ�
25
+ update_item : %s���ѹ�
26
+ destroy_item : %s����
27
+ delete_item : %s����
28
+
29
+ listing_items : %s���
30
+ editing_item : %s���Խ�
31
+ modifying_item : %s���Խ�
32
+ updating_item : %s���Խ�
33
+ showing_item : %s���
34
+ reading_item : %s���
35
+ newing_item : %s���
36
+ creating_item : %s���
37
+ destroying_item : %s��
38
+ deleting_item : %s��
39
+
40
+ are_you_sure : ��������Ǥ�����
41
+ xxx_was_created : %s����������ޤ�����
42
+ invalid_session_token : �����ʥ��å����ȡ�����Ǥ���
43
+
44
+ xxx_was_created : %s����������ޤ�����
45
+ xxx_was_updated : %s����������ޤ�����
46
+ xxx_was_modified : %s���ѹ�����ޤ�����
47
+ xxx_was_destroyed : %s���������ޤ�����
48
+ xxx_was_deleted : %s���������ޤ�����
49
+
50
+
51
+ top : �ȥå�
52
+ home : �ۡ���
53
+ prev : ��
54
+ next : ��
55
+ goto : %s��
56
+ goto_prev : ����
57
+ goto_next : ����
58
+ prev_page : ���Υڡ���
59
+ next_page : ���Υڡ���
60
+ back : ���
61
+ back_to : %s�����
62
+
63
+ ###
64
+
65
+ user : �桼��
66
+ users : �桼��
67
+ user_name : �桼��̾
68
+ username : �桼��̾
69
+ group : ���롼��
70
+ groups : ���롼��
71
+ group_name : ���롼��̾
72
+ groupname : ���롼��̾
73
+ account : ���������
74
+ account_name : ���������̾
75
+ name : ̾��
76
+ password : �ѥ����
77
+ passwd : �ѥ����
78
+ desc : Ŧ��
79
+ description : Ŧ��
80
+ birth : ������
81
+ birthday : ������
82
+ mail : �᡼��
83
+ email : Email
84
+ gender : ����
85
+ sex : ����
86
+ man : ����
87
+ men : ����
88
+ woman : ����
89
+ women : ����
90
+ gender_M : ����
91
+ gender_m : ����
92
+ gender_F : ����
93
+ gender_f : ����
94
+ adult : ����
95
+ child : �Ҷ�
96
+ children : �Ҷ�
97
+ memo : ���
98
+ note : ����
99
+ id : ID
100
+ type : ������
101
+ width : ��
102
+ height : �⤵
103
+ status : ����
104
+ created_on : ������
105
+ created_at : ��������
106
+ updated_on : ������
107
+ updated_at : ��������
108
+ modified_on : ������
109
+ modified_at : ��������
110
+ case : ������
111
+ active : ͭ��
112
+ inactive : ̵��
113
+ yes : �Ϥ�
114
+ no : ������
115
+ number : ��
116
+ num : �ֹ�
117
+ code : ������
118
+ null : �̥�
119
+ age : ǯ��
120
+ order : ��ʸ
121
+ orders : ��ʸ
122
+ sales_order : ����
123
+ sales_orders : ����
124
+ sales_order_line : ��������
125
+ sales_order_lines : ��������
126
+ purchasing_order : ȯ��
127
+ purchasing_orders : ȯ��
128
+ purchasing_order_line : ȯ������
129
+ purchasing_order_lines : ȯ������
130
+ item : ����
131
+ items: : ����
132
+ price : ����
133
+ quantity : �Ŀ�
134
+ amount : ����
135
+ total : ����
136
+ shipping : �в�
137
+ shipping_date : ���
138
+ delivery : ����
139
+ delivery_date : ������
140
+ ordered_date : ��ʸ��
141
+ ordered : ��ʸ��
142
+ booked : ��Ģ��
143
+ shipped : �вٺ�
144
+ delivered : ������
145
+ customer : �ܵ�
146
+ customers : �ܵ�
147
+ tel : ����
148
+ phone : ����
149
+ mail : �᡼��
150
+ email : E�᡼��
151
+ e-mail : E�᡼��
152
+ addr : ����
153
+ address : ����
154
+ zipcode : ͹���ֹ�
155
+ zip_code : ͹���ֹ�
156
+ zip : ͹���ֹ�
157
+ country : ��
158
+ state : ��
159
+ prefecture : ��
160
+ city : ��Į¼
161
+ street : �̤�
162
+ building : ��ʪ
163
+ bldg : ��ʪ
164
+ from : ��
165
+ to : ��
@@ -0,0 +1,77 @@
1
+ <%
2
+
3
+ ##
4
+ ## kwatable template file for Java DTO class
5
+ ##
6
+ ## $Rev: 44 $
7
+ ## $Release: 0.3.0 $
8
+ ## copyright(c) 2005 kuwata-lab.com all rights reserved.
9
+ ##
10
+ ## <template-desc>generate DTO classes for Java</template-desc>
11
+ ## <template-properties>
12
+ ## --package=name : package name
13
+ ## --parent=name : parent class
14
+ ## --constructor : define constructor
15
+ ## --populate : define populate method
16
+ ## --collection={list|set} : collection class
17
+ ## </template-properties>
18
+ ##
19
+
20
+ require 'kwatable/template/helper/common'
21
+ require 'kwatable/template/helper/table'
22
+ require 'kwatable/template/helper/column'
23
+ require 'kwatable/template/helper/java'
24
+ extend Kwatable::CommonHelper
25
+ extend Kwatable::TableHelper
26
+ extend Kwatable::ColumnHelper
27
+ extend Kwatable::JavaHelper
28
+
29
+ require 'active_support/inflector'
30
+ #extend Inflector
31
+
32
+
33
+ ## context check
34
+ context_var_required('@tables')
35
+
36
+
37
+ ## use '_' as escape function name
38
+ alias _ escape_java_keyword
39
+
40
+
41
+ ## determine java class or type from column data
42
+ alias _column_java_type column_java_type
43
+ def column_java_type(column)
44
+ #
45
+ # ... add custom code here ...
46
+ #
47
+ return _column_java_type(column)
48
+ end
49
+
50
+
51
+ ##
52
+ ## apply template
53
+ ##
54
+ @output_files = apply_subtemplate_for_each_tables(@tables) { |table|
55
+ output_filename = table_class(table) + '.java'
56
+ output_filename
57
+ }
58
+ # basename = File.basename(@template_filename)
59
+ # subtemplate_filename = basename.sub(/\.eruby\z/, '.sub.eruby')
60
+ # subtemplate_filepath = Util.find_file(subtemplate_filename, @template_pathlist)
61
+ # unless subtemplate_filepath
62
+ # raise "#{basename}: subtemplate `#{subtemplate_filename}' not found."
63
+ # end
64
+ # @output_files = []
65
+ # context = self
66
+ # encoding = @properties[:encoding] || @properties[:charset]
67
+ # each_table(@tables) do |table|
68
+ # @table = table
69
+ # output = Util.eval_template(subtemplate_filepath, context)
70
+ # output = Util.encode(output, encoding) if encoding
71
+ # outfile = @output_filename # set in subtemplate
72
+ # @output_files << [outfile, output, :create]
73
+ # end
74
+ # @table = nil
75
+
76
+
77
+ %>
@@ -0,0 +1,259 @@
1
+ <%
2
+
3
+ ##
4
+ ## kwatable template file for Ruby DTO class
5
+ ##
6
+ ## $Rev: 38 $
7
+ ## $Release: 0.3.0 $
8
+ ## copyright(c) 2005 kuwata-lab.com all rights reserved.
9
+ ##
10
+
11
+ #
12
+ # context check
13
+ #
14
+ context_var_required('@table')
15
+
16
+
17
+ #
18
+ # output file name
19
+ #
20
+ @output_filename = table_class(@table) + ".java"
21
+
22
+
23
+ #
24
+ # class definition
25
+ #
26
+ klass = {
27
+ :name => table_class(@table),
28
+ :package => @table['package'] || @properties[:package],
29
+ :parent => @table['parent'] || @properties[:parent],
30
+ :desc => @table['desc'],
31
+ }
32
+
33
+
34
+ #
35
+ # instance variables
36
+ #
37
+ variables = []
38
+ for column in @table['columns']
39
+ hash = {
40
+ :name => column_attr(column),
41
+ :type => column['class'] || column_java_type(column),
42
+ :desc => column['desc'],
43
+ }
44
+ variables << hash
45
+ end
46
+
47
+
48
+ #
49
+ # collection class (default 'List')
50
+ #
51
+ collection_table = { 'set'=>'Set', 'list'=>'List', 'map'=>'Map',
52
+ 'hash'=>'Map', 'seq'=>'List' }
53
+ collection_type = @properties[:collection] || 'list'
54
+ collection_class = collection_table[collection_type] || @properties[:collection]
55
+
56
+
57
+ #
58
+ # relations
59
+ #
60
+ relations = []
61
+ for relation in @table['relations']
62
+ kind = relation['kind']
63
+ type = table_class(relation['table'])
64
+ attr = Inflector.underscore(type)
65
+ unless kind == '1:1'
66
+ type = "#{collection_class}<#{type}>"
67
+ attr = Inflector.pluralize(attr)
68
+ end
69
+ hash = {
70
+ :kind => kind,
71
+ :type => relation['class'] || type,
72
+ :attr => relation['attr'] || attr,
73
+ }
74
+ relations << hash
75
+ end if @table['relations']
76
+
77
+
78
+ #
79
+ # import classes
80
+ #
81
+ imports = []
82
+ imports << 'java.util.Date' if variables.any? { |var| var[:type] == 'Date' }
83
+ imports << "java.util.#{collection_class}" if relations.any? { |rel| rel[:type] =~ /\A#{collection_class}<.*>\z/ }
84
+
85
+
86
+ %>
87
+ /*
88
+ * DTO for Java
89
+ * generated by kwatable with template 'dto-java.eruby'
90
+ * at <%= Time.now.to_s %>
91
+
92
+ */
93
+ <% if klass[:package] %>
94
+ package <%= klass[:package] %>;
95
+ <% end %>
96
+ <% for class_name in imports %>
97
+ import <%= class_name %>;
98
+ <% end %>
99
+
100
+ /**
101
+ * <%= klass[:desc] %>
102
+
103
+ */
104
+ <% extends = klass[:parent] ? ' extends ' + klass[:parent] : '' %>
105
+ public class <%= klass[:name] %><%= extends %> implements java.io.Serializable {
106
+
107
+ <%
108
+ #
109
+ # instance variables
110
+ #
111
+ %>
112
+ <% for var in variables %>
113
+ <% varname = '%-12s' % ( _(var[:name]) + ';') %>
114
+ private <%= '%-12s' % var[:type] %> <%= varname %> /* <%= var[:desc] %> */
115
+ <% end %>
116
+
117
+ <%
118
+ #
119
+ # constructor
120
+ #
121
+ argstr = variables.collect { |var| "#{var[:type]} #{_(var[:name])}" }.join(', ')
122
+ %>
123
+ <% if @properties[:constructor] %>
124
+ public <%= klass[:name] %>() {}
125
+
126
+ public <%= klass[:name] %>(<%= argstr %>) {
127
+ <% for var in variables %>
128
+ set<%= camel_case(var[:name]) %>(<%=_ var[:name] %>);
129
+ <% end %>
130
+ }
131
+
132
+ <% end %>
133
+ <%
134
+ #
135
+ # set all values with java.sql.ResultSet
136
+ #
137
+ %>
138
+ <% if @properties[:populate] %>
139
+ public void populate(java.sql.ResultSet resultset) throws java.sql.SQLException {
140
+ <% n = 0 %>
141
+ <% for var in variables %>
142
+ <% if var[:type] == 'char' %>
143
+ <% if (n += 1) == 1 %>
144
+ String val;
145
+ <% end %>
146
+ val = resultset.getString("<%= var[:name] %>");
147
+ set<%= camel_case(var[:name]) %>(val != null && val.length() > 0 ? val.charAt(0) : 0);
148
+ <% else %>
149
+ set<%= camel_case(var[:name]) %>(resultset.get<%= var[:type].capitalize %>("<%= var[:name] %>"));
150
+ <% end %>
151
+ <% end %>
152
+ }
153
+
154
+ <% end %>
155
+ <%
156
+ #
157
+ # set all properties
158
+ #
159
+ %>
160
+ <% if @properties[:populate] %>
161
+ public void populate(java.util.Map _map) {
162
+ String val = null;
163
+ <% for var in variables %>
164
+ <% getter, setter = accessors(var[:name], var[:type]) %>
165
+ if (_map.containsKey("<%= var[:name] %>")) {
166
+ val = (String)_map.get("<%= var[:name] %>");
167
+ <% case var[:type] %>
168
+ <% when 'String' %>
169
+ <%= setter %>(val);
170
+ <% when 'int' %>
171
+ <%= setter %>(Integer.parseInt(val));
172
+ <% when 'long' %>
173
+ <%= setter %>(Long.parseLong(val));
174
+ <% when 'float' %>
175
+ <%= setter %>(Float.parseFloat(val));
176
+ <% when 'double' %>
177
+ <%= setter %>(Double.parseDouble(val));
178
+ <% when 'char' %>
179
+ <%= setter %>(val.length() > 0 ? val.charAt(0) : 0);
180
+ <% when 'boolean' %>
181
+ <%= setter %>(val.length() > 0);
182
+ <% when 'Date' %>
183
+ try {
184
+ <%= setter %>(java.text.DateFormat.getDateInstance().parse(val));
185
+ } catch (java.text.ParseException ignore) {
186
+ }
187
+ <% else %>
188
+ <% raise "*** internal error: template='dto-java.eruby', var[:type]=#{var[:type].inspect}" %>
189
+ <% end %>
190
+ }
191
+ <% end %>
192
+ }
193
+
194
+ <% end %>
195
+ <%
196
+ #
197
+ # getter/setter
198
+ #
199
+ for var in variables
200
+ vartype = var[:type]
201
+ varname = var[:name]
202
+ getter, setter = accessors(varname, vartype)
203
+ %>
204
+ public <%= vartype %> <%= getter %>() { return <%=_ varname %>; }
205
+ public void <%= setter %>(<%= vartype %> <%=_ varname %>) { this.<%=_ varname %> = <%=_ varname %>; }
206
+
207
+ <% end %>
208
+ <%
209
+ #
210
+ # foreign keys
211
+ #
212
+ for column in @table['columns']
213
+ next if !column['ref']
214
+ reftype = table_class(column['ref']['table'])
215
+ refcolname = column_attr(column['ref'])
216
+ refname = column_refname(column)
217
+ varname = column_attr(column)
218
+ argname = refname # or Inflector.underscore(reftype)
219
+ if refname == varname
220
+ raise "table `#{@table['name']}': column `#{column['name']}': proper ref-name is required."
221
+ end
222
+ getter, setter = accessors(refname, reftype)
223
+ foreign_key_name = "#{column['ref']['table']['name']}.#{column['ref']['name']}"
224
+ %>
225
+ // link to <%= column['ref']['table']['name'] %> table via foreign key <%= foreign_key_name %>
226
+
227
+ private <%= reftype %> <%=_ refname %>;
228
+ public <%= reftype %> <%= getter %>() { return <%=_ refname %>; }
229
+ public void <%= setter %>(<%= reftype %> <%=_ argname %>) {
230
+ this.<%=_ refname %> = <%=_ argname %>;
231
+ set<%= camel_case(varname) %>(<%=_ argname %>.get<%= camel_case(refcolname) %>());
232
+ }
233
+
234
+ <%
235
+ #//this.#{varname} = #{argname}.get#{camel_case(refcolname)}();
236
+ end
237
+
238
+
239
+ #
240
+ # relations
241
+ #
242
+ for relation in relations
243
+ kind = relation[:kind]
244
+ type = relation[:type]
245
+ attr = relation[:attr]
246
+ getter, setter = accessors(attr, type)
247
+ arg = attr
248
+ %>
249
+ // <%= kind %> relationship
250
+ private <%= type %> <%=_ attr %>;
251
+ public <%= type %> <%= getter %>() { return <%=_ attr %>; }
252
+ public void <%= setter %>(<%= type %> <%=_ arg %>) {
253
+ this.<%=_ attr %> = <%=_ arg %>;
254
+ }
255
+
256
+ <%
257
+ end
258
+ %>
259
+ }