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