You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jmeter-dev@jakarta.apache.org by se...@apache.org on 2008/01/09 20:41:05 UTC

svn commit: r610525 - in /jakarta/jmeter/trunk: src/components/org/apache/jmeter/visualizers/StatVisualizer.java src/components/org/apache/jmeter/visualizers/SummaryReport.java xdocs/changes.xml

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: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org