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