Package org.exolab.jms.tools.migration

Source Code of org.exolab.jms.tools.migration.DataDumper

/**
* Redistribution and use of this software and associated documentation
* ("Software"), with or without modification, are permitted provided
* that the following conditions are met:
*
* 1. Redistributions of source code must retain copyright
*    statements and notices.  Redistributions must also contain a
*    copy of this document.
*
* 2. Redistributions in binary form must reproduce the
*    above copyright notice, this list of conditions and the
*    following disclaimer in the documentation and/or other
*    materials provided with the distribution.
*
* 3. The name "Exolab" must not be used to endorse or promote
*    products derived from this Software without prior written
*    permission of Exoffice Technologies.  For written permission,
*    please contact info@exolab.org.
*
* 4. Products derived from this Software may not be called "Exolab"
*    nor may "Exolab" appear in their names without prior written
*    permission of Exoffice Technologies. Exolab is a registered
*    trademark of Exoffice Technologies.
*
* 5. Due credit should be given to the Exolab Project
*    (http://www.exolab.org/).
*
* THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS
* ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
* EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
* Copyright 2005 (C) Exoffice Technologies Inc. All Rights Reserved.
*
* $Id: DataDumper.java,v 1.1 2005/10/20 14:07:03 tanderson Exp $
*/
package org.exolab.jms.tools.migration;

import java.io.FileOutputStream;
import java.sql.Connection;

import org.apache.derby.jdbc.EmbeddedDataSource;

import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.exolab.jms.config.Configuration;
import org.exolab.jms.config.ConfigurationReader;
import org.exolab.jms.persistence.DatabaseService;
import org.exolab.jms.persistence.PersistenceAdapter;
import org.exolab.jms.util.CommandLine;

/**
* Export data from a database, in DBunit format.
*
* @author <a href="mailto:tma@netspace.net.au">Tim Anderson</a>
* @version $Revision: 1.1 $ $Date: 2005/10/20 14:07:03 $
*/
public class DataDumper {

    /**
     * Main line.
     *
     * @param args command line args
     * @throws Exception for any errror
     */
    public static void main(String[] args) throws Exception {
        CommandLine commands = new CommandLine(args);

        String dbPath = commands.value("db");
        String configPath = commands.value("config");
        String outputPath = commands.value("output");
        if ((dbPath == null && configPath == null) || outputPath == null) {
            usage();
            System.exit(1);
        } else {
            try {
                Connection connection;
                if (dbPath != null) {
                    EmbeddedDataSource dataSource = new EmbeddedDataSource();
                    dataSource.setDatabaseName(dbPath);
                    connection = dataSource.getConnection();

                } else {
                    Configuration config = ConfigurationReader.read(configPath);
                    DatabaseService dbService = new DatabaseService(config);
                    dbService.start();

                    PersistenceAdapter adapter = dbService.getAdapter();
                    connection = adapter.getConnection();
                }
                IDatabaseConnection dbConnection
                        = new DatabaseConnection(connection);
                IDataSet fullDataSet = dbConnection.createDataSet();
                FlatXmlDataSet.write(fullDataSet,
                                     new FileOutputStream(outputPath));
            } catch (Exception exception) {
                exception.printStackTrace();
                System.exit(1);
            }
        }

    }

    /**
     * Displays usage information for this tool when invoked from the command
     * line.
     */
    private static void usage() {
        System.err.println(
                "usage: " + DataDumper.class.getName()
                + " <arguments> [options]\n"
                + "arguments:\n"
                + "  -config <path>  specifies the path to an OpenJMS "
                + "configuration file\n"
                + "  -output <path>  specifies the path to output data to\n");
    }


}
TOP

Related Classes of org.exolab.jms.tools.migration.DataDumper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.