package net.techreadiness.plugin.action.reports.staff; import java.util.Collection; import java.util.Map; import javax.inject.Inject; import net.techreadiness.persistence.criteriaquery.QueryResult; import net.techreadiness.plugin.action.reports.ReportItemProviderImpl; import net.techreadiness.plugin.service.reports.ReportsService; import net.techreadiness.service.common.DataGrid; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Component; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; @Component @Qualifier("StaffReportItemProvider") public class StaffReportItemProviderImpl extends ReportItemProviderImpl { @Inject private ReportsService dao; @Override public Collection<Map<String, String>> getPage(DataGrid<Map<String, String>> grid) { if (org == null) { setTotalNumberOfItems(0); return Lists.newArrayList(); } if (consortium == null) { throw new IllegalStateException("No Data to Display. Please ensure the appropriate consortium is selected."); } Collection<Map<String, String>> results = Lists.newArrayList(); if (org.getOrgTypeName().equals("School")) { Map<String, String> orgSummary = Iterables.getFirst( dao.retrieveSurveySummaryForOrg(snapshotWindow.getSnapshotWindowId(), org.getOrgId(), question) .getRows(), null); if (orgSummary == null || orgSummary.isEmpty()) { setTotalNumberOfItems(0); return Lists.newArrayList(); } setTotalNumberOfItems(1); results.add(orgSummary); } else { QueryResult<Map<String, String>> result = dao.retrieveSurveySummaryForChildOrgs( snapshotWindow.getSnapshotWindowId(), org.getOrgId(), question, false, grid.getFirstResult(), grid.getPageSize()); setTotalNumberOfItems(result.getTotalRowCount()); results = result.getRows(); } if (org.getOrgTypeName().equals("School") || org.getOrgTypeName().equals("District")) { for (Map<String, String> map : results) { if (StringUtils.isBlank(map.get("levelOfConcern"))) { map.put("levelOfConcernCount0to3", "(missing)"); map.put("levelOfConcernCount4to5", "(missing)"); map.put("levelOfConcernCount6to7", "(missing)"); map.put("levelOfConcernCount8to10", "(missing)"); map.put("levelOfConcernOther", "(missing)"); } else if ("0".equals(map.get("levelOfConcernCount0to3")) && "0".equals(map.get("levelOfConcernCount4to5")) && "0".equals(map.get("levelOfConcernCount6to7")) && "0".equals(map.get("levelOfConcernCount8to10"))) { map.put("levelOfConcernOther", map.get("levelOfConcern")); } if (StringUtils.isBlank(map.get("dataEntryComplete"))) { map.put("dataEntryComplete", "(missing)"); } else { map.put("dataEntryComplete", map.get("dataEntryComplete")); } } } return results; } @Override public Collection<Map<String, String>> export(ExportType exportType) { if (org == null) { return Lists.newArrayList(); } Collection<Map<String, String>> results = Lists.newArrayList(); if (org.getOrgTypeName().equals("School")) { Map<String, String> orgSummary = Iterables.getFirst( dao.retrieveSurveySummaryForOrg(snapshotWindow.getSnapshotWindowId(), org.getOrgId(), question) .getRows(), null); if (orgSummary == null || orgSummary.isEmpty()) { return Lists.newArrayList(); } results.add(orgSummary); } else { QueryResult<Map<String, String>> result = dao.retrieveSurveySummaryForChildOrgs( snapshotWindow.getSnapshotWindowId(), org.getOrgId(), question, true, 0, 0); results = result.getRows(); } if (org.getOrgTypeName().equals("School") || org.getOrgTypeName().equals("District")) { for (Map<String, String> map : results) { if (StringUtils.isBlank(map.get("levelOfConcern"))) { map.put("levelOfConcernCount0to3", "(missing)"); map.put("levelOfConcernCount4to5", "(missing)"); map.put("levelOfConcernCount6to7", "(missing)"); map.put("levelOfConcernCount8to10", "(missing)"); map.put("levelOfConcernOther", "(missing)"); } else if ("0".equals(map.get("levelOfConcernCount0to3")) && "0".equals(map.get("levelOfConcernCount4to5")) && "0".equals(map.get("levelOfConcernCount6to7")) && "0".equals(map.get("levelOfConcernCount8to10"))) { map.put("levelOfConcernOther", map.get("levelOfConcern")); } if (StringUtils.isBlank(map.get("dataEntryComplete"))) { map.put("dataEntryComplete", "(missing)"); } else { map.put("dataEntryComplete", map.get("dataEntryComplete")); } if (exportType.equals(ExportType.pdf)) { formatTBDandMissingPdf("levelOfConcernCount0to3", "levelOfConcernCount0to3", map); formatTBDandMissingPdf("levelOfConcernCount4to5", "levelOfConcernCount4to5", map); formatTBDandMissingPdf("levelOfConcernCount6to7", "levelOfConcernCount6to7", map); formatTBDandMissingPdf("levelOfConcernCount8to10", "levelOfConcernCount8to10", map); formatTBDandMissingPdf("levelOfConcernAverageResponse", "levelOfConcernAverageResponse", map); formatTBDandMissingPdf("levelOfConcernOther", "levelOfConcernOther", map); } if (exportType.equals(ExportType.csv) && org.getOrgTypeName().equals("District")) { if (map.get("schoolType") != null) { map.put("schoolType", SCHOOL_TYPE.get(map.get("schoolType")) == null ? map.get("schoolType") : SCHOOL_TYPE.get(map.get("schoolType"))); } } } } return results; } }