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/08 14:22:36 UTC
svn commit: r609966 -
/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java
Author: sebb
Date: Tue Jan 8 05:22:30 2008
New Revision: 609966
URL: http://svn.apache.org/viewvc?rev=609966&view=rev
Log:
Add optional header parameter for saveCSVStats() and ensure items are quoted as necessary.
Modified:
jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java
Modified: jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java
URL: http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java?rev=609966&r1=609965&r2=609966&view=diff
==============================================================================
--- jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java (original)
+++ jakarta/jmeter/trunk/src/core/org/apache/jmeter/save/CSVSaveService.java Tue Jan 8 05:22:30 2008
@@ -589,21 +589,47 @@
* Not sure if it should go in the newer SaveService instead of here.
* if we ever decide to get rid of this class, we'll need to move this
* method to the new save service.
- * @param data
- * @param writer
+ * @param data vector of data rows
+ * @param writer output file
* @throws IOException
*/
public static void saveCSVStats(Vector data, FileWriter writer) throws IOException {
+ saveCSVStats(data, writer, null);
+ }
+
+ /**
+ * Method will save aggregate statistics as CSV. For now I put it here.
+ * Not sure if it should go in the newer SaveService instead of here.
+ * if we ever decide to get rid of this class, we'll need to move this
+ * method to the new save service.
+ * @param data vector of data rows
+ * @param writer output file
+ * @param headers header names (if non-null)
+ * @throws IOException
+ */
+ public static void saveCSVStats(Vector data, FileWriter writer, String headers[]) throws IOException {
+ final char DELIM = ',';
+ final String LINE_SEP = System.getProperty("line.separator"); // $NON-NLS-1$
+ final char SPECIALS[] = new char[] {DELIM, QUOTING_CHAR};
+ if (headers != null){
+ for (int i=0; i < headers.length; i++){
+ if (i>0) {
+ writer.write(DELIM);
+ }
+ writer.write(escapeDelimiters(headers[i],SPECIALS));
+ }
+ writer.write(LINE_SEP);
+ }
for (int idx=0; idx < data.size(); idx++) {
Vector row = (Vector)data.elementAt(idx);
for (int idy=0; idy < row.size(); idy++) {
if (idy > 0) {
- writer.write(","); // $NON-NLS-1$
+ writer.write(DELIM);
}
Object item = row.elementAt(idy);
- writer.write( String.valueOf(item) );
+ writer.write( escapeDelimiters(String.valueOf(item),SPECIALS));
}
- writer.write(System.getProperty("line.separator")); // $NON-NLS-1$
+ writer.write(LINE_SEP);
}
}
@@ -641,7 +667,7 @@
private final char[] specials;
private boolean addDelim;
public StringEscaper(char delim) {
- specials = new char[] {delim, '"', CharUtils.CR, CharUtils.LF};
+ specials = new char[] {delim, QUOTING_CHAR, CharUtils.CR, CharUtils.LF};
addDelim=false; // Don't add delimiter first time round
}
@@ -848,7 +874,7 @@
*/
// State of the parser
private static final int INITIAL=0, PLAIN = 1, QUOTED = 2, EMBEDDEDQUOTE = 3;
- public static final char QUOTING_CHAR = '"';
+ public static final char QUOTING_CHAR = '"'; // escape character
private static String[] csvReadFile(BufferedReader infile, char delim) throws IOException {
int ch;
int state = INITIAL;
---------------------------------------------------------------------
To unsubscribe, e-mail: jmeter-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jmeter-dev-help@jakarta.apache.org