001: /*
002: * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com>
003: * Distributed under the terms of either:
004: * - the common development and distribution license (CDDL), v1.0; or
005: * - the GNU Lesser General Public License, v2.1 or later
006: * $Id: TestSelect.java 3634 2007-01-08 21:42:24Z gbevin $
007: */
008: package com.uwyn.rife.database.queries;
009:
010: import com.uwyn.rife.database.BeanImpl;
011: import com.uwyn.rife.database.Datasource;
012: import com.uwyn.rife.database.DbPreparedStatementHandler;
013: import com.uwyn.rife.database.DbQueryManager;
014: import com.uwyn.rife.database.exceptions.DatabaseException;
015:
016: public abstract class TestSelect extends TestQuery {
017: public TestSelect(String name) {
018: super (name);
019: }
020:
021: public DbQueryManager setupQuery(Datasource datasource) {
022: DbQueryManager manager = new DbQueryManager(datasource);
023:
024: CreateTable createtable = new CreateTable(datasource);
025: createtable.table("tablename").columns(BeanImpl.class)
026: .precision("propertyBigDecimal", 18, 9).precision(
027: "propertyChar", 1).precision("propertyDouble",
028: 12, 3).precision("propertyDoubleObject", 12, 3)
029: .precision("propertyFloat", 13, 2).precision(
030: "propertyFloatObject", 13, 2).precision(
031: "propertyString", 255).precision(
032: "propertyStringbuffer", 100);
033:
034: try {
035: // prepare table and data
036: manager.executeUpdate(createtable);
037:
038: createtable.table("table2");
039: manager.executeUpdate(createtable);
040:
041: createtable.table("table3");
042: manager.executeUpdate(createtable);
043:
044: Insert insert = new Insert(datasource);
045: insert.into("tablename")
046: .fields(BeanImpl.getPopulatedBean());
047: manager.executeUpdate(insert);
048:
049: insert.into("table2");
050: manager.executeUpdate(insert);
051:
052: insert.into("table3");
053: manager.executeUpdate(insert);
054:
055: insert.clear();
056: insert.into("tablename").fields(BeanImpl.getNullBean());
057: manager.executeUpdate(insert);
058:
059: BeanImpl impl = BeanImpl.getPopulatedBean();
060: insert.clear();
061: impl.setPropertyInt(3);
062: insert.into("tablename").fields(impl);
063: manager.executeUpdate(insert);
064: insert.clear();
065: impl.setPropertyInt(4);
066: insert.into("tablename").fields(impl);
067: manager.executeUpdate(insert);
068: insert.clear();
069: impl.setPropertyInt(5);
070: insert.into("tablename").fields(impl);
071: manager.executeUpdate(insert);
072:
073: insert.into("table2");
074: manager.executeUpdate(insert);
075:
076: insert.into("table3");
077: manager.executeUpdate(insert);
078: } catch (DatabaseException e) {
079: cleanupQuery(manager);
080: throw new RuntimeException(e);
081: }
082:
083: return manager;
084: }
085:
086: public void cleanupQuery(DbQueryManager manager) {
087: // clean up nicely
088: DropTable drop_table = new DropTable(manager.getDatasource());
089: try {
090: drop_table.table("tablename");
091: manager.executeUpdate(drop_table);
092:
093: drop_table.clear();
094: drop_table.table("table2");
095: manager.executeUpdate(drop_table);
096:
097: drop_table.clear();
098: drop_table.table("table3");
099: manager.executeUpdate(drop_table);
100: } catch (DatabaseException e) {
101: System.out.println(e.toString());
102: }
103: }
104:
105: public boolean execute(Select query) {
106: boolean success = false;
107: DbQueryManager manager = setupQuery(query.getDatasource());
108:
109: try {
110: success = manager.executeHasResultRows(query);
111: } catch (DatabaseException e) {
112: throw new RuntimeException(e);
113: } finally {
114: cleanupQuery(manager);
115: }
116:
117: return success;
118: }
119:
120: public boolean execute(Select query,
121: DbPreparedStatementHandler handler) {
122: boolean success = false;
123: DbQueryManager manager = setupQuery(query.getDatasource());
124:
125: try {
126: success = manager.executeHasResultRows(query, handler);
127: } catch (DatabaseException e) {
128: throw new RuntimeException(e);
129: } finally {
130: cleanupQuery(manager);
131: }
132:
133: return success;
134: }
135: }
|