1
2
3
4
5
6
7 package test.org.asyrinx.joey.gen.command.rdb2java.standard;
8
9 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12
13 import junit.framework.TestCase;
14
15 import org.asyrinx.joey.gen.command.rdb2java.standard.BasicBuilder;
16 import org.asyrinx.joey.gen.command.rdb2java.standard.JavaOptions;
17 import org.asyrinx.joey.gen.model.EnumerationEntry;
18 import org.asyrinx.joey.gen.model.java.AppDomain;
19 import org.asyrinx.joey.gen.model.java.Entity;
20 import org.asyrinx.joey.gen.model.java.EntityKey;
21 import org.asyrinx.joey.gen.model.java.JavaEnumeration;
22 import org.asyrinx.joey.gen.model.java.Parameter;
23 import org.asyrinx.joey.gen.model.java.Property;
24 import org.asyrinx.joey.gen.model.java.Reference;
25 import org.asyrinx.joey.gen.model.java.classes.JavaLangClass;
26 import org.asyrinx.joey.gen.model.java.classes.PrimitiveType;
27 import org.asyrinx.joey.gen.model.java.classes.PrimitiveWrapper;
28 import org.asyrinx.joey.gen.model.rdb.Column;
29 import org.asyrinx.joey.gen.model.rdb.Database;
30 import org.asyrinx.joey.gen.model.rdb.Databases;
31 import org.asyrinx.joey.gen.model.rdb.RdbEnumeration;
32 import org.asyrinx.joey.gen.model.rdb.Table;
33
34 /***
35 * @author akima
36 */
37 public class BasicBuilderTest extends TestCase {
38
39 public static void main(String[] args) {
40 junit.swingui.TestRunner.run(BasicBuilderTest.class);
41 }
42
43 public void testExecute() {
44
45 final Databases databases = new Databases();
46 final Database db1 = new Database(databases, "db1");
47
48 db1.getOptions().put("category", "package1");
49
50 final RdbEnumeration e_party_type = new RdbEnumeration(db1, "PartyType");
51 e_party_type.setValueType("Integer");
52 e_party_type.setLabel("パーティ型");
53 new EnumerationEntry(e_party_type, "1", "individual", "個人");
54 new EnumerationEntry(e_party_type, "2", "corporation", "法人");
55
56 final Table t_party = new Table(db1, "party", "パーティ");
57 new Column(t_party, "party_id", "BIGINT", "0", true, true, "0");
58 new Column(t_party, "name", "VARCHAR", "20", true, false, null);
59 final Column col_party_type = new Column(t_party, "party_type", "PartyType", "0", true, false, "corporation");
60 col_party_type.setEnum("PartyType");
61
62 final BasicBuilder builder = new BasicBuilder();
63 final Map props = new HashMap();
64 props.put("joey-gen.proj.base.package", "org.asyrinx.joey.sample");
65 builder.setProperties(props);
66 final AppDomain domain = builder.execute(databases);
67
68 assertEquals(1, domain.getClasses().size());
69 assertEquals(1, domain.getEnumerations().size());
70
71 final JavaEnumeration je_party_type = domain.getEnumerations().getEnumeration(0);
72 assertEquals("PartyType", je_party_type.getName());
73 assertEquals("パーティ型", je_party_type.getLabel());
74 assertEquals(PrimitiveWrapper.INTEGER, je_party_type.getValueTypeObj());
75 assertEquals(2, je_party_type.size());
76 assertEquals("1", je_party_type.getEntry(0).getValue());
77 assertEquals("individual", je_party_type.getEntry(0).getName());
78 assertEquals("個人", je_party_type.getEntry(0).getLabel());
79 assertEquals("2", je_party_type.getEntry(1).getValue());
80 assertEquals("corporation", je_party_type.getEntry(1).getName());
81 assertEquals("法人", je_party_type.getEntry(1).getLabel());
82
83 final Entity c_party = domain.getClasses().getJavaType(0);
84 assertEquals("Party", c_party.getName());
85 assertEquals("org.asyrinx.joey.sample.om.package1.entity", c_party.getPackage());
86 assertEquals("org.asyrinx.joey.sample.om.package1.entity.Party", c_party.getFqn());
87 assertEquals("パーティ", c_party.getLabel());
88 assertEquals(3, c_party.getProperties().size());
89 final Property p_party_id = c_party.getProperties().getProperty(0);
90 assertEquals("partyId", p_party_id.getName());
91 assertEquals("long", p_party_id.getTypeName());
92 assertEquals(PrimitiveType.LONG, p_party_id.getType());
93 assertEquals(0, p_party_id.getMaxLength());
94 assertEquals(true, p_party_id.isRequired());
95 assertEquals("0", p_party_id.getDefaultValue());
96 final Property p_name = c_party.getProperties().getProperty(1);
97 assertEquals("name", p_name.getName());
98 assertEquals("String", p_name.getTypeName());
99 assertEquals(JavaLangClass.STRING, p_name.getType());
100 assertEquals(20, p_name.getMaxLength());
101 assertEquals(true, p_name.isRequired());
102 assertEquals("null", p_name.getDefaultValue());
103 final Property p_party_type = c_party.getProperties().getProperty(2);
104 assertEquals("partyType", p_party_type.getName());
105 assertEquals("PartyType", p_party_type.getTypeName());
106 assertEquals(je_party_type, p_party_type.getType());
107 assertEquals(0, p_party_type.getMaxLength());
108 assertEquals(true, p_party_type.isRequired());
109 assertEquals("corporation", p_party_type.getDefaultValue());
110
111 assertEquals("partyTypeEnum", p_party_type.getEnumPropertyName());
112 assertEquals(je_party_type, p_party_type.getEnumType());
113 }
114
115 public void testKeys() {
116 final Databases databases = new Databases();
117 final Database db1 = new Database(databases, "db1");
118 db1.getOptions().put("javaPackage", "org.asyrinx.joey.sample");
119
120 final Table t_party = new Table(db1, "party", "パーティ");
121 new Column(t_party, "party_id", "BIGINT", "0", true, true, "0");
122 new Column(t_party, "name", "VARCHAR", "20", true, false, null);
123
124 final Table t_role = new Table(db1, "role", "ロール");
125 new Column(t_role, "role_id", "BIGINT", "0", true, true, "0");
126 final Column colPartyId = new Column(t_role, "party_id", "BIGINT", "0", true, false, "0");
127 colPartyId.setFk("party.party_id");
128
129 final Table t_user = new Table(db1, "system_user", "システムユーザ");
130 t_user.setExtends("role");
131 new Column(t_user, "system_user_id", "BIGINT", "0", true, true, "0");
132 new Column(t_user, "values", "VARCHAR", "20", true, false, null);
133
134 final BasicBuilder builder = new BasicBuilder();
135 final Map props = new HashMap();
136 props.put("joey-gen.proj.base.package", "org.asyrinx.joey.sample");
137 builder.setProperties(props);
138 final AppDomain domain = builder.execute(databases);
139
140 assertEquals(1, t_role.getForeignKeys().size());
141
142 assertEquals(3, domain.getClasses().size());
143 assertEquals(0, domain.getEnumerations().size());
144
145 final Entity c_party = domain.getClasses().getJavaType(0);
146 assertEquals("Party", c_party.getName());
147 assertEquals("org.asyrinx.joey.sample.om.db1.entity", c_party.getPackage());
148 assertEquals("org.asyrinx.joey.sample.om.db1.entity.Party", c_party.getFqn());
149 assertEquals("パーティ", c_party.getLabel());
150 assertEquals(2, c_party.getProperties().size());
151 final Property p_party_id = c_party.getProperties().getProperty(0);
152 assertEquals("partyId", p_party_id.getName());
153 assertEquals("long", p_party_id.getTypeName());
154 assertEquals(PrimitiveType.LONG, p_party_id.getType());
155 assertEquals(0, p_party_id.getMaxLength());
156 assertEquals(true, p_party_id.isRequired());
157 assertEquals("0", p_party_id.getDefaultValue());
158 final Property p_name = c_party.getProperties().getProperty(1);
159 assertEquals("name", p_name.getName());
160 assertEquals("String", p_name.getTypeName());
161 assertEquals(JavaLangClass.STRING, p_name.getType());
162 assertEquals(20, p_name.getMaxLength());
163 assertEquals(true, p_name.isRequired());
164 assertEquals("null", p_name.getDefaultValue());
165 final EntityKey pk_party = c_party.getPrimaryKey();
166 assertEquals(1, pk_party.size());
167 assertEquals(p_party_id, pk_party.getEntry(0).getProperty());
168
169
170 final Entity c_role = domain.getClasses().getJavaType(1);
171 assertEquals("Role", c_role.getName());
172 assertEquals("org.asyrinx.joey.sample.om.db1.entity", c_role.getPackage());
173 assertEquals("org.asyrinx.joey.sample.om.db1.entity.Role", c_role.getFqn());
174 assertEquals("ロール", c_role.getLabel());
175 assertEquals(2, c_role.getProperties().size());
176 final Property p_role_id = c_role.getProperties().getProperty(0);
177 assertEquals("roleId", p_role_id.getName());
178 assertEquals("long", p_role_id.getTypeName());
179 assertEquals(PrimitiveType.LONG, p_role_id.getType());
180 assertEquals(0, p_role_id.getMaxLength());
181 assertEquals(true, p_role_id.isRequired());
182 assertEquals("0", p_role_id.getDefaultValue());
183 final Property p_role_party_id = c_role.getProperties().getProperty(1);
184 assertEquals("partyId", p_role_party_id.getName());
185 assertEquals("long", p_role_party_id.getTypeName());
186 assertEquals(PrimitiveType.LONG, p_role_party_id.getType());
187 assertEquals(0, p_role_party_id.getMaxLength());
188 assertEquals(true, p_role_party_id.isRequired());
189 assertEquals("0", p_role_party_id.getDefaultValue());
190
191 final List role_allProperties = c_role.getPropertiesAll();
192 assertEquals(2, role_allProperties.size());
193 assertEquals(p_role_id, role_allProperties.get(0));
194 assertEquals(p_role_party_id, role_allProperties.get(1));
195
196 final Entity c_system_user = domain.getClasses().getJavaType(2);
197 assertEquals("SystemUser", c_system_user.getName());
198 assertEquals("org.asyrinx.joey.sample.om.db1.entity", c_system_user.getPackage());
199 assertEquals("org.asyrinx.joey.sample.om.db1.entity.SystemUser", c_system_user.getFqn());
200 assertEquals("システムユーザ", c_system_user.getLabel());
201 assertEquals(3, c_system_user.getProperties().size());
202 assertEquals(c_role, c_system_user.getSuperClass());
203 final Property p_system_user_id = c_system_user.getProperties().getProperty(0);
204 assertEquals("systemUserId", p_system_user_id.getName());
205 assertEquals("long", p_system_user_id.getTypeName());
206 assertEquals(PrimitiveType.LONG, p_system_user_id.getType());
207 assertEquals(0, p_system_user_id.getMaxLength());
208 assertEquals(true, p_system_user_id.isRequired());
209 assertEquals("0", p_system_user_id.getDefaultValue());
210 final Property p_values = c_system_user.getProperties().getProperty(1);
211 assertEquals("values", p_values.getName());
212 assertEquals("String", p_values.getTypeName());
213 assertEquals(JavaLangClass.STRING, p_values.getType());
214 assertEquals(20, p_values.getMaxLength());
215 assertEquals(true, p_values.isRequired());
216 assertEquals("null", p_values.getDefaultValue());
217
218
219
220
221
222
223
224
225
226
227 final List systemUser_allProperties = c_system_user.getPropertiesAll();
228 assertEquals(5, systemUser_allProperties.size());
229 assertEquals(p_role_id, systemUser_allProperties.get(0));
230 assertEquals(p_role_party_id, systemUser_allProperties.get(1));
231 assertEquals(p_system_user_id, systemUser_allProperties.get(2));
232 assertEquals(p_values, systemUser_allProperties.get(3));
233
234 assertEquals(1, c_role.getReferences().size());
235 final Reference ref_role_to_party = c_role.getReferences().getReference(0);
236 assertEquals("Party", ref_role_to_party.getReferenceClassName());
237 assertEquals(c_party, ref_role_to_party.getReferenceClass());
238 assertEquals(p_role_party_id, ref_role_to_party.getEntry(0).getLocal());
239 assertEquals(p_party_id, ref_role_to_party.getEntry(0).getForeign());
240 assertEquals(1, p_role_party_id.getReferencesContainedAsLocal().size());
241 assertEquals(0, p_role_party_id.getReferencesContainedAsForeign().size());
242 assertEquals(0, p_party_id.getReferencesContainedAsLocal().size());
243 assertEquals(1, p_party_id.getReferencesContainedAsForeign().size());
244
245 assertEquals("party", ref_role_to_party.getPropertyNameInLocal());
246 assertEquals("roles", ref_role_to_party.getPropertyNameInReferred());
247 assertEquals("role", ref_role_to_party.getPropertyNameInReferred(false));
248
249 assertEquals(1, c_party.getReferreds().size());
250 assertEquals(ref_role_to_party, c_party.getReferreds().get(0));
251 assertEquals(0, c_role.getReferreds().size());
252 }
253
254 public void testReference() {
255 final Databases databases = new Databases();
256 final Database db1 = new Database(databases, "db1");
257 db1.getOptions().put("javaPackage", "org.asyrinx.joey.sample");
258
259 final Table t_party = new Table(db1, "party", "パーティ");
260 new Column(t_party, "party_id", "BIGINT", "0", true, true, "0");
261 new Column(t_party, "name", "VARCHAR", "20", true, false, null);
262
263 final Table t_relation = new Table(db1, "relation", "関係");
264 new Column(t_relation, "relation_id", "BIGINT", "0", true, true, "0");
265 final Column colOriginPartyId = new Column(t_relation, "origin_party_id", "BIGINT", "0", true, false, "0");
266 final Column colDestPartyId = new Column(t_relation, "dest_party_id", "BIGINT", "0", true, false, "0");
267 colOriginPartyId.setFk("party.party_id");
268 colDestPartyId.setFk("party.party_id");
269
270 final BasicBuilder builder = new BasicBuilder();
271 final Map props = new HashMap();
272 props.put("joey-gen.proj.base.package", "org.asyrinx.joey.sample");
273 builder.setProperties(props);
274 final AppDomain domain = builder.execute(databases);
275
276 assertEquals(2, t_relation.getForeignKeys().size());
277
278 assertEquals(2, domain.getClasses().size());
279
280 final Entity c_party = domain.getClasses().getJavaType(0);
281 assertEquals("Party", c_party.getName());
282 assertEquals("org.asyrinx.joey.sample.om.db1.entity", c_party.getPackage());
283 assertEquals("org.asyrinx.joey.sample.om.db1.entity.Party", c_party.getFqn());
284 assertEquals("パーティ", c_party.getLabel());
285 assertEquals(2, c_party.getProperties().size());
286 final Property p_party_id = c_party.getProperties().getProperty(0);
287 assertEquals("partyId", p_party_id.getName());
288 assertEquals("long", p_party_id.getTypeName());
289 assertEquals(PrimitiveType.LONG, p_party_id.getType());
290 assertEquals(0, p_party_id.getMaxLength());
291 assertEquals(true, p_party_id.isRequired());
292 assertEquals("0", p_party_id.getDefaultValue());
293 final Property p_name = c_party.getProperties().getProperty(1);
294 assertEquals("name", p_name.getName());
295 assertEquals("String", p_name.getTypeName());
296 assertEquals(JavaLangClass.STRING, p_name.getType());
297 assertEquals(20, p_name.getMaxLength());
298 assertEquals(true, p_name.isRequired());
299 assertEquals("null", p_name.getDefaultValue());
300 final EntityKey pk_party = c_party.getPrimaryKey();
301 assertEquals(1, pk_party.size());
302 assertEquals(p_party_id, pk_party.getEntry(0).getProperty());
303
304 final Entity c_relation = domain.getClasses().getJavaType(1);
305 assertEquals("Relation", c_relation.getName());
306 assertEquals("org.asyrinx.joey.sample.om.db1.entity", c_relation.getPackage());
307 assertEquals("org.asyrinx.joey.sample.om.db1.entity.Relation", c_relation.getFqn());
308 assertEquals("関係", c_relation.getLabel());
309 assertEquals(3, c_relation.getProperties().size());
310 final Property p_role_id = c_relation.getProperties().getProperty(0);
311 assertEquals("relationId", p_role_id.getName());
312 assertEquals("long", p_role_id.getTypeName());
313 assertEquals(PrimitiveType.LONG, p_role_id.getType());
314 assertEquals(0, p_role_id.getMaxLength());
315 assertEquals(true, p_role_id.isRequired());
316 assertEquals("0", p_role_id.getDefaultValue());
317 final Property p_origin_party_id = c_relation.getProperties().getProperty(1);
318 assertEquals("originPartyId", p_origin_party_id.getName());
319 assertEquals("long", p_origin_party_id.getTypeName());
320 assertEquals(PrimitiveType.LONG, p_origin_party_id.getType());
321 assertEquals(0, p_origin_party_id.getMaxLength());
322 assertEquals(true, p_origin_party_id.isRequired());
323 assertEquals("0", p_origin_party_id.getDefaultValue());
324 final Property p_dest_party_id = c_relation.getProperties().getProperty(2);
325 assertEquals("destPartyId", p_dest_party_id.getName());
326 assertEquals("long", p_dest_party_id.getTypeName());
327 assertEquals(PrimitiveType.LONG, p_dest_party_id.getType());
328 assertEquals(0, p_dest_party_id.getMaxLength());
329 assertEquals(true, p_dest_party_id.isRequired());
330 assertEquals("0", p_dest_party_id.getDefaultValue());
331
332 assertEquals(2, c_relation.getReferences().size());
333 assertEquals(1, p_origin_party_id.getReferencesContainedAsLocal().size());
334 assertEquals(0, p_origin_party_id.getReferencesContainedAsForeign().size());
335 assertEquals(0, p_party_id.getReferencesContainedAsLocal().size());
336 assertEquals(2, p_party_id.getReferencesContainedAsForeign().size());
337 final Reference ref_origin_to_party = c_relation.getReferences().getReference(0);
338 assertEquals("Party", ref_origin_to_party.getReferenceClassName());
339 assertEquals(c_party, ref_origin_to_party.getReferenceClass());
340 assertEquals(p_origin_party_id, ref_origin_to_party.getEntry(0).getLocal());
341 assertEquals(p_party_id, ref_origin_to_party.getEntry(0).getForeign());
342 assertEquals("partyRelatedByOriginPartyId", ref_origin_to_party.getPropertyNameInLocal());
343 assertEquals("relationsRelatedByOriginPartyId", ref_origin_to_party.getPropertyNameInReferred());
344 assertEquals("relationRelatedByOriginPartyId", ref_origin_to_party.getPropertyNameInReferred(false));
345
346 final Reference ref_dest_to_party = c_relation.getReferences().getReference(1);
347 assertEquals("Party", ref_dest_to_party.getReferenceClassName());
348 assertEquals(c_party, ref_dest_to_party.getReferenceClass());
349 assertEquals(p_dest_party_id, ref_dest_to_party.getEntry(0).getLocal());
350 assertEquals(p_party_id, ref_dest_to_party.getEntry(0).getForeign());
351 assertEquals("partyRelatedByDestPartyId", ref_dest_to_party.getPropertyNameInLocal());
352 assertEquals("relationsRelatedByDestPartyId", ref_dest_to_party.getPropertyNameInReferred());
353 assertEquals("relationRelatedByDestPartyId", ref_dest_to_party.getPropertyNameInReferred(false));
354
355 assertEquals(1, c_relation.getReferenceEntities().size());
356 assertEquals(c_party, c_relation.getReferenceEntities().iterator().next());
357
358 assertEquals(2, c_party.getReferreds().size());
359 assertEquals(ref_origin_to_party, c_party.getReferreds().get(0));
360 assertEquals(ref_dest_to_party, c_party.getReferreds().get(1));
361 assertEquals(0, c_relation.getReferreds().size());
362 }
363
364 public void testPackaging() {
365
366 final Databases databases = new Databases();
367 final Database db1 = new Database(databases, "db1");
368
369 db1.getOptions().put(JavaOptions.CATEGORY, "party");
370 final Table t_party = new Table(db1, "party", "パーティ");
371 new Column(t_party, "party_id", "BIGINT", "0", true, true, "0");
372
373 final Database db1_ = new Database(databases, "db1");
374
375 db1_.getOptions().put(JavaOptions.CATEGORY, "report");
376 final Table t_report = new Table(db1_, "report", "報告");
377 final Column col_reporter_id = new Column(t_report, "reporter_id", "BIGINT", "0", true, true, "0");
378 col_reporter_id.setFk("party.party_id");
379 final Table t_notify = new Table(db1_, "notify", "通知");
380
381 final BasicBuilder builder = new BasicBuilder();
382 final Map props = new HashMap();
383 props.put("joey-gen.proj.base.package", "org.asyrinx.joey.sample");
384 builder.setProperties(props);
385 final AppDomain domain = builder.execute(databases);
386
387 assertEquals(1, databases.getDatabases().size());
388 assertEquals(db1, databases.getDatabases().getDatabase(0));
389
390 assertEquals(3, domain.getClasses().size());
391 final Entity ety_party = domain.getClasses().getJavaType(0);
392 final Entity ety_report = domain.getClasses().getJavaType(1);
393 final Entity ety_notify = domain.getClasses().getJavaType(2);
394 assertEquals("Party", ety_party.getName());
395 assertEquals("Report", ety_report.getName());
396 assertEquals("Notify", ety_notify.getName());
397
398 assertEquals("org.asyrinx.joey.sample.om.party.entity", ety_party.getPackageName());
399 assertEquals("org.asyrinx.joey.sample.om.report.entity", ety_report.getPackageName());
400 assertEquals("org.asyrinx.joey.sample.om.report.entity", ety_notify.getPackageName());
401
402 assertEquals("org.asyrinx.joey.sample.om.party.dao", ety_party.getPackage("dao"));
403 assertEquals("org.asyrinx.joey.sample.om.report.dao", ety_report.getPackage("dao"));
404 assertEquals("org.asyrinx.joey.sample.om.report.dao", ety_notify.getPackage("dao"));
405
406 assertEquals(1, ety_party.getImports().size());
407 assertEquals("org.asyrinx.joey.sample.om.report.entity.Report", ety_party.getImports().iterator().next());
408 assertEquals(1, ety_report.getImports().size());
409 assertEquals("org.asyrinx.joey.sample.om.party.entity.Party", ety_report.getImports().iterator().next());
410 }
411
412 public void testConstructorParams() {
413 final Databases databases = new Databases();
414 final Database db1 = new Database(databases, "db1");
415
416 final Table t_party = new Table(db1, "party", "パーティ");
417 new Column(t_party, "party_id", "BIGINT", "0", true, true, "0");
418 new Column(t_party, "name", "VARCHAR", "20", true, false, null);
419
420 final Table t_role = new Table(db1, "role", "ロール");
421 new Column(t_role, "role_id", "BIGINT", "0", true, true, "0");
422 final Column colPartyId = new Column(t_role, "party_id", "BIGINT", "0", true, false, "0");
423 colPartyId.setFk("party.party_id");
424
425 final Table t_user = new Table(db1, "system_user", "システムユーザ");
426 t_user.setExtends("role");
427 new Column(t_user, "values", "VARCHAR", "20", true, false, null);
428
429 final BasicBuilder builder = new BasicBuilder();
430 final AppDomain domain = builder.execute(databases);
431
432 assertEquals(3, domain.getClasses().size());
433 final Entity e_party = domain.getClasses().getJavaType("Party");
434 final Entity e_role = domain.getClasses().getJavaType("Role");
435 final Entity e_user = domain.getClasses().getJavaType("SystemUser");
436 assertNotNull(e_party);
437 assertNotNull(e_role);
438 assertNotNull(e_user);
439 {
440 final List e_party_params = e_party.getConstructorParams();
441 assertEquals(2, e_party_params.size());
442 assertEquals(Property.class, e_party_params.get(0).getClass());
443 assertEquals(Property.class, e_party_params.get(1).getClass());
444 final Parameter e_party_params_id = (Parameter) e_party_params.get(0);
445 assertEquals("partyId", e_party_params_id.getParamName());
446 assertEquals("long", e_party_params_id.getParamType().getName());
447 final Parameter e_party_params_name = (Parameter) e_party_params.get(1);
448 assertEquals("name", e_party_params_name.getParamName());
449 assertEquals("String", e_party_params_name.getParamType().getName());
450 }
451 {
452 final List e_role_params = e_role.getConstructorParams();
453 assertEquals(2, e_role_params.size());
454 assertEquals(Property.class, e_role_params.get(0).getClass());
455 assertEquals(Reference.class, e_role_params.get(1).getClass());
456 final Parameter e_party_params_id = (Parameter) e_role_params.get(0);
457 assertEquals("roleId", e_party_params_id.getParamName());
458 assertEquals("long", e_party_params_id.getParamType().getName());
459 final Parameter e_party_params_party = (Parameter) e_role_params.get(1);
460 assertEquals("party", e_party_params_party.getParamName());
461 assertEquals("Party", e_party_params_party.getParamType().getName());
462 }
463 {
464 final List e_user_params = e_user.getConstructorParams();
465 assertEquals(3, e_user_params.size());
466 assertEquals(Property.class, e_user_params.get(0).getClass());
467 assertEquals(Reference.class, e_user_params.get(1).getClass());
468 assertEquals(Property.class, e_user_params.get(2).getClass());
469 final Parameter e_party_params_id = (Parameter) e_user_params.get(0);
470 assertEquals("roleId", e_party_params_id.getParamName());
471 assertEquals("long", e_party_params_id.getParamType().getName());
472 final Parameter e_party_params_party = (Parameter) e_user_params.get(1);
473 assertEquals("party", e_party_params_party.getParamName());
474 assertEquals("Party", e_party_params_party.getParamType().getName());
475 final Parameter e_party_params_name = (Parameter) e_user_params.get(2);
476 assertEquals("values", e_party_params_name.getParamName());
477 assertEquals("String", e_party_params_name.getParamType().getName());
478 }
479 }
480
481 public void testReferencePropertyName() {
482 final Databases databases = new Databases();
483 final Database db1 = new Database(databases, "db1");
484 db1.getOptions().put("javaPackage", "org.asyrinx.joey.sample");
485
486 final Table t_party = new Table(db1, "party", "パーティ");
487 new Column(t_party, "party_id", "BIGINT", "0", true, true, "0");
488 new Column(t_party, "name", "VARCHAR", "20", true, false, null);
489
490 final Table t_relation_type = new Table(db1, "relation_type", "関係型");
491 new Column(t_relation_type, "relation_type_id", "BIGINT", "0", true, true, "0");
492 new Column(t_relation_type, "name", "VARCHAR", "20", true, false, null);
493
494 final Table t_relation_type_structure = new Table(db1, "relation_type_structure", "関係型構造");
495 new Column(t_relation_type_structure, "relation_type_structure_id", "BIGINT", "0", true, true, "0");
496 final Column colOriginRtId = new Column(t_relation_type_structure, "origin_relation_type_id", "BIGINT", "0",
497 true, false, "0");
498 final Column colDestRtId = new Column(t_relation_type_structure, "dest_relation_type_id", "BIGINT", "0", true,
499 false, "0");
500 colOriginRtId.setFk("relation_type.relation_type_id");
501 colDestRtId.setFk("relation_type.relation_type_id");
502
503 final Table t_relation = new Table(db1, "relation", "関係");
504 new Column(t_relation, "relation_id", "BIGINT", "0", true, true, "0");
505 final Column colOriginPartyId = new Column(t_relation, "origin_party_id", "BIGINT", "0", true, false, "0");
506 final Column colDestPartyId = new Column(t_relation, "dest_party_id", "BIGINT", "0", true, false, "0");
507 final Column colRelationType = new Column(t_relation, "relation_type_id", "BIGINT", "0", true, false, "0");
508 colOriginPartyId.setFk("party.party_id");
509 colDestPartyId.setFk("party.party_id");
510 colRelationType.setFk("relation_type.relation_type_id");
511
512 final BasicBuilder builder = new BasicBuilder();
513 final AppDomain domain = builder.execute(databases);
514
515 assertEquals(4, domain.getClasses().size());
516
517 final Entity c_party = domain.getClasses().getJavaType("Party");
518 final Entity c_relation_type = domain.getClasses().getJavaType("RelationType");
519 final Entity c_relation_type_struc = domain.getClasses().getJavaType("RelationTypeStructure");
520 final Entity c_relation = domain.getClasses().getJavaType("Relation");
521
522 final Property p_party_id = c_party.getProperties().getProperty("partyId");
523 final Property p_relation_type_id = c_relation_type.getProperties().getProperty("relationTypeId");
524
525 final Property p_origin_rt_id = c_relation_type_struc.getProperties().getProperty("originRelationTypeId");
526 final Property p_dest_rt_id = c_relation_type_struc.getProperties().getProperty("destRelationTypeId");
527
528 final Reference ref_origin_to_rt = c_relation_type_struc.getReferences().getReference(0);
529 assertEquals("RelationType", ref_origin_to_rt.getReferenceClassName());
530 assertEquals(c_relation_type, ref_origin_to_rt.getReferenceClass());
531 assertEquals(p_origin_rt_id, ref_origin_to_rt.getEntry(0).getLocal());
532 assertEquals(p_relation_type_id, ref_origin_to_rt.getEntry(0).getForeign());
533 assertEquals("relationTypeRelatedByOriginRelationTypeId", ref_origin_to_rt.getPropertyNameInLocal());
534 assertEquals("relationTypeStructuresRelatedByOriginRelationTypeId", ref_origin_to_rt
535 .getPropertyNameInReferred());
536 assertEquals("relationTypeStructureRelatedByOriginRelationTypeId", ref_origin_to_rt
537 .getPropertyNameInReferred(false));
538
539 final Reference ref_dest_to_rt = c_relation_type_struc.getReferences().getReference(1);
540 assertEquals("RelationType", ref_dest_to_rt.getReferenceClassName());
541 assertEquals(c_relation_type, ref_dest_to_rt.getReferenceClass());
542 assertEquals(p_dest_rt_id, ref_dest_to_rt.getEntry(0).getLocal());
543 assertEquals(p_relation_type_id, ref_dest_to_rt.getEntry(0).getForeign());
544 assertEquals("relationTypeRelatedByDestRelationTypeId", ref_dest_to_rt.getPropertyNameInLocal());
545 assertEquals("relationTypeStructuresRelatedByDestRelationTypeId", ref_dest_to_rt.getPropertyNameInReferred());
546 assertEquals("relationTypeStructureRelatedByDestRelationTypeId", ref_dest_to_rt
547 .getPropertyNameInReferred(false));
548
549 final Property p_role_id = c_relation.getProperties().getProperty(0);
550 final Property p_origin_party_id = c_relation.getProperties().getProperty(1);
551 final Property p_dest_party_id = c_relation.getProperties().getProperty(2);
552 final Property p_relation_type_id2 = c_relation.getProperties().getProperty(3);
553
554 final Reference ref_origin_to_party = c_relation.getReferences().getReference(0);
555 assertEquals("Party", ref_origin_to_party.getReferenceClassName());
556 assertEquals(c_party, ref_origin_to_party.getReferenceClass());
557 assertEquals(p_origin_party_id, ref_origin_to_party.getEntry(0).getLocal());
558 assertEquals(p_party_id, ref_origin_to_party.getEntry(0).getForeign());
559 assertEquals("partyRelatedByOriginPartyId", ref_origin_to_party.getPropertyNameInLocal());
560 assertEquals("relationsRelatedByOriginPartyId", ref_origin_to_party.getPropertyNameInReferred());
561 assertEquals("relationRelatedByOriginPartyId", ref_origin_to_party.getPropertyNameInReferred(false));
562
563 final Reference ref_dest_to_party = c_relation.getReferences().getReference(1);
564 assertEquals("Party", ref_dest_to_party.getReferenceClassName());
565 assertEquals(c_party, ref_dest_to_party.getReferenceClass());
566 assertEquals(p_dest_party_id, ref_dest_to_party.getEntry(0).getLocal());
567 assertEquals(p_party_id, ref_dest_to_party.getEntry(0).getForeign());
568 assertEquals("partyRelatedByDestPartyId", ref_dest_to_party.getPropertyNameInLocal());
569 assertEquals("relationsRelatedByDestPartyId", ref_dest_to_party.getPropertyNameInReferred());
570 assertEquals("relationRelatedByDestPartyId", ref_dest_to_party.getPropertyNameInReferred(false));
571
572 final Reference ref_relation_type = c_relation.getReferences().getReference(2);
573 assertEquals("RelationType", ref_relation_type.getReferenceClassName());
574 assertEquals(c_relation_type, ref_relation_type.getReferenceClass());
575 assertEquals(p_relation_type_id2, ref_relation_type.getEntry(0).getLocal());
576 assertEquals(p_relation_type_id, ref_relation_type.getEntry(0).getForeign());
577 assertEquals("relationType", ref_relation_type.getPropertyNameInLocal());
578 assertEquals("relations", ref_relation_type.getPropertyNameInReferred());
579 assertEquals("relation", ref_relation_type.getPropertyNameInReferred(false));
580
581 assertEquals(2, c_party.getReferreds().size());
582 assertEquals(ref_origin_to_party, c_party.getReferreds().get(0));
583 assertEquals(ref_dest_to_party, c_party.getReferreds().get(1));
584 assertEquals(0, c_relation.getReferreds().size());
585 }
586
587 }