1 /*** 2 * Redistribution and use of this software and associated documentation 3 * ("Software"), with or without modification, are permitted provided 4 * that the following conditions are met: 5 * 6 * 1. Redistributions of source code must retain copyright 7 * statements and notices. Redistributions must also contain a 8 * copy of this document. 9 * 10 * 2. Redistributions in binary form must reproduce the 11 * above copyright notice, this list of conditions and the 12 * following disclaimer in the documentation and/or other 13 * materials provided with the distribution. 14 * 15 * 3. The name "Exolab" must not be used to endorse or promote 16 * products derived from this Software without prior written 17 * permission of Exoffice Technologies. For written permission, 18 * please contact info@exolab.org. 19 * 20 * 4. Products derived from this Software may not be called "Exolab" 21 * nor may "Exolab" appear in their names without prior written 22 * permission of Exoffice Technologies. Exolab is a registered 23 * trademark of Exoffice Technologies. 24 * 25 * 5. Due credit should be given to the Exolab Project 26 * (http://www.exolab.org/). 27 * 28 * THIS SOFTWARE IS PROVIDED BY EXOFFICE TECHNOLOGIES AND CONTRIBUTORS 29 * ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT 30 * NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND 31 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL 32 * EXOFFICE TECHNOLOGIES OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 33 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 34 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 35 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 36 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 37 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 38 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 39 * OF THE POSSIBILITY OF SUCH DAMAGE. 40 * 41 * Copyright 2005 (C) Exoffice Technologies Inc. All Rights Reserved. 42 * 43 * $Id: DataDumper.java,v 1.1 2005/10/20 14:07:03 tanderson Exp $ 44 */ 45 package org.exolab.jms.tools.migration; 46 47 import java.io.FileOutputStream; 48 import java.sql.Connection; 49 50 import org.apache.derby.jdbc.EmbeddedDataSource; 51 52 import org.dbunit.database.DatabaseConnection; 53 import org.dbunit.database.IDatabaseConnection; 54 import org.dbunit.dataset.IDataSet; 55 import org.dbunit.dataset.xml.FlatXmlDataSet; 56 import org.exolab.jms.config.Configuration; 57 import org.exolab.jms.config.ConfigurationReader; 58 import org.exolab.jms.persistence.DatabaseService; 59 import org.exolab.jms.persistence.PersistenceAdapter; 60 import org.exolab.jms.util.CommandLine; 61 62 /*** 63 * Export data from a database, in DBunit format. 64 * 65 * @author <a href="mailto:tma@netspace.net.au">Tim Anderson</a> 66 * @version $Revision: 1.1 $ $Date: 2005/10/20 14:07:03 $ 67 */ 68 public class DataDumper { 69 70 /*** 71 * Main line. 72 * 73 * @param args command line args 74 * @throws Exception for any errror 75 */ 76 public static void main(String[] args) throws Exception { 77 CommandLine commands = new CommandLine(args); 78 79 String dbPath = commands.value("db"); 80 String configPath = commands.value("config"); 81 String outputPath = commands.value("output"); 82 if ((dbPath == null && configPath == null) || outputPath == null) { 83 usage(); 84 System.exit(1); 85 } else { 86 try { 87 Connection connection; 88 if (dbPath != null) { 89 EmbeddedDataSource dataSource = new EmbeddedDataSource(); 90 dataSource.setDatabaseName(dbPath); 91 connection = dataSource.getConnection(); 92 93 } else { 94 Configuration config = ConfigurationReader.read(configPath); 95 DatabaseService dbService = new DatabaseService(config); 96 dbService.start(); 97 98 PersistenceAdapter adapter = dbService.getAdapter(); 99 connection = adapter.getConnection(); 100 } 101 IDatabaseConnection dbConnection 102 = new DatabaseConnection(connection); 103 IDataSet fullDataSet = dbConnection.createDataSet(); 104 FlatXmlDataSet.write(fullDataSet, 105 new FileOutputStream(outputPath)); 106 } catch (Exception exception) { 107 exception.printStackTrace(); 108 System.exit(1); 109 } 110 } 111 112 } 113 114 /*** 115 * Displays usage information for this tool when invoked from the command 116 * line. 117 */ 118 private static void usage() { 119 System.err.println( 120 "usage: " + DataDumper.class.getName() 121 + " <arguments> [options]\n" 122 + "arguments:\n" 123 + " -config <path> specifies the path to an OpenJMS " 124 + "configuration file\n" 125 + " -output <path> specifies the path to output data to\n"); 126 } 127 128 129 }