1   package org.weda.model;
2   
3   import org.weda.ObjectStoreTestCase;
4   import org.weda.domain.Address;
5   import org.weda.domain.Company;
6   import org.weda.domain.Contract;
7   import org.weda.model.impl.ObjectSourceEditorModelGroup;
8   import org.weda.model.impl.ObjectSetEditorModel;
9   import org.weda.store.ObjectSource;
10  import org.weda.store.ObjectSourceRegistry;
11  
12  /**
13   *
14   * @author tim
15   */
16  public class ObjectSourceEditorModelFactoryTest extends ObjectStoreTestCase {
17      EditorModelFactory fab;
18      
19      public ObjectSourceEditorModelFactoryTest(String name) throws Exception {
20          super(name);
21      }
22      
23      public void setUp() throws Exception{
24          super.setUp();
25          fab = 
26              (EditorModelFactory)registry
27              .getService(
28                  "org.weda.model.ObjectSourceEditorModelFactory"
29                  , EditorModelFactory.class);
30      }
31      
32      public void test_registry() throws Exception {
33          fab = 
34              (EditorModelFactory)registry
35              .getService(
36                  "org.weda.model.ObjectSourceEditorModelFactory"
37                  , EditorModelFactory.class);
38          assertNotNull(fab);
39          ObjectSourceEditorModelGroup group = (ObjectSourceEditorModelGroup)
40              fab.getEditorModelGroups().get(0);
41          assertNotNull(group);
42          assertEquals("company", group.getName());
43          //assertNotNull(group.getObjectSourceRegistry());
44          ObjectSetEditorModel model = 
45                  (ObjectSetEditorModel)group.getEditorModel("name");
46          assertNotNull(model);
47          assertEquals("name", model.getName());
48          assertEquals("name", model.getPropertyPath());
49      }
50      
51      public void test_work() throws Exception {
52          ObjectSourceEditorModelGroup group = (ObjectSourceEditorModelGroup)
53              fab.getEditorModelGroups().get(0);
54          EditorModel model = group.getEditorModel("name");        
55      }
56      
57      public void test_valuesList() throws Exception {        
58          ObjectSourceEditorModelGroup group = (ObjectSourceEditorModelGroup)
59              fab.getEditorModelGroups().get(0);
60          EditorModel model = group.getEditorModel("address");
61          assertNotNull(model);
62          //
63          ObjectSourceRegistry objectSourceReg = 
64                  (ObjectSourceRegistry)registry
65                      .getService(ObjectSourceRegistry.class);
66          ObjectSource objectSource = objectSourceReg.getObjectSource("company2");
67          Company comp = new Company();
68          comp.setName("comp1");
69          store.save(comp);
70          objectSource.refresh();
71          objectSource.selectRow(0);
72          objectSource.beginModification();
73          assertTrue(model.hasValuesList());
74          assertEquals(1, model.getValuesList().length);
75          //
76          Address addr = new Address();
77          addr.setStreet("street");
78          store.save(addr);
79          assertEquals(1, model.getValuesList().length);
80          model.resetValuesList();
81          assertEquals(2, model.getValuesList().length);
82          //
83          addr = new Address();
84          addr.setStreet("street2");
85          store.save(addr);
86          assertEquals(2, model.getValuesList().length);
87          model.refreshValuesList();
88          assertEquals(3, model.getValuesList().length);
89          //
90          objectSource.saveModification();
91      }
92      
93      public void test_detailObjectSources() throws Exception {
94          Company comp = new Company();
95          comp.setName("company1");
96          store.save(comp);
97          Contract cont = new Contract();
98          cont.setCompany(comp);
99          cont.setNum("#1 (company1)");
100         store.save(cont);
101         cont = new Contract();
102         cont.setCompany(comp);
103         cont.setNum("#2 (company1)");
104         store.save(cont);
105         //
106         Company comp2 = new Company();
107         comp2.setName("company2");
108         store.save(comp2);
109         cont = new Contract();
110         cont.setCompany(comp2);
111         cont.setNum("#1 (company2)");
112         store.save(cont);
113         //
114         ObjectSourceRegistry osReg = 
115                 (ObjectSourceRegistry)registry.getService(
116                     ObjectSourceRegistry.class);        
117         ObjectSource osCheck = osReg.getObjectSource("check2");
118         ObjectSource osCont = osReg.getObjectSource("contract");
119         EditorModelRegistry reg = 
120                 (EditorModelRegistry)registry.getService(
121                     EditorModelRegistry.class);
122         EditorModelGroup group = reg.getEditorModelGroup("check2");
123         assertNotNull(group);
124         EditorModel companyModel = group.getEditorModel("company");
125         //
126         osCont.refresh();
127         assertEquals(3, osCont.getRowCount());
128         //
129         osCheck.createNewRow();
130         companyModel.getValue();
131         osCont.refresh();
132         assertEquals(3, osCont.getRowCount());
133 
134         companyModel.setValue(comp);
135         osCont.refresh();
136         assertEquals(2, osCont.getRowCount());
137         group.clearModelValues();
138         osCont.refresh();
139         assertEquals(3, osCont.getRowCount());        
140         osCheck.saveModification();
141         //
142         osCheck.refresh();
143         assertEquals(1, osCheck.getRowCount());
144         osCheck.selectRow(0);
145         osCheck.beginModification();
146         osCont.refresh();
147         assertEquals(3, osCont.getRowCount());        
148         
149         companyModel.getValue();
150         osCont.refresh();
151         assertEquals(2, osCont.getRowCount());        
152         
153         companyModel.setValue(comp2);
154         osCont.refresh();
155         assertEquals(1, osCont.getRowCount());
156         osCheck.saveModification();
157         group.clearModelValues();
158         //
159         osCont.refresh();
160         assertEquals(3, osCont.getRowCount());
161         
162     }
163     
164 }