private List buildRows()

in service/src/main/java/org/apache/fineract/cn/reporting/service/internal/specification/OfficeListReportSpecification.java [178:223]


    private List<Row> buildRows(final ReportRequest reportRequest, final List<?> officeResultList) {
        final ArrayList<Row> rows = new ArrayList<>();

        officeResultList.forEach(result -> {
            final Row row = new Row();
            row.setValues(new ArrayList<>());

            final String officeIdentifier;

            if (result instanceof Object[]) {
                final Object[] resultValues = (Object[]) result;

                officeIdentifier = resultValues[0].toString();

                for (final Object resultValue : resultValues) {
                    final Value value = new Value();
                    if (resultValue != null) {
                        value.setValues(new String[]{resultValue.toString()});
                    } else {
                        value.setValues(new String[]{});
                    }

                    row.getValues().add(value);
                }
            } else {
                officeIdentifier = result.toString();

                final Value value = new Value();
                value.setValues(new String[]{result.toString()});
                row.getValues().add(value);
            }

            final String addressQueryString = this.buildAddressQuery(reportRequest, officeIdentifier);
            if (addressQueryString != null) {
                final Query addressQuery = this.entityManager.createNativeQuery(addressQueryString);
                final List<?> resultList = addressQuery.getResultList();
                final Value addressValue = new Value();
                addressValue.setValues(new String[]{resultList.get(0).toString()});
                row.getValues().add(addressValue);
            }

            rows.add(row);
        });

        return rows;
    }