kwatable 0.0.1 → 0.1.0
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.
- data/ChangeLog.txt +28 -2
- data/README.txt +1 -1
- data/bin/kwatable +2 -2
- data/examples/ex1/Makefile +1 -1
- data/examples/ex1/example1.yaml +18 -7
- data/examples/ex2/Makefile +1 -1
- data/kwatable.gemspec +2 -2
- data/lib/kwatable/error-msg.rb +15 -14
- data/lib/kwatable/kwatable.schema.yaml +34 -81
- data/lib/kwatable/main-program.rb +49 -41
- data/lib/kwatable/manipulator.rb +222 -0
- data/lib/kwatable/templates/ddl-mysql.eruby +15 -12
- data/lib/kwatable/templates/ddl-postgresql.eruby +14 -10
- data/lib/kwatable/templates/defaults.yaml +4 -4
- data/lib/kwatable/templates/dto-java.eruby +49 -59
- data/lib/kwatable/templates/dto-ruby.eruby +47 -54
- data/lib/kwatable.rb +3 -4
- data/test/assert-diff.rb +1 -1
- data/test/test.rb +24 -17
- data/test/test1/test1.ddl-mysql.expected +3 -2
- data/test/test1/test1.ddl-postgresql.expected +2 -1
- data/test/test1/test1.dto-java.Group.expected +12 -9
- data/test/test1/test1.dto-java.User.expected +12 -14
- data/test/test1/test1.dto-ruby.Group.expected +9 -10
- data/test/test1/test1.dto-ruby.User.expected +12 -15
- data/test/test1/test1.yaml +18 -7
- data/test/test2/test2.ddl-mysql.expected +4 -4
- data/test/test2/test2.dto-java.Address.expected +6 -8
- data/test/test2/test2.dto-java.Customer.expected +6 -8
- data/test/test2/test2.dto-java.Item.expected +5 -7
- data/test/test2/test2.dto-java.SalesOrder.expected +6 -8
- data/test/test2/test2.dto-java.SalesOrderLine.expected +6 -8
- data/test/test2/test2.dto-ruby.Address.expected +6 -9
- data/test/test2/test2.dto-ruby.Customer.expected +6 -9
- data/test/test2/test2.dto-ruby.Item.expected +5 -8
- data/test/test2/test2.dto-ruby.SalesOrder.expected +6 -9
- data/test/test2/test2.dto-ruby.SalesOrderLine.expected +6 -9
- data/test/test2/test2.yaml +3 -3
- metadata +65 -64
- data/lib/kwatable/manufactory.rb +0 -213
@@ -0,0 +1,222 @@
|
|
1
|
+
###
|
2
|
+
### copyright(c) 2005 kuwata-lab.com all rights reserved.
|
3
|
+
### $Release: 0.1.0 $
|
4
|
+
### $Rev: 15 $
|
5
|
+
###
|
6
|
+
|
7
|
+
require 'yaml'
|
8
|
+
|
9
|
+
module Kwatable
|
10
|
+
|
11
|
+
class ManipulationError < KwatableError
|
12
|
+
end
|
13
|
+
|
14
|
+
|
15
|
+
##
|
16
|
+
## ex.
|
17
|
+
## tabledef = YAML.load_file('tabledef.yaml')
|
18
|
+
## manipulator = Kwatable::Manipulator.new
|
19
|
+
## tabledef = manipulator.manipulate(tabledef)
|
20
|
+
## p tabledef[:columns]
|
21
|
+
## p tabledef[:tables]
|
22
|
+
##
|
23
|
+
class Manipulator
|
24
|
+
|
25
|
+
#def parse(input)
|
26
|
+
# str = ''
|
27
|
+
# input.each_line do |line|
|
28
|
+
# str << line.gsub(/([^\t]{8})|([^\t]*)\t/n){[$+].pack("A8")} ## expand tab
|
29
|
+
# end
|
30
|
+
# tabledef = YAML.load(str)
|
31
|
+
# manipulate(tabledef)
|
32
|
+
# return tabledef
|
33
|
+
#end
|
34
|
+
|
35
|
+
def manipulate(tabledef)
|
36
|
+
#assert unless tabledef.is_a?(Hash)
|
37
|
+
return tabledef unless tabledef.is_a?(Hash)
|
38
|
+
|
39
|
+
column_map, patterned_columns = _manipulate_columns(tabledef['columns'])
|
40
|
+
#assert unless column_map.is_a?(Hash)
|
41
|
+
#assert unless patterned_columns.is_a?(Array)
|
42
|
+
|
43
|
+
table_map = _manipulate_tables(tabledef['tables'], column_map, patterned_columns)
|
44
|
+
#assert unless table_map.is_a?(Hash)
|
45
|
+
|
46
|
+
tabledef['column_map'] = column_map # Hash
|
47
|
+
tabledef['table_map'] = table_map # Hash
|
48
|
+
return tabledef
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def _error(message_key, *args)
|
54
|
+
msg = Kwatable.msg(:regexp_invalid) % args
|
55
|
+
return ManipulationError.new(msg)
|
56
|
+
end
|
57
|
+
|
58
|
+
def _manipulate_columns(columns)
|
59
|
+
column_map = {}
|
60
|
+
patterned_columns = []
|
61
|
+
columns.each_with_index do |column, i|
|
62
|
+
name = column['name']
|
63
|
+
unless name
|
64
|
+
#* key=:colname_required msg="table '%s': column name required (index=%d)."
|
65
|
+
raise _error(:colname_required, table['name'], i)
|
66
|
+
end
|
67
|
+
if name =~ /\A\/(.*)\/\z/
|
68
|
+
pattern = $1
|
69
|
+
begin
|
70
|
+
namepattern = Regexp.compile(pattern)
|
71
|
+
rescue RegexpError => ex
|
72
|
+
#* key=:regexp_invalid msg="table '%s': column '%s': pattern %s: %s"
|
73
|
+
raise _error(:regexp_invalid, table['name'], column['name'], column['pattern'], ex.message)
|
74
|
+
end
|
75
|
+
column['namepattern'] = namepattern
|
76
|
+
patterned_columns << column
|
77
|
+
else
|
78
|
+
if column_map.key?(name)
|
79
|
+
#* key=:coldef_duplicated msg="table '%s': column '%s': column name is duplicated."
|
80
|
+
raise _error(:coldef_duplicated, table['name'], column['name'])
|
81
|
+
end
|
82
|
+
column_map[name] = column
|
83
|
+
end
|
84
|
+
#name = column['name'].strip
|
85
|
+
#namepattern = column['namepattern']
|
86
|
+
#unless name || namepattern
|
87
|
+
# #* key=:colname_required msg="column definition doesn't have a name nor namepattern."
|
88
|
+
# raise ManipulationError.new(Kwatable.msg(:colname_required))
|
89
|
+
#end
|
90
|
+
#if name
|
91
|
+
# if column_map.key?(name)
|
92
|
+
# #* key=:coldef_duplicated msg="column definition `%s' is duplicated."
|
93
|
+
# raise ManipulationError.new(Kwatable.msg(:coldef_duplicated) % [name])
|
94
|
+
# end
|
95
|
+
# column_map[name] = column
|
96
|
+
#end
|
97
|
+
#if namepattern
|
98
|
+
# pattern = namepattern.strip
|
99
|
+
# pattern = $1 if pattern =~ /^\/(.*)\/$/
|
100
|
+
# column['namepattern'] = Regexp.compile(pattern)
|
101
|
+
# patterned_columns << column
|
102
|
+
#end
|
103
|
+
end if columns
|
104
|
+
return column_map, patterned_columns
|
105
|
+
end
|
106
|
+
|
107
|
+
def _manipulate_tables(tables, column_map, patterned_columns)
|
108
|
+
#assert unless tables.is_a?(Array)
|
109
|
+
#assert unless column_map.is_a?(Hash)
|
110
|
+
#assert unless patterned_columns.is_a?(Array)
|
111
|
+
|
112
|
+
## create table_map
|
113
|
+
table_map = {}
|
114
|
+
tables.each_with_index do |table, i|
|
115
|
+
name = table['name']
|
116
|
+
unless name
|
117
|
+
#* key=:tablename_required msg="table definition doesn't have a name (index=%d)."
|
118
|
+
raise _error(:tablename_required, i)
|
119
|
+
end
|
120
|
+
if table_map.key?(name)
|
121
|
+
#* key=:tabledef_duplicated msg="table '%s': table name is duplicated."
|
122
|
+
raise _error(:tabledef_duplicated, name)
|
123
|
+
end
|
124
|
+
table_map[name] = table
|
125
|
+
end
|
126
|
+
|
127
|
+
## manipulate table columns
|
128
|
+
tables.each do |table|
|
129
|
+
colname_map = {}
|
130
|
+
table['columns'].each_with_index do |column, i|
|
131
|
+
column['table'] = table
|
132
|
+
colname = column['name']
|
133
|
+
unless colname
|
134
|
+
#* key=:tablecolumn_required msg="table '%s': column name requried (index=%d)."
|
135
|
+
raise _error(:tablecolumn_required, table['name'], i)
|
136
|
+
end
|
137
|
+
if colname_map[colname]
|
138
|
+
#* key=:tablecolumn_duplicated msg="table '%s': column '%s': column name is duplicated."
|
139
|
+
raise _error(:tablecolumn_duplicated, table['name'], colname)
|
140
|
+
end
|
141
|
+
colname_map[colname] = true
|
142
|
+
_set_defaults(column, column_map, patterned_columns)
|
143
|
+
#_alias_keys(column, "primary-key", "primarykey", "identifier")
|
144
|
+
#_alias_keys(column, "not-null", "notnull", "required")
|
145
|
+
_alias_key(column, table, "ident", "primary-key")
|
146
|
+
_alias_key(column, table, "required", "not-null")
|
147
|
+
_handle_ref(column, table, table_map) if column['ref']
|
148
|
+
_handle_enum(column) if column['enum']
|
149
|
+
unless column['type']
|
150
|
+
#* key=:tabletype_required msg="table `%s': column `%s': type is not determined."
|
151
|
+
raise _error(:tabletype_required, table['name'], column['name'])
|
152
|
+
end
|
153
|
+
end if table['columns']
|
154
|
+
end if tables
|
155
|
+
|
156
|
+
return table_map
|
157
|
+
end
|
158
|
+
|
159
|
+
def _set_defaults(column, column_map, patterned_columns)
|
160
|
+
colname = column['name']
|
161
|
+
defaults = column_map[colname]
|
162
|
+
defaults ||= patterned_columns.find { |col| colname =~ col['namepattern'] }
|
163
|
+
defaults.each do |key, val|
|
164
|
+
column[key] = val if !column.key?(key) && key != 'namepattern'
|
165
|
+
end if defaults
|
166
|
+
end
|
167
|
+
|
168
|
+
def _alias_keys(column, key, *old_keys) # not used
|
169
|
+
old_keys.each do |old_key|
|
170
|
+
column[key] = column[old_key] if !column.key?(key) && column.key?(old_key)
|
171
|
+
end if old_keys
|
172
|
+
end
|
173
|
+
|
174
|
+
def _alias_key(column, table, key1, key2)
|
175
|
+
if column.key?(key1) && column.key?(key2)
|
176
|
+
#* key=:alias_conflict msg="table '%s', column '%s': alias key '%1:' and '%2:' are not allowed to use in the same time."
|
177
|
+
raise _error(:alias_conflict, table['name'], column['name'], key1, key2)
|
178
|
+
end
|
179
|
+
column[key2] = column[key1] if column.key?(key1)
|
180
|
+
column[key1] = column[key2] if column.key?(key2)
|
181
|
+
end
|
182
|
+
|
183
|
+
def _handle_enum(column)
|
184
|
+
return unless column['enum']
|
185
|
+
width = 0
|
186
|
+
column['enum'].each do |value|
|
187
|
+
len = value.to_s.length
|
188
|
+
width = len if len > width
|
189
|
+
end
|
190
|
+
column['type'] ||= 'str'
|
191
|
+
column['width'] ||= width
|
192
|
+
end
|
193
|
+
|
194
|
+
def _handle_ref(column, table, table_map)
|
195
|
+
ref = column['ref']
|
196
|
+
return unless ref
|
197
|
+
ref = ref.strip
|
198
|
+
return unless ref =~ /\A(\w+)\.(\w+)\z/ || ref =~ /\A(\w+)\((\w+)\)\z/
|
199
|
+
ref_table_name = $1
|
200
|
+
ref_column_name = $2
|
201
|
+
ref_table = table_map[ref_table_name]
|
202
|
+
unless ref_table
|
203
|
+
#* key=:reftable_notfound msg="`table '%s': column '%s': 'ref: %s': reference table not found."
|
204
|
+
raise _error(:reftable_notfound, table['name'], column['name'], column['ref'])
|
205
|
+
end
|
206
|
+
cols = ref_table['columns']
|
207
|
+
ref_column = cols ? cols.find { |col| col['name'] == ref_column_name } : nil
|
208
|
+
unless ref_column
|
209
|
+
#* key=:refcolumn_notfound msg="`table '%s': column '%s': ref: %s': reference column not found in the table."
|
210
|
+
raise _error(:refcolumn_notfound, table['name'], column['name'], column['ref'])
|
211
|
+
end
|
212
|
+
#column['ref-table'] = ref_table
|
213
|
+
#column['ref-column'] = ref_column
|
214
|
+
column['ref'] = ref_column
|
215
|
+
column['ref-name'] ||= column['name'].sub(/_#{ref_column['name']}$/, '')
|
216
|
+
column['type'] = ref_column['type']
|
217
|
+
column['width'] ||= ref_column['width'] if ref_column.key?('width')
|
218
|
+
end
|
219
|
+
|
220
|
+
end
|
221
|
+
|
222
|
+
end
|
@@ -4,11 +4,12 @@
|
|
4
4
|
## kwatable template file for MySQL
|
5
5
|
##
|
6
6
|
## copyright(c) 2005 kuwata-lab.com all rights reserved.
|
7
|
-
## $Release: 0.0
|
8
|
-
## $Rev:
|
7
|
+
## $Release: 0.1.0 $
|
8
|
+
## $Rev: 15 $
|
9
9
|
##
|
10
10
|
## template properties:
|
11
11
|
## (none)
|
12
|
+
##
|
12
13
|
|
13
14
|
|
14
15
|
#
|
@@ -62,15 +63,15 @@
|
|
62
63
|
year_month
|
63
64
|
zerofill
|
64
65
|
END
|
65
|
-
|
66
|
-
keywords.split(/\s+/).each { |word|
|
66
|
+
@keywords = {}
|
67
|
+
keywords.split(/\s+/).each { |word| @keywords[word] = true }
|
67
68
|
|
68
69
|
|
69
70
|
#
|
70
71
|
# escape keyword
|
71
72
|
#
|
72
|
-
def _(word)
|
73
|
-
return
|
73
|
+
def self._(word)
|
74
|
+
return @keywords[word.downcase] ? "`#{word}`" : word
|
74
75
|
end
|
75
76
|
|
76
77
|
|
@@ -127,10 +128,10 @@ create table <%= _(table['name']) %> (
|
|
127
128
|
type += "(#{width})" if width
|
128
129
|
|
129
130
|
#
|
130
|
-
# set type with 'enum(...)' if column has
|
131
|
+
# set type with 'enum(...)' if column has enum
|
131
132
|
#
|
132
|
-
if column['
|
133
|
-
type = "enum(" + column['
|
133
|
+
if column['enum']
|
134
|
+
type = "enum(" + column['enum'].collect{|v| "'#{v}'"}.join(", ") + ")"
|
134
135
|
width = nil
|
135
136
|
end
|
136
137
|
|
@@ -139,8 +140,8 @@ create table <%= _(table['name']) %> (
|
|
139
140
|
#
|
140
141
|
constraints = []
|
141
142
|
constraints << 'auto_increment' if column['serial']
|
142
|
-
constraints << 'not null' if column['
|
143
|
-
constraints << 'primary key' if column['
|
143
|
+
constraints << 'not null' if column['required'] && !column['serial'] && !column['ident']
|
144
|
+
constraints << 'primary key' if column['ident']
|
144
145
|
constraints << 'unique' if column['unique']
|
145
146
|
|
146
147
|
#
|
@@ -150,7 +151,9 @@ create table <%= _(table['name']) %> (
|
|
150
151
|
type_part = '%-20s' % type
|
151
152
|
const_part = constraints.join(' ')
|
152
153
|
comma = flag_last_loop ? '' : ','
|
153
|
-
comment = column['ref'] ? " -- references #{column['ref']}" : ""
|
154
|
+
#comment = column['ref'] ? " -- references #{column['ref']}" : ""
|
155
|
+
ref = column['ref']
|
156
|
+
comment = ref ? " -- references #{ref['table']['name']}(#{ref['name']})" : ""
|
154
157
|
%>
|
155
158
|
<%= name_part %> <%= type_part %> <%= const_part %><%= comma %><%= comment %>
|
156
159
|
|
@@ -4,11 +4,12 @@
|
|
4
4
|
## kwatable template file for PostgreSQL
|
5
5
|
##
|
6
6
|
## copyright(c) 2005 kuwata-lab.com all rights reserved.
|
7
|
-
## $Release: 0.0
|
8
|
-
## $Rev:
|
7
|
+
## $Release: 0.1.0 $
|
8
|
+
## $Rev: 15 $
|
9
9
|
##
|
10
10
|
## template properties:
|
11
11
|
## (none)
|
12
|
+
##
|
12
13
|
|
13
14
|
|
14
15
|
#
|
@@ -47,15 +48,15 @@
|
|
47
48
|
vacuum varchar verbose
|
48
49
|
when where
|
49
50
|
END
|
50
|
-
|
51
|
-
keywords.split(/\s+/).each { |word|
|
51
|
+
@keywords = {}
|
52
|
+
keywords.split(/\s+/).each { |word| @keywords[word] = true }
|
52
53
|
|
53
54
|
|
54
55
|
#
|
55
56
|
# escape keyword
|
56
57
|
#
|
57
|
-
def _(word)
|
58
|
-
return
|
58
|
+
def self._(word)
|
59
|
+
return @keywords[word.downcase] ? "\"#{word}\"" : word
|
59
60
|
end
|
60
61
|
|
61
62
|
|
@@ -122,10 +123,13 @@ create table <%= _(table['name']) %> (
|
|
122
123
|
# constraints
|
123
124
|
#
|
124
125
|
constraints = []
|
125
|
-
constraints << 'not null' if column['
|
126
|
-
constraints << 'primary key' if column['
|
126
|
+
constraints << 'not null' if column['required'] && !column['serial'] && !column['ident']
|
127
|
+
constraints << 'primary key' if column['ident']
|
127
128
|
constraints << 'unique' if column['unique']
|
128
|
-
constraints << "references #{column['ref-table']['name']}(#{column['ref-column']['name']})" if column['ref-table']
|
129
|
+
#constraints << "references #{column['ref-table']['name']}(#{column['ref-column']['name']})" if column['ref-table']
|
130
|
+
ref = column['ref']
|
131
|
+
constraints << "references #{ref['table']['name']}(#{ref['name']})" if ref
|
132
|
+
|
129
133
|
|
130
134
|
#
|
131
135
|
# column definition
|
@@ -134,7 +138,7 @@ create table <%= _(table['name']) %> (
|
|
134
138
|
type_part = '%-20s' % type
|
135
139
|
const_part = constraints.join(' ')
|
136
140
|
comma = flag_last_loop ? '' : ','
|
137
|
-
comment = column['
|
141
|
+
comment = column['enum'] ? " -- #{column['enum'].join(',')}" : ""
|
138
142
|
%>
|
139
143
|
<%= name_part %> <%= type_part %> <%= const_part %><%= comma %><%= comment %>
|
140
144
|
|
@@ -3,8 +3,8 @@
|
|
3
3
|
##
|
4
4
|
## copyright(c) 2005 kuwata-lab all rights reserverd
|
5
5
|
##
|
6
|
-
## $Id: defaults.yaml
|
7
|
-
## $Release: 0.0
|
6
|
+
## $Id: defaults.yaml 13 2005-09-15 00:21:25Z kwatch $
|
7
|
+
## $Release: 0.1.0 $
|
8
8
|
##
|
9
9
|
|
10
10
|
columns:
|
@@ -63,14 +63,14 @@ columns:
|
|
63
63
|
- name: gender
|
64
64
|
type: char
|
65
65
|
width: 1
|
66
|
-
|
66
|
+
enum:
|
67
67
|
- M
|
68
68
|
- F
|
69
69
|
|
70
70
|
- name: blood
|
71
71
|
type: char
|
72
72
|
width: 2
|
73
|
-
|
73
|
+
enum:
|
74
74
|
- A
|
75
75
|
- B
|
76
76
|
- O
|
@@ -4,12 +4,13 @@
|
|
4
4
|
## kwatable template file for Java DTO class
|
5
5
|
##
|
6
6
|
## copyright(c) 2005 kuwata-lab.com all rights reserved.
|
7
|
-
## $Release: 0.0
|
8
|
-
## $Rev:
|
7
|
+
## $Release: 0.1.0 $
|
8
|
+
## $Rev: 15 $
|
9
9
|
##
|
10
10
|
## template properties:
|
11
11
|
## package - package name
|
12
12
|
## parent - parent class
|
13
|
+
##
|
13
14
|
|
14
15
|
|
15
16
|
#
|
@@ -20,46 +21,43 @@
|
|
20
21
|
raise "option '-m' is required when using 'dto-java.eruby'." unless table
|
21
22
|
|
22
23
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
keywords.split(/\s+/).each { |word| KEYWORDS[word] = true }
|
37
|
-
|
38
|
-
|
39
|
-
#
|
40
|
-
# escape java keywords
|
41
|
-
#
|
42
|
-
def _(word)
|
43
|
-
return KEYWORDS[word] ? "_#{word}" : word
|
44
|
-
end
|
24
|
+
#
|
25
|
+
# java keywords
|
26
|
+
#
|
27
|
+
keywords = <<-END
|
28
|
+
abstract assert boolean break byte case catch char class const
|
29
|
+
continue default do double else enum extends final finally float
|
30
|
+
for goto if implements import instanceof int interface long
|
31
|
+
native new package private protected public return short
|
32
|
+
static strictfp super switch synchronized this throw throws
|
33
|
+
transient try void volatile while
|
34
|
+
END
|
35
|
+
@keywords = {}
|
36
|
+
keywords.split(/\s+/).each { |word| @keywords[word] = true }
|
45
37
|
|
46
38
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
end
|
55
|
-
return s
|
56
|
-
#s = name.split('_').collect { |w| w.capitalize }.join()
|
57
|
-
#s[0] = s[0].to_s.upcase.chr unless flag_all
|
58
|
-
end
|
39
|
+
#
|
40
|
+
# escape java keywords
|
41
|
+
#
|
42
|
+
def self._(word)
|
43
|
+
return @keywords[word] ? "_#{word}" : word
|
44
|
+
end
|
45
|
+
|
59
46
|
|
47
|
+
#
|
48
|
+
# convert 'aaa_bbb_ccc' into 'AaaBbbCcc'
|
49
|
+
#
|
50
|
+
def self.camel_case(name, flag_all=true)
|
51
|
+
s = ''
|
52
|
+
name.split('_').each_with_index do |word, i|
|
53
|
+
s << (!flag_all && i == 0 ? word.downcase : word.capitalize)
|
54
|
+
end
|
55
|
+
return s
|
56
|
+
#s = name.split('_').collect { |w| w.capitalize }.join()
|
57
|
+
#s[0] = s[0].to_s.upcase.chr unless flag_all
|
60
58
|
end
|
61
|
-
|
62
|
-
|
59
|
+
|
60
|
+
|
63
61
|
#
|
64
62
|
# class definition
|
65
63
|
#
|
@@ -69,7 +67,7 @@
|
|
69
67
|
:parent => table['parent'] || properties[:parent],
|
70
68
|
:desc => table['desc'],
|
71
69
|
}
|
72
|
-
|
70
|
+
|
73
71
|
|
74
72
|
#
|
75
73
|
# output file name
|
@@ -135,24 +133,20 @@ public class <%= klass[:name] %><%= extends %> implements java.io.Serializable {
|
|
135
133
|
#
|
136
134
|
# instance variables
|
137
135
|
#
|
138
|
-
for var in variables
|
139
|
-
vartype = '%-12s' % var[:type]
|
140
|
-
varname = '%-12s' % (var[:name]+';')
|
141
|
-
%>
|
142
|
-
private <%= vartype %> <%= _(varname) %> /* <%= var[:desc] %> */
|
143
|
-
<%
|
144
|
-
end
|
145
136
|
%>
|
137
|
+
<% for var in variables %>
|
138
|
+
<% varname = '%-12s' % ( _(var[:name]) + ';') %>
|
139
|
+
private <%= '%-12s' % var[:type] %> <%= varname %> /* <%= var[:desc] %> */
|
140
|
+
<% end %>
|
146
141
|
|
147
142
|
<%
|
148
143
|
#
|
149
|
-
#
|
144
|
+
# populator with java.sql.ResultSet
|
150
145
|
#
|
151
|
-
argstr = variables.collect { |var| "#{var[:type]} #{_(var[:name])}" }.join(', ')
|
152
146
|
%>
|
153
|
-
public
|
147
|
+
public void populate(java.sql.ResultSet resultset) {
|
154
148
|
<% for var in variables %>
|
155
|
-
|
149
|
+
set<%= camel_case(var[:name]) %>(resultset.get<%= var[:type].capitalize %>("<%= var[:name] %>"));
|
156
150
|
<% end %>
|
157
151
|
}
|
158
152
|
|
@@ -169,19 +163,15 @@ public class <%= klass[:name] %><%= extends %> implements java.io.Serializable {
|
|
169
163
|
public <%= vartype %> <%= getter %>() { return <%= _(varname) %> }
|
170
164
|
public void <%= setter %>(<%= vartype %> <%= _(varname) %>) { this.<%= _(varname) %> = <%= _(varname) %>; }
|
171
165
|
|
172
|
-
<%
|
173
|
-
end
|
174
|
-
%>
|
175
|
-
// -----------
|
176
|
-
|
166
|
+
<% end %>
|
177
167
|
<%
|
178
168
|
#
|
179
169
|
# foreign keys
|
180
170
|
#
|
181
171
|
for column in table['columns']
|
182
|
-
if column['ref
|
183
|
-
reftype = column['ref
|
184
|
-
|
172
|
+
if column['ref']
|
173
|
+
reftype = column['ref']['table']['class']
|
174
|
+
refcolname = column['ref']['name']
|
185
175
|
refname = column['ref-name']
|
186
176
|
varname = column['name']
|
187
177
|
if refname == varname
|
@@ -194,7 +184,7 @@ public class <%= klass[:name] %><%= extends %> implements java.io.Serializable {
|
|
194
184
|
public <%= reftype %> <%= getter %>() { return <%= _(refname) %>; }
|
195
185
|
public void <%= setter %>(<%= reftype %> <%= _(refname) %>) {
|
196
186
|
this.<%= _(refname) %> = <%= _(refname) %>;
|
197
|
-
this.<%= _(varname) %> = <%= _(refname) %>.get<%= camel_case(
|
187
|
+
this.<%= _(varname) %> = <%= _(refname) %>.get<%= camel_case(refcolname) %>();
|
198
188
|
}
|
199
189
|
|
200
190
|
<%
|