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.PrinterLabelTemplateGetInfoAction.PrinterLabelTemplateInfo;
import edu.ualberta.med.biobank.common.permission.labelPrinting.LabelPrintingPermission;
import edu.ualberta.med.biobank.model.PrinterLabelTemplate;
public class PrinterLabelTemplateGetInfoAction implements
Action<PrinterLabelTemplateInfo> {
private static final long serialVersionUID = 1L;
private static Logger log = LoggerFactory
.getLogger(PrinterLabelTemplateGetInfoAction.class.getName());
@SuppressWarnings("nls")
private static final String HQL_QRY =
"FROM " + PrinterLabelTemplate.class.getName() + " plt"
+ " INNER JOIN FETCH plt.jasperTemplate"
+ " WHERE name=?";
public static class PrinterLabelTemplateInfo implements ActionResult {
private static final long serialVersionUID = 1L;
public PrinterLabelTemplate printerLabelTemplate;
}
public final String name;
public PrinterLabelTemplateGetInfoAction(String name) {
this.name = name;
}
@Override
public boolean isAllowed(ActionContext context) throws ActionException {
return new LabelPrintingPermission().isAllowed(context);
}
@Override
public PrinterLabelTemplateInfo run(ActionContext context)
throws ActionException {
log.debug("run: name={}", name);
Query query = context.getSession().createQuery(HQL_QRY);
query.setParameter(0, name);
PrinterLabelTemplateInfo info = new PrinterLabelTemplateInfo();
info.printerLabelTemplate = (PrinterLabelTemplate) query.uniqueResult();
if (info.printerLabelTemplate == null) {
throw new IllegalStateException("printer label template is null");
}
return info;
}
}