public ActionForward remove( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws FenixServiceException { final ResultParticipation participation = readResultParticipationFromRequest(request); if (participation == null) { return backToResultList(mapping, form, request, response); } final Person loggedPerson = getLoggedPerson(request); if (participation.getPerson().equals(loggedPerson) && getFromRequest(request, "confirm") == null && getFromRequest(request, "cancel") == null) { request.setAttribute("deleteConfirmation", participation.getExternalId()); } if (getFromRequest(request, "confirm") != null || !participation.getPerson().equals(loggedPerson)) { try { DeleteResultParticipation.run(participation); } catch (Exception e) { final ActionForward defaultForward = backToResultList(mapping, form, request, response); return processException(request, mapping, defaultForward, e); } } return prepareEdit(mapping, form, request, response); }
private ResultParticipation readResultParticipationFromRequest(HttpServletRequest request) { final String oid = getRequestParameterAsString(request, "participationId"); ResultParticipation participation = null; try { participation = ResultParticipation.readByOid(oid); } catch (DomainException e) { addActionMessage(request, e.getKey(), e.getArgs()); } return participation; }
@Atomic public static void run(ResultParticipation participation) throws FenixServiceException { ResearchResult result = participation.getResult(); result.removeParticipation(participation); ResearchResultMetaDataManager.updateMetaDataInStorageFor(result); }