package edu.ualberta.med.biobank.common.action.specimen; 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.specimen.SpecimenDeletePermission; import edu.ualberta.med.biobank.model.Specimen; public class SpecimenDeleteAction implements Action<EmptyResult> { private static final long serialVersionUID = 1L; private final Integer specimenId; public SpecimenDeleteAction(Specimen specimen) { if (specimen == null) { throw new IllegalArgumentException(); } this.specimenId = specimen.getId(); } @Override public boolean isAllowed(ActionContext context) { return new SpecimenDeletePermission(specimenId) .isAllowed(context); } @Override public EmptyResult run(ActionContext context) throws ActionException { Specimen specimen = context.load(Specimen.class, specimenId); context.getSession().delete(specimen); return new EmptyResult(); } }