1   /*
2    * PageableTableModelTest.java
3    * Created on 26 Август 2006 г., 23:27
4    */
5   
6   package org.weda.model;
7   
8   import org.weda.ObjectStoreTestCase;
9   import org.weda.domain.Company;
10  import org.weda.store.ObjectSource;
11  import org.weda.store.ObjectSourceRegistry;
12  import org.weda.store.actions.ObjectSourceRefreshAction;
13  
14  /**
15   *
16   * @author Mikhail Titov
17   */
18  public class PageableTableModelTest extends ObjectStoreTestCase {
19      
20      public PageableTableModelTest(String name) throws Exception {
21          super(name);
22      }
23      
24      public void test() throws Exception {
25          checkPageableTableModel("pageable-company-view");
26      }
27      
28      public void test1() throws Exception {
29          checkPageableTableModel("p_company2-view");
30      }
31      
32      private void checkPageableTableModel(String pageableTableModelName) 
33          throws Exception
34      {
35          store.deleteAll(Company.class);
36          TableModelRegistry modelReg = 
37                  (TableModelRegistry)registry.getService(
38                      TableModelRegistry.class);
39          TableModel tableModel = modelReg.getTableModel(pageableTableModelName);
40          assertTrue(tableModel instanceof PageableTableModel);
41          PageableTableModel model = (PageableTableModel)tableModel;
42          TableModel model2 = modelReg.getTableModel("company2-view");
43          assertNotNull(model);
44          model.close();
45          model.setPageSize(5);
46          model.open();
47          PageableTableModelData data = model.getData();
48          assertEquals(0, data.getPageCount());
49          assertFalse(data.hasSummaryRow());
50          assertEquals(0, data.getRowCount());
51          assertEquals(0, data.getPageNumber());
52          data.setPageNumber(-1);
53          assertEquals(0, data.getPageNumber());
54          data.setPageNumber(1);
55          assertEquals(0, data.getPageNumber());
56          //
57          Company comp;
58          for (int i=0; i<5; ++i){
59              comp = new Company();
60              comp.setName("company "+i);
61              comp.setEmployeCount(1);
62              store.save(comp);
63          }
64          model.close();
65          model.open();
66          data = model.getData();
67          assertEquals(1, data.getPageCount());
68          assertTrue(data.hasSummaryRow());
69          assertEquals(5, data.getRowCount());
70          assertEquals(0, data.getPageNumber());
71          assertEquals(5l, data.getSummaryValueAt(3));
72          data.setPageNumber(-1);
73          assertEquals(0, data.getPageNumber());
74          data.setPageNumber(1);
75          assertEquals(0, data.getPageNumber());
76          //
77          comp = new Company();
78          comp.setName("company 5");
79          comp.setEmployeCount(1);
80          store.save(comp);
81          
82          model.close();
83          model.open();
84          data = model.getData();
85          assertEquals(2, data.getPageCount());
86          assertFalse(data.hasSummaryRow());
87          assertEquals(5, data.getRowCount());
88          assertEquals(0, data.getPageNumber());
89          data.setPageNumber(-1);
90          assertEquals(0, data.getPageNumber());
91          
92          data.setPageNumber(1);
93          assertEquals(1, data.getPageNumber());
94          assertEquals(1, data.getRowCount());        
95          assertEquals(6l, data.getSummaryValueAt(3));
96          //
97          ObjectSourceRegistry osReg = 
98                  (ObjectSourceRegistry)
99                      registry.getService(ObjectSourceRegistry.class);
100         ObjectSource os = osReg.getObjectSource("company2");
101         os.createNewRow();
102         os.getSelectedObjectSet().setValue("name", "company 6");
103         os.saveModification();
104         assertEquals(0, data.getPageNumber());
105         
106         //
107         data.setPageNumber(0);
108         TableModelData data2 = model2.getData();
109         for (int i=0; i<5; ++i)
110             assertSame(data2.getValueAt(i, 0), data.getValueAt(i, 0));
111         data.setPageNumber(1);
112         assertSame(data2.getValueAt(5, 0), data.getValueAt(0, 0));
113     }
114     
115 }