in service/src/main/java/org/apache/fineract/cn/reporting/service/internal/specification/LoanListReportSpecification.java [180:267]
private List<Row> buildRows(ReportRequest reportRequest, List<?> customerResultList) {
final ArrayList<Row> rows = new ArrayList<>();
customerResultList.forEach(result -> {
final Row row = new Row();
row.setValues(new ArrayList<>());
final String customerIdentifier;
if (result instanceof Object[]) {
final Object[] resultValues;
resultValues = (Object[]) result;
customerIdentifier = 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 {
customerIdentifier = result.toString();
final Value value = new Value();
value.setValues(new String[]{result.toString()});
row.getValues().add(value);
}
final Query accountQuery = this.entityManager.createNativeQuery(this.buildLoanAccountQuery(reportRequest, customerIdentifier));
final List<?> accountResultList = accountQuery.getResultList();
accountResultList.forEach(accountResult -> {
final String caseIdentifier;
if (accountResult instanceof Object[]) {
final Object[] accountResultValues;
accountResultValues = (Object[]) accountResult;
caseIdentifier = accountResultValues[0].toString();
for (final Object loan: accountResultValues) {
final Value value = new Value();
if (loan != null) {
value.setValues(new String[]{loan.toString()});
} else {
value.setValues(new String[]{});
}
row.getValues().add(value);
}
}else {
caseIdentifier = accountResult.toString();
final Value value = new Value();
value.setValues(new String[]{accountResult.toString()});
row.getValues().add(value);
}
final Query caseQuery = this.entityManager.createNativeQuery(this.buildCaseQuery(reportRequest, caseIdentifier));
final List<?> caseResultList = caseQuery.getResultList();
caseResultList.forEach(loanCase -> {
final Object[] loanCaseResultValues = (Object[]) loanCase;
for (final Object loan : loanCaseResultValues) {
final Value value = new Value();
if (loan != null) {
value.setValues(new String[]{loan.toString()});
} else {
value.setValues(new String[]{});
}
row.getValues().add(value);
}
});
});
rows.add(row);
});
return rows;
}