package org.openmrs.module.reporting.web.controller.portlet;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openmrs.api.context.Context;
import org.openmrs.module.reporting.evaluation.parameter.Parameterizable;
import org.openmrs.module.reporting.evaluation.parameter.ParameterizableUtil;
/**
* This Controller loads a Parameterizable class and object given the passed parameters
*/
public class ParameterizablePortletController extends ReportingPortletController {
protected final Log log = LogFactory.getLog(getClass());
@SuppressWarnings("unchecked")
protected void populateModel(HttpServletRequest request, Map<String, Object> model) {
super.populateModel(request, model);
String type = (String)model.get("type");
String uuid = (String)model.get("uuid");
// Get Parameterizable class from the passed type
Class<? extends Parameterizable> typeClass = null;
try {
typeClass = (Class<? extends Parameterizable>)Context.loadClass(type);
model.put("typeClass", typeClass);
}
catch (Exception e) {
throw new IllegalArgumentException("Type " + type + " cannot be loaded", e);
}
if (StringUtils.isNotEmpty(uuid)) {
model.put("obj", ParameterizableUtil.getParameterizable(uuid, typeClass));
}
}
}