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: TestUpdate.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 TestUpdate extends TestQuery {
017: public TestUpdate(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).column(
026: "nullColumn", String.class).precision(
027: "propertyBigDecimal", 18, 9).precision("propertyChar",
028: 1).precision("propertyDouble", 12, 3).precision(
029: "propertyFloat", 13, 2)
030: .precision("propertyString", 255).precision(
031: "propertyStringbuffer", 100).precision(
032: "nullColumn", 255);
033:
034: try {
035: // prepare table and data
036: manager.executeUpdate(createtable);
037:
038: createtable.table("table2");
039: manager.executeUpdate(createtable);
040:
041: Insert insert = new Insert(datasource);
042: insert.into("tablename")
043: .fields(BeanImpl.getPopulatedBean());
044: manager.executeUpdate(insert);
045:
046: insert.into("table2");
047: manager.executeUpdate(insert);
048: insert.clear();
049:
050: insert.into("tablename").fields(BeanImpl.getNullBean());
051: manager.executeUpdate(insert);
052:
053: insert.into("table2");
054: manager.executeUpdate(insert);
055: } catch (DatabaseException e) {
056: cleanupQuery(manager);
057: throw new RuntimeException(e);
058: }
059:
060: return manager;
061: }
062:
063: private void cleanupQuery(DbQueryManager manager) {
064: // clean up nicely
065: DropTable drop_table = new DropTable(manager.getDatasource());
066: try {
067: drop_table.table("tablename");
068: manager.executeUpdate(drop_table);
069:
070: drop_table.clear();
071: drop_table.table("table2");
072: manager.executeUpdate(drop_table);
073: } catch (DatabaseException e) {
074: e.printStackTrace();
075: }
076: }
077:
078: public boolean execute(Update query) {
079: boolean success = false;
080: DbQueryManager manager = setupQuery(query.getDatasource());
081:
082: try {
083: // try to execute insert statement
084: if (manager.executeUpdate(query) > 0) {
085: success = true;
086: }
087: } catch (DatabaseException e) {
088: throw new RuntimeException(e);
089: } finally {
090: cleanupQuery(manager);
091: }
092:
093: return success;
094: }
095:
096: public boolean execute(Update query,
097: DbPreparedStatementHandler handler) {
098: boolean success = false;
099: DbQueryManager manager = setupQuery(query.getDatasource());
100:
101: try {
102: if (manager.executeUpdate(query, handler) > 0) {
103: success = true;
104: }
105: } catch (DatabaseException e) {
106: throw new RuntimeException(e);
107: } finally {
108: cleanupQuery(manager);
109: }
110:
111: return success;
112: }
113: }
|