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