/* * Exports data in various formats from a database * */ package com.pugh.sockso.db; import com.pugh.sockso.Utils; import com.pugh.sockso.templates.TXmlResultSet; import com.pugh.sockso.templates.TCsvResultSet; import com.pugh.sockso.templates.json.TResultSet; import java.sql.PreparedStatement; import java.sql.ResultSet; import org.apache.log4j.Logger; import org.jamon.Renderer; public class DBExporter { private static final Logger log = Logger.getLogger( DBExporter.class ); private final Database db; public static enum Format { XML, JSON, CSV }; /** * creates an exporter object ready to export data from * the specified database * * @param db * */ public DBExporter( final Database db ) { this.db = db; } /** * runs a query on the database then returns the results formatted * in the specified format * * @param sql * @param format * * @return * */ public String export( final String sql, final Format format ) { String data = null; PreparedStatement st = null; ResultSet rs = null; try { st = db.prepare( sql ); rs = st.executeQuery(); Renderer renderer = null; // xml if ( format.equals(Format.XML) ) { final TXmlResultSet tpl = new TXmlResultSet(); tpl.setResultSet( rs ); renderer = tpl.makeRenderer(); } // csv else if ( format.equals(Format.CSV) ) { final TCsvResultSet tpl = new TCsvResultSet(); tpl.setResultSet( rs ); renderer = tpl.makeRenderer(); } // json else if ( format.equals(Format.JSON) ) { final TResultSet tpl = new TResultSet(); tpl.setResultSet( rs ); renderer = tpl.makeRenderer(); } if ( renderer != null ) return renderer.asString(); } catch ( final Exception e ) { log.debug( e ); } finally { Utils.close( rs ); Utils.close( st ); } return data; } }