package edu.ualberta.med.biobank.common.action.labelPrinter;
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.IdResult;
import edu.ualberta.med.biobank.common.action.exception.ActionException;
import edu.ualberta.med.biobank.common.permission.labelPrinting.LabelPrintingPermission;
import edu.ualberta.med.biobank.model.JasperTemplate;
import edu.ualberta.med.biobank.model.PrinterLabelTemplate;
public class PrinterLabelTemplateSaveAction implements Action<IdResult> {
private static final long serialVersionUID = 1L;
private static Logger log = LoggerFactory
.getLogger(PrinterLabelTemplateSaveAction.class.getName());
private Integer id = null;
private final String name;
private final String printerName;
private final String configData;
private final JasperTemplate jasperTemplate;
public PrinterLabelTemplateSaveAction(
PrinterLabelTemplate printerLabelTemplate) {
this.id = printerLabelTemplate.getId();
this.name = printerLabelTemplate.getName();
this.printerName = printerLabelTemplate.getPrinterName();
this.configData = printerLabelTemplate.getConfigData();
this.jasperTemplate = printerLabelTemplate.getJasperTemplate();
}
@Override
public boolean isAllowed(ActionContext context) throws ActionException {
return new LabelPrintingPermission().isAllowed(context);
}
@Override
public IdResult run(ActionContext context) throws ActionException {
log.debug("run: id={} name={}", id, name);
PrinterLabelTemplate printerLabelTemplate =
context.get(PrinterLabelTemplate.class, id,
new PrinterLabelTemplate());
printerLabelTemplate.setId(id);
printerLabelTemplate.setName(name);
printerLabelTemplate.setPrinterName(printerName);
printerLabelTemplate.setConfigData(configData);
printerLabelTemplate.setJasperTemplate(jasperTemplate);
context.getSession().saveOrUpdate(printerLabelTemplate);
return new IdResult(printerLabelTemplate.getId());
}
}