15
15
*/
16
16
package io .qameta .allure ;
17
17
18
- import com .opencsv .bean .BeanField ;
19
- import com .opencsv .bean .ColumnPositionMappingStrategy ;
20
- import com .opencsv .bean .CsvBindByName ;
18
+ import com .opencsv .bean .HeaderColumnNameMappingStrategy ;
19
+ import com .opencsv .bean .HeaderColumnNameMappingStrategyBuilder ;
21
20
import com .opencsv .bean .StatefulBeanToCsv ;
22
21
import com .opencsv .bean .StatefulBeanToCsvBuilder ;
23
22
import com .opencsv .exceptions .CsvDataTypeMismatchException ;
24
23
import com .opencsv .exceptions .CsvRequiredFieldEmptyException ;
25
24
import io .qameta .allure .core .Configuration ;
26
25
import io .qameta .allure .core .LaunchResults ;
27
- import org .apache .commons .lang3 .StringUtils ;
28
- import org .apache .commons .lang3 .reflect .FieldUtils ;
29
26
30
27
import java .io .ByteArrayOutputStream ;
31
28
import java .io .IOException ;
@@ -60,7 +57,8 @@ public void aggregate(final Configuration configuration,
60
57
final ByteArrayOutputStream bos = new ByteArrayOutputStream ();
61
58
try (Writer writer = new OutputStreamWriter (bos , StandardCharsets .UTF_8 )) {
62
59
final StatefulBeanToCsvBuilder <T > builder = new StatefulBeanToCsvBuilder <>(writer );
63
- final CustomMappingStrategy <T > mappingStrategy = new CustomMappingStrategy <>();
60
+ final HeaderColumnNameMappingStrategy <T > mappingStrategy =
61
+ new HeaderColumnNameMappingStrategyBuilder <T >().build ();
64
62
mappingStrategy .setType (type );
65
63
final StatefulBeanToCsv <T > beanWriter = builder .withMappingStrategy (mappingStrategy ).build ();
66
64
try {
@@ -78,39 +76,4 @@ public void aggregate(final Configuration configuration,
78
76
}
79
77
80
78
protected abstract List <T > getData (List <LaunchResults > launchesResults );
81
-
82
- @ SuppressWarnings ("all" )
83
- private static final class CustomMappingStrategy <T > extends ColumnPositionMappingStrategy <T > {
84
-
85
- @ Override
86
- public String [] generateHeader (T bean ) throws CsvRequiredFieldEmptyException {
87
-
88
- super .setColumnMapping (new String [FieldUtils .getAllFields (bean .getClass ()).length ]);
89
- final int numColumns = findMaxFieldIndex ();
90
- if (!isAnnotationDriven () || numColumns == -1 ) {
91
- return super .generateHeader (bean );
92
- }
93
-
94
- String [] header = new String [numColumns + 1 ];
95
-
96
- BeanField <T > beanField ;
97
- for (int i = 0 ; i <= numColumns ; i ++) {
98
- beanField = findField (i );
99
- String columnHeaderName = extractHeaderName (beanField );
100
- header [i ] = columnHeaderName ;
101
- }
102
- return header ;
103
- }
104
-
105
- private String extractHeaderName (final BeanField <T > beanField ) {
106
- if (beanField == null || beanField .getField () == null
107
- || beanField .getField ().getDeclaredAnnotationsByType (CsvBindByName .class ).length == 0 ) {
108
- return StringUtils .EMPTY ;
109
- }
110
-
111
- final CsvBindByName bindByNameAnnotation = beanField .getField ()
112
- .getDeclaredAnnotationsByType (CsvBindByName .class )[0 ];
113
- return bindByNameAnnotation .column ();
114
- }
115
- }
116
79
}
0 commit comments