/******************************************************************************* * This file is part of OpenNMS(R). * * Copyright (C) 2009-2011 The OpenNMS Group, Inc. * OpenNMS(R) is Copyright (C) 1999-2011 The OpenNMS Group, Inc. * * OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc. * * OpenNMS(R) is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, * or (at your option) any later version. * * OpenNMS(R) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with OpenNMS(R). If not, see: * http://www.gnu.org/licenses/ * * For more information contact: * OpenNMS(R) Licensing <license@opennms.org> * http://www.opennms.org/ * http://www.opennms.com/ * * From the original copyright headers: * * Copyright (c) 2009+ desmax74 * Copyright (c) 2009+ The OpenNMS Group, Inc. * * This program was developed and is maintained by Rocco RIONERO * ("the author") and is subject to dual-copyright according to * the terms set in "The OpenNMS Project Contributor Agreement". * * The author can be contacted at the following email address: * * Massimiliano Dessì * desmax74@yahoo.it *******************************************************************************/ package org.opennms.acl.conf.dbunit; import java.io.FileOutputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import org.dbunit.DBTestCase; import org.dbunit.DatabaseUnitException; import org.dbunit.DefaultDatabaseTester; import org.dbunit.IDatabaseTester; import org.dbunit.database.DatabaseConnection; import org.dbunit.database.IDatabaseConnection; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.xml.FlatDtdDataSet; import org.dbunit.dataset.xml.FlatXmlDataSet; import org.dbunit.operation.DatabaseOperation; import org.opennms.acl.conf.Config; public abstract class DbUnit extends DBTestCase { public DbUnit() { } public static IDatabaseConnection setUpConnection() { System.out.println("DbUnit setUpConnection"); Config config = new Config(); if (dbConn == null) { Connection jdbcConnection = null; try { Class.forName(config.getDbDriver()); jdbcConnection = DriverManager.getConnection(config.getDbUrl(), config.getDbUser(), config.getDbPass()); dbConn = new DatabaseConnection(jdbcConnection); } catch (Exception e) { e.printStackTrace(); } } return dbConn; } public IDatabaseTester newDatabaseTester() throws Exception { return new DefaultDatabaseTester(setUpConnection()); } public static void main(String[] args) throws Exception { Config config = new Config(); Class.forName(config.getDbDriver()); Connection jdbcConnection = DriverManager.getConnection(config.getDbUrl(), config.getDbUser(), config.getDbPass()); IDatabaseConnection connection = new DatabaseConnection(jdbcConnection, "public"); // dtd FlatDtdDataSet.write(connection.createDataSet(), new FileOutputStream("src/test/java/it/pronetics/acl/conf/dbunit/database-schema.dtd")); // export IDataSet fullDataSet = connection.createDataSet(); FlatXmlDataSet.write(fullDataSet, new FileOutputStream("src/test/java/opennms/opennms/acl/conf/dbunit/full.xml")); } public void prepareDb() { try { try { DatabaseOperation.CLEAN_INSERT.execute(getConnection(), getDataSet()); } finally { // connection.close(); } } catch (DatabaseUnitException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } catch (Throwable e) { e.printStackTrace(); } ++operation; } public void cleanDb() { try { try { DatabaseOperation.DELETE_ALL.execute(getConnection(), getDataSet()); } finally { // connection.close(); } } catch (Throwable e) { /* do we care? System.err.print("An error occurred deleting dataset: "); e.printStackTrace(); */ } ++operation; } public static void closeConnection() { System.out.println("DbUnit closeConnection"); if (dbConn != null) { try { dbConn.close(); } catch (SQLException e) { e.printStackTrace(); } finally { dbConn = null; System.gc(); } } System.out.println("Total DbUnit Operation:" + operation); } private static IDatabaseConnection dbConn = setUpConnection(); private static int operation; }