package edu.ualberta.med.biobank.common.action.container; import edu.ualberta.med.biobank.common.action.Action; import edu.ualberta.med.biobank.common.action.ActionContext; import edu.ualberta.med.biobank.common.action.EmptyResult; import edu.ualberta.med.biobank.common.action.exception.ActionException; import edu.ualberta.med.biobank.common.permission.container.ContainerDeletePermission; import edu.ualberta.med.biobank.model.Container; public class ContainerDeleteAction implements Action<EmptyResult> { private static final long serialVersionUID = 1L; protected final Integer containerId; public ContainerDeleteAction(Container container) { if (container == null) { throw new IllegalArgumentException(); } this.containerId = container.getId(); } @Override public boolean isAllowed(ActionContext context) { return new ContainerDeletePermission(containerId).isAllowed(context); } @Override public EmptyResult run(ActionContext context) throws ActionException { Container container = context.load(Container.class, containerId); // cascades delete all comments context.getSession().delete(container); return new EmptyResult(); } }