View Javadoc
1   package com.opencsv.util;
2   
3   import com.opencsv.ICSVParser;
4   import com.opencsv.RFC4180Parser;
5   
6   import java.io.BufferedReader;
7   import java.io.StringReader;
8   import java.util.ArrayList;
9   import java.util.List;
10  
11  /**
12   * The purpose of this class is to make it easier to build test data strings for tests.
13   *
14   * @author scott
15   */
16  public class MockDataBuilder {
17  
18      private String headerString;
19      private final List<String> dataRows = new ArrayList<>();
20      RFC4180Parser parser = new RFC4180Parser();
21  
22      public void setHeaderString(String headerString) {
23          this.headerString = headerString;
24      }
25  
26      public void addDataRow(String row) {
27          dataRows.add(row);
28      }
29  
30      public void addColumns(String... values) {
31          dataRows.add(parser.parseToLine(values, true));
32      }
33  
34      public String buildDataString() {
35          StringBuilder builder = new StringBuilder(ICSVParser.INITIAL_READ_SIZE);
36          if (headerString != null && !headerString.trim().isEmpty()) {
37              builder.append(headerString);
38              builder.append(ICSVParser.NEWLINE);
39          }
40          for (String row : dataRows) {
41              builder.append(row);
42              builder.append(ICSVParser.NEWLINE);
43          }
44          return builder.toString();
45      }
46  
47      /**
48       * @return a StringReader that contains the data input from the MockDataBuilder.
49       * @see StringReader
50       */
51      public StringReader buildStringReader() {
52          return new StringReader(buildDataString());
53      }
54  
55      /**
56       * @return a BufferedReader that contains the data input from the MockDataBuilder.
57       * @see BufferedReader
58       */
59      public BufferedReader buildBufferedReader() {
60          return new BufferedReader(buildStringReader());
61      }
62  }