[Squirrel-sql-commits] SF.net SVN: squirrel-sql:[6459] trunk/sql12/fw/src/main
A Java SQL client for any JDBC compliant database
Brought to you by:
colbell,
gerdwagner
From: <wi...@us...> - 2011-10-08 14:24:16
|
Revision: 6459 http://squirrel-sql.svn.sourceforge.net/squirrel-sql/?rev=6459&view=rev Author: wis775 Date: 2011-10-08 14:24:10 +0000 (Sat, 08 Oct 2011) Log Message: ----------- Store result of SQL in file: Let the user take the choice, if he want to export the entire result set or only n lines. Modified Paths: -------------- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportCommand.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportCsvController.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvController.java trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvDlg.java trunk/sql12/fw/src/main/resources/net/sourceforge/squirrel_sql/fw/gui/action/I18NStrings.properties Added Paths: ----------- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportDialog.java Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportCommand.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportCommand.java 2011-10-08 13:37:33 UTC (rev 6458) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportCommand.java 2011-10-08 14:24:10 UTC (rev 6459) @@ -49,6 +49,8 @@ // i18n[ResultSetExportCommand.errorExecuteStatement="Could not create the data for exporting."] String ERROR_EXECUTE_STATEMENT = s_stringMgr .getString("ResultSetExportCommand.errorExecuteStatement"); + + String EXECUTING_QUERY = s_stringMgr.getString("ResultSetExportCommand.executingQuery"); } @@ -86,7 +88,11 @@ @Override protected IExportData createExportData(TableExportCsvController ctrl) throws ExportDataException{ try { - super.progress("Running the query"); + super.progress(i18n.EXECUTING_QUERY); + ResultSetExportCsvController controller = (ResultSetExportCsvController)ctrl; + if(controller.exportComplete() == false){ + stmt.setMaxRows(controller.getMaxRows()); + } this.resultSet = stmt.executeQuery(sql); return new ResultSetExportData(this.resultSet, dialect); } catch (SQLException e) { Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportCsvController.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportCsvController.java 2011-10-08 13:37:33 UTC (rev 6458) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportCsvController.java 2011-10-08 14:24:10 UTC (rev 6459) @@ -18,14 +18,26 @@ */ package net.sourceforge.squirrel_sql.fw.gui.action; +import java.util.prefs.Preferences; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; + + /** - * A specialization of {@link TableExportCsvController}, that tells the user, that exporting to Excel is dangerous, if the SQL returns a huge data set. + * A specialization of {@link TableExportCsvController}, that honors that the source is a SQL-Statement. + * The following behavior is changed: + * <ul> + * <li>Tell the user, that exporting to Excel is dangerous, if the SQL returns a huge data set.</li> + * <li>Let the user choose, if he want to export the whole result-set or only the first n lines</li> + * </ul> + * * @author Stefan Willinger * */ public class ResultSetExportCsvController extends TableExportCsvController { + private static final String PREF_KEY_LIMIT_ROWS = "SquirrelSQL.sqlexport.limitRows"; /** * @see net.sourceforge.squirrel_sql.fw.gui.action.TableExportCsvController#shouldWarnIfExcel() */ @@ -33,5 +45,58 @@ protected boolean shouldWarnIfExcel() { return true; } + + /** + * @see net.sourceforge.squirrel_sql.fw.gui.action.TableExportCsvController#createDialog() + */ + @Override + protected ResultSetExportDialog createDialog() { + final ResultSetExportDialog dlg = new ResultSetExportDialog(); + + dlg.radComplete.addChangeListener(new ChangeListener() { + @Override + public void stateChanged(ChangeEvent e) { + if(dlg.radComplete.isSelected()){ + dlg.txtLimitRows.setEnabled(false); + }else{ + dlg.txtLimitRows.setEnabled(true); + } + } + }); + return dlg; + } + + /** + * @see net.sourceforge.squirrel_sql.fw.gui.action.TableExportCsvController#writePrefs() + */ + @Override + protected void writePrefs() { + super.writePrefs(); + ResultSetExportDialog dlg = (ResultSetExportDialog) super.getDialog(); + + Preferences.userRoot().put(PREF_KEY_LIMIT_ROWS, dlg.txtLimitRows.getText()); + } + + /** + * @see net.sourceforge.squirrel_sql.fw.gui.action.TableExportCsvController#initSelectionPanel(java.util.prefs.Preferences) + */ + @Override + protected void initSelectionPanel(Preferences userRoot) { + super.initSelectionPanel(userRoot); + + ResultSetExportDialog dlg = (ResultSetExportDialog) super.getDialog(); + dlg.txtLimitRows.setText(userRoot.get(PREF_KEY_LIMIT_ROWS, "100")); + + if(dlg.radComplete.isSelected()){ + dlg.txtLimitRows.setEnabled(false); + } + } + public int getMaxRows(){ + ResultSetExportDialog dlg = (ResultSetExportDialog) super.getDialog(); + return dlg.txtLimitRows.getInt(); + } + + + } Added: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportDialog.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportDialog.java (rev 0) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportDialog.java 2011-10-08 14:24:10 UTC (rev 6459) @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2011 Stefan Willinger + * wi...@us... + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +package net.sourceforge.squirrel_sql.fw.gui.action; + +import java.awt.Component; +import java.awt.GridBagConstraints; +import java.awt.GridBagLayout; +import java.awt.Insets; + +import javax.swing.ButtonGroup; +import javax.swing.JPanel; +import javax.swing.JRadioButton; + +import net.sourceforge.squirrel_sql.fw.gui.IntegerField; +import net.sourceforge.squirrel_sql.fw.util.StringManager; +import net.sourceforge.squirrel_sql.fw.util.StringManagerFactory; + +/** + * A customized {@link TableExportCsvDlg}. + * This customized dialog offer the option to export the whole or only the frist n rows of the result-set. + * @author Stefan Willinger + * + */ +public class ResultSetExportDialog extends TableExportCsvDlg { + + static final StringManager s_stringMgr = StringManagerFactory + .getStringManager(ResultSetExportCommand.class); + + static interface i18n { + String EXPORT_COMPLETE = s_stringMgr.getString("ResultSetExportDialog.executingQuery"); + String LIMIT_ROWS = s_stringMgr.getString("ResultSetExportDialog.limitRows"); + } + + IntegerField txtLimitRows; + + /** + * @see net.sourceforge.squirrel_sql.fw.gui.action.TableExportCsvDlg#getSelelectionPanel() + */ + @Override + protected Component getSelelectionPanel() { + JPanel ret = new JPanel(new GridBagLayout()); + + GridBagConstraints gbc; + + radComplete = new JRadioButton(i18n.EXPORT_COMPLETE); + gbc = new GridBagConstraints(0, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 5), 0, 0); + ret.add(radComplete, gbc); + + radSelection = new JRadioButton(i18n.LIMIT_ROWS); + gbc = new GridBagConstraints(1, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); + ret.add(radSelection, gbc); + + gbc = new GridBagConstraints(2, 0, 1, 1, 0, 0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); + txtLimitRows = new IntegerField(5); + ret.add(txtLimitRows, gbc); + + gbc = new GridBagConstraints(3, 0, 1, 1, 1, 0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0); + ret.add(new JPanel(), gbc); + + + ButtonGroup bg = new ButtonGroup(); + bg.add(radComplete); + bg.add(radSelection); + + return ret; + } + +} Property changes on: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/ResultSetExportDialog.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvController.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvController.java 2011-10-08 13:37:33 UTC (rev 6458) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvController.java 2011-10-08 14:24:10 UTC (rev 6459) @@ -51,7 +51,7 @@ TableExportCsvController() { - _dlg = new TableExportCsvDlg(); + _dlg = createDialog(); initDlg(); @@ -76,6 +76,10 @@ } + protected TableExportCsvDlg createDialog() { + return new TableExportCsvDlg(); + } + private void onSeparatorCharChanged(KeyEvent e) { SwingUtilities.invokeLater(new Runnable() @@ -424,7 +428,7 @@ return false; } -private void writePrefs() +protected void writePrefs() { Preferences.userRoot().put(PREF_KEY_CSV_FILE, _dlg.txtFile.getText()); Preferences.userRoot().put(PREF_KEY_CSV_ENCODING, _dlg.charsets.getSelectedItem().toString()); @@ -441,7 +445,7 @@ Preferences.userRoot().put(PREF_KEY_COMMAND, _dlg.txtCommand.getText()); } - + private void initDlg() { Preferences userRoot = Preferences.userRoot(); @@ -479,14 +483,7 @@ - if(userRoot.getBoolean(PREF_KEY_EXPORT_COMPLETE, true)) - { - _dlg.radComplete.setSelected(true); - } - else - { - _dlg.radSelection.setSelected(true); - } + initSelectionPanel(userRoot); if(userRoot.getBoolean(PREF_KEY_USE_GLOBAL_PREFS_FORMATING, true)) { @@ -509,6 +506,21 @@ _dlg._lineSeparators.setSelectedItem(preferredLineSeparator); } + /** + * Initialize the values for the selection panel from the saved properties. + * @param userRoot the saved properties. + */ + protected void initSelectionPanel(Preferences userRoot) { + if(userRoot.getBoolean(PREF_KEY_EXPORT_COMPLETE, true)) + { + _dlg.radComplete.setSelected(true); + } + else + { + _dlg.radSelection.setSelected(true); + } + } + private void onChkExecCommand() { _dlg.txtCommand.setEnabled(_dlg.chkExecCommand.isSelected()); @@ -642,4 +654,8 @@ } } + + protected TableExportCsvDlg getDialog() { + return this._dlg; + } } Modified: trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvDlg.java =================================================================== --- trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvDlg.java 2011-10-08 13:37:33 UTC (rev 6458) +++ trunk/sql12/fw/src/main/java/net/sourceforge/squirrel_sql/fw/gui/action/TableExportCsvDlg.java 2011-10-08 14:24:10 UTC (rev 6459) @@ -227,7 +227,10 @@ } - private Component getSelelectionPanel() + /** + * Create a panel for the selection options. + */ + protected Component getSelelectionPanel() { JPanel ret = new JPanel(new GridBagLayout()); Modified: trunk/sql12/fw/src/main/resources/net/sourceforge/squirrel_sql/fw/gui/action/I18NStrings.properties =================================================================== --- trunk/sql12/fw/src/main/resources/net/sourceforge/squirrel_sql/fw/gui/action/I18NStrings.properties 2011-10-08 13:37:33 UTC (rev 6458) +++ trunk/sql12/fw/src/main/resources/net/sourceforge/squirrel_sql/fw/gui/action/I18NStrings.properties 2011-10-08 14:24:10 UTC (rev 6459) @@ -55,3 +55,7 @@ TableExportCsvDlg.useGlobalPrefsFormatingExcel=Use formatting as configured in Global Prefs (recommended for MS Excel) ResultSetExportCommand.errorExecuteStatement=An error was encountered while attempting to build the data set for export. +ResultSetExportCommand.executingQuery=Executing the query + +ResultSetExportDialog.executingQuery=Export the complete result set +ResultSetExportDialog.limitRows=Limit rows to \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |