1
2
3
4
5
6
7
8
9
10
11
12
13 package com.eviware.soapui.impl.wsdl.loadtest.data.actions;
14
15 import java.awt.event.ActionEvent;
16 import java.io.File;
17 import java.io.IOException;
18 import java.io.PrintWriter;
19
20 import javax.swing.AbstractAction;
21 import javax.swing.Action;
22 import javax.swing.table.TableModel;
23
24 import com.eviware.soapui.SoapUI;
25 import com.eviware.soapui.impl.wsdl.panels.loadtest.JStatisticsHistoryGraph;
26 import com.eviware.soapui.support.UISupport;
27
28 /***
29 * Simple samplesmodel exporter, creates a comma-separated file containing a
30 * header row and values for each test step
31 *
32 * @author Ole.Matzura
33 */
34
35 public class ExportSamplesHistoryAction extends AbstractAction
36 {
37 private final JStatisticsHistoryGraph graph;
38
39 public ExportSamplesHistoryAction( JStatisticsHistoryGraph historyGraph )
40 {
41 putValue( Action.SMALL_ICON, UISupport.createImageIcon( "/export.gif" ) );
42 putValue( Action.SHORT_DESCRIPTION, "Export samples history to a file" );
43
44 this.graph = historyGraph;
45 }
46
47 public void actionPerformed( ActionEvent e )
48 {
49 try
50 {
51 TableModel model = graph.getModel();
52 if( model.getRowCount() == 0 )
53 {
54 UISupport.showErrorMessage( "No data to export!" );
55 return;
56 }
57
58 File file = UISupport.getFileDialogs().saveAs( this, "Select file for export" );
59 if( file == null )
60 return;
61
62 int cnt = exportToFile( file, model );
63
64 UISupport.showInfoMessage( "Saved " + cnt + " rows to file [" + file.getName() + "]" );
65 }
66 catch( IOException e1 )
67 {
68 SoapUI.logError( e1 );
69 }
70 }
71
72 private int exportToFile( File file, TableModel model ) throws IOException
73 {
74 PrintWriter writer = new PrintWriter( file );
75 writerHeader( writer, model );
76 int cnt = writeData( writer, model );
77 writer.flush();
78 writer.close();
79 return cnt;
80 }
81
82 private int writeData( PrintWriter writer, TableModel model )
83 {
84 int c = 0;
85 for( ; c < model.getRowCount(); c++ )
86 {
87 for( int i = 0; i < model.getColumnCount(); i++ )
88 {
89 if( i > 0 )
90 writer.print( ',' );
91
92 writer.print( model.getValueAt( c, i ) );
93 }
94
95 writer.println();
96 }
97
98 return c;
99 }
100
101 private void writerHeader( PrintWriter writer, TableModel model )
102 {
103 for( int i = 0; i < model.getColumnCount(); i++ )
104 {
105 if( i > 0 )
106 writer.print( ',' );
107
108 writer.print( model.getColumnName( i ) );
109 }
110
111 writer.println();
112 }
113 }