package org.openmrs.module.reporting.web.controller.portlet; import org.openmrs.api.context.Context; import org.openmrs.module.reporting.report.ReportRequest; import org.openmrs.module.reporting.report.ReportRequest.Status; import org.openmrs.module.reporting.report.service.ReportService; import org.openmrs.module.reporting.web.renderers.WebReportRenderer; import javax.servlet.http.HttpServletRequest; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; public class ReportHistoryPortletController extends ReportingPortletController { /** * @see org.openmrs.module.reporting.web.controller.portlet.ReportingPortletController#populateModel(javax.servlet.http.HttpServletRequest, java.util.Map) */ @Override protected void populateModel(HttpServletRequest request, Map<String, Object> model) { super.populateModel(request, model); ReportService rs = Context.getService(ReportService.class); List<Status> statuses = new ArrayList<Status>(); statuses.add(Status.COMPLETED); if (!"false".equals(model.get("includeSaved"))) { statuses.add(Status.SAVED); } if ("true".equals(model.get("includeFailed"))) { statuses.add(Status.FAILED); } List<ReportRequest> complete = rs.getReportRequests(null, null, null, statuses.toArray(new Status[]{})); Collections.reverse(complete); model.put("completedRequests", complete); Map<ReportRequest, String> shortNames = new HashMap<ReportRequest, String>(); Map<ReportRequest, Boolean> isWebRenderer = new HashMap<ReportRequest, Boolean>(); for (ReportRequest r : complete) { if (r.getRenderingMode() != null && r.getRenderingMode().getRenderer() != null && r.getRenderingMode().getRenderer() instanceof WebReportRenderer) { shortNames.put(r, "Web"); isWebRenderer.put(r, true); } else { try { String filename = r.getRenderingMode().getRenderer().getFilename(r); filename = filename.substring(filename.lastIndexOf('.') + 1); filename = filename.toUpperCase(); shortNames.put(r, filename); isWebRenderer.put(r, false); } catch (Exception ex) { log.info("Error getting filename for ReportRequest " + r.getUuid() + " " , ex); } } } model.put("shortNames", shortNames); model.put("isWebRenderer", isWebRenderer); } }