public DataDrivenParameterArray calculateParameterArray()

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;
    }