in wilma-functionaltest/src/main/java/com/epam/gepard/datadriven/feeders/LabelBasedDataFeeder.java [243:290]
public DataDrivenParameterArray calculateParameterArray(final String className, final DataDrivenParameterArray inputParameterArray) {
// Mix feeders into one parameter table
DataDrivenParameterArray result = new DataDrivenParameterArray();
List<String> columns = new ArrayList<>();
// Create the parameter table from the feeders
for (LabelBasedFeederDetails feeder : feeders) {
columns.addAll(feeder.getParameterNames());
feeder.getFeederRelation().addFeeder(feeder, result);
}
// remove Name columns and merge them into one as the first column of the table, get column name indexes
List<Integer> nameIndexes = new ArrayList<>();
for (int i = 0; i < columns.size(); i++) {
if (NAME_COLUMN.equals(columns.get(i))) {
nameIndexes.add(i);
}
}
// set column names
result.setParameterNames(columns.toArray(new String[columns.size()]));
// merge name columns
if (!nameIndexes.isEmpty()) {
result.setParameterNames(removeFromArrayByIndex(nameIndexes, result.getParameterNames()));
result.setParameterNames(ArrayUtils.add(result.getParameterNames(), 0, NAME_COLUMN));
List<String> nameColValue;
for (Integer rowNum : result.keySet()) {
nameColValue = selectFromArrayByIndex(nameIndexes, result.get(rowNum));
result.put(rowNum, removeFromArrayByIndex(nameIndexes, result.get(rowNum)));
result.put(rowNum, ArrayUtils.add(result.get(rowNum), 0, StringUtils.join(nameColValue, " ")));
}
}
// free up memory after results have been created
feeders = null;
feederRelations = null;
// check if all feeders have unique column names
try {
if (result.getParameterNames().length != new HashSet<>(Arrays.asList(result.getParameterNames())).size()) {
String errorText = "LabelTestParameterFeeder error: more feeders contain the same column name! (other than LABEL and DESCRIPTION)";
throw new DataFeederException(errorText, ERROR_FEEDER_COLUMN_NAMES_DUPLICATED);
}
} catch (DataFeederException e) {
result = null;
}
return result;
}