@Override public List<CommitteeMembershipBase> getAvailableCommitteeMembersForCurrentSubmission( ProtocolBase protocol) { List<CommitteeMembershipBase> results = new ArrayList<CommitteeMembershipBase>(); ProtocolSubmissionBase submission = protocol.getProtocolSubmission(); submission.refreshReferenceObject("protocolOnlineReviews"); if (LOG.isDebugEnabled()) { LOG.debug( String.format( "Fetching available committee members for protocol %s, submission %s", protocol.getProtocolNumber(), submission.getSubmissionNumber())); } List<ProtocolOnlineReviewBase> currentReviews = submission.getProtocolOnlineReviews(); List<CommitteeMembershipBase> committeeMembers = getCommitteeService() .getAvailableMembers(submission.getCommitteeId(), submission.getScheduleId()); // TODO: Make this better. for (CommitteeMembershipBase member : committeeMembers) { boolean found = false; for (ProtocolOnlineReviewBase review : currentReviews) { if (review.getProtocolReviewer().isProtocolReviewerFromCommitteeMembership(member) && review.isActive()) { found = true; break; } } if (!found && !isProtocolPersonnel(protocol, member)) { results.add(member); } } return results; }
@Override public List<ProtocolOnlineReviewDocumentBase> getProtocolReviewDocumentsForCurrentSubmission( ProtocolBase protocol) { List<ProtocolOnlineReviewDocumentBase> onlineReviewDocuments = new ArrayList<ProtocolOnlineReviewDocumentBase>(); ProtocolSubmissionBase submission = protocol.getProtocolSubmission(); List<ProtocolOnlineReviewBase> reviews = findProtocolOnlineReviews(protocol.getProtocolId(), submission.getSubmissionId()); for (ProtocolOnlineReviewBase review : reviews) { if (review.isActive()) { review.refresh(); try { onlineReviewDocuments.add( (ProtocolOnlineReviewDocumentBase) (documentService.getByDocumentHeaderId( review.getProtocolOnlineReviewDocument().getDocumentNumber()))); } catch (WorkflowException e) { throw new RuntimeException( String.format( "Could not load ProtocolOnlineReviewBase docuemnt %s due to WorkflowException: %s", review.getProtocolOnlineReviewDocument().getDocumentNumber(), e.getMessage()), e); } } } return onlineReviewDocuments; }
@Override public boolean isProtocolReviewer( String personId, boolean nonEmployeeFlag, ProtocolSubmissionBase protocolSubmission) { boolean isReviewer = false; if (protocolSubmission != null) { for (ProtocolOnlineReviewBase review : protocolSubmission.getProtocolOnlineReviews()) { if (review.getProtocolReviewer().isPersonIdProtocolReviewer(personId, nonEmployeeFlag) && review.isActive()) { isReviewer = true; break; } } } return isReviewer; }
@Override public List<ProtocolOnlineReviewBase> getProtocolReviews(Long submissionId) { List<ProtocolOnlineReviewBase> reviews = new ArrayList<ProtocolOnlineReviewBase>(); ProtocolSubmissionBase submission = getBusinessObjectService() .findBySinglePrimaryKey(getProtocolSubmissionBOClassHook(), submissionId); if (submission != null) { for (ProtocolOnlineReviewBase review : submission.getProtocolOnlineReviews()) { if (review.isActive()) { reviews.add(review); } } } return reviews; }
@Override public ProtocolReviewer getProtocolReviewer( String personId, boolean nonEmployeeFlag, ProtocolSubmissionBase protocolSubmission) { ProtocolReviewer protocolReviewer = null; if (protocolSubmission != null) { for (ProtocolOnlineReviewBase protocolOnlineReview : protocolSubmission.getProtocolOnlineReviews()) { if (protocolOnlineReview .getProtocolReviewer() .isPersonIdProtocolReviewer(personId, nonEmployeeFlag) && protocolOnlineReview.isActive()) { protocolReviewer = protocolOnlineReview.getProtocolReviewer(); break; } } } return protocolReviewer; }
@Override public ProtocolOnlineReviewDocumentBase getProtocolOnlineReviewDocument( String personId, boolean nonEmployeeFlag, ProtocolSubmissionBase protocolSubmission) { ProtocolOnlineReviewDocumentBase protocolOnlineReviewDocument = null; if (protocolSubmission != null) { for (ProtocolOnlineReviewBase protocolOnlineReview : protocolSubmission.getProtocolOnlineReviews()) { if (protocolOnlineReview .getProtocolReviewer() .isPersonIdProtocolReviewer(personId, nonEmployeeFlag) && protocolOnlineReview.isActive()) { try { protocolOnlineReviewDocument = (ProtocolOnlineReviewDocumentBase) getDocumentService() .getByDocumentHeaderId( protocolOnlineReview .getProtocolOnlineReviewDocument() .getDocumentNumber()); } catch (WorkflowException e) { if (LOG.isDebugEnabled()) { String errorMessage = String.format( "WorkflowException encountered while looking up document number %s for ProtocolOnlineReviewDocumentBase associated with (submissionId=%s,personId=%s,nonEmployeeFlag=%s", protocolOnlineReview.getProtocolOnlineReviewDocument().getDocumentNumber(), protocolSubmission.getSubmissionId(), personId, nonEmployeeFlag); LOG.error(errorMessage, e); throw new RuntimeException(errorMessage, e); } } } } } return protocolOnlineReviewDocument; }