package org.openlmis.report.service;/*
* This program was produced for the U.S. Agency for International Development. It was prepared by the USAID | DELIVER PROJECT, Task Order 4. It is part of a project which utilizes code originally licensed under the terms of the Mozilla Public License (MPL) v2 and therefore is licensed under MPL v2 or later.
*
* This program is free software: you can redistribute it and/or modify it under the terms of the Mozilla Public License as published by the Mozilla Foundation, either version 2 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the Mozilla Public License for more details.
*
* You should have received a copy of the Mozilla Public License along with this program. If not, see http://www.mozilla.org/MPL/
*/
import org.openlmis.report.model.ResultRow;
import org.openlmis.report.model.report.vaccine.PerformanceByDisrictReport;
import org.openlmis.report.model.report.vaccine.PerformanceByDropoutColumn;
import org.openlmis.report.model.report.vaccine.PerformanceByDropoutRange;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@Component
public class PerformanceDropoutDataProvider extends ReportDataProvider {
@Autowired
private PerformanceByDropoutRateByDistrictService dropoutRateByDistrictService;
@Override
public List<? extends ResultRow> getReportBody(Map<String, String[]> filter, Map<String, String[]> sorter, int page, int pageSize) {
List<PerformanceByDisrictReport> performanceByDisrictReports = new ArrayList<>();
PerformanceByDisrictReport performanceByDisrictReport = this.dropoutRateByDistrictService.loadPerformanceByDropoutRateDistrictReports(filter);
performanceByDisrictReport.setDistrictFlatList(this.convertToFlatList(performanceByDisrictReport.getColumnsValueList()));
performanceByDisrictReport.setRegionFlatList(this.convertToFlatList(performanceByDisrictReport.getRegionColumnsValueList()));
performanceByDisrictReports.add(performanceByDisrictReport);
return performanceByDisrictReports;
}
private List<PerformanceByDropoutColumn> convertToFlatList(List<PerformanceByDropoutRange> columnsValueList) {
List<PerformanceByDropoutColumn> flatList = new ArrayList<>();
if (columnsValueList != null) {
for (PerformanceByDropoutRange dropoutRange : columnsValueList) {
flatList.addAll(dropoutRange.getColumns());
}
}
else return null;
return flatList;
}
}