1 package test.tuigwaa;
2
3 import java.util.ArrayList;
4 import java.util.HashSet;
5 import java.util.List;
6 import java.util.Set;
7
8 import junit.framework.TestCase;
9
10 import org.apache.commons.beanutils.PropertyUtils;
11 import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
12 import org.seasar.tuigwaa.database.CriteriaFunctionFactory;
13 import org.seasar.tuigwaa.database.DataTable;
14 import org.seasar.tuigwaa.database.DynaDatabaseService;
15 import org.seasar.tuigwaa.database.function.CriteriaExeFunction;
16 import org.seasar.tuigwaa.database.function.criteria.CriteriaFunction;
17 import org.seasar.tuigwaa.database.function.criteria.EqCriteriaFunction;
18 import org.seasar.tuigwaa.database.function.criteria.SubcriteriaFunction;
19 import org.seasar.tuigwaa.model.DAOService;
20 import org.seasar.tuigwaa.model.ModelService;
21 import org.seasar.tuigwaa.model.core.TgwAttribute;
22 import org.seasar.tuigwaa.model.core.TgwEntity;
23 import org.seasar.tuigwaa.model.core.impl.FkAttribute;
24 import org.seasar.tuigwaa.model.core.impl.SetAttribute;
25 import org.seasar.tuigwaa.model.core.impl.StringAttribute;
26 import org.seasar.tuigwaa.model.core.impl.TgwEntityImpl;
27
28
29 public class EntityRefTest extends TestCase {
30
31 private static ModelService model;
32
33 private static DynaDatabaseService db;
34
35 private static DAOService daoServie;
36
37 static {
38 SingletonS2ContainerFactory.init();
39 model = (ModelService) SingletonS2ContainerFactory.getContainer()
40 .getComponent(ModelService.class);
41 daoServie = (DAOService) SingletonS2ContainerFactory.getContainer()
42 .getComponent(DAOService.class);
43 db = (DynaDatabaseService) SingletonS2ContainerFactory.getContainer()
44 .getComponent(DynaDatabaseService.class);
45
46 try {
47 db.dropSchema("junit");
48 } catch (Exception e) {
49 e.printStackTrace();
50 }
51 model.createDomain("junit");
52 }
53
54 public void testSetAttribute() throws Exception {
55 List list = getTestEntities();
56 model.createEntities("junit", list);
57
58
59 TgwEntity entity1 = (TgwEntity) list.get(0);
60 TgwEntity entity2 = (TgwEntity) list.get(1);
61 Object obj1 = entity1.newInstance();
62 PropertyUtils.setProperty(obj1, "sattr", "hoge");
63
64 Object obj21 = entity2.newInstance();
65 PropertyUtils.setProperty(obj21, "s2attr", "nishioka");
66 PropertyUtils.setProperty(obj21, "fkattr", obj1);
67 Object obj22 = entity2.newInstance();
68 PropertyUtils.setProperty(obj22, "s2attr", "someda");
69 PropertyUtils.setProperty(obj22, "fkattr", obj1);
70 Set set = new HashSet();
71 set.add(obj21);
72 set.add(obj22);
73 PropertyUtils.setProperty(obj1, "setattr", set);
74
75 daoServie.getDAO(entity1).saveOrUpdate(obj1);
76
77 CriteriaFunction eqFunction = new SubcriteriaFunction("setattr",
78 new EqCriteriaFunction("s2attr", "nishioka"));
79 CriteriaExeFunction sampleFilter = CriteriaFunctionFactory
80 .createCriteriaExeFunction(entity1, "sample", eqFunction);
81
82 DataTable dataTable = (DataTable) sampleFilter.evaluate();
83 assertEquals(1, dataTable.getRowSize());
84 }
85
86 private List getTestEntities() {
87 TgwEntity entity1 = new TgwEntityImpl("junit", "reftest1");
88 TgwAttribute sattr = new StringAttribute();
89 SetAttribute setattr = new SetAttribute();
90 sattr.setName("sattr");
91 setattr.setName("setattr");
92 entity1.addField(sattr);
93 entity1.addField(setattr);
94
95
96 TgwEntity entity2 = new TgwEntityImpl("junit", "reftest2");
97 FkAttribute fkattr = new FkAttribute();
98 StringAttribute s2attr = new StringAttribute();
99 fkattr.setName("fkattr");
100 s2attr.setName("s2attr");
101 entity2.addField(fkattr);
102 entity2.addField(s2attr);
103
104
105 setattr.setRefEntity(entity2);
106 fkattr.setRefEntity(entity1);
107 setattr.setInverseField(fkattr);
108 fkattr.setInverseField(setattr);
109
110
111 List list = new ArrayList();
112 list.add(entity1);
113 list.add(entity2);
114 return list;
115 }
116
117 }