woolfel     2005/09/20 08:29:46

  Modified:    src/components/org/apache/jmeter/visualizers Tag: rel-2-1
                        StatGraphVisualizer.java
  Log:
  adding updates so users can easily save the table data as CSV with 1 click
  peter
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.1.2.4   +55 -2     
jakarta-jmeter/src/components/org/apache/jmeter/visualizers/Attic/StatGraphVisualizer.java
  
  Index: StatGraphVisualizer.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jmeter/src/components/org/apache/jmeter/visualizers/Attic/StatGraphVisualizer.java,v
  retrieving revision 1.1.2.3
  retrieving revision 1.1.2.4
  diff -u -r1.1.2.3 -r1.1.2.4
  --- StatGraphVisualizer.java  11 Sep 2005 01:52:50 -0000      1.1.2.3
  +++ StatGraphVisualizer.java  20 Sep 2005 15:29:45 -0000      1.1.2.4
  @@ -22,13 +22,19 @@
   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 java.util.Vector;
   
   import javax.swing.BoxLayout;
   import javax.swing.JButton;
   import javax.swing.JComponent;
  +import javax.swing.JFileChooser;
   import javax.swing.JLabel;
   import javax.swing.JPanel;
   import javax.swing.JScrollPane;
  @@ -39,17 +45,21 @@
   
   import org.apache.jmeter.gui.action.ActionRouter;
   import org.apache.jmeter.gui.action.SaveGraphics;
  +import org.apache.jmeter.gui.util.FileDialoger;
   import org.apache.jmeter.gui.util.HorizontalPanel;
   import org.apache.jmeter.gui.util.VerticalPanel;
   import org.apache.jmeter.samplers.Clearable;
   import org.apache.jmeter.samplers.SampleResult;
  +import org.apache.jmeter.save.OldSaveService;
   import org.apache.jmeter.testelement.TestElement;
   import org.apache.jmeter.util.JMeterUtils;
   import org.apache.jmeter.visualizers.gui.AbstractVisualizer;
   import org.apache.jorphan.gui.JLabeledChoice;
   import org.apache.jorphan.gui.JLabeledTextField;
   import org.apache.jorphan.gui.ObjectTableModel;
  +import org.apache.jorphan.logging.LoggingManager;
   import org.apache.jorphan.reflect.Functor;
  +import org.apache.log.Logger;
   
   /**
    * Aggregrate Table-Based Reporting Visualizer for JMeter. Props to the 
people
  @@ -61,6 +71,7 @@
    */
   public class StatGraphVisualizer extends AbstractVisualizer implements 
Clearable,
   ActionListener {
  +    transient private static Logger log = LoggingManager.getLoggerForClass();
        private final String[] COLUMNS = { JMeterUtils.getResString("URL"),
                        JMeterUtils.getResString("aggregate_report_count"), 
JMeterUtils.getResString("average"),
                        JMeterUtils.getResString("aggregate_report_median"), 
JMeterUtils.getResString("aggregate_report_90%_line"),
  @@ -103,6 +114,9 @@
       protected JButton saveGraph = 
           new JButton(JMeterUtils.getResString("aggregate_graph_save"));
       
  +    protected JButton saveTable = 
  +        new JButton(JMeterUtils.getResString("aggregate_graph_save_table"));
  +    
       JLabeledTextField graphTitle = 
           new 
JLabeledTextField(JMeterUtils.getResString("aggregate_graph_user_title"));
       JLabeledTextField graphWidth = 
  @@ -203,6 +217,7 @@
           buttonpanel.add(columns);
           buttonpanel.add(displayButton);
           buttonpanel.add(saveGraph);
  +        buttonpanel.add(saveTable);
           
           graph.add(graphLabel);
           graph.add(graphTitle);
  @@ -213,6 +228,7 @@
   
           displayButton.addActionListener(this);
           saveGraph.addActionListener(this);
  +        saveTable.addActionListener(this);
           graphScroll = new JScrollPane(graph);
           graphScroll.setAutoscrolls(true);
   
  @@ -279,6 +295,28 @@
           }
       }
       
  +    /**
  +     * We use this method to get the data, since we are using
  +     * ObjectTableModel, so the calling getDataVector doesn't 
  +     * work as expected.
  +     * @return
  +     */
  +    public Vector getAllTableData() {
  +        Vector data = new Vector();
  +        if (model.getRowCount() > 0) {
  +            for (int rw=0; rw < model.getRowCount(); rw++) {
  +                int cols = model.getColumnCount();
  +                Vector column = new Vector();
  +                data.add(column);
  +                for (int idx=0; idx < cols; idx++) {
  +                    Object val = model.getValueAt(rw,idx);
  +                    column.add(val);
  +                }
  +            }
  +        }
  +        return data;
  +    }
  +    
       public void actionPerformed(ActionEvent event) {
           if (event.getSource() == displayButton) {
               makeGraph();
  @@ -291,6 +329,21 @@
               } catch (Exception e) {
                   e.printStackTrace();
               }
  +        } else if (event.getSource() == saveTable) {
  +            JFileChooser chooser = FileDialoger.promptToSaveFile(
  +                    "statistics.csv");
  +            File output = chooser.getSelectedFile();
  +            FileWriter writer = null;
  +            try {
  +                writer = new FileWriter(output);
  +                Vector data = this.getAllTableData();
  +                OldSaveService.saveCSVStats(data,writer);
  +                writer.close();
  +            } catch (FileNotFoundException e) {
  +                log.warn(e.getMessage());
  +            } catch (IOException e) {
  +                log.warn(e.getMessage());
  +            }
           }
       }
       
  
  
  

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

Reply via email to