6
6
import cucumber .runtime .table .TableConverter ;
7
7
import cucumber .runtime .table .TableDiffException ;
8
8
import cucumber .runtime .table .TableDiffer ;
9
+ import cucumber .runtime .table .TablePrinter ;
9
10
import cucumber .runtime .xstream .LocalizedXStreams ;
10
- import gherkin .formatter . PrettyFormatter ;
11
- import gherkin .formatter . model . DataTableRow ;
12
- import gherkin .formatter . model . Row ;
11
+ import gherkin .pickles . PickleCell ;
12
+ import gherkin .pickles . PickleRow ;
13
+ import gherkin .pickles . PickleTable ;
13
14
14
15
import java .util .ArrayList ;
15
16
import java .util .Collections ;
24
25
public class DataTable {
25
26
26
27
private final List <List <String >> raw ;
27
- private final List < DataTableRow > gherkinRows ;
28
+ private final PickleTable pickleTable ;
28
29
private final TableConverter tableConverter ;
29
30
30
31
public static DataTable create (List <?> raw ) {
@@ -48,17 +49,19 @@ private static DataTable create(List<?> raw, Locale locale, String format, Strin
48
49
/**
49
50
* Creates a new DataTable. This constructor should not be called by Cucumber users - it's used internally only.
50
51
*
51
- * @param gherkinRows the underlying rows .
52
+ * @param pickleTable the underlying table .
52
53
* @param tableConverter how to convert the rows.
53
54
*/
54
- public DataTable (List < DataTableRow > gherkinRows , TableConverter tableConverter ) {
55
- this .gherkinRows = gherkinRows ;
55
+ public DataTable (PickleTable pickleTable , TableConverter tableConverter ) {
56
+ this .pickleTable = pickleTable ;
56
57
this .tableConverter = tableConverter ;
57
- int columns = gherkinRows . isEmpty () ? 0 : gherkinRows .get (0 ).getCells ().size ();
58
+ int columns = pickleTable . getRows (). isEmpty () ? 0 : pickleTable . getRows () .get (0 ).getCells ().size ();
58
59
List <List <String >> raw = new ArrayList <List <String >>();
59
- for (Row row : gherkinRows ) {
60
+ for (PickleRow row : pickleTable . getRows () ) {
60
61
List <String > list = new ArrayList <String >();
61
- list .addAll (row .getCells ());
62
+ for (PickleCell cell : row .getCells ()) {
63
+ list .add (cell .getValue ());
64
+ }
62
65
if (columns != row .getCells ().size ()) {
63
66
throw new CucumberException (String .format ("Table is unbalanced: expected %s column(s) but found %s." , columns , row .getCells ().size ()));
64
67
}
@@ -67,8 +70,8 @@ public DataTable(List<DataTableRow> gherkinRows, TableConverter tableConverter)
67
70
this .raw = Collections .unmodifiableList (raw );
68
71
}
69
72
70
- private DataTable (List < DataTableRow > gherkinRows , List <List <String >> raw , TableConverter tableConverter ) {
71
- this .gherkinRows = gherkinRows ;
73
+ private DataTable (PickleTable pickleTable , List <List <String >> raw , TableConverter tableConverter ) {
74
+ this .pickleTable = pickleTable ;
72
75
this .tableConverter = tableConverter ;
73
76
this .raw = Collections .unmodifiableList (raw );
74
77
}
@@ -206,24 +209,23 @@ public void unorderedDiff(List<?> other) throws TableDiffException {
206
209
*
207
210
* @return a list of raw rows.
208
211
*/
209
- public List <DataTableRow > getGherkinRows () {
210
- return Collections .unmodifiableList (gherkinRows );
212
+ public List <PickleRow > getPickleRows () {
213
+ return Collections .unmodifiableList (pickleTable . getRows () );
211
214
}
212
215
213
216
@ Override
214
217
public String toString () {
215
218
StringBuilder result = new StringBuilder ();
216
- PrettyFormatter pf = new PrettyFormatter (result , true , false );
217
- pf .table (getGherkinRows ());
218
- pf .eof ();
219
+ TablePrinter printer = createTablePrinter ();
220
+ printer .printTable (raw , result );
219
221
return result .toString ();
220
222
}
221
223
222
224
public List <DiffableRow > diffableRows () {
223
225
List <DiffableRow > result = new ArrayList <DiffableRow >();
224
226
List <List <String >> convertedRows = raw ();
225
227
for (int i = 0 ; i < convertedRows .size (); i ++) {
226
- result .add (new DiffableRow (getGherkinRows ().get (i ), convertedRows .get (i )));
228
+ result .add (new DiffableRow (getPickleRows ().get (i ), convertedRows .get (i )));
227
229
}
228
230
return result ;
229
231
}
@@ -234,9 +236,9 @@ public TableConverter getTableConverter() {
234
236
235
237
public DataTable transpose () {
236
238
List <List <String >> transposed = new ArrayList <List <String >>();
237
- for (int i = 0 ; i < gherkinRows .size (); i ++) {
238
- Row gherkinRow = gherkinRows .get (i );
239
- for (int j = 0 ; j < gherkinRow .getCells ().size (); j ++) {
239
+ for (int i = 0 ; i < pickleTable . getRows () .size (); i ++) {
240
+ PickleRow pickleRow = pickleTable . getRows () .get (i );
241
+ for (int j = 0 ; j < pickleRow .getCells ().size (); j ++) {
240
242
List <String > row = null ;
241
243
if (j < transposed .size ()) {
242
244
row = transposed .get (j );
@@ -245,10 +247,10 @@ public DataTable transpose() {
245
247
row = new ArrayList <String >();
246
248
transposed .add (row );
247
249
}
248
- row .add (gherkinRow .getCells ().get (j ));
250
+ row .add (pickleRow .getCells ().get (j ). getValue ( ));
249
251
}
250
252
}
251
- return new DataTable (this .gherkinRows , transposed , this .tableConverter );
253
+ return new DataTable (this .pickleTable , transposed , this .tableConverter );
252
254
}
253
255
254
256
@ Override
@@ -267,4 +269,8 @@ public boolean equals(Object o) {
267
269
public int hashCode () {
268
270
return raw .hashCode ();
269
271
}
272
+
273
+ protected TablePrinter createTablePrinter () {
274
+ return new TablePrinter ();
275
+ }
270
276
}
0 commit comments