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