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.
|