Author: sebb
Date: Wed Jan  9 11:41:00 2008
New Revision: 610525

URL: http://svn.apache.org/viewvc?rev=610525&view=rev
Log:
Added "Save Table Data" buttons to Aggregate and Summary Reports - save table 
as CSV format with header

Modified:
    
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
    
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
    jakarta/jmeter/trunk/xdocs/changes.xml

Modified: 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java?rev=610525&r1=610524&r2=610525&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
 (original)
+++ 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/StatVisualizer.java
 Wed Jan  9 11:41:00 2008
@@ -20,6 +20,12 @@
 
 import java.awt.BorderLayout;
 import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
 //import java.awt.event.MouseAdapter;
 //import java.awt.event.MouseEvent;
 //import java.util.Arrays;
@@ -28,6 +34,8 @@
 import java.util.Map;
 
 import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
@@ -37,16 +45,20 @@
 //import javax.swing.table.AbstractTableModel;
 //import javax.swing.table.TableModel;
 
+import org.apache.jmeter.gui.util.FileDialoger;
 import org.apache.jmeter.samplers.Clearable;
 import org.apache.jmeter.samplers.SampleResult;
-import org.apache.jmeter.testelement.TestElement;
+import org.apache.jmeter.save.CSVSaveService;
 import org.apache.jmeter.util.JMeterUtils;
 import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
 import org.apache.jorphan.gui.NumberRenderer;
 import org.apache.jorphan.gui.ObjectTableModel;
 import org.apache.jorphan.gui.RateRenderer;
 import org.apache.jorphan.gui.RendererUtils;
+import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.reflect.Functor;
+import org.apache.jorphan.util.JOrphanUtils;
+import org.apache.log.Logger;
 
 /**
  * Aggregrate Table-Based Reporting Visualizer for JMeter. Props to the people
@@ -55,8 +67,11 @@
  * you!
  * 
  */
-public class StatVisualizer extends AbstractVisualizer implements Clearable {
-       private final String[] COLUMNS = { 
+public class StatVisualizer extends AbstractVisualizer implements Clearable, 
ActionListener {
+    
+       private static final Logger log = LoggingManager.getLoggerForClass();
+
+    private final String[] COLUMNS = { 
             JMeterUtils.getResString("sampler_label"),  //$NON-NLS-1$
                        JMeterUtils.getResString("aggregate_report_count"),  
//$NON-NLS-1$
             JMeterUtils.getResString("average"),  //$NON-NLS-1$
@@ -75,6 +90,9 @@
 
        protected JScrollPane myScrollPane;
 
+    protected JButton saveTable = 
+        new JButton(JMeterUtils.getResString("aggregate_graph_save_table"));   
                //$NON-NLS-1$
+    
        transient private ObjectTableModel model;
 
        Map tableRows = Collections.synchronizedMap(new HashMap());
@@ -152,15 +170,6 @@
                model.addRow(tableRows.get(TOTAL_ROW_LABEL));
        }
 
-       // overrides AbstractVisualizer
-       // forces GUI update after sample file has been read
-       public TestElement createTestElement() {
-               TestElement t = super.createTestElement();
-
-               // sleepTill = 0;
-               return t;
-       }
-
        /**
         * Main visualizer setup.
         */
@@ -184,6 +193,26 @@
                myScrollPane = new JScrollPane(myJTable);
                this.add(mainPanel, BorderLayout.NORTH);
                this.add(myScrollPane, BorderLayout.CENTER);
+               saveTable.addActionListener(this);
+               this.add(saveTable,BorderLayout.SOUTH);
+       }
+
+       public void actionPerformed(ActionEvent ev) {
+               if (ev.getSource() == saveTable) {
+               JFileChooser chooser = 
FileDialoger.promptToSaveFile("aggregate.csv");//$NON-NLS-1$
+                       File output = chooser.getSelectedFile();
+                       FileWriter writer = null;
+                       try {
+                           writer = new FileWriter(output);
+                           CSVSaveService.saveCSVStats(model,writer);
+                       } catch (FileNotFoundException e) {
+                           log.warn(e.getMessage());
+                       } catch (IOException e) {
+                           log.warn(e.getMessage());
+                       } finally {
+                           JOrphanUtils.closeQuietly(writer);
+                       }
+               }
        }
 }
 

Modified: 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java?rev=610525&r1=610524&r2=610525&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
 (original)
+++ 
jakarta/jmeter/trunk/src/components/org/apache/jmeter/visualizers/SummaryReport.java
 Wed Jan  9 11:41:00 2008
@@ -20,11 +20,19 @@
 
 import java.awt.BorderLayout;
 import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
 import javax.swing.BoxLayout;
+import javax.swing.JButton;
+import javax.swing.JFileChooser;
 import javax.swing.JPanel;
 import javax.swing.JScrollPane;
 import javax.swing.JTable;
@@ -32,8 +40,10 @@
 import javax.swing.border.EmptyBorder;
 import javax.swing.table.TableCellRenderer;
 
+import org.apache.jmeter.gui.util.FileDialoger;
 import org.apache.jmeter.samplers.Clearable;
 import org.apache.jmeter.samplers.SampleResult;
+import org.apache.jmeter.save.CSVSaveService;
 import org.apache.jmeter.util.Calculator;
 import org.apache.jmeter.util.JMeterUtils;
 import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
@@ -41,13 +51,19 @@
 import org.apache.jorphan.gui.ObjectTableModel;
 import org.apache.jorphan.gui.RateRenderer;
 import org.apache.jorphan.gui.RendererUtils;
+import org.apache.jorphan.logging.LoggingManager;
 import org.apache.jorphan.reflect.Functor;
+import org.apache.jorphan.util.JOrphanUtils;
+import org.apache.log.Logger;
 
 /**
  * Simpler (lower memory) version of Aggregate Report (StatVisualizer).
  * Excludes the Median and 90% columns, which are expensive in memory terms
  */
-public class SummaryReport extends AbstractVisualizer implements Clearable {
+public class SummaryReport extends AbstractVisualizer implements Clearable, 
ActionListener {
+       
+       private static final Logger log = LoggingManager.getLoggerForClass();
+
        private final String[] COLUMNS = { 
             JMeterUtils.getResString("sampler_label"),               
//$NON-NLS-1$
                        JMeterUtils.getResString("aggregate_report_count"),     
 //$NON-NLS-1$
@@ -68,6 +84,9 @@
 
        protected JScrollPane myScrollPane;
 
+    protected JButton saveTable = 
+        new JButton(JMeterUtils.getResString("aggregate_graph_save_table"));   
                //$NON-NLS-1$
+    
        transient private ObjectTableModel model;
 
        Map tableRows = Collections.synchronizedMap(new HashMap());
@@ -166,5 +185,25 @@
                myScrollPane = new JScrollPane(myJTable);
                this.add(mainPanel, BorderLayout.NORTH);
                this.add(myScrollPane, BorderLayout.CENTER);
+               saveTable.addActionListener(this);
+               this.add(saveTable,BorderLayout.SOUTH);
+       }
+
+       public void actionPerformed(ActionEvent ev) {
+               if (ev.getSource() == saveTable) {
+               JFileChooser chooser = 
FileDialoger.promptToSaveFile("summary.csv");//$NON-NLS-1$
+                       File output = chooser.getSelectedFile();
+                       FileWriter writer = null;
+                       try {
+                           writer = new FileWriter(output);
+                           CSVSaveService.saveCSVStats(model,writer);
+                       } catch (FileNotFoundException e) {
+                           log.warn(e.getMessage());
+                       } catch (IOException e) {
+                           log.warn(e.getMessage());
+                       } finally {
+                           JOrphanUtils.closeQuietly(writer);
+                       }
+               }
        }
 }

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=610525&r1=610524&r2=610525&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Wed Jan  9 11:41:00 2008
@@ -86,6 +86,7 @@
 <li>Can specify list of variable names to be written to JTL files (CSV and XML 
format)</li>
 <li>Now checks that the remoteStart options -r and -R are only used with 
non_GUI -n option</li>
 <li>Bug 44184 - Allow header to be saved with Aggregate Graph data</li>
+<li>Added "Save Table Data" buttons to Aggregate and Summary Reports - save 
table as CSV format with header</li>
 </ul>
 
 <h4>Non-functional changes</h4>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to