1 package org.weda.model;
2
3 import java.util.HashMap;
4 import java.util.List;
5 import java.util.Map;
6 import org.weda.ObjectStoreTestCase;
7 import org.weda.action.ActionState;
8 import org.weda.model.impl.ObjectTableModel;
9 import org.weda.store.ObjectSource;
10 import org.weda.store.ObjectSourceRegistry;
11 import org.weda.domain.Address;
12 import org.weda.domain.Company;
13 import org.weda.property.PropertyDescriptor;
14
15 /**
16 *
17 * @author tim
18 */
19 public class ObjectTableModelTest extends ObjectStoreTestCase {
20
21 public ObjectTableModelTest(String name) throws Exception {
22 super(name);
23 }
24
25 public void test_config() throws Exception {
26 checkConfig("company2-view");
27 }
28
29 public void test_config_withNamesList() throws Exception {
30 checkConfig("company2-view2");
31 }
32
33 public void test_availableActions() throws Exception{
34 checkAvailableActions("company2-view");
35 }
36
37 public void test_availableActions_withNamesList() throws Exception{
38 checkAvailableActions("company2-view2");
39 }
40
41 public void test_open_close() throws Exception {
42 Company comp = new Company();
43 comp.setName("company1");
44 store.save(comp);
45
46 TableModelRegistry reg=
47 (TableModelRegistry)registry.getService(TableModelRegistry.class);
48 ObjectTableModel model =
49 (ObjectTableModel)reg.getTableModel("company2-view");
50 ObjectSourceRegistry dsr =
51 (ObjectSourceRegistry)
52 registry.getService(ObjectSourceRegistry.class);
53 ObjectSource ds = dsr.getObjectSource("company2");
54
55 ds.close();
56 assertEquals(TableModel.Mode.CLOSED, model.getMode());
57 try{
58 model.getData();
59 fail();
60 }catch(Exception e){}
61 ds.open();
62 assertEquals(TableModel.Mode.VIEW, model.getMode());
63 assertEquals(1, model.getData().getRowCount());
64
65 model.close();
66 assertEquals(TableModel.Mode.CLOSED, model.getMode());
67 assertEquals(ObjectSource.Mode.CLOSED, ds.getMode());
68 try{
69 model.getData();
70 fail();
71 }catch(Exception e){}
72 model.open();
73 assertEquals(TableModel.Mode.VIEW, model.getMode());
74 assertEquals(ObjectSource.Mode.VIEW, ds.getMode());
75 assertEquals(1, model.getData().getRowCount());
76 }
77
78 public void test_getValueAt() throws Exception {
79 checkGetPage("company2-view");
80 }
81
82 public void test_getValueAt_withNamesList() throws Exception {
83 checkGetPage("company2-view2");
84 }
85
86 public void test_summaryRow() throws Exception {
87 checkSummaryRow("company2-view");
88 }
89
90 public void test_summaryRow_withNamesList() throws Exception {
91 checkSummaryRow("company2-view2");
92 }
93
94 private void checkConfig(String tableModelName) throws Exception {
95 TableModelRegistry reg=
96 (TableModelRegistry)registry.getService(TableModelRegistry.class);
97 assertNotNull(reg);
98 ObjectTableModel model =
99 (ObjectTableModel)reg.getTableModel(tableModelName);
100 assertNotNull(model);
101 List<PropertyDescriptor> cols=model.getColumnDescriptors();
102 assertNotNull(cols);
103 assertEquals(4, cols.size());
104 assertNotNull(cols.get(0).getParent());
105 assertEquals("s/n", cols.get(0).getDisplayName());
106 assertEquals("name", cols.get(1).getName());
107 assertEquals("Улица", cols.get(2).getDisplayName());
108 assertEquals("company2", model.getObjectSourceName());
109 assertNotNull(model.getPropertyValueGetter());
110 }
111
112 private void checkAvailableActions(String tableModelName)
113 throws Exception
114 {
115 TableModelRegistry reg=
116 (TableModelRegistry)registry.getService(TableModelRegistry.class);
117 ObjectTableModel model =
118 (ObjectTableModel)reg.getTableModel(tableModelName);
119 List<ActionState> descriptors = model.getActionsStates();
120
121 }
122
123 private void checkGetPage(String tableModelName) throws Exception {
124 TableModelRegistry reg=
125 (TableModelRegistry)registry.getService(TableModelRegistry.class);
126 ObjectSourceRegistry dsr =
127 (ObjectSourceRegistry)
128 registry.getService(ObjectSourceRegistry.class);
129 ObjectSource ds = dsr.getObjectSource("company2");
130
131 Company comp;
132 Map<String, Company> companies = new HashMap<String, Company>();
133 for (int i=0; i<5; i++){
134 comp = new Company();
135 comp.setName("name "+i);
136 comp.setEmployeCount(1);
137 Address addr = new Address();
138 addr.setStreet("street "+i);
139 comp.setAddress(addr);
140 store.save(addr);
141 store.save(comp);
142 companies.put(comp.getName(), comp);
143 }
144
145 ds.refresh();
146 ObjectTableModel model =
147 (ObjectTableModel)reg.getTableModel(tableModelName);
148
149
150 TableModelData data = model.getData();
151 assertEquals(5, data.getRowCount());
152
153 for (int row=0; row<data.getRowCount(); row++){
154 for (int col=0; col<model.getColumnCount(); col++){
155 Object val = data.getValueAt(row, col);
156 assertNotNull(val);
157 assertNotNull(val);
158 assertNotNull(val);
159 }
160 String name=(String)data.getValueAt(row, 1);
161 comp=companies.get(name);
162 assertNotNull(comp);
163 assertEquals(comp.getId(), data.getValueAt(row, 0));
164 assertEquals(
165 comp.getAddress().getStreet(), data.getValueAt(row, 2));
166 }
167 }
168
169 private void checkSummaryRow(String tableModelName) throws Exception {
170 TableModelRegistry reg=
171 (TableModelRegistry)registry.getService(TableModelRegistry.class);
172 ObjectTableModel model =
173 (ObjectTableModel)reg.getTableModel(tableModelName);
174 ObjectSourceRegistry dsr =
175 (ObjectSourceRegistry)
176 registry.getService(ObjectSourceRegistry.class);
177 ObjectSource ds = dsr.getObjectSource("company2");
178 ds.close();
179
180 Company comp;
181 for (int i=0; i<10; i++){
182 comp = new Company();
183 comp.setName("name "+i);
184 comp.setEmployeCount(1);
185 store.save(comp);
186 }
187
188 ds.refresh();
189 TableModelData data = model.getData();
190 assertTrue(data.hasSummaryRow());
191 assertEquals(10l, data.getSummaryValueAt(3));
192 }
193 }