public void removeOnlineReviewDocument( String personId, boolean nonEmployeeFlag, ProtocolSubmissionBase submission, String annotation) { ProtocolOnlineReviewDocumentBase protocolOnlineReviewDocument = this.getProtocolOnlineReviewDocument(personId, nonEmployeeFlag, submission); ProtocolOnlineReviewBase submissionsProtocolOnlineReview = null; for (ProtocolOnlineReviewBase rev : submission.getProtocolOnlineReviews()) { if (rev.getProtocolOnlineReviewId() .equals( protocolOnlineReviewDocument.getProtocolOnlineReview().getProtocolOnlineReviewId())) { submissionsProtocolOnlineReview = rev; break; } } if (submissionsProtocolOnlineReview == null) { throw new IllegalStateException( "Could not match OnlineReview document being removed to a protocolOnlineReview in the submission."); } if (LOG.isDebugEnabled()) { LOG.debug( String.format( "Processing request to remove online review for (personId=%s,nonEmployeeFlag=%s) from (protocol=%s,submission=%s)", personId, nonEmployeeFlag, submission.getProtocol().getProtocolNumber(), submission.getSubmissionNumber())); } if (protocolOnlineReviewDocument != null) { if (LOG.isDebugEnabled()) { LOG.debug( String.format( "Found protocolOnlineReviewDocument %s, removing it.", protocolOnlineReviewDocument.getDocumentNumber())); } cancelOnlineReviewDocument(protocolOnlineReviewDocument, submission, annotation); submissionsProtocolOnlineReview.setProtocolOnlineReviewStatusCode( IacucProtocolOnlineReviewStatus.REMOVED_CANCELLED_STATUS_CD); List<CommitteeScheduleMinuteBase> reviewComments = protocolOnlineReviewDocument.getProtocolOnlineReview().getCommitteeScheduleMinutes(); List<CommitteeScheduleMinuteBase> deletedReviewComments = new ArrayList<CommitteeScheduleMinuteBase>(); reviewCommentsService.deleteAllReviewComments(reviewComments, deletedReviewComments); reviewCommentsService.saveReviewComments(reviewComments, deletedReviewComments); businessObjectService.save(submissionsProtocolOnlineReview); } else { LOG.warn( String.format( "ProtocolBase Online Review document could not be found for (personId=%s,nonEmployeeFlag=%s) from (protocol=%s,submission=%s)", personId, nonEmployeeFlag, submission.getProtocol().getProtocolNumber(), submission.getSubmissionNumber())); } }