in wilma-functionaltest/src/main/java/com/epam/gepard/datadriven/feeders/labelbasedfeederhelper/LabelBasedFeederFileLoader.java [131:178]
public void loadFeeder(LabelBasedFeederDetails feederDetails) throws DataFeederException, IOException {
String[] columnNames = null; // column names
String[] lineArray; // line in read
int lineNum = 0; // number of lines in the file
CSVReader csvReader = new CSVReader(new InputStreamReader(this.getClass().getClassLoader()
.getResourceAsStream(feederDetails.getFeederFile())));
while (feederDetails.getRowNumber() == 0 || LabelBasedFeederDetails.LabelType.RANDOM.equals(feederDetails.getLabelType()) || feederDetails
.getParameterList().size() < feederDetails.getRowNumber()) {
lineArray = csvReader.readNext();
if (lineArray == null) {
break; //exit from the loop
}
lineNum++;
if ((lineArray.length == 1 && lineArray[0].trim().isEmpty())
|| (lineArray.length >= 1 && (lineArray[0].trim().startsWith("#") || lineArray[0].trim().startsWith("//")))) {
continue;
}
// 1. not empty row is the column names row
if (columnNames == null) {
columnNames = getColumnNamesFromHeaderRow(lineArray, lineNum, feederDetails);
// set parameter names to the feeder
feederDetails.setParameterNames(Arrays.asList(Arrays.copyOfRange(columnNames, 1, columnNames.length)));
continue;
}
// skip commented lines or lines that does not contain one of our labels
if (!feederDetails.getLabels().isEmpty() && !isLabelPresent(getLabels(lineArray[0]), feederDetails.getLabels())) {
continue;
}
// Check row for errors
if (lineArray.length <= 1) {
String errorText = "A row must contain at least a label and a value. Line: " + lineNum
+ ", File:" + feederDetails.getFeederFile();
throw new DataFeederException(errorText, ERROR_FEEDER_FILE_CONTENT_ERROR);
}
if (columnNames.length != lineArray.length) {
String errorText = "Column number does not match in line: " + lineNum
+ ", File:" + feederDetails.getFeederFile();
throw new DataFeederException(errorText, ERROR_FEEDER_FILE_CONTENT_ERROR);
}
// set parameter row to the feeder
feederDetails.addParameterList(Arrays.copyOfRange(lineArray, 1, lineArray.length));
}
}