package edu.ualberta.med.biobank.common.action.labelPrinter;
import org.hibernate.Query;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import edu.ualberta.med.biobank.common.action.Action;
import edu.ualberta.med.biobank.common.action.ActionContext;
import edu.ualberta.med.biobank.common.action.ActionResult;
import edu.ualberta.med.biobank.common.action.exception.ActionException;
import edu.ualberta.med.biobank.common.action.labelPrinter.JasperTemplateGetInfoAction.JasperTemplateInfo;
import edu.ualberta.med.biobank.common.permission.labelPrinting.LabelPrintingPermission;
import edu.ualberta.med.biobank.model.JasperTemplate;
public class JasperTemplateGetInfoAction implements
Action<JasperTemplateInfo> {
private static final long serialVersionUID = 1L;
private static Logger log = LoggerFactory
.getLogger(JasperTemplateGetInfoAction.class.getName());
@SuppressWarnings("nls")
private static final String HQL_QRY =
"FROM " + JasperTemplate.class.getName() + " WHERE name=?";
public static class JasperTemplateInfo implements ActionResult {
private static final long serialVersionUID = 1L;
public JasperTemplate jasperTemplate;
}
public final String name;
public JasperTemplateGetInfoAction(String name) {
this.name = name;
}
@Override
public boolean isAllowed(ActionContext context) throws ActionException {
return new LabelPrintingPermission().isAllowed(context);
}
@Override
public JasperTemplateInfo run(ActionContext context)
throws ActionException {
log.debug("run: name={}", name);
Query query = context.getSession().createQuery(HQL_QRY);
query.setParameter(0, name);
JasperTemplateInfo info = new JasperTemplateInfo();
info.jasperTemplate = (JasperTemplate) query.uniqueResult();
if (info.jasperTemplate == null) {
throw new IllegalStateException("printer label template is null");
}
return info;
}
}