1
2
3
4
5
6
7 package test.org.asyrinx.joey.gen.command.rdb2java.standard;
8
9 import java.util.List;
10
11 import junit.framework.TestCase;
12
13 import org.asyrinx.joey.gen.command.rdb2java.standard.BasicBuilder;
14 import org.asyrinx.joey.gen.model.EnumerationEntry;
15 import org.asyrinx.joey.gen.model.java.AppDomain;
16 import org.asyrinx.joey.gen.model.java.Entity;
17 import org.asyrinx.joey.gen.model.java.EntityKey;
18 import org.asyrinx.joey.gen.model.java.JavaEnumeration;
19 import org.asyrinx.joey.gen.model.java.Property;
20 import org.asyrinx.joey.gen.model.java.Reference;
21 import org.asyrinx.joey.gen.model.java.classes.JavaLangClass;
22 import org.asyrinx.joey.gen.model.java.classes.PrimitiveType;
23 import org.asyrinx.joey.gen.model.java.classes.PrimitiveWrapper;
24 import org.asyrinx.joey.gen.model.rdb.Column;
25 import org.asyrinx.joey.gen.model.rdb.Database;
26 import org.asyrinx.joey.gen.model.rdb.Databases;
27 import org.asyrinx.joey.gen.model.rdb.RdbEnumeration;
28 import org.asyrinx.joey.gen.model.rdb.Table;
29
30 /***
31 * @author akima
32 */
33 public class BasicBuilderTest extends TestCase {
34
35 public static void main(String[] args) {
36 junit.swingui.TestRunner.run(BasicBuilderTest.class);
37 }
38
39 public void testExecute() {
40
41 final Databases databases = new Databases();
42 final Database db1 = new Database(databases, "db1");
43 db1.getOptions().put("javaPackage", "org.asyrinx.joey.sample");
44
45 final RdbEnumeration e_party_type = new RdbEnumeration(db1, "PartyType");
46 e_party_type.setValueType("Integer");
47 e_party_type.setLabel("パーティ型");
48 new EnumerationEntry(e_party_type, "1", "individual", "個人");
49 new EnumerationEntry(e_party_type, "2", "corporation", "法人");
50
51 final Table t_party = new Table(db1, "party", "パーティ");
52 new Column(t_party, "party_id", "BIGINT", "0", true, true, "0");
53 new Column(t_party, "name", "VARCHAR", "20", true, false, null);
54 final Column col_party_type = new Column(t_party, "party_type", "PartyType", "0", true, false, "corporation");
55 col_party_type.setEnum("PartyType");
56
57 final BasicBuilder builder = new BasicBuilder();
58 final AppDomain domain = builder.execute(databases);
59
60 assertEquals(1, domain.getClasses().size());
61 assertEquals(1, domain.getEnumerations().size());
62
63 final JavaEnumeration je_party_type = domain.getEnumerations().getEnumeration(0);
64 assertEquals("PartyType", je_party_type.getName());
65 assertEquals("パーティ型", je_party_type.getLabel());
66 assertEquals(PrimitiveWrapper.INTEGER, je_party_type.getValueTypeObj());
67 assertEquals(2, je_party_type.size());
68 assertEquals("1", je_party_type.getEntry(0).getValue());
69 assertEquals("individual", je_party_type.getEntry(0).getName());
70 assertEquals("個人", je_party_type.getEntry(0).getLabel());
71 assertEquals("2", je_party_type.getEntry(1).getValue());
72 assertEquals("corporation", je_party_type.getEntry(1).getName());
73 assertEquals("法人", je_party_type.getEntry(1).getLabel());
74
75 final Entity c_party = domain.getClasses().getJavaType(0);
76 assertEquals("Party", c_party.getName());
77 assertEquals("org.asyrinx.joey.sample", c_party.getPackage());
78 assertEquals("org.asyrinx.joey.sample.Party", c_party.getFqn());
79 assertEquals("パーティ", c_party.getLabel());
80 assertEquals(3, c_party.getProperties().size());
81 final Property p_party_id = c_party.getProperties().getProperty(0);
82 assertEquals("partyId", p_party_id.getName());
83 assertEquals("long", p_party_id.getTypeName());
84 assertEquals(PrimitiveType.LONG, p_party_id.getType());
85 assertEquals(0, p_party_id.getMaxLength());
86 assertEquals(true, p_party_id.isRequired());
87 assertEquals("0", p_party_id.getDefaultValue());
88 final Property p_name = c_party.getProperties().getProperty(1);
89 assertEquals("name", p_name.getName());
90 assertEquals("String", p_name.getTypeName());
91 assertEquals(JavaLangClass.STRING, p_name.getType());
92 assertEquals(20, p_name.getMaxLength());
93 assertEquals(true, p_name.isRequired());
94 assertEquals("null", p_name.getDefaultValue());
95 final Property p_party_type = c_party.getProperties().getProperty(2);
96 assertEquals("partyType", p_party_type.getName());
97 assertEquals("PartyType", p_party_type.getTypeName());
98 assertEquals(je_party_type, p_party_type.getType());
99 assertEquals(0, p_party_type.getMaxLength());
100 assertEquals(true, p_party_type.isRequired());
101 assertEquals("corporation", p_party_type.getDefaultValue());
102
103 assertEquals("partyTypeEnum", p_party_type.getEnumPropertyName());
104 assertEquals(je_party_type, p_party_type.getEnumType());
105 }
106
107 public void testKeys() {
108 final Databases databases = new Databases();
109 final Database db1 = new Database(databases, "db1");
110 db1.getOptions().put("javaPackage", "org.asyrinx.joey.sample");
111
112 final Table t_party = new Table(db1, "party", "パーティ");
113 new Column(t_party, "party_id", "BIGINT", "0", true, true, "0");
114 new Column(t_party, "name", "VARCHAR", "20", true, false, null);
115
116 final Table t_role = new Table(db1, "role", "ロール");
117 new Column(t_role, "role_id", "BIGINT", "0", true, true, "0");
118 final Column colPartyId = new Column(t_role, "party_id", "BIGINT", "0", true, false, "0");
119 colPartyId.setFk("party.party_id");
120
121 final Table t_user = new Table(db1, "system_user", "システムユーザ");
122 t_user.setExtends("role");
123 new Column(t_user, "system_user_id", "BIGINT", "0", true, true, "0");
124 new Column(t_user, "values", "VARCHAR", "20", true, false, null);
125
126 final BasicBuilder builder = new BasicBuilder();
127 final AppDomain domain = builder.execute(databases);
128
129 assertEquals(1, t_role.getForeignKeys().size());
130
131 assertEquals(3, domain.getClasses().size());
132 assertEquals(0, domain.getEnumerations().size());
133
134 final Entity c_party = domain.getClasses().getJavaType(0);
135 assertEquals("Party", c_party.getName());
136 assertEquals("org.asyrinx.joey.sample", c_party.getPackage());
137 assertEquals("org.asyrinx.joey.sample.Party", c_party.getFqn());
138 assertEquals("パーティ", c_party.getLabel());
139 assertEquals(2, c_party.getProperties().size());
140 final Property p_party_id = c_party.getProperties().getProperty(0);
141 assertEquals("partyId", p_party_id.getName());
142 assertEquals("long", p_party_id.getTypeName());
143 assertEquals(PrimitiveType.LONG, p_party_id.getType());
144 assertEquals(0, p_party_id.getMaxLength());
145 assertEquals(true, p_party_id.isRequired());
146 assertEquals("0", p_party_id.getDefaultValue());
147 final Property p_name = c_party.getProperties().getProperty(1);
148 assertEquals("name", p_name.getName());
149 assertEquals("String", p_name.getTypeName());
150 assertEquals(JavaLangClass.STRING, p_name.getType());
151 assertEquals(20, p_name.getMaxLength());
152 assertEquals(true, p_name.isRequired());
153 assertEquals("null", p_name.getDefaultValue());
154 final EntityKey pk_party = c_party.getPrimaryKey();
155 assertEquals(1, pk_party.size());
156 assertEquals(p_party_id, pk_party.getEntry(0).getProperty());
157
158
159 final Entity c_role = domain.getClasses().getJavaType(1);
160 assertEquals("Role", c_role.getName());
161 assertEquals("org.asyrinx.joey.sample", c_role.getPackage());
162 assertEquals("org.asyrinx.joey.sample.Role", c_role.getFqn());
163 assertEquals("ロール", c_role.getLabel());
164 assertEquals(2, c_role.getProperties().size());
165 final Property p_role_id = c_role.getProperties().getProperty(0);
166 assertEquals("roleId", p_role_id.getName());
167 assertEquals("long", p_role_id.getTypeName());
168 assertEquals(PrimitiveType.LONG, p_role_id.getType());
169 assertEquals(0, p_role_id.getMaxLength());
170 assertEquals(true, p_role_id.isRequired());
171 assertEquals("0", p_role_id.getDefaultValue());
172 final Property p_role_party_id = c_role.getProperties().getProperty(1);
173 assertEquals("partyId", p_role_party_id.getName());
174 assertEquals("long", p_role_party_id.getTypeName());
175 assertEquals(PrimitiveType.LONG, p_role_party_id.getType());
176 assertEquals(0, p_role_party_id.getMaxLength());
177 assertEquals(true, p_role_party_id.isRequired());
178 assertEquals("0", p_role_party_id.getDefaultValue());
179
180 final List role_allProperties = c_role.getPropertiesAll();
181 assertEquals(2, role_allProperties.size());
182 assertEquals(p_role_id, role_allProperties.get(0));
183 assertEquals(p_role_party_id, role_allProperties.get(1));
184
185 final Entity c_system_user = domain.getClasses().getJavaType(2);
186 assertEquals("SystemUser", c_system_user.getName());
187 assertEquals("org.asyrinx.joey.sample", c_system_user.getPackage());
188 assertEquals("org.asyrinx.joey.sample.SystemUser", c_system_user.getFqn());
189 assertEquals("システムユーザ", c_system_user.getLabel());
190 assertEquals(3, c_system_user.getProperties().size());
191 assertEquals(c_role, c_system_user.getSuperClass());
192 final Property p_system_user_id = c_system_user.getProperties().getProperty(0);
193 assertEquals("systemUserId", p_system_user_id.getName());
194 assertEquals("long", p_system_user_id.getTypeName());
195 assertEquals(PrimitiveType.LONG, p_system_user_id.getType());
196 assertEquals(0, p_system_user_id.getMaxLength());
197 assertEquals(true, p_system_user_id.isRequired());
198 assertEquals("0", p_system_user_id.getDefaultValue());
199 final Property p_values = c_system_user.getProperties().getProperty(1);
200 assertEquals("values", p_values.getName());
201 assertEquals("String", p_values.getTypeName());
202 assertEquals(JavaLangClass.STRING, p_values.getType());
203 assertEquals(20, p_values.getMaxLength());
204 assertEquals(true, p_values.isRequired());
205 assertEquals("null", p_values.getDefaultValue());
206
207
208
209
210
211
212
213
214
215
216 final List systemUser_allProperties = c_system_user.getPropertiesAll();
217 assertEquals(5, systemUser_allProperties.size());
218 assertEquals(p_role_id, systemUser_allProperties.get(0));
219 assertEquals(p_role_party_id, systemUser_allProperties.get(1));
220 assertEquals(p_system_user_id, systemUser_allProperties.get(2));
221 assertEquals(p_values, systemUser_allProperties.get(3));
222
223
224 assertEquals(1, c_role.getReferences().size());
225 final Reference ref_role_to_party = c_role.getReferences().getReference(0);
226 assertEquals("Party", ref_role_to_party.getReferenceClassName());
227 assertEquals(c_party, ref_role_to_party.getReferenceClass());
228 assertEquals(p_role_party_id, ref_role_to_party.getEntry(0).getLocal());
229 assertEquals(p_party_id, ref_role_to_party.getEntry(0).getForeign());
230 assertEquals(1, p_role_party_id.getReferencesContainedAsLocal().size());
231 assertEquals(0, p_role_party_id.getReferencesContainedAsForeign().size());
232 assertEquals(0, p_party_id.getReferencesContainedAsLocal().size());
233 assertEquals(1, p_party_id.getReferencesContainedAsForeign().size());
234
235 assertEquals("party", ref_role_to_party.getPropertyNameInLocal());
236 assertEquals("roles", ref_role_to_party.getPropertyNameInReferred());
237 assertEquals("role", ref_role_to_party.getPropertyNameInReferred(false));
238
239 assertEquals(1, c_party.getReferreds().size());
240 assertEquals(ref_role_to_party, c_party.getReferreds().get(0));
241 assertEquals(0, c_role.getReferreds().size());
242 }
243
244 public void testReference() {
245 final Databases databases = new Databases();
246 final Database db1 = new Database(databases, "db1");
247 db1.getOptions().put("javaPackage", "org.asyrinx.joey.sample");
248
249 final Table t_party = new Table(db1, "party", "パーティ");
250 new Column(t_party, "party_id", "BIGINT", "0", true, true, "0");
251 new Column(t_party, "name", "VARCHAR", "20", true, false, null);
252
253 final Table t_relation = new Table(db1, "relation", "関係");
254 new Column(t_relation, "relation_id", "BIGINT", "0", true, true, "0");
255 final Column colOriginPartyId = new Column(t_relation, "origin_party_id", "BIGINT", "0", true, false, "0");
256 final Column colDestPartyId = new Column(t_relation, "dest_party_id", "BIGINT", "0", true, false, "0");
257 colOriginPartyId.setFk("party.party_id");
258 colDestPartyId.setFk("party.party_id");
259
260 final BasicBuilder builder = new BasicBuilder();
261 final AppDomain domain = builder.execute(databases);
262
263 assertEquals(2, t_relation.getForeignKeys().size());
264
265 assertEquals(2, domain.getClasses().size());
266
267 final Entity c_party = domain.getClasses().getJavaType(0);
268 assertEquals("Party", c_party.getName());
269 assertEquals("org.asyrinx.joey.sample", c_party.getPackage());
270 assertEquals("org.asyrinx.joey.sample.Party", c_party.getFqn());
271 assertEquals("パーティ", c_party.getLabel());
272 assertEquals(2, c_party.getProperties().size());
273 final Property p_party_id = c_party.getProperties().getProperty(0);
274 assertEquals("partyId", p_party_id.getName());
275 assertEquals("long", p_party_id.getTypeName());
276 assertEquals(PrimitiveType.LONG, p_party_id.getType());
277 assertEquals(0, p_party_id.getMaxLength());
278 assertEquals(true, p_party_id.isRequired());
279 assertEquals("0", p_party_id.getDefaultValue());
280 final Property p_name = c_party.getProperties().getProperty(1);
281 assertEquals("name", p_name.getName());
282 assertEquals("String", p_name.getTypeName());
283 assertEquals(JavaLangClass.STRING, p_name.getType());
284 assertEquals(20, p_name.getMaxLength());
285 assertEquals(true, p_name.isRequired());
286 assertEquals("null", p_name.getDefaultValue());
287 final EntityKey pk_party = c_party.getPrimaryKey();
288 assertEquals(1, pk_party.size());
289 assertEquals(p_party_id, pk_party.getEntry(0).getProperty());
290
291 final Entity c_relation = domain.getClasses().getJavaType(1);
292 assertEquals("Relation", c_relation.getName());
293 assertEquals("org.asyrinx.joey.sample", c_relation.getPackage());
294 assertEquals("org.asyrinx.joey.sample.Relation", c_relation.getFqn());
295 assertEquals("関係", c_relation.getLabel());
296 assertEquals(3, c_relation.getProperties().size());
297 final Property p_role_id = c_relation.getProperties().getProperty(0);
298 assertEquals("relationId", p_role_id.getName());
299 assertEquals("long", p_role_id.getTypeName());
300 assertEquals(PrimitiveType.LONG, p_role_id.getType());
301 assertEquals(0, p_role_id.getMaxLength());
302 assertEquals(true, p_role_id.isRequired());
303 assertEquals("0", p_role_id.getDefaultValue());
304 final Property p_origin_party_id = c_relation.getProperties().getProperty(1);
305 assertEquals("originPartyId", p_origin_party_id.getName());
306 assertEquals("long", p_origin_party_id.getTypeName());
307 assertEquals(PrimitiveType.LONG, p_origin_party_id.getType());
308 assertEquals(0, p_origin_party_id.getMaxLength());
309 assertEquals(true, p_origin_party_id.isRequired());
310 assertEquals("0", p_origin_party_id.getDefaultValue());
311 final Property p_dest_party_id = c_relation.getProperties().getProperty(2);
312 assertEquals("destPartyId", p_dest_party_id.getName());
313 assertEquals("long", p_dest_party_id.getTypeName());
314 assertEquals(PrimitiveType.LONG, p_dest_party_id.getType());
315 assertEquals(0, p_dest_party_id.getMaxLength());
316 assertEquals(true, p_dest_party_id.isRequired());
317 assertEquals("0", p_dest_party_id.getDefaultValue());
318
319 assertEquals(2, c_relation.getReferences().size());
320 assertEquals(1, p_origin_party_id.getReferencesContainedAsLocal().size());
321 assertEquals(0, p_origin_party_id.getReferencesContainedAsForeign().size());
322 assertEquals(0, p_party_id.getReferencesContainedAsLocal().size());
323 assertEquals(2, p_party_id.getReferencesContainedAsForeign().size());
324 final Reference ref_origin_to_party = c_relation.getReferences().getReference(0);
325 assertEquals("Party", ref_origin_to_party.getReferenceClassName());
326 assertEquals(c_party, ref_origin_to_party.getReferenceClass());
327 assertEquals(p_origin_party_id, ref_origin_to_party.getEntry(0).getLocal());
328 assertEquals(p_party_id, ref_origin_to_party.getEntry(0).getForeign());
329 assertEquals("partyRelatedByOriginPartyId", ref_origin_to_party.getPropertyNameInLocal());
330 assertEquals("relationsRelatedByOriginPartyId", ref_origin_to_party.getPropertyNameInReferred());
331 assertEquals("relationRelatedByOriginPartyId", ref_origin_to_party.getPropertyNameInReferred(false));
332
333 final Reference ref_dest_to_party = c_relation.getReferences().getReference(1);
334 assertEquals("Party", ref_dest_to_party.getReferenceClassName());
335 assertEquals(c_party, ref_dest_to_party.getReferenceClass());
336 assertEquals(p_dest_party_id, ref_dest_to_party.getEntry(0).getLocal());
337 assertEquals(p_party_id, ref_dest_to_party.getEntry(0).getForeign());
338 assertEquals("partyRelatedByDestPartyId", ref_dest_to_party.getPropertyNameInLocal());
339 assertEquals("relationsRelatedByDestPartyId", ref_dest_to_party.getPropertyNameInReferred());
340 assertEquals("relationRelatedByDestPartyId", ref_dest_to_party.getPropertyNameInReferred(false));
341
342 assertEquals(2, c_party.getReferreds().size());
343 assertEquals(ref_origin_to_party, c_party.getReferreds().get(0));
344 assertEquals(ref_dest_to_party, c_party.getReferreds().get(1));
345 assertEquals(0, c_relation.getReferreds().size());
346 }
347
348 public void testPackaging() {
349
350 final Databases databases = new Databases();
351 final Database db1 = new Database(databases, "db1");
352 db1.getOptions().put("javaPackage", "org.asyrinx.joey.${packageType}.party");
353 final Table t_party = new Table(db1, "party", "パーティ");
354 new Column(t_party, "party_id", "BIGINT", "0", true, true, "0");
355
356 final Database db1_ = new Database(databases, "db1");
357 db1_.getOptions().put("javaPackage", "org.asyrinx.joey.${packageType}.report");
358 final Table t_report = new Table(db1_, "report", "報告");
359 final Column col_reporter_id = new Column(t_report, "reporter_id", "BIGINT", "0", true, true, "0");
360 col_reporter_id.setFk("party.party_id");
361 final Table t_notify = new Table(db1_, "notify", "通知");
362
363 final BasicBuilder builder = new BasicBuilder();
364 final AppDomain domain = builder.execute(databases);
365
366 assertEquals(1, databases.getDatabases().size());
367 assertEquals(db1, databases.getDatabases().getDatabase(0));
368
369 assertEquals(3, domain.getClasses().size());
370 final Entity ety_party = domain.getClasses().getJavaType(0);
371 final Entity ety_report = domain.getClasses().getJavaType(1);
372 final Entity ety_notify = domain.getClasses().getJavaType(2);
373 assertEquals("Party", ety_party.getName());
374 assertEquals("Report", ety_report.getName());
375 assertEquals("Notify", ety_notify.getName());
376
377 assertEquals("org.asyrinx.joey.entity.party", ety_party.getPackageName());
378 assertEquals("org.asyrinx.joey.entity.report", ety_report.getPackageName());
379 assertEquals("org.asyrinx.joey.entity.report", ety_notify.getPackageName());
380
381 assertEquals("org.asyrinx.joey.dao.party", ety_party.getPackage("dao"));
382 assertEquals("org.asyrinx.joey.dao.report", ety_report.getPackage("dao"));
383 assertEquals("org.asyrinx.joey.dao.report", ety_notify.getPackage("dao"));
384
385 assertEquals(1, ety_party.getImports().size());
386 assertEquals("org.asyrinx.joey.entity.report.Report", ety_party.getImports().iterator().next());
387 assertEquals(1, ety_report.getImports().size());
388 assertEquals("org.asyrinx.joey.entity.party.Party", ety_report.getImports().iterator().next());
389 }
390 }