1
2
3
4
5
6
7
8 /
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 public class PersistenceTest extends TestCase
56 {
57 private DataSource dataSource;
58
59 private Persistence persistence;
60
61 /***
62 * Constructor for PersistenceTest.
63 * @param arg0
64 */
65 public PersistenceTest(String arg0) throws Exception
66 {
67 super(arg0);
68 dataSource = getDataSource();
69 IdGenerator idGenerator = new IdGenerator(dataSource);
70 Logger logger = new Log4JLogger(org.apache.log4j.Logger.getLogger(getClass()));
71 JotmTransaction transaction = new JotmTransaction(0, 120, new Context(), logger, null);
72 Database database = new DefaultDatabase(dataSource, idGenerator, transaction);
73 persistence = new DefaultPersistence(database, logger);
74 }
75
76
77
78
79
80
81
82
83
84
85 public void testLoadlongPersistentFactory() throws Exception
86 {
87 TestObject object = (TestObject)persistence.load(1, testFactory);
88 assertNull(object);
89 object = (TestObject)persistence.load(0, testFactory);
90 assertNull(object);
91 List list = persistence.load(null, testFactory);
92 assertEquals(list.size(), 0);
93 object = new TestObject("foo", new Date());
94 persistence.save(object);
95 object = (TestObject)persistence.load(object.getId(), testFactory);
96 assertNotNull(object);
97 list = persistence.load(null, testFactory);
98 assertEquals(list.size(), 1);
99 list = persistence.load("id = " + object.getId(), testFactory);
100 assertEquals(list.size(), 1);
101 list = persistence.load("id = -1", testFactory);
102 assertEquals(list.size(), 0);
103 list = persistence.load("value = 'bar'", testFactory);
104 assertEquals(list.size(), 0);
105 list = persistence.load("value = 'foo'", testFactory);
106 assertEquals(list.size(), 1);
107 object.setValue("bar");
108 persistence.save(object);
109 list = persistence.load("value = 'foo'", testFactory);
110 assertEquals(list.size(), 0);
111 list = persistence.load("value = 'bar'", testFactory);
112 assertEquals(list.size(), 1);
113 object.setValue("foo");
114 assertEquals(object.getValue(), "foo");
115 persistence.revert(object);
116 assertEquals(object.getValue(), "bar");
117
118 TestObject object2 = new TestObject("foo", null);
119 try
120 {
121 persistence.revert(object2);
122 fail("should throw the exception");
123 }
124 catch (IllegalStateException e)
125 {
126
127 }
128 object2.setSaved(10);
129 try
130 {
131 persistence.revert(object2);
132 fail("should throw the exception");
133 }
134 catch (PersistenceException e)
135 {
136
137 }
138 object2.setSaved(-1);
139
140 assertEquals(persistence.exists("test_object",null),true);
141 assertEquals(persistence.exists("test_object","id = 10"),false);
142 assertEquals(persistence.count("test_object",null),1);
143
144 assertEquals(list.size(),1);
145 persistence.delete(object);
146 list = persistence.load(null, testFactory);
147 assertEquals(list.size(),0);
148
149 assertEquals(persistence.exists("test_object",null),false);
150 assertEquals(persistence.exists("test_object","id = 10"),false);
151 assertEquals(persistence.count("test_object",null),0);
152 assertEquals(persistence.count("test_object","id = 10"),0);
153
154
155 }
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189 private DataSource getDataSource() throws Exception
190 {
191 DefaultConfiguration conf = new DefaultConfiguration("config", "", "/");
192 DefaultConfiguration url = new DefaultConfiguration("url", "", "/config");
193 url.setValue("jdbc:hsqldb:.");
194 conf.addChild(url);
195 DefaultConfiguration user = new DefaultConfiguration("user", "", "/config");
196 user.setValue("sa");
197 conf.addChild(user);
198 DataSource ds = new HsqldbDataSource(conf);
199 FileSystem fs = FileSystem.getStandardFileSystem(".");
200 Reader reader;
201 if(!DatabaseUtils.hasTable(ds, "ledge_id_table"))
202 {
203 reader = fs.getReader("sql/database/IdGeneratorTables.sql", "UTF-8");
204 DatabaseUtils.runScript(ds, reader);
205 }
206 if(!DatabaseUtils.hasTable(ds, "test_object"))
207 {
208 reader = fs.getReader("sql/database/persistence/TestObject.sql", "UTF-8");
209 DatabaseUtils.runScript(ds, reader);
210 }
211 return ds;
212 }
213
214 private PersistentFactory testFactory = new PersistentFactory()
215 {
216 public Persistent newInstance()
217 {
218 return new TestObject();
219 }
220 };
221
222 }