001: /*
002: * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com> and
003: * JR Boyens <gnu-jrb[remove] at gmx dot net>
004: * Distributed under the terms of either:
005: * - the common development and distribution license (CDDL), v1.0; or
006: * - the GNU Lesser General Public License, v2.1 or later
007: * $Id: TestGenericQueryManagerDelegate.java 3634 2007-01-08 21:42:24Z gbevin $
008: */
009: package com.uwyn.rife.database.querymanagers.generic;
010:
011: import com.uwyn.rife.database.Datasource;
012: import com.uwyn.rife.database.DbRowProcessor;
013: import com.uwyn.rife.database.querymanagers.generic.beans.ChildBean;
014: import com.uwyn.rife.database.querymanagers.generic.beans.ConstrainedBean;
015: import com.uwyn.rife.database.querymanagers.generic.beans.LinkBean;
016: import com.uwyn.rife.database.querymanagers.generic.beans.SimpleBean;
017: import java.sql.ResultSet;
018: import java.sql.SQLException;
019: import java.util.List;
020: import junit.framework.TestCase;
021:
022: public class TestGenericQueryManagerDelegate extends TestCase {
023: private Datasource mDatasource = null;
024:
025: class GQMSimpleBean extends GenericQueryManagerDelegate<SimpleBean> {
026: GQMSimpleBean(Datasource datasource) {
027: super (datasource, SimpleBean.class);
028: }
029: }
030:
031: class GQMLinkBean extends GenericQueryManagerDelegate<LinkBean> {
032: GQMLinkBean(Datasource datasource) {
033: super (datasource, LinkBean.class);
034: }
035: }
036:
037: class GQMChildBean extends GenericQueryManagerDelegate<ChildBean> {
038: GQMChildBean(Datasource datasource) {
039: super (datasource, ChildBean.class);
040: }
041: }
042:
043: class GQMConstrainedBean extends
044: GenericQueryManagerDelegate<ConstrainedBean> {
045: GQMConstrainedBean(Datasource datasource) {
046: super (datasource, ConstrainedBean.class);
047: }
048: }
049:
050: private GQMSimpleBean mManager = null;
051: private GQMLinkBean mLinkManager = null;
052: private GQMChildBean mChildManager = null;
053: private GQMConstrainedBean mConstrainedManager = null;
054:
055: public TestGenericQueryManagerDelegate(Datasource datasource,
056: String datasourceName, String name) {
057: super (name);
058: mDatasource = datasource;
059: }
060:
061: protected void setUp() throws Exception {
062: mManager = new GQMSimpleBean(mDatasource);
063: mLinkManager = new GQMLinkBean(mDatasource);
064: mChildManager = new GQMChildBean(mDatasource);
065: mConstrainedManager = new GQMConstrainedBean(mDatasource);
066:
067: int poolsize = mDatasource.getPoolsize();
068: // disabling pool for firebird
069: if ("org.firebirdsql.jdbc.FBDriver".equals(mDatasource
070: .getAliasedDriver())) {
071: mDatasource.setPoolsize(0);
072: }
073: try {
074: mManager.install();
075: mLinkManager.install();
076: mChildManager.install();
077: mConstrainedManager.install();
078: } finally {
079: if ("org.firebirdsql.jdbc.FBDriver".equals(mDatasource
080: .getAliasedDriver())) {
081: mDatasource.setPoolsize(poolsize);
082: }
083: }
084: }
085:
086: protected void tearDown() throws Exception {
087: int poolsize = mDatasource.getPoolsize();
088: // disabling pool for firebird
089: if ("org.firebirdsql.jdbc.FBDriver".equals(mDatasource
090: .getAliasedDriver())) {
091: mDatasource.setPoolsize(0);
092: }
093: try {
094: mConstrainedManager.remove();
095: mManager.remove();
096: mLinkManager.remove();
097: mChildManager.remove();
098: } finally {
099: if ("org.firebirdsql.jdbc.FBDriver".equals(mDatasource
100: .getAliasedDriver())) {
101: mDatasource.setPoolsize(poolsize);
102: }
103: }
104: }
105:
106: public void testSaveRestore() {
107: SimpleBean bean = new SimpleBean();
108: SimpleBean newbean = null;
109:
110: bean.setTestString("This is my test string");
111:
112: int id = mManager.save(bean);
113:
114: newbean = mManager.restore(id);
115:
116: assertTrue(newbean != null);
117: assertTrue(newbean != bean);
118: assertEquals(newbean.getTestString(), bean.getTestString());
119: assertEquals(newbean.getId(), id);
120:
121: bean.setId(id);
122: bean.setTestString("This is a new test string");
123:
124: assertEquals(mManager.save(bean), id);
125: assertEquals(bean.getId(), id);
126:
127: newbean = mManager.restore(id);
128:
129: assertTrue(newbean != null);
130: assertTrue(newbean != bean);
131:
132: assertEquals(newbean.getTestString(),
133: "This is a new test string");
134:
135: bean.setId(999999);
136: bean.setTestString("This is another test string");
137:
138: assertFalse(999999 == mManager.save(bean));
139: assertEquals(bean.getId(), id + 1);
140: }
141:
142: public void testSaveRestoreConstrained() {
143: ConstrainedBean bean = new ConstrainedBean();
144: ConstrainedBean newbean = null;
145:
146: bean.setTestString("This is my test string");
147:
148: int id = mConstrainedManager.save(bean);
149:
150: newbean = mConstrainedManager.restore(id);
151:
152: assertTrue(newbean != null);
153: assertTrue(newbean != bean);
154: assertEquals(newbean.getTestString(), bean.getTestString());
155: assertEquals(newbean.getIdentifier(), id);
156:
157: bean.setIdentifier(id);
158: bean.setTestString("This is a new test string");
159:
160: assertEquals(mConstrainedManager.save(bean), id);
161: assertEquals(bean.getIdentifier(), id);
162:
163: newbean = mConstrainedManager.restore(id);
164:
165: assertTrue(newbean != null);
166: assertTrue(newbean != bean);
167:
168: assertEquals(newbean.getTestString(),
169: "This is a new test string");
170:
171: bean.setIdentifier(999999);
172: bean.setTestString("This is another test string");
173:
174: assertFalse(999999 == mConstrainedManager.save(bean));
175: assertEquals(bean.getIdentifier(), id + 1);
176: }
177:
178: public void testDelete() {
179: SimpleBean bean = new SimpleBean();
180:
181: bean.setTestString("This is my test string");
182:
183: int id1 = mManager.save(bean);
184: assertTrue(mManager.restore(id1) != null);
185: mManager.delete(id1);
186: assertTrue(mManager.restoreFirst(mManager.getRestoreQuery(id1)) == null);
187:
188: int id2 = mManager.save(bean);
189: assertTrue(mManager.restoreFirst(mManager.getRestoreQuery(id2)) != null);
190: mManager.delete(mManager.getDeleteQuery(id2));
191: assertTrue(mManager.restore(id2) == null);
192: }
193:
194: public void testRestore() {
195: SimpleBean bean1 = new SimpleBean();
196: SimpleBean bean2 = new SimpleBean();
197: SimpleBean bean3 = new SimpleBean();
198:
199: bean1.setTestString("This is bean1");
200: bean2.setTestString("This is bean2");
201: bean3.setTestString("This is bean3");
202:
203: mManager.save(bean1);
204: mManager.save(bean2);
205: mManager.save(bean3);
206:
207: List<SimpleBean> list = mManager.restore();
208:
209: assertEquals(list.size(), 3);
210:
211: for (SimpleBean bean : list) {
212: assertTrue(bean != null);
213: assertTrue(bean != bean1 || bean != bean2 || bean != bean3);
214: assertTrue(bean.getTestString().equals("This is bean1")
215: || bean.getTestString().equals("This is bean2")
216: || bean.getTestString().equals("This is bean3"));
217: }
218: }
219:
220: public void testRestoreRowProcessor() {
221: SimpleBean bean1 = new SimpleBean();
222: SimpleBean bean2 = new SimpleBean();
223: SimpleBean bean3 = new SimpleBean();
224:
225: bean1.setTestString("This is bean1");
226: bean2.setTestString("This is bean2");
227: bean3.setTestString("This is bean3");
228:
229: mManager.save(bean1);
230: mManager.save(bean2);
231: mManager.save(bean3);
232:
233: final int[] count = new int[] { 0 };
234: mManager.restore(new DbRowProcessor() {
235: public boolean processRow(ResultSet resultSet)
236: throws SQLException {
237: count[0]++;
238:
239: String test_string = resultSet.getString("testString");
240: assertTrue(test_string.equals("This is bean1")
241: || test_string.equals("This is bean2")
242: || test_string.equals("This is bean3"));
243:
244: return true;
245: }
246: });
247:
248: assertEquals(count[0], 3);
249: }
250:
251: public void testRestoreQueryRowProcessor() {
252: SimpleBean bean1 = new SimpleBean();
253: SimpleBean bean2 = new SimpleBean();
254: SimpleBean bean3 = new SimpleBean();
255:
256: bean1.setTestString("This is bean1");
257: bean2.setTestString("This is bean2");
258: bean3.setTestString("This is bean3");
259:
260: mManager.save(bean1);
261: mManager.save(bean2);
262: mManager.save(bean3);
263:
264: final int[] count = new int[] { 0 };
265: mManager.restore(mManager.getRestoreQuery().where("testString",
266: "LIKE", "%bean2"), new DbRowProcessor() {
267: public boolean processRow(ResultSet resultSet)
268: throws SQLException {
269: count[0]++;
270:
271: String test_string = resultSet.getString("testString");
272: assertTrue(test_string.equals("This is bean2"));
273:
274: return true;
275: }
276: });
277:
278: assertEquals(count[0], 1);
279: }
280:
281: public void testChildBean() {
282: ChildBean bean = new ChildBean();
283:
284: bean.setParentString("This is bean");
285: bean.setChildString("This is childbean");
286:
287: int id = mChildManager.save(bean);
288:
289: ChildBean rbean = mChildManager.restore(id);
290:
291: assertEquals(rbean.getParentString(), bean.getParentString());
292: assertEquals(rbean.getChildString(), bean.getChildString());
293: }
294:
295: public void testCount() {
296: SimpleBean bean1 = new SimpleBean();
297: SimpleBean bean2 = new SimpleBean();
298: SimpleBean bean3 = new SimpleBean();
299: SimpleBean bean4 = new SimpleBean();
300: SimpleBean bean5 = new SimpleBean();
301:
302: bean1.setTestString("bean set 1");
303: bean2.setTestString("bean set 1");
304: bean3.setTestString("bean set 1");
305: bean4.setTestString("bean set 2");
306: bean5.setTestString("bean set 2");
307:
308: mManager.save(bean1);
309: mManager.save(bean2);
310: mManager.save(bean3);
311: mManager.save(bean4);
312: mManager.save(bean5);
313:
314: assertEquals(mManager.count(), 5);
315:
316: mManager.delete(bean1.getId());
317: mManager.delete(bean2.getId());
318: mManager.delete(bean3.getId());
319:
320: assertEquals(mManager.count(), 2);
321: }
322: }
|